|
@@ -11,6 +11,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.github.pagehelper.Page;
|
|
import com.github.pagehelper.Page;
|
|
|
import com.zhongzheng.common.exception.CustomException;
|
|
import com.zhongzheng.common.exception.CustomException;
|
|
|
import com.zhongzheng.common.utils.DateUtils;
|
|
import com.zhongzheng.common.utils.DateUtils;
|
|
|
|
|
+import com.zhongzheng.common.utils.ToolsUtils;
|
|
|
|
|
+import com.zhongzheng.modules.activity.domain.ActivityGoodsPrice;
|
|
|
|
|
+import com.zhongzheng.modules.activity.service.IActivityGoodsPriceService;
|
|
|
import com.zhongzheng.modules.distribution.bo.DistributionActivityAddBo;
|
|
import com.zhongzheng.modules.distribution.bo.DistributionActivityAddBo;
|
|
|
import com.zhongzheng.modules.distribution.bo.DistributionActivityEditBo;
|
|
import com.zhongzheng.modules.distribution.bo.DistributionActivityEditBo;
|
|
|
import com.zhongzheng.modules.distribution.bo.DistributionActivityQueryBo;
|
|
import com.zhongzheng.modules.distribution.bo.DistributionActivityQueryBo;
|
|
@@ -35,6 +38,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collection;
|
|
import java.util.Collection;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
@@ -60,6 +64,8 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
|
|
|
private IDistributionActivityPosterService iDistributionActivityPosterService;
|
|
private IDistributionActivityPosterService iDistributionActivityPosterService;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private IDistributionActivityTemplateGoodsService iDistributionActivityTemplateGoodsService;
|
|
private IDistributionActivityTemplateGoodsService iDistributionActivityTemplateGoodsService;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IActivityGoodsPriceService iActivityGoodsPriceService;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public DistributionActivityVo queryById(Long distributionId){
|
|
public DistributionActivityVo queryById(Long distributionId){
|
|
@@ -75,7 +81,22 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
|
|
|
DistributionActivityGoodsVo goodsVo = BeanUtil.toBean(item, DistributionActivityGoodsVo.class);
|
|
DistributionActivityGoodsVo goodsVo = BeanUtil.toBean(item, DistributionActivityGoodsVo.class);
|
|
|
Goods goods = iGoodsService.getById(goodsVo.getGoodsId());
|
|
Goods goods = iGoodsService.getById(goodsVo.getGoodsId());
|
|
|
goodsVo.setGoodsName(goods.getGoodsName());
|
|
goodsVo.setGoodsName(goods.getGoodsName());
|
|
|
- goodsVo.setGoodsPrice(goods.getStandPrice());
|
|
|
|
|
|
|
+ if (item.getProfitType() == 1){
|
|
|
|
|
+ //百分比
|
|
|
|
|
+ goodsVo.setProfitMax(item.getProfitMax().multiply(new BigDecimal(100)));
|
|
|
|
|
+ goodsVo.setProfitOne(item.getProfitOne().multiply(new BigDecimal(100)));
|
|
|
|
|
+ goodsVo.setProfitTwo(item.getProfitTwo().multiply(new BigDecimal(100)));
|
|
|
|
|
+ goodsVo.setProfitThree(item.getProfitThree().multiply(new BigDecimal(100)));
|
|
|
|
|
+ }
|
|
|
|
|
+ ActivityGoodsPrice price = iActivityGoodsPriceService
|
|
|
|
|
+ .getOne(new LambdaQueryWrapper<ActivityGoodsPrice>()
|
|
|
|
|
+ .eq(ActivityGoodsPrice::getActivityCode, vo.getCode())
|
|
|
|
|
+ .eq(ActivityGoodsPrice::getGoodsId, item.getGoodsId())
|
|
|
|
|
+ .eq(ActivityGoodsPrice::getStatus, 1)
|
|
|
|
|
+ .last("limit 1"));
|
|
|
|
|
+ if (ObjectUtils.isNotNull(price)){
|
|
|
|
|
+ goodsVo.setGoodsPrice(price.getGoodsPrice());
|
|
|
|
|
+ }
|
|
|
return goodsVo;
|
|
return goodsVo;
|
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
|
vo.setGoodsList(templateGoodsVos);
|
|
vo.setGoodsList(templateGoodsVos);
|
|
@@ -126,9 +147,11 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean insertByAddBo(DistributionActivityAddBo bo) {
|
|
public Boolean insertByAddBo(DistributionActivityAddBo bo) {
|
|
|
DistributionActivity add = BeanUtil.toBean(bo, DistributionActivity.class);
|
|
DistributionActivity add = BeanUtil.toBean(bo, DistributionActivity.class);
|
|
|
validEntityBeforeSave(add);
|
|
validEntityBeforeSave(add);
|
|
|
|
|
+ add.setCode(ToolsUtils.getRandomString(8));
|
|
|
add.setCreateTime(DateUtils.getNowTime());
|
|
add.setCreateTime(DateUtils.getNowTime());
|
|
|
add.setUpdateTime(DateUtils.getNowTime());
|
|
add.setUpdateTime(DateUtils.getNowTime());
|
|
|
this.save(add);
|
|
this.save(add);
|
|
@@ -142,6 +165,28 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
|
|
|
return entity;
|
|
return entity;
|
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
|
iDistributionActivityGoodsService.saveBatch(collect);
|
|
iDistributionActivityGoodsService.saveBatch(collect);
|
|
|
|
|
+ //商品活动价格
|
|
|
|
|
+ bo.getGoodsList().forEach(item -> {
|
|
|
|
|
+ ActivityGoodsPrice goodsPrice = iActivityGoodsPriceService
|
|
|
|
|
+ .getOne(new LambdaQueryWrapper<ActivityGoodsPrice>()
|
|
|
|
|
+ .eq(ActivityGoodsPrice::getActivityCode, add.getCode())
|
|
|
|
|
+ .eq(ActivityGoodsPrice::getGoodsId, item.getGoodsId())
|
|
|
|
|
+ .last("limit 1"));
|
|
|
|
|
+ if (ObjectUtils.isNotNull(goodsPrice)){
|
|
|
|
|
+ goodsPrice.setGoodsPrice(item.getGoodsPrice());
|
|
|
|
|
+ iActivityGoodsPriceService.updateById(goodsPrice);
|
|
|
|
|
+ }else {
|
|
|
|
|
+ ActivityGoodsPrice price = new ActivityGoodsPrice();
|
|
|
|
|
+ price.setGoodsPrice(item.getGoodsPrice());
|
|
|
|
|
+ price.setActivityCode(add.getCode());
|
|
|
|
|
+ price.setStatus(1);
|
|
|
|
|
+ price.setGoodsId(item.getGoodsId());
|
|
|
|
|
+ price.setType(1);
|
|
|
|
|
+ price.setCreateTime(DateUtils.getNowTime());
|
|
|
|
|
+ price.setUpdateTime(DateUtils.getNowTime());
|
|
|
|
|
+ iActivityGoodsPriceService.save(price);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
return true;
|
|
@@ -158,9 +203,11 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
|
|
|
validEntityBeforeSave(update);
|
|
validEntityBeforeSave(update);
|
|
|
update.setUpdateTime(DateUtils.getNowTime());
|
|
update.setUpdateTime(DateUtils.getNowTime());
|
|
|
this.updateById(update);
|
|
this.updateById(update);
|
|
|
- //删除活动商品和下发机构重新绑定
|
|
|
|
|
|
|
+ //删除活动商品重新绑定
|
|
|
iDistributionActivityGoodsService.remove(new LambdaQueryWrapper<DistributionActivityGoods>()
|
|
iDistributionActivityGoodsService.remove(new LambdaQueryWrapper<DistributionActivityGoods>()
|
|
|
.eq(DistributionActivityGoods::getDistributionId,bo.getDistributionId()));
|
|
.eq(DistributionActivityGoods::getDistributionId,bo.getDistributionId()));
|
|
|
|
|
+ iActivityGoodsPriceService.remove(new LambdaQueryWrapper<ActivityGoodsPrice>()
|
|
|
|
|
+ .eq(ActivityGoodsPrice::getActivityCode,activityTemp.getCode()));
|
|
|
//活动商品
|
|
//活动商品
|
|
|
if (CollectionUtils.isNotEmpty(bo.getGoodsList())){
|
|
if (CollectionUtils.isNotEmpty(bo.getGoodsList())){
|
|
|
List<DistributionActivityGoods> collect = bo.getGoodsList().stream().map(item -> {
|
|
List<DistributionActivityGoods> collect = bo.getGoodsList().stream().map(item -> {
|
|
@@ -171,6 +218,28 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
|
|
|
return entity;
|
|
return entity;
|
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
|
iDistributionActivityGoodsService.saveBatch(collect);
|
|
iDistributionActivityGoodsService.saveBatch(collect);
|
|
|
|
|
+ //商品活动价格
|
|
|
|
|
+ bo.getGoodsList().forEach(item -> {
|
|
|
|
|
+ ActivityGoodsPrice goodsPrice = iActivityGoodsPriceService
|
|
|
|
|
+ .getOne(new LambdaQueryWrapper<ActivityGoodsPrice>()
|
|
|
|
|
+ .eq(ActivityGoodsPrice::getActivityCode, activityTemp.getCode())
|
|
|
|
|
+ .eq(ActivityGoodsPrice::getGoodsId, item.getGoodsId())
|
|
|
|
|
+ .last("limit 1"));
|
|
|
|
|
+ if (ObjectUtils.isNotNull(goodsPrice)){
|
|
|
|
|
+ goodsPrice.setGoodsPrice(item.getGoodsPrice());
|
|
|
|
|
+ iActivityGoodsPriceService.updateById(goodsPrice);
|
|
|
|
|
+ }else {
|
|
|
|
|
+ ActivityGoodsPrice price = new ActivityGoodsPrice();
|
|
|
|
|
+ price.setGoodsPrice(item.getGoodsPrice());
|
|
|
|
|
+ price.setActivityCode(activityTemp.getCode());
|
|
|
|
|
+ price.setStatus(1);
|
|
|
|
|
+ price.setGoodsId(item.getGoodsId());
|
|
|
|
|
+ price.setType(1);
|
|
|
|
|
+ price.setCreateTime(DateUtils.getNowTime());
|
|
|
|
|
+ price.setUpdateTime(DateUtils.getNowTime());
|
|
|
|
|
+ iActivityGoodsPriceService.save(price);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|