Commit 019f4c6b by 刘鹏飞

构建coco赠品加入购物的逻辑

parent 6342f2ce
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: CouponService
* @Title: ActiveFactory
* @Package cn.freemud.service
* @Description:
* @author: pengfei.liu
......@@ -10,9 +10,10 @@
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.active;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
public interface ActiveFactory {
/**
......@@ -21,4 +22,11 @@ public interface ActiveFactory {
* @return
*/
ActiveService getBuildChooseGoodsService(String partnerId);
/**
* 获取赠品添加购物车实现
* @param
* @return
*/
ActiveService getGifAddCartService(ShoppingCartInfoRequestVo shoppingCartInfoRequestVo);
}
......@@ -14,9 +14,13 @@
package cn.freemud.service.active;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountRequestDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import java.util.List;
import java.util.Map;
public interface ActiveService {
......@@ -25,4 +29,14 @@ public interface ActiveService {
* @param calculationSharingDiscountRequestDto
*/
void buildChooseGoodsService(CalculationSharingDiscountRequestDto calculationSharingDiscountRequestDto, List<ShoppingCartInfoRequestVo.ChooseGood> chooseGoods);
/**
* 赠品添加购物车
* @param
*/
void gifAddCart(List<CartGoods> oldcartGoodsLists,
List<CartGoods> addcartGoodsList,
List<ProductBeanDTO> products ,
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo,
CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult);
}
......@@ -13,6 +13,7 @@
package cn.freemud.service.active.impl;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.service.active.ActiveFactory;
import cn.freemud.service.active.ActiveService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -54,4 +55,13 @@ public class ActiveFactoryImpl implements ActiveFactory {
return platformActiveService;
}
}
@Override
public ActiveService getGifAddCartService(ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
if(cocoPartnerId.contains(shoppingCartInfoRequestVo.getPartnerId())){
return CocoActiveServiceImpl;
}else{
return platformActiveService;
}
}
}
......@@ -14,13 +14,24 @@
package cn.freemud.service.active.impl;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountRequestDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.CalculationGoodsType;
import cn.freemud.service.active.ActiveService;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service("cocoActiveService")
public class CocoActiveServiceImpl implements ActiveService {
......@@ -59,4 +70,108 @@ public class CocoActiveServiceImpl implements ActiveService {
calculationSharingDiscountRequestDto.setSelectActivityList(selectActivityList);
}
@Override
public void gifAddCart(List<CartGoods> oldcartGoodsLists,
List<CartGoods> addcartGoodsList,
List<ProductBeanDTO> products ,
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo,
CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult) {
// 点餐页赠品分行显示,赠品显示小料
// 结束页赠品合并到主商品行
// 创单查询购物车分行显示
Map<String, CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> discountForGift = this.getDiscountForGift(discountResult);
if(ObjectUtils.equals(shoppingCartInfoRequestVo.getFlag(),1)){//结算页
for(CartGoods cgs : oldcartGoodsLists){
if(null == discountForGift.get(cgs.getCartGoodsUid())){
break;
}
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods gift = discountForGift.get(cgs.getCartGoodsUid());
cgs.setQty(cgs.getQty() + (gift.getGoodsQuantity() == null ? 0 : gift.getGoodsQuantity()));
}
}else{
for(CartGoods cgs : oldcartGoodsLists){
if(null == discountForGift.get(cgs.getCartGoodsUid())){
break;
}
if(null == discountForGift.get(cgs.getCartGoodsUid()).getDiscounts() || discountForGift.get(cgs.getCartGoodsUid()).getDiscounts().isEmpty()){
break;
}
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount = discountForGift.get(cgs.getCartGoodsUid()).getDiscounts()
.stream()
.filter(g -> ActivityTypeEnum.TYPE_63.getCode().equals(g.getType()) ||ActivityTypeEnum.TYPE_62.getCode().equals(g.getType()) || ActivityTypeEnum.TYPE_61.getCode().equals(g.getType()))
.findFirst()
.get();
CartGoods newCartGoods = new CartGoods();
newCartGoods.setCartGoodsUid(cgs.getCartGoodsUid());
newCartGoods.setGoodsId(cgs.getGoodsId());
newCartGoods.setGoodsType(cgs.getGoodsType());
newCartGoods.setSpuId(cgs.getSpuId());
newCartGoods.setSkuId(cgs.getSkuId());
newCartGoods.setSpecProductId(cgs.getSpecProductId());
newCartGoods.setOriginalPrice(cgs.getOriginalPrice());
newCartGoods.setPackPrice(cgs.getPackPrice());
newCartGoods.setOriginalAmount(cgs.getOriginalAmount());
newCartGoods.setAmount(0L);
newCartGoods.setName(cgs.getName());
newCartGoods.setSpuName(cgs.getSpuName());
newCartGoods.setSubName(cgs.getSubName());
newCartGoods.setNodeId(cgs.getNodeId());
newCartGoods.setCategoryName(cgs.getCategoryName());
List<CartGoods.CartGoodsExtra> extra = Lists.newArrayList();
List<CartGoods.CartGoodsExtra> cartGoodsExtras = cgs.getExtra();
if (CollectionUtils.isNotEmpty(cartGoodsExtras)) {
cartGoodsExtras.forEach(cartGoodsExtra -> {
CartGoods.CartGoodsExtra goodsExtra = new CartGoods.CartGoodsExtra();
goodsExtra.setAttributeId(cartGoodsExtra.getAttributeId());
goodsExtra.setAttributeName(cartGoodsExtra.getAttributeName());
extra.add(goodsExtra);
});
}
newCartGoods.setExtra(extra);
newCartGoods.setPic(cgs.getPic());
newCartGoods.setCreateTimeMili(cgs.getCreateTimeMili());
newCartGoods.setSkuName(cgs.getSkuName());
newCartGoods.setSkuName(cgs.getSkuName());
newCartGoods.setClassificationId(cgs.getClassificationId());
newCartGoods.setClassificationName(cgs.getClassificationName());
newCartGoods.setActivityType(discount.getType());
addcartGoodsList.add(newCartGoods);
}
}
}
public Map<String, CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> getDiscountForGift(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult) {
Map<String, CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> gifts = new HashMap<>();
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> goods = discountResult.getGoods();
if(goods == null || goods.isEmpty()){
return gifts;
}
for(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods g : goods){
if(!CalculationGoodsType.TYPE_1.getType().equals(g.getCartGoodType())){
continue;
}
if(null != gifts.get(g.getCartGoodsUid())){
continue;
}
gifts.put(g.getOriginalGoodsUid(),g);
}
return gifts;
}
}
......@@ -14,13 +14,21 @@
package cn.freemud.service.active.impl;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountRequestDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.CalculationGoodsType;
import cn.freemud.service.active.ActiveService;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service("platformActiveService")
public class PlatformActiveServiceImpl implements ActiveService {
......@@ -57,4 +65,57 @@ public class PlatformActiveServiceImpl implements ActiveService {
}
@Override
public void gifAddCart(List<CartGoods> oldcartGoodsLists,
List<CartGoods> addcartGoodsList, List<ProductBeanDTO> products ,
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo,
CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult) {
Map<String, CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> discountForGift = this.getDiscountForGift(discountResult);
for (ProductBeanDTO product : products) {
String k = product.getPid();
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods goods = discountForGift.get(k);
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount = goods.getDiscounts()
.stream()
.filter(g -> ActivityTypeEnum.TYPE_63.getCode().equals(g.getType()) ||ActivityTypeEnum.TYPE_62.getCode().equals(g.getType()) || ActivityTypeEnum.TYPE_61.getCode().equals(g.getType()))
.findFirst()
.get();
CartGoods cartGood = new CartGoods();
cartGood.setGoodsId(goods.getGoodsId());
cartGood.setGoodsType(1);
cartGood.setSpuId(goods.getGoodsId());
cartGood.setSkuId(goods.getGoodsId());
cartGood.setOriginalPrice(product.getFinalPrice());
cartGood.setPackPrice(product.getPackPrice());
cartGood.setOriginalAmount(goods.getOriginalPrice() * goods.getGoodsQuantity());
cartGood.setAmount(goods.getRealAmount());
cartGood.setName(product.getName());
cartGood.setSpuName(product.getName());
cartGood.setCategoryName(product.getName());
cartGood.setPic(product.getPicture());
cartGood.setSkuName(product.getName());
cartGood.setActivityType(discount.getType());
cartGood.setStockLimit(ObjectUtils.equals(1, product.getStockLimit()));
cartGood.setCustomerCode(product.getCustomerCode());
cartGood.setUnit(product.getUnit());
cartGood.setWeight(product.getWeight());
cartGood.setQty(goods.getGoodsQuantity());
cartGood.setClassificationId(product.getCategory());
cartGood.setClassificationName(product.getCategoryName());
// nodeId标识activeCode,用于计算均摊时每个商品在每个活动上均摊金额
cartGood.setNodeId(discount.getActivityCode());
addcartGoodsList.add(cartGood);
}
}
public Map<String, CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> getDiscountForGift(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult) {
Map<String, CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> gifts = discountResult.getGoods()
.stream()
.filter(d -> CalculationGoodsType.TYPE_1.getType().equals(d.getCartGoodType()))
.collect(Collectors.toMap(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods::getGoodsId, Function.identity(), (k1, k2) -> k1));
return gifts;
}
}
......@@ -10,6 +10,8 @@ import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.CalculationGoodsType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.active.ActiveFactory;
import cn.freemud.service.active.ActiveService;
import cn.freemud.service.impl.AssortmentSdkService;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
......@@ -42,6 +44,9 @@ public class GiftSharingService {
@Autowired
private ShoppingCartBaseServiceImpl shoppingCartBaseService;
@Autowired
private ActiveFactory activeFactory;
public void giftResponse(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult
, List<CartGoods> cartGoodsList
, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo
......@@ -52,7 +57,7 @@ public class GiftSharingService {
}
String menuType = shoppingCartInfoRequestVo == null ? null : shoppingCartInfoRequestVo.getMenuType();
List<ProductBeanDTO> beanDTOList = this.drawGiftInfo(discountResult, activityQueryDto, menuType);
this.setCartGoods(discountResult, cartGoodsList, beanDTOList);
this.setCartGoods(discountResult, cartGoodsList, beanDTOList,shoppingCartInfoRequestVo);
}
/**
......@@ -113,47 +118,18 @@ public class GiftSharingService {
*/
public void setCartGoods(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult
, List<CartGoods> cartGoodsLists
, List<ProductBeanDTO> products) {
, List<ProductBeanDTO> products
, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo
) {
if (CollectionUtils.isEmpty(products)) return;
Map<String, CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> discountForGift = this.getDiscountForGift(discountResult);
//Map<String, CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> discountForGift = this.getDiscountForGift(discountResult);
List<CartGoods> cartGoodsList = new ArrayList<>();
for (ProductBeanDTO product : products) {
String k = product.getPid();
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods goods = discountForGift.get(k);
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount = goods.getDiscounts()
.stream()
.filter(g -> ActivityTypeEnum.TYPE_63.getCode().equals(g.getType()) ||ActivityTypeEnum.TYPE_62.getCode().equals(g.getType()) || ActivityTypeEnum.TYPE_61.getCode().equals(g.getType()))
.findFirst()
.get();
CartGoods cartGood = new CartGoods();
cartGood.setGoodsId(goods.getGoodsId());
cartGood.setGoodsType(1);
cartGood.setSpuId(goods.getGoodsId());
cartGood.setSkuId(goods.getGoodsId());
cartGood.setOriginalPrice(product.getFinalPrice());
cartGood.setPackPrice(product.getPackPrice());
cartGood.setOriginalAmount(goods.getOriginalPrice() * goods.getGoodsQuantity());
cartGood.setAmount(goods.getRealAmount());
cartGood.setName(product.getName());
cartGood.setSpuName(product.getName());
cartGood.setCategoryName(product.getName());
cartGood.setPic(product.getPicture());
cartGood.setSkuName(product.getName());
cartGood.setActivityType(discount.getType());
cartGood.setStockLimit(ObjectUtils.equals(1, product.getStockLimit()));
cartGood.setCustomerCode(product.getCustomerCode());
cartGood.setUnit(product.getUnit());
cartGood.setWeight(product.getWeight());
cartGood.setQty(goods.getGoodsQuantity());
cartGood.setClassificationId(product.getCategory());
cartGood.setClassificationName(product.getCategoryName());
// nodeId标识activeCode,用于计算均摊时每个商品在每个活动上均摊金额
cartGood.setNodeId(discount.getActivityCode());
cartGoodsList.add(cartGood);
}
ActiveService activeService = activeFactory.getGifAddCartService(shoppingCartInfoRequestVo);
activeService.gifAddCart(cartGoodsLists,cartGoodsList, products,shoppingCartInfoRequestVo,discountResult);
cartGoodsLists.addAll(cartGoodsList);
}
......
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