|
@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.github.pagehelper.Page;
|
|
|
import com.zhongzheng.common.exception.CustomException;
|
|
|
import com.zhongzheng.common.utils.DateUtils;
|
|
|
+import com.zhongzheng.common.utils.ServletUtils;
|
|
|
import com.zhongzheng.common.utils.ToolsUtils;
|
|
|
import com.zhongzheng.modules.activity.domain.ActivityGoodsPrice;
|
|
|
import com.zhongzheng.modules.activity.service.IActivityGoodsPriceService;
|
|
@@ -27,11 +28,17 @@ import com.zhongzheng.modules.distribution.service.IDistributionActivityPosterSe
|
|
|
import com.zhongzheng.modules.distribution.service.IDistributionActivityService;
|
|
|
import com.zhongzheng.modules.distribution.vo.DistributionActivityGoodsVo;
|
|
|
import com.zhongzheng.modules.distribution.vo.DistributionActivityVo;
|
|
|
+import com.zhongzheng.modules.goods.bo.GoodsPullResultBo;
|
|
|
+import com.zhongzheng.modules.goods.bo.GoodsPullTenantBo;
|
|
|
import com.zhongzheng.modules.goods.domain.Goods;
|
|
|
import com.zhongzheng.modules.goods.service.IGoodsService;
|
|
|
+import com.zhongzheng.modules.top.distribution.domain.DistributionActivityTemplate;
|
|
|
import com.zhongzheng.modules.top.distribution.domain.DistributionActivityTemplateGoods;
|
|
|
import com.zhongzheng.modules.top.distribution.service.IDistributionActivityTemplateGoodsService;
|
|
|
+import com.zhongzheng.modules.top.distribution.service.IDistributionActivityTemplateService;
|
|
|
+import com.zhongzheng.modules.top.goods.domain.TopActivityGoodsPrice;
|
|
|
import com.zhongzheng.modules.top.goods.domain.TopGoods;
|
|
|
+import com.zhongzheng.modules.top.goods.service.ITopActivityGoodsPriceService;
|
|
|
import com.zhongzheng.modules.top.goods.service.ITopGoodsService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -66,6 +73,10 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
|
|
|
private IDistributionActivityTemplateGoodsService iDistributionActivityTemplateGoodsService;
|
|
|
@Autowired
|
|
|
private IActivityGoodsPriceService iActivityGoodsPriceService;
|
|
|
+ @Autowired
|
|
|
+ private ITopActivityGoodsPriceService iTopActivityGoodsPriceService;
|
|
|
+ @Autowired
|
|
|
+ private IDistributionActivityTemplateService iDistributionActivityTemplateService;
|
|
|
|
|
|
@Override
|
|
|
public DistributionActivityVo queryById(Long distributionId){
|
|
@@ -110,7 +121,7 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
|
|
|
lqw.eq(StrUtil.isNotBlank(bo.getCode()), DistributionActivity::getCode, bo.getCode());
|
|
|
lqw.eq(bo.getType() != null, DistributionActivity::getType, bo.getType());
|
|
|
lqw.like(StrUtil.isNotBlank(bo.getName()), DistributionActivity::getName, bo.getName());
|
|
|
- lqw.eq(bo.getStatus() != null, DistributionActivity::getStatus, bo.getStatus());
|
|
|
+ lqw.in(bo.getStatus() != null, DistributionActivity::getStatus, bo.getStatus());
|
|
|
lqw.eq(bo.getStartTime() != null, DistributionActivity::getStartTime, bo.getStartTime());
|
|
|
lqw.eq(bo.getEndTime() != null, DistributionActivity::getEndTime, bo.getEndTime());
|
|
|
lqw.eq(bo.getTempId() != null, DistributionActivity::getTempId, bo.getTempId());
|
|
@@ -196,7 +207,7 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
|
|
|
public Boolean updateByEditBo(DistributionActivityEditBo bo) {
|
|
|
//校验
|
|
|
DistributionActivity activityTemp = getById(bo.getDistributionId());
|
|
|
- if (activityTemp.getUseStatus() == 1){
|
|
|
+ if (activityTemp.getStatus() == 1){
|
|
|
throw new CustomException("活动已启用,不能修改!");
|
|
|
}
|
|
|
DistributionActivity update = BeanUtil.toBean(bo, DistributionActivity.class);
|
|
@@ -269,8 +280,8 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
|
|
|
DistributionActivity activity = getById(bo.getDistributionId());
|
|
|
if (bo.getStatus() == 1){
|
|
|
//启用活动
|
|
|
- if (DateUtils.getNowTime() > activity.getEndTime()){
|
|
|
- throw new CustomException("活动已结束,禁止启用!");
|
|
|
+ if (DateUtils.getNowTime()< activity.getStartTime() || DateUtils.getNowTime() > activity.getEndTime()){
|
|
|
+ throw new CustomException("不在活动时间内,禁止启用!");
|
|
|
}
|
|
|
if (ObjectUtils.isNotNull(activity.getTempId())){
|
|
|
//总平台下发活动对比商品是否缺失
|
|
@@ -292,17 +303,19 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public boolean pullGoods(Long distributionId) {
|
|
|
DistributionActivity activity = getById(distributionId);
|
|
|
+ if (ObjectUtils.isNull(activity.getTempId())){
|
|
|
+ //不是总平台下发的活动
|
|
|
+ return true;
|
|
|
+ }
|
|
|
//总平台下发活动对比商品是否缺失
|
|
|
List<DistributionActivityGoods> activityGoods = iDistributionActivityGoodsService
|
|
|
.list(new LambdaQueryWrapper<DistributionActivityGoods>()
|
|
|
.eq(DistributionActivityGoods::getDistributionId, activity.getDistributionId())
|
|
|
.eq(DistributionActivityGoods::getStatus, 1));
|
|
|
- List<DistributionActivityTemplateGoods> templateGoods = iDistributionActivityTemplateGoodsService
|
|
|
- .list(new LambdaQueryWrapper<DistributionActivityTemplateGoods>()
|
|
|
- .eq(DistributionActivityTemplateGoods::getDistributionTempId, activity.getTempId())
|
|
|
- .eq(DistributionActivityTemplateGoods::getStatus, 1));
|
|
|
+ List<DistributionActivityTemplateGoods> templateGoods = iDistributionActivityTemplateGoodsService.getListEntity(activity.getTempId());
|
|
|
if (activityGoods.size() == templateGoods.size()){
|
|
|
//不缺失商品信息
|
|
|
return true;
|
|
@@ -311,12 +324,74 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
|
|
|
//总平台活动商品没有
|
|
|
return true;
|
|
|
}
|
|
|
+ DistributionActivityTemplate activityTemplate = iDistributionActivityTemplateService.getEntityById(activity.getTempId());
|
|
|
+ Long tenantId = Long.valueOf(ServletUtils.getRequest().getHeader("TenantId"));
|
|
|
if (CollectionUtils.isEmpty(activityGoods)){
|
|
|
//全部缺失
|
|
|
- List<TopGoods> topGoods = iTopGoodsService.listByIds(templateGoods.stream().map(DistributionActivityTemplateGoods::getGoodsId).collect(Collectors.toList()));
|
|
|
-
|
|
|
+ List<TopGoods> topGoods = iTopGoodsService.listEntityByIds(templateGoods.stream().map(DistributionActivityTemplateGoods::getGoodsId).collect(Collectors.toList()));
|
|
|
+ GoodsPullTenantBo bo = new GoodsPullTenantBo();
|
|
|
+ bo.setGoodsList(topGoods);
|
|
|
+ bo.setTenantId(tenantId);
|
|
|
+ List<GoodsPullResultBo> result = iDistributionActivityGoodsService.pullGoods(bo);
|
|
|
+ //添加关联关系
|
|
|
+ List<ActivityGoodsPrice> goodsPriceList = new ArrayList<>();
|
|
|
+ List<DistributionActivityGoods> distributionActivityGo = templateGoods.stream().map(item -> {
|
|
|
+ DistributionActivityGoods activityGo = BeanUtil.toBean(item, DistributionActivityGoods.class);
|
|
|
+ activityGo.setTenantId(tenantId);
|
|
|
+ activityGo.setDistributionId(distributionId);
|
|
|
+ GoodsPullResultBo pul = result.stream().filter(x -> x.getOldGoodsId().equals(item.getGoodsId())).findFirst().orElse(null);
|
|
|
+ if (ObjectUtils.isNotNull(pul)) {
|
|
|
+ activityGo.setGoodsId(pul.getNewGoodsId());
|
|
|
+ //商品活动价格
|
|
|
+ TopActivityGoodsPrice topGoodsPrice = iTopActivityGoodsPriceService.getEntity(item.getGoodsId(),activityTemplate.getCode());
|
|
|
+ if (ObjectUtils.isNotNull(topGoodsPrice)){
|
|
|
+ ActivityGoodsPrice goodsPrice = BeanUtil.toBean(topGoodsPrice, ActivityGoodsPrice.class);
|
|
|
+ goodsPrice.setGoodsId(pul.getNewGoodsId());
|
|
|
+ goodsPrice.setTenantId(tenantId);
|
|
|
+ goodsPriceList.add(goodsPrice);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return activityGo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ iDistributionActivityGoodsService.saveBatch(distributionActivityGo);
|
|
|
+ iActivityGoodsPriceService.saveBatch(goodsPriceList);
|
|
|
+ }else {
|
|
|
+ //部分缺失
|
|
|
+ List<Goods> goodsList = iGoodsService.listByIds(activityGoods.stream().map(DistributionActivityGoods::getGoodsId).collect(Collectors.toList()));
|
|
|
+ List<TopGoods> topGoods = iTopGoodsService.listEntityByIds(templateGoods.stream().map(DistributionActivityTemplateGoods::getGoodsId).collect(Collectors.toList()));
|
|
|
+ List<String> codes = goodsList.stream().map(Goods::getCode).collect(Collectors.toList());
|
|
|
+ List<TopGoods> goods = topGoods.stream().filter(item -> !codes.contains(item.getCode())).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isNotEmpty(goods)){
|
|
|
+ GoodsPullTenantBo bo = new GoodsPullTenantBo();
|
|
|
+ bo.setGoodsList(goods);
|
|
|
+ bo.setTenantId(tenantId);
|
|
|
+ List<GoodsPullResultBo> result = iDistributionActivityGoodsService.pullGoods(bo);
|
|
|
+ List<Long> ids = goods.stream().map(TopGoods::getGoodsId).collect(Collectors.toList());
|
|
|
+ //添加关联关系
|
|
|
+ List<ActivityGoodsPrice> goodsPriceList = new ArrayList<>();
|
|
|
+ List<DistributionActivityTemplateGoods> collect = templateGoods.stream().filter(x -> ids.contains(x.getGoodsId())).collect(Collectors.toList());
|
|
|
+ List<DistributionActivityGoods> distributionActivityGo = collect.stream().map(item -> {
|
|
|
+ DistributionActivityGoods activityGo = BeanUtil.toBean(item, DistributionActivityGoods.class);
|
|
|
+ activityGo.setTenantId(tenantId);
|
|
|
+ activityGo.setDistributionId(distributionId);
|
|
|
+ GoodsPullResultBo pul = result.stream().filter(x -> x.getOldGoodsId().equals(item.getGoodsId())).findFirst().orElse(null);
|
|
|
+ if (ObjectUtils.isNotNull(pul)) {
|
|
|
+ activityGo.setGoodsId(pul.getNewGoodsId());
|
|
|
+ //商品活动价格
|
|
|
+ TopActivityGoodsPrice topGoodsPrice = iTopActivityGoodsPriceService.getEntity(item.getGoodsId(),activityTemplate.getCode());
|
|
|
+ if (ObjectUtils.isNotNull(topGoodsPrice)){
|
|
|
+ ActivityGoodsPrice goodsPrice = BeanUtil.toBean(topGoodsPrice, ActivityGoodsPrice.class);
|
|
|
+ goodsPrice.setGoodsId(pul.getNewGoodsId());
|
|
|
+ goodsPrice.setTenantId(tenantId);
|
|
|
+ goodsPriceList.add(goodsPrice);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return activityGo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ iDistributionActivityGoodsService.saveBatch(distributionActivityGo);
|
|
|
+ iActivityGoodsPriceService.saveBatch(goodsPriceList);
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
return true;
|
|
|
}
|
|
|
|