| | |
| | | package cc.mrbird.febs.mall.service.impl; |
| | | |
| | | import cc.mrbird.febs.common.configure.FebsConfigure; |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.common.enumerates.ActivityTypeEnum; |
| | |
| | | import cc.mrbird.febs.mall.service.IActivityService; |
| | | import cc.mrbird.febs.mall.vo.AdminActivityAddDto; |
| | | import cc.mrbird.febs.mall.vo.AdminDiscountVO; |
| | | import cc.mrbird.febs.mall.vo.AdminMallActivityListVo; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.concurrent.CompletableFuture; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Slf4j |
| | |
| | | private final MallGoodsMapper mallGoodsMapper; |
| | | private final MallGoodsSkuMapper mallGoodsSkuMapper; |
| | | private final MallGoodsStyleMapper mallGoodsStyleMapper; |
| | | private final FebsConfigure febsConfigure; |
| | | @Override |
| | | public IPage<MallActivity> getAdminListInPage(MallActivity mallActivity, QueryRequest request) { |
| | | Page<MallActivity> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse addActivity(AdminActivityAddDto adminActivityAddDto) { |
| | | public FebsResponse addAdminActivity(AdminActivityAddDto adminActivityAddDto) { |
| | | |
| | | MallActivity mallActivity = new MallActivity(); |
| | | mallActivity.setName(adminActivityAddDto.getName()); |
| | |
| | | |
| | | if(ActivityTypeEnum.YOU_HUI_JUAN.getValue() == adminActivityAddDto.getType()){ |
| | | mallActivity.setCouponId(adminActivityAddDto.getCouponId()); |
| | | addCouponGoods(adminActivityAddDto.getCouponId(),activityGoodsIds); |
| | | // addCouponGoods(adminActivityAddDto.getCouponId(),activityGoodsIds); |
| | | } |
| | | this.baseMapper.updateById(mallActivity); |
| | | |
| | | return new FebsResponse().success().data("操作成功"); |
| | | } |
| | | |
| | | private void addDiscountGoods(Long activityId,BigDecimal discountSize, List<Long> goodsIds){ |
| | | MallActivity mallActivity = this.baseMapper.selectById(activityId); |
| | | //将对应选中的商品按照这个折扣力度重新计算一遍 |
| | | List<MallGoods> mallGoods = mallGoodsMapper.selectList( |
| | | new LambdaQueryWrapper<MallGoods>() |
| | |
| | | .in(MallGoods::getId, goodsIds) |
| | | ); |
| | | if(CollUtil.isNotEmpty(mallGoods)){ |
| | | List<CompletableFuture<Void>> futures = new ArrayList<>(); |
| | | //复制对应的商品的规则 |
| | | for(MallGoods mallGoodsItem:mallGoods){ |
| | | Long goodsId = mallGoodsItem.getId(); |
| | | //新增活动商品 |
| | | Long goodsIdNew = addGoodsEntity(activityId, discountSize, mallGoodsItem); |
| | | CompletableFuture<Void> uCompletableFuture = CompletableFuture.runAsync(() -> { |
| | | Long goodsId = mallGoodsItem.getId(); |
| | | //新增活动商品 |
| | | Long goodsIdNew = addGoodsEntity(mallActivity, discountSize, mallGoodsItem); |
| | | |
| | | List<MallGoodsStyle> mallGoodsStyles = mallGoodsStyleMapper.selectList( |
| | | new LambdaQueryWrapper<MallGoodsStyle>() |
| | | .eq(MallGoodsStyle::getGoodsId, goodsId) |
| | | ); |
| | | List<MallGoodsStyle> mallGoodsStyles = mallGoodsStyleMapper.selectList( |
| | | new LambdaQueryWrapper<MallGoodsStyle>() |
| | | .eq(MallGoodsStyle::getGoodsId, goodsId) |
| | | ); |
| | | |
| | | if(CollUtil.isNotEmpty(mallGoodsStyles)){ |
| | | for(MallGoodsStyle mallGoodsStyleItem:mallGoodsStyles){ |
| | | Long styleItemId = mallGoodsStyleItem.getId(); |
| | | if(CollUtil.isNotEmpty(mallGoodsStyles)){ |
| | | for(MallGoodsStyle mallGoodsStyleItem:mallGoodsStyles){ |
| | | Long styleItemId = mallGoodsStyleItem.getId(); |
| | | |
| | | Long styleItemIdNew = addGoodsStyleEntity(goodsIdNew, mallGoodsStyleItem); |
| | | List<MallGoodsSku> mallGoodsSkus = mallGoodsSkuMapper.selectList( |
| | | new LambdaQueryWrapper<MallGoodsSku>() |
| | | .eq(MallGoodsSku::getStyleId, styleItemId) |
| | | .eq(MallGoodsSku::getGoodsId, goodsId) |
| | | ); |
| | | if(CollUtil.isNotEmpty(mallGoodsSkus)){ |
| | | for(MallGoodsSku mallGoodsSkuItem:mallGoodsSkus){ |
| | | addGoodsSkuEntity(goodsIdNew,styleItemIdNew,discountSize,mallGoodsSkuItem); |
| | | Long styleItemIdNew = addGoodsStyleEntity(goodsIdNew, mallGoodsStyleItem); |
| | | List<MallGoodsSku> mallGoodsSkus = mallGoodsSkuMapper.selectList( |
| | | new LambdaQueryWrapper<MallGoodsSku>() |
| | | .eq(MallGoodsSku::getStyleId, styleItemId) |
| | | .eq(MallGoodsSku::getGoodsId, goodsId) |
| | | ); |
| | | if(CollUtil.isNotEmpty(mallGoodsSkus)){ |
| | | for(MallGoodsSku mallGoodsSkuItem:mallGoodsSkus){ |
| | | addGoodsSkuEntity(goodsIdNew,styleItemIdNew,discountSize,mallGoodsSkuItem); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | },febsConfigure.asyncThreadPoolTaskExecutor()); |
| | | futures.add(uCompletableFuture); |
| | | } |
| | | // 等待所有任务完成 |
| | | CompletableFuture<Void> allOf = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); |
| | | allOf.join(); |
| | | } |
| | | } |
| | | |
| | | private Long addGoodsEntity(Long activityId,BigDecimal discountSize,MallGoods mallGoodsItem){ |
| | | MallActivity mallActivity = this.baseMapper.selectById(activityId); |
| | | private Long addGoodsEntity(MallActivity mallActivity,BigDecimal discountSize,MallGoods mallGoodsItem){ |
| | | mallGoodsItem.setIsNormal(GoodsTypeEnum.HUO_DONG.getValue()); |
| | | mallGoodsItem.setGoodsName(mallActivity.getName()+mallGoodsItem.getGoodsName()); |
| | | mallGoodsItem.setGoodsName(mallActivity.getName()+"-"+(StrUtil.isEmpty(mallGoodsItem.getGoodsName()) ? "":mallGoodsItem.getGoodsName())); |
| | | mallGoodsItem.setGoodsNo(mallGoodsItem.getGoodsNo()+"-"+mallActivity.getCode()); |
| | | mallGoodsItem.setActivityId(mallActivity.getId()); |
| | | BigDecimal presentPrice = new BigDecimal(mallGoodsItem.getPresentPrice()).multiply(discountSize).setScale(2, RoundingMode.DOWN); |
| | | mallGoodsItem.setPresentPrice(presentPrice.toString()); |
| | |
| | | public FebsResponse discountUpdate(AdminDiscountVO adminDiscountVO) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public List<AdminMallActivityListVo> getAdminActivityList() { |
| | | List<AdminMallActivityListVo> mallActivityList = new ArrayList<>(); |
| | | |
| | | List<MallActivity> mallActivities = this.baseMapper.selectList( |
| | | new LambdaQueryWrapper<MallActivity>() |
| | | .select(MallActivity::getId, MallActivity::getName) |
| | | .eq(MallActivity::getState, YesOrNoOrIngEnum.YES.getValue()) |
| | | ); |
| | | if(CollUtil.isNotEmpty(mallActivities)){ |
| | | for (MallActivity mallActivity : mallActivities) { |
| | | AdminMallActivityListVo adminMallActivityListVo = new AdminMallActivityListVo(); |
| | | adminMallActivityListVo.setId(mallActivity.getId()); |
| | | adminMallActivityListVo.setName(mallActivity.getName()); |
| | | mallActivityList.add(adminMallActivityListVo); |
| | | } |
| | | } |
| | | return mallActivityList; |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse changeAdminState(Long id, Integer state) { |
| | | MallActivity mallActivity = this.baseMapper.selectById(id); |
| | | mallActivity.setState(state); |
| | | this.baseMapper.updateById(mallActivity); |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse delAdminActivity(Long id) { |
| | | this.baseMapper.deleteById(id); |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | | public List<AdminMallActivityListVo> getAdminActivityListByType(Integer type) { |
| | | List<AdminMallActivityListVo> mallActivityList = new ArrayList<>(); |
| | | List<MallActivity> mallActivities = this.baseMapper.selectList( |
| | | new LambdaQueryWrapper<MallActivity>() |
| | | .select(MallActivity::getId, MallActivity::getName) |
| | | .eq(MallActivity::getState, YesOrNoOrIngEnum.YES.getValue()) |
| | | .eq(MallActivity::getType, type) |
| | | ); |
| | | if(CollUtil.isNotEmpty(mallActivities)){ |
| | | for (MallActivity mallActivity : mallActivities) { |
| | | AdminMallActivityListVo adminMallActivityListVo = new AdminMallActivityListVo(); |
| | | adminMallActivityListVo.setId(mallActivity.getId()); |
| | | adminMallActivityListVo.setName(mallActivity.getName()); |
| | | mallActivityList.add(adminMallActivityListVo); |
| | | } |
| | | } |
| | | return mallActivityList; |
| | | } |
| | | } |