Commit f8addb98 by 刘鹏飞

买一赠一寄件商品返回购物车行

parent 15fc1ac3
...@@ -19,6 +19,7 @@ import lombok.Data; ...@@ -19,6 +19,7 @@ import lombok.Data;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.UUID;
@Data @Data
public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseVo{ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseVo{
...@@ -163,6 +164,11 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV ...@@ -163,6 +164,11 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
public static class chooseGood { public static class chooseGood {
/** /**
* 购物车一行的Id(后台生成)
*/
private String cartGoodsUid;
/**
* 活动code * 活动code
*/ */
private String activeCode; private String activeCode;
......
...@@ -13,6 +13,8 @@ import cn.freemud.interceptor.ServiceException; ...@@ -13,6 +13,8 @@ import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.ItemService; import cn.freemud.service.ItemService;
import cn.freemud.service.impl.AssortmentSdkService; import cn.freemud.service.impl.AssortmentSdkService;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO; import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum; import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl; import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
...@@ -23,10 +25,7 @@ import org.apache.commons.lang.StringUtils; ...@@ -23,10 +25,7 @@ import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -81,7 +80,7 @@ public class BuyOneGiveOneSendService { ...@@ -81,7 +80,7 @@ public class BuyOneGiveOneSendService {
this.setCartGoods(discountResult, cartGoodsList, beanDTOList); this.setCartGoods(discountResult, cartGoodsList, beanDTOList);
// 设置用户可以选择的寄送商品券码 // 设置用户可以选择的寄送商品券码
this.buildSendGoods(discountResult,shoppingCartGoodsResponseVo); this.buildSendGoods(discountResult,shoppingCartGoodsResponseVo,shoppingCartInfoRequestVo);
} }
/** /**
...@@ -195,44 +194,79 @@ public class BuyOneGiveOneSendService { ...@@ -195,44 +194,79 @@ public class BuyOneGiveOneSendService {
} }
/** /**
* 抽取赠品 * 构建用户可以商品券信息
* goodsId->goods
* *
* @param discountResult * @param discountResult
* @return * @return
*/ */
private void buildSendGoods(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult,ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo) { private void buildSendGoods(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult,ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
List<ShoppingCartGoodsResponseVo.chooseGood> chooseGoods = shoppingCartGoodsResponseVo.getChooseGoods() == null ? new ArrayList<>() : shoppingCartGoodsResponseVo.getChooseGoods();
// 赠送、换购商品信息集合 // 赠送、换购商品信息集合
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.SendActivity> sendGoods = discountResult.getSendGoods(); List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.SendActivity> sendGoods = discountResult.getSendGoods();
if(sendGoods == null || sendGoods.isEmpty()){ if(sendGoods == null || sendGoods.isEmpty()){
ApiLog.info("买一赠一寄件活动,未查到赠送、换购商品信息集合,shoppingCartInfoRequestVo,discountResult", shoppingCartInfoRequestVo,discountResult);
return; return;
} }
// 抽取买一赠一寄件活动送的商品 Map<String,CalculationSharingDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> activeSendGoodMap = new HashMap<>();
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.SendActivity> buyOneGiveOneSendGoods = sendGoods
.stream() for(CalculationSharingDiscountResponseDto.CalculationDiscountResult.SendActivity sendGood : sendGoods){
.filter(sendGood -> ObjectUtils.equals(sendGood.getActivityType(),ActivityTypeEnum.TYPE_63.getCode())) if(!ObjectUtils.equals(sendGood.getActivityType(),ActivityTypeEnum.TYPE_63.getCode())){
.collect(Collectors.toList()); break;
}
String activeCode = sendGood.getActivityCode();
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> innerSendGoods = sendGood.getSendGoods();
if(innerSendGoods == null || innerSendGoods.isEmpty()){
break;
}
for(CalculationSharingDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods innerSendGood : innerSendGoods){
String goodsId = innerSendGood.getGoodsId();
activeSendGoodMap.put(activeCode + "-" + goodsId,innerSendGood);
}
}
// 商品优惠信息
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> goods = discountResult.getGoods();
if(null == buyOneGiveOneSendGoods || buyOneGiveOneSendGoods.isEmpty()){ if(goods == null || goods.isEmpty()){
ApiLog.info("买一赠一寄件活动,未查到商品优惠信息,shoppingCartInfoRequestVo,discountResult", shoppingCartInfoRequestVo,discountResult);
return; return;
} }
List<ShoppingCartGoodsResponseVo.chooseGood> chooseGoods = shoppingCartGoodsResponseVo.getChooseGoods() == null ? new ArrayList<>() : shoppingCartGoodsResponseVo.getChooseGoods(); goods.forEach(g -> {
buyOneGiveOneSendGoods.forEach(sendActivity ->{
// 这个是真正的送的券 // 获取商品参加的优惠活动
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> innerSendGoods = sendActivity.getSendGoods(); List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discounts = g.getDiscounts();
if(innerSendGoods == null || innerSendGoods.isEmpty()){ if(discounts == null || discounts.isEmpty()){
ApiLog.info("买一赠一寄件活动,优惠商品未查找到优惠集合,shoppingCartInfoRequestVo,discountResult", shoppingCartInfoRequestVo,discountResult);
return; return;
} }
innerSendGoods.forEach(innerSendGood -> { // 获取商品参加的买一赠一寄件优惠活动
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> buyOneGiveOneSendDiscount = discounts.stream()
.filter(discount -> ObjectUtils.equals(discount.getType(),ActivityTypeEnum.TYPE_63.getCode()))
.collect(Collectors.toList());
if(buyOneGiveOneSendDiscount == null || buyOneGiveOneSendDiscount.isEmpty()){
ApiLog.info("买一赠一寄件活动,优惠商品未参加买一赠一寄件活动,shoppingCartInfoRequestVo,discountResult", shoppingCartInfoRequestVo,discountResult);
return;
}
buyOneGiveOneSendDiscount.forEach(d -> {
String activeCode = d.getActivityCode();
String goodsId = g.getGoodsId();
CalculationSharingDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods innerSendGood = activeSendGoodMap.get(activeCode + "-" + goodsId);
ShoppingCartGoodsResponseVo.chooseGood chooseGood = new ShoppingCartGoodsResponseVo.chooseGood(); ShoppingCartGoodsResponseVo.chooseGood chooseGood = new ShoppingCartGoodsResponseVo.chooseGood();
chooseGood.setActiveCode(sendActivity.getActivityCode()); chooseGood.setCartGoodsUid(g.getCartGoodsUid());
chooseGood.setActiveType(sendActivity.getActivityType()); chooseGood.setActiveCode(activeCode);
chooseGood.setGoodsId(innerSendGood.getGoodsId()); chooseGood.setActiveType(ActivityTypeEnum.TYPE_63.getCode());
chooseGood.setGoodsId(goodsId);
chooseGood.setQty(innerSendGood.getSendNumber()); chooseGood.setQty(innerSendGood.getSendNumber());
chooseGood.setCouponQty(1); chooseGood.setCouponQty(1);
chooseGood.setCouponCode(innerSendGood.getSendCouponCode()); chooseGood.setCouponCode(innerSendGood.getSendCouponCode());
...@@ -241,7 +275,6 @@ public class BuyOneGiveOneSendService { ...@@ -241,7 +275,6 @@ public class BuyOneGiveOneSendService {
chooseGood.setGoodsName(innerSendGood.getGoodsName()); chooseGood.setGoodsName(innerSendGood.getGoodsName());
chooseGoods.add(chooseGood); chooseGoods.add(chooseGood);
}); });
}); });
shoppingCartGoodsResponseVo.setChooseGoods(chooseGoods); shoppingCartGoodsResponseVo.setChooseGoods(chooseGoods);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment