|
@ -9,15 +9,20 @@ import com.qs.serve.common.consts.CommonValue; |
|
|
import com.qs.serve.common.exception.Assert; |
|
|
import com.qs.serve.common.exception.Assert; |
|
|
import com.qs.serve.common.utils.CopierUtil; |
|
|
import com.qs.serve.common.utils.CopierUtil; |
|
|
import com.qs.serve.framework.base.util.CollectionUtil; |
|
|
import com.qs.serve.framework.base.util.CollectionUtil; |
|
|
|
|
|
import com.qs.serve.framework.redis.utils.CodeGenUtil; |
|
|
import com.qs.serve.modules.bms.entity.BmsSubject; |
|
|
import com.qs.serve.modules.bms.entity.BmsSubject; |
|
|
import com.qs.serve.modules.bms.entity.BmsSupplier; |
|
|
import com.qs.serve.modules.bms.entity.BmsSupplier; |
|
|
import com.qs.serve.modules.bms.mapper.BmsSubjectMapper; |
|
|
import com.qs.serve.modules.bms.mapper.BmsSubjectMapper; |
|
|
import com.qs.serve.modules.bms.service.BmsSupplierService; |
|
|
import com.qs.serve.modules.bms.service.BmsSupplierService; |
|
|
import com.qs.serve.modules.goods.entity.dto.GoodsTargetInfo; |
|
|
import com.qs.serve.modules.goods.entity.dto.GoodsTargetInfo; |
|
|
import com.qs.serve.modules.goods.entity.dto.TbsCenterDto; |
|
|
import com.qs.serve.modules.goods.entity.dto.TbsCenterDto; |
|
|
|
|
|
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo; |
|
|
|
|
|
import com.qs.serve.modules.goods.mapper.GoodsSkuMapper; |
|
|
import com.qs.serve.modules.goods.service.GoodsApplicationService; |
|
|
import com.qs.serve.modules.goods.service.GoodsApplicationService; |
|
|
import com.qs.serve.modules.oms.entity.*; |
|
|
import com.qs.serve.modules.oms.entity.*; |
|
|
import com.qs.serve.modules.oms.entity.bo.*; |
|
|
import com.qs.serve.modules.oms.entity.bo.*; |
|
|
|
|
|
import com.qs.serve.modules.oms.entity.so.OmsGoodsPromotionQuery; |
|
|
|
|
|
import com.qs.serve.modules.oms.entity.vo.OmsGoodsPromotionVo; |
|
|
import com.qs.serve.modules.oms.entity.vo.OmsPromotionGiftItemVo; |
|
|
import com.qs.serve.modules.oms.entity.vo.OmsPromotionGiftItemVo; |
|
|
import com.qs.serve.modules.oms.entity.vo.OmsPromotionGiftSubjectVo; |
|
|
import com.qs.serve.modules.oms.entity.vo.OmsPromotionGiftSubjectVo; |
|
|
import com.qs.serve.modules.oms.entity.vo.OmsPromotionGiftVo; |
|
|
import com.qs.serve.modules.oms.entity.vo.OmsPromotionGiftVo; |
|
@ -36,10 +41,7 @@ import org.springframework.stereotype.Service; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
import java.math.BigDecimal; |
|
|
import java.util.ArrayList; |
|
|
import java.util.*; |
|
|
import java.util.Arrays; |
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
import java.util.Map; |
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -64,9 +66,64 @@ public class OmsPromotionGiftServiceImpl extends ServiceImpl<OmsPromotionGiftMap |
|
|
private OmsPromotionGiftScopeMapper omsPromotionGiftScopeMapper; |
|
|
private OmsPromotionGiftScopeMapper omsPromotionGiftScopeMapper; |
|
|
private OmsPromotionGiftItemMapper omsPromotionGiftItemMapper; |
|
|
private OmsPromotionGiftItemMapper omsPromotionGiftItemMapper; |
|
|
private OmsPromotionGiftGoodsMapper omsPromotionGiftGoodsMapper; |
|
|
private OmsPromotionGiftGoodsMapper omsPromotionGiftGoodsMapper; |
|
|
|
|
|
private GoodsSkuMapper goodsSkuMapper; |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public List<OmsPromotionGiftItemVo> getItemList(String id) { |
|
|
public List<OmsGoodsPromotionVo> getGoodsPromotions(OmsGoodsPromotionQuery query) { |
|
|
|
|
|
// 用户可使用的搭赠
|
|
|
|
|
|
List<OmsPromotionGiftItemVo> customerItemList = this.getCustomerItemList(query.getCustomerId()); |
|
|
|
|
|
|
|
|
|
|
|
// key:skuId value:itemList
|
|
|
|
|
|
Map<String,List<OmsPromotionGiftItemVo>> skuIdGetItemListMap = new HashMap<>(); |
|
|
|
|
|
for (String skuId : query.getSkuIds()) { |
|
|
|
|
|
GoodSkuVo skuVo = goodsSkuMapper.getSkuVoById(skuId); |
|
|
|
|
|
for (OmsPromotionGiftItemVo itemVo : customerItemList) { |
|
|
|
|
|
if (itemVo.getGoodsType().equals("sku")){ |
|
|
|
|
|
if (itemVo.getGoodsId().equals(skuVo.getId())){ |
|
|
|
|
|
addItemToSkuMap(skuIdGetItemListMap, skuId, itemVo); |
|
|
|
|
|
} |
|
|
|
|
|
}else if (itemVo.getGoodsType().equals("spu")){ |
|
|
|
|
|
if (itemVo.getGoodsId().equals(skuVo.getSpuId())){ |
|
|
|
|
|
addItemToSkuMap(skuIdGetItemListMap, skuId, itemVo); |
|
|
|
|
|
} |
|
|
|
|
|
}else if (itemVo.getGoodsType().equals("series")){ |
|
|
|
|
|
if (itemVo.getGoodsCode().equals(skuVo.getSeriesCode())){ |
|
|
|
|
|
addItemToSkuMap(skuIdGetItemListMap, skuId, itemVo); |
|
|
|
|
|
} |
|
|
|
|
|
}else if (itemVo.getGoodsType().equals("category")){ |
|
|
|
|
|
if (itemVo.getGoodsCode().equals(skuVo.getCategoryCode())){ |
|
|
|
|
|
addItemToSkuMap(skuIdGetItemListMap, skuId, itemVo); |
|
|
|
|
|
} |
|
|
|
|
|
}else if (itemVo.getGoodsType().equals("brand")){ |
|
|
|
|
|
if (itemVo.getGoodsCode().equals(skuVo.getBrandCode())){ |
|
|
|
|
|
addItemToSkuMap(skuIdGetItemListMap, skuId, itemVo); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
List<OmsGoodsPromotionVo> resultList = new ArrayList<>(); |
|
|
|
|
|
for (String skuId : skuIdGetItemListMap.keySet()) { |
|
|
|
|
|
OmsGoodsPromotionVo promotionVo = new OmsGoodsPromotionVo(); |
|
|
|
|
|
promotionVo.setSkuId(skuId); |
|
|
|
|
|
promotionVo.setPromotions(skuIdGetItemListMap.get(skuId)); |
|
|
|
|
|
resultList.add(promotionVo); |
|
|
|
|
|
} |
|
|
|
|
|
return resultList; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void addItemToSkuMap(final Map<String, List<OmsPromotionGiftItemVo>> skuIdGetItemListMap, |
|
|
|
|
|
String skuId, |
|
|
|
|
|
OmsPromotionGiftItemVo itemVo) { |
|
|
|
|
|
List<OmsPromotionGiftItemVo> list = skuIdGetItemListMap.get(skuId); |
|
|
|
|
|
if (list == null){ |
|
|
|
|
|
list = new ArrayList<>(); |
|
|
|
|
|
} |
|
|
|
|
|
list.add(itemVo); |
|
|
|
|
|
skuIdGetItemListMap.put(skuId,list); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public List<OmsPromotionGiftItemVo> getCustomerItemList(String id) { |
|
|
BmsSupplier supplier = bmsSupplierService.getById(id); |
|
|
BmsSupplier supplier = bmsSupplierService.getById(id); |
|
|
List<String> bizIds = supplier.listBizRegionIds(); |
|
|
List<String> bizIds = supplier.listBizRegionIds(); |
|
|
List<String> saleIds = supplier.listSaleRegionIds(); |
|
|
List<String> saleIds = supplier.listSaleRegionIds(); |
|
@ -76,16 +133,15 @@ public class OmsPromotionGiftServiceImpl extends ServiceImpl<OmsPromotionGiftMap |
|
|
if (CollUtil.isEmpty(itemList)){ |
|
|
if (CollUtil.isEmpty(itemList)){ |
|
|
return new ArrayList<>(); |
|
|
return new ArrayList<>(); |
|
|
} |
|
|
} |
|
|
|
|
|
Set<Long> giftItemIds = itemList.stream().map(OmsPromotionGiftItemVo::getId).collect(Collectors.toSet()); |
|
|
QueryWrapper listByGiftIdQw = new QueryWrapper(); |
|
|
QueryWrapper listByGiftIdQw = new QueryWrapper(); |
|
|
listByGiftIdQw.eq("gift_id",id); |
|
|
listByGiftIdQw.in("gift_item_id",giftItemIds); |
|
|
List<OmsPromotionGiftGoods> goodsList = omsPromotionGiftGoodsMapper.selectList(listByGiftIdQw); |
|
|
List<OmsPromotionGiftGoods> goodsList = omsPromotionGiftGoodsMapper.selectList(listByGiftIdQw); |
|
|
Map<Long,List<OmsPromotionGiftGoods>> goodsMap = goodsList.stream() |
|
|
Map<Long,List<OmsPromotionGiftGoods>> goodsMap = goodsList.stream() |
|
|
.collect(Collectors.groupingBy(OmsPromotionGiftGoods::getGiftItemId)); |
|
|
.collect(Collectors.groupingBy(OmsPromotionGiftGoods::getGiftItemId)); |
|
|
|
|
|
|
|
|
for (OmsPromotionGiftItemVo item : itemList) { |
|
|
for (OmsPromotionGiftItemVo item : itemList) { |
|
|
item.setGoodsList(goodsMap.get(item |
|
|
item.setGoodsList(goodsMap.get(item.getId())); |
|
|
.getId())); |
|
|
|
|
|
} |
|
|
} |
|
|
return itemList; |
|
|
return itemList; |
|
|
} |
|
|
} |
|
@ -165,7 +221,7 @@ public class OmsPromotionGiftServiceImpl extends ServiceImpl<OmsPromotionGiftMap |
|
|
|
|
|
|
|
|
OmsPromotionGift gift = CopierUtil.copy(giftBo,new OmsPromotionGift()); |
|
|
OmsPromotionGift gift = CopierUtil.copy(giftBo,new OmsPromotionGift()); |
|
|
if (!isUpdate){ |
|
|
if (!isUpdate){ |
|
|
gift.setGiftCode("DEV"+IdUtil.getSnowflake().nextIdStr()); |
|
|
gift.setGiftCode("PG"+ CodeGenUtil.generate(CodeGenUtil.SourceKey.PromotionGift)); |
|
|
gift.setUserId(sysUser.getId()); |
|
|
gift.setUserId(sysUser.getId()); |
|
|
gift.setUserCode(sysUser.getCode()); |
|
|
gift.setUserCode(sysUser.getCode()); |
|
|
gift.setUserName(sysUser.getName()); |
|
|
gift.setUserName(sysUser.getName()); |
|
|