适配优化更新索引促销方式的结算。

This commit is contained in:
paulGao 2021-12-30 02:28:27 +08:00
parent 125bb372ed
commit 5a6012530e
6 changed files with 66 additions and 26 deletions

View File

@ -33,7 +33,10 @@ import cn.lili.modules.member.entity.dos.FootPrint;
import cn.lili.modules.member.entity.dos.MemberEvaluation; import cn.lili.modules.member.entity.dos.MemberEvaluation;
import cn.lili.modules.member.entity.enums.EvaluationGradeEnum; import cn.lili.modules.member.entity.enums.EvaluationGradeEnum;
import cn.lili.modules.member.service.MemberEvaluationService; import cn.lili.modules.member.service.MemberEvaluationService;
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
import cn.lili.modules.promotion.entity.dto.search.PromotionGoodsSearchParams;
import cn.lili.modules.promotion.entity.enums.CouponGetEnum; import cn.lili.modules.promotion.entity.enums.CouponGetEnum;
import cn.lili.modules.promotion.service.PromotionGoodsService;
import cn.lili.modules.search.entity.dos.EsGoodsAttribute; import cn.lili.modules.search.entity.dos.EsGoodsAttribute;
import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.entity.dos.EsGoodsIndex;
import cn.lili.modules.search.service.EsGoodsIndexService; import cn.lili.modules.search.service.EsGoodsIndexService;
@ -104,6 +107,9 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
@Autowired @Autowired
private EsGoodsIndexService goodsIndexService; private EsGoodsIndexService goodsIndexService;
@Autowired
private PromotionGoodsService promotionGoodsService;
@Override @Override
public void add(List<Map<String, Object>> skuList, Goods goods) { public void add(List<Map<String, Object>> skuList, Goods goods) {
// 检查是否需要生成索引 // 检查是否需要生成索引
@ -253,9 +259,6 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
Map<String, Object> promotionMap = goodsIndex.getPromotionMap(); Map<String, Object> promotionMap = goodsIndex.getPromotionMap();
//设置当前商品的促销价格 //设置当前商品的促销价格
if (promotionMap != null && !promotionMap.isEmpty() && goodsIndex.getPromotionPrice() != null) {
goodsSkuDetail.setPromotionPrice(goodsIndex.getPromotionPrice());
}
if (promotionMap != null && !promotionMap.isEmpty()) { if (promotionMap != null && !promotionMap.isEmpty()) {
promotionMap = promotionMap.entrySet().stream().parallel().filter(i -> { promotionMap = promotionMap.entrySet().stream().parallel().filter(i -> {
JSONObject jsonObject = JSONUtil.parseObj(i.getValue()); JSONObject jsonObject = JSONUtil.parseObj(i.getValue());
@ -265,11 +268,18 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
(jsonObject.get("endTime") == null || jsonObject.get("endTime", Date.class).getTime() >= System.currentTimeMillis()); (jsonObject.get("endTime") == null || jsonObject.get("endTime", Date.class).getTime() >= System.currentTimeMillis());
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
boolean containsPromotion = promotionMap.keySet().stream().anyMatch(i -> Optional<Map.Entry<String, Object>> containsPromotion = promotionMap.entrySet().stream().filter(i ->
i.contains(PromotionTypeEnum.SECKILL.name()) || i.contains(PromotionTypeEnum.PINTUAN.name())); i.getKey().contains(PromotionTypeEnum.SECKILL.name()) || i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst();
if (containsPromotion && goodsIndex.getPromotionPrice() != null) { if (containsPromotion.isPresent()) {
goodsSkuDetail.setPromotionFlag(true); JSONObject jsonObject = JSONUtil.parseObj(containsPromotion.get().getValue());
goodsSkuDetail.setPromotionPrice(goodsIndex.getPromotionPrice()); PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
searchParams.setSkuId(skuId);
searchParams.setPromotionId(jsonObject.get("id").toString());
PromotionGoods promotionsGoods = promotionGoodsService.getPromotionsGoods(searchParams);
if (promotionsGoods != null && promotionsGoods.getPrice() != null) {
goodsSkuDetail.setPromotionFlag(true);
goodsSkuDetail.setPromotionPrice(promotionsGoods.getPrice());
}
} else { } else {
goodsSkuDetail.setPromotionFlag(false); goodsSkuDetail.setPromotionFlag(false);
goodsSkuDetail.setPromotionPrice(null); goodsSkuDetail.setPromotionPrice(null);

View File

@ -1,6 +1,8 @@
package cn.lili.modules.order.cart.render.impl; package cn.lili.modules.order.cart.render.impl;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.PromotionTypeEnum;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
@ -120,7 +122,8 @@ public class CheckDataRender implements CartRenderStep {
//移除无效促销活动 //移除无效促销活动
if (cartSkuVO.getPromotionMap() != null && !cartSkuVO.getPromotionMap().isEmpty()) { if (cartSkuVO.getPromotionMap() != null && !cartSkuVO.getPromotionMap().isEmpty()) {
cartSkuVO.setPromotionMap(cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> { cartSkuVO.setPromotionMap(cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> {
BasePromotions basePromotions = (BasePromotions) i.getValue(); JSONObject promotionsObj = JSONUtil.parseObj(i.getValue());
BasePromotions basePromotions = promotionsObj.toBean(BasePromotions.class);
if (basePromotions.getStartTime() != null && basePromotions.getEndTime() != null) { if (basePromotions.getStartTime() != null && basePromotions.getEndTime() != null) {
return basePromotions.getStartTime().getTime() <= System.currentTimeMillis() && basePromotions.getEndTime().getTime() >= System.currentTimeMillis(); return basePromotions.getStartTime().getTime() <= System.currentTimeMillis() && basePromotions.getEndTime().getTime() >= System.currentTimeMillis();
} }
@ -189,7 +192,8 @@ public class CheckDataRender implements CartRenderStep {
if (tradeDTO.getSkuList().get(0).getPromotionMap() != null && !tradeDTO.getSkuList().get(0).getPromotionMap().isEmpty()) { if (tradeDTO.getSkuList().get(0).getPromotionMap() != null && !tradeDTO.getSkuList().get(0).getPromotionMap().isEmpty()) {
Optional<Map.Entry<String, Object>> pintuanPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst(); Optional<Map.Entry<String, Object>> pintuanPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst();
if (pintuanPromotions.isPresent()) { if (pintuanPromotions.isPresent()) {
Pintuan pintuan = (Pintuan) pintuanPromotions.get().getValue(); JSONObject promotionsObj = JSONUtil.parseObj(pintuanPromotions.get().getValue());
Pintuan pintuan = promotionsObj.toBean(Pintuan.class);
Integer limitNum = pintuan.getLimitNum(); Integer limitNum = pintuan.getLimitNum();
for (CartSkuVO cartSkuVO : tradeDTO.getSkuList()) { for (CartSkuVO cartSkuVO : tradeDTO.getSkuList()) {
if (limitNum != 0 && cartSkuVO.getNum() > limitNum) { if (limitNum != 0 && cartSkuVO.getNum() > limitNum) {
@ -203,7 +207,8 @@ public class CheckDataRender implements CartRenderStep {
//获取积分商品VO //获取积分商品VO
Optional<Map.Entry<String, Object>> pointsPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.POINTS_GOODS.name())).findFirst(); Optional<Map.Entry<String, Object>> pointsPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.POINTS_GOODS.name())).findFirst();
if (pointsPromotions.isPresent()) { if (pointsPromotions.isPresent()) {
PointsGoods pointsGoods = (PointsGoods) pointsPromotions.get().getValue(); JSONObject promotionsObj = JSONUtil.parseObj(pointsPromotions.get().getValue());
PointsGoods pointsGoods = promotionsObj.toBean(PointsGoods.class);
if (pointsGoods == null) { if (pointsGoods == null) {
throw new ServiceException(ResultCode.POINT_GOODS_ERROR); throw new ServiceException(ResultCode.POINT_GOODS_ERROR);
} }

View File

@ -1,6 +1,8 @@
package cn.lili.modules.order.cart.render.impl; package cn.lili.modules.order.cart.render.impl;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.PromotionTypeEnum;
import cn.lili.modules.goods.service.CategoryService; import cn.lili.modules.goods.service.CategoryService;
import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO;
@ -72,7 +74,8 @@ public class CommissionRender implements CartRenderStep {
if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.POINTS) && tradeDTO.getSkuList().get(0).getPromotionMap() != null && !tradeDTO.getSkuList().get(0).getPromotionMap().isEmpty()) { if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.POINTS) && tradeDTO.getSkuList().get(0).getPromotionMap() != null && !tradeDTO.getSkuList().get(0).getPromotionMap().isEmpty()) {
Optional<Map.Entry<String, Object>> pointsPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.POINTS_GOODS.name())).findFirst(); Optional<Map.Entry<String, Object>> pointsPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.POINTS_GOODS.name())).findFirst();
if (pointsPromotions.isPresent()) { if (pointsPromotions.isPresent()) {
PointsGoods pointsGoods = (PointsGoods) pointsPromotions.get().getValue(); JSONObject promotionsObj = JSONUtil.parseObj(pointsPromotions.get().getValue());
PointsGoods pointsGoods = JSONUtil.toBean(promotionsObj, PointsGoods.class);
priceDetailDTO.setSettlementPrice(pointsGoods.getSettlementPrice()); priceDetailDTO.setSettlementPrice(pointsGoods.getSettlementPrice());
} }
} }
@ -80,7 +83,8 @@ public class CommissionRender implements CartRenderStep {
else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA) && tradeDTO.getSkuList().get(0).getPromotionMap() != null && !tradeDTO.getSkuList().get(0).getPromotionMap().isEmpty()) { else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA) && tradeDTO.getSkuList().get(0).getPromotionMap() != null && !tradeDTO.getSkuList().get(0).getPromotionMap().isEmpty()) {
Optional<Map.Entry<String, Object>> kanjiaPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.KANJIA.name())).findFirst(); Optional<Map.Entry<String, Object>> kanjiaPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.KANJIA.name())).findFirst();
if (kanjiaPromotions.isPresent()) { if (kanjiaPromotions.isPresent()) {
KanjiaActivityGoods kanjiaActivityGoods = (KanjiaActivityGoods) kanjiaPromotions.get().getValue(); JSONObject promotionsObj = JSONUtil.parseObj(kanjiaPromotions.get().getValue());
KanjiaActivityGoods kanjiaActivityGoods = JSONUtil.toBean(promotionsObj, KanjiaActivityGoods.class);
priceDetailDTO.setSettlementPrice(kanjiaActivityGoods.getSettlementPrice()); priceDetailDTO.setSettlementPrice(kanjiaActivityGoods.getSettlementPrice());
} }
} }

View File

@ -1,5 +1,7 @@
package cn.lili.modules.order.cart.render.impl; package cn.lili.modules.order.cart.render.impl;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.PromotionTypeEnum;
import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.CurrencyUtil;
import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.dos.GoodsSku;
@ -55,7 +57,8 @@ public class FullDiscountRender implements CartRenderStep {
Optional<Map.Entry<String, Object>> fullDiscountOptional = fullDiscountSkuList.get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.FULL_DISCOUNT.name())).findFirst(); Optional<Map.Entry<String, Object>> fullDiscountOptional = fullDiscountSkuList.get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.FULL_DISCOUNT.name())).findFirst();
if (fullDiscountOptional.isPresent()) { if (fullDiscountOptional.isPresent()) {
FullDiscount fullDiscount = (FullDiscount) fullDiscountOptional.get().getValue(); JSONObject promotionsObj = JSONUtil.parseObj(fullDiscountOptional.get().getValue());
FullDiscount fullDiscount = promotionsObj.toBean(FullDiscount.class);
FullDiscountVO fullDiscountVO = new FullDiscountVO(fullDiscount); FullDiscountVO fullDiscountVO = new FullDiscountVO(fullDiscount);
//如果有赠品则将赠品信息写入 //如果有赠品则将赠品信息写入

View File

@ -1,5 +1,7 @@
package cn.lili.modules.order.cart.render.impl; package cn.lili.modules.order.cart.render.impl;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.PromotionTypeEnum;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
@ -13,7 +15,6 @@ import cn.lili.modules.order.cart.entity.vo.CartSkuVO;
import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.cart.entity.vo.CartVO;
import cn.lili.modules.order.cart.render.CartRenderStep; import cn.lili.modules.order.cart.render.CartRenderStep;
import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO;
import cn.lili.modules.promotion.entity.dos.BasePromotions;
import cn.lili.modules.promotion.entity.dto.search.KanjiaActivitySearchParams; import cn.lili.modules.promotion.entity.dto.search.KanjiaActivitySearchParams;
import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum;
import cn.lili.modules.promotion.entity.vos.PromotionSkuVO; import cn.lili.modules.promotion.entity.vos.PromotionSkuVO;
@ -140,8 +141,8 @@ public class SkuPromotionRender implements CartRenderStep {
continue; continue;
} }
BasePromotions basePromotions = (BasePromotions) entry.getValue(); JSONObject promotionsObj = JSONUtil.parseObj(entry.getValue());
PromotionSkuVO promotionSkuVO = new PromotionSkuVO(entry.getKey().split("-")[0], basePromotions.getId()); PromotionSkuVO promotionSkuVO = new PromotionSkuVO(entry.getKey().split("-")[0], promotionsObj.get("id", String.class));
cartSkuVO.setSubTotal(CurrencyUtil.mul(cartSkuVO.getPurchasePrice(), cartSkuVO.getNum())); cartSkuVO.setSubTotal(CurrencyUtil.mul(cartSkuVO.getPurchasePrice(), cartSkuVO.getNum()));
cartSkuVO.getPriceDetailDTO().setGoodsPrice(cartSkuVO.getSubTotal()); cartSkuVO.getPriceDetailDTO().setGoodsPrice(cartSkuVO.getSubTotal());

View File

@ -1,6 +1,7 @@
package cn.lili.modules.order.cart.service; package cn.lili.modules.order.cart.service;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.lili.cache.Cache; import cn.lili.cache.Cache;
import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.PromotionTypeEnum;
@ -31,10 +32,10 @@ import cn.lili.modules.order.cart.render.TradeBuilder;
import cn.lili.modules.order.order.entity.dos.Trade; import cn.lili.modules.order.order.entity.dos.Trade;
import cn.lili.modules.order.order.entity.vo.ReceiptVO; import cn.lili.modules.order.order.entity.vo.ReceiptVO;
import cn.lili.modules.promotion.entity.dos.KanjiaActivity; import cn.lili.modules.promotion.entity.dos.KanjiaActivity;
import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods;
import cn.lili.modules.promotion.entity.dos.MemberCoupon; import cn.lili.modules.promotion.entity.dos.MemberCoupon;
import cn.lili.modules.promotion.entity.dos.Pintuan; import cn.lili.modules.promotion.entity.dos.PromotionGoods;
import cn.lili.modules.promotion.entity.dto.search.KanjiaActivitySearchParams; import cn.lili.modules.promotion.entity.dto.search.KanjiaActivitySearchParams;
import cn.lili.modules.promotion.entity.dto.search.PromotionGoodsSearchParams;
import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum;
import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum; import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum;
import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum;
@ -42,6 +43,7 @@ import cn.lili.modules.promotion.entity.vos.PointsGoodsVO;
import cn.lili.modules.promotion.service.KanjiaActivityService; import cn.lili.modules.promotion.service.KanjiaActivityService;
import cn.lili.modules.promotion.service.MemberCouponService; import cn.lili.modules.promotion.service.MemberCouponService;
import cn.lili.modules.promotion.service.PointsGoodsService; import cn.lili.modules.promotion.service.PointsGoodsService;
import cn.lili.modules.promotion.service.PromotionGoodsService;
import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.entity.dos.EsGoodsIndex;
import cn.lili.modules.search.service.EsGoodsIndexService; import cn.lili.modules.search.service.EsGoodsIndexService;
import cn.lili.modules.search.service.EsGoodsSearchService; import cn.lili.modules.search.service.EsGoodsSearchService;
@ -132,6 +134,9 @@ public class CartServiceImpl implements CartService {
@Autowired @Autowired
private MemberService memberService; private MemberService memberService;
@Autowired
private PromotionGoodsService promotionGoodsService;
@Override @Override
public void add(String skuId, Integer num, String cartType, Boolean cover) { public void add(String skuId, Integer num, String cartType, Boolean cover) {
AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser());
@ -570,8 +575,20 @@ public class CartServiceImpl implements CartService {
if (goodsIndex.getPromotionMap().keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.SECKILL.name())) || if (goodsIndex.getPromotionMap().keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.SECKILL.name())) ||
(goodsIndex.getPromotionMap().keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.PINTUAN.name())) (goodsIndex.getPromotionMap().keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.PINTUAN.name()))
&& CartTypeEnum.PINTUAN.name().equals(cartType))) { && CartTypeEnum.PINTUAN.name().equals(cartType))) {
dataSku.setPromotionFlag(true);
dataSku.setPromotionPrice(goodsIndex.getPromotionPrice()); Optional<Map.Entry<String, Object>> containsPromotion = goodsIndex.getPromotionMap().entrySet().stream().filter(i ->
i.getKey().contains(PromotionTypeEnum.SECKILL.name()) || i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst();
if (containsPromotion.isPresent()) {
JSONObject promotionsObj = JSONUtil.parseObj(containsPromotion.get().getValue());
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
searchParams.setSkuId(dataSku.getId());
searchParams.setPromotionId(promotionsObj.get("id").toString());
PromotionGoods promotionsGoods = promotionGoodsService.getPromotionsGoods(searchParams);
if (promotionsGoods != null && promotionsGoods.getPrice() != null) {
dataSku.setPromotionFlag(true);
dataSku.setPromotionPrice(promotionsGoods.getPrice());
}
}
} }
promotionMap = goodsIndex.getPromotionMap(); promotionMap = goodsIndex.getPromotionMap();
} else { } else {
@ -718,11 +735,11 @@ public class CartServiceImpl implements CartService {
if (cartSkuVO.getPromotionMap() != null && !cartSkuVO.getPromotionMap().isEmpty()) { if (cartSkuVO.getPromotionMap() != null && !cartSkuVO.getPromotionMap().isEmpty()) {
Optional<Map.Entry<String, Object>> pintuanPromotions = cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst(); Optional<Map.Entry<String, Object>> pintuanPromotions = cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst();
if (pintuanPromotions.isPresent()) { if (pintuanPromotions.isPresent()) {
Pintuan pintuan = (Pintuan) pintuanPromotions.get().getValue(); JSONObject promotionsObj = JSONUtil.parseObj(pintuanPromotions.get().getValue());
//写入拼团信息 //写入拼团信息
cartSkuVO.setPintuanId(pintuan.getId()); cartSkuVO.setPintuanId(promotionsObj.get("id").toString());
//检测拼团限购数量 //检测拼团限购数量
Integer limitNum = pintuan.getLimitNum(); Integer limitNum = promotionsObj.get("limitNum", Integer.class);
if (limitNum != 0 && cartSkuVO.getNum() > limitNum) { if (limitNum != 0 && cartSkuVO.getNum() > limitNum) {
throw new ServiceException(ResultCode.CART_PINTUAN_LIMIT_ERROR); throw new ServiceException(ResultCode.CART_PINTUAN_LIMIT_ERROR);
} }
@ -739,10 +756,10 @@ public class CartServiceImpl implements CartService {
if (cartSkuVO.getPromotionMap() != null && !cartSkuVO.getPromotionMap().isEmpty()) { if (cartSkuVO.getPromotionMap() != null && !cartSkuVO.getPromotionMap().isEmpty()) {
Optional<Map.Entry<String, Object>> kanjiaPromotions = cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.KANJIA.name())).findFirst(); Optional<Map.Entry<String, Object>> kanjiaPromotions = cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.KANJIA.name())).findFirst();
if (kanjiaPromotions.isPresent()) { if (kanjiaPromotions.isPresent()) {
KanjiaActivityGoods kanjiaActivityGoods = (KanjiaActivityGoods) kanjiaPromotions.get().getValue(); JSONObject promotionsObj = JSONUtil.parseObj(kanjiaPromotions.get().getValue());
//查找当前会员的砍价商品活动 //查找当前会员的砍价商品活动
KanjiaActivitySearchParams kanjiaActivitySearchParams = new KanjiaActivitySearchParams(); KanjiaActivitySearchParams kanjiaActivitySearchParams = new KanjiaActivitySearchParams();
kanjiaActivitySearchParams.setKanjiaActivityGoodsId(kanjiaActivityGoods.getId()); kanjiaActivitySearchParams.setKanjiaActivityGoodsId(promotionsObj.get("id", String.class));
kanjiaActivitySearchParams.setMemberId(UserContext.getCurrentUser().getId()); kanjiaActivitySearchParams.setMemberId(UserContext.getCurrentUser().getId());
kanjiaActivitySearchParams.setStatus(KanJiaStatusEnum.SUCCESS.name()); kanjiaActivitySearchParams.setStatus(KanJiaStatusEnum.SUCCESS.name());
KanjiaActivity kanjiaActivity = kanjiaActivityService.getKanjiaActivity(kanjiaActivitySearchParams); KanjiaActivity kanjiaActivity = kanjiaActivityService.getKanjiaActivity(kanjiaActivitySearchParams);