Commit f8addb98 by 刘鹏飞

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

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