Commit 9c9a10b4 by 查志伟

赠品添加属性

parent f6d924c5
...@@ -13,14 +13,19 @@ ...@@ -13,14 +13,19 @@
package cn.freemud.service.active.impl; package cn.freemud.service.active.impl;
import cn.freemud.entities.dto.calculate.*; import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.calculate.CalculationDiscountResult;
import cn.freemud.entities.dto.calculate.Goods;
import cn.freemud.entities.dto.calculate.GoodsDiscount;
import cn.freemud.entities.vo.CartGoods; import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo; import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.CalculationGoodsType; import cn.freemud.enums.CalculationGoodsType;
import cn.freemud.service.active.ActiveService; import cn.freemud.service.active.ActiveService;
import cn.freemud.service.impl.BuyAndGiftsPromotionService;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO; import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -32,6 +37,9 @@ import java.util.stream.Collectors; ...@@ -32,6 +37,9 @@ import java.util.stream.Collectors;
@Service("platformActiveService") @Service("platformActiveService")
public class PlatformActiveServiceImpl implements ActiveService { public class PlatformActiveServiceImpl implements ActiveService {
@Autowired
private BuyAndGiftsPromotionService buyAndGiftsPromotionService;
/** /**
* 用户选择的商品和数量都要传给促销 * 用户选择的商品和数量都要传给促销
* @param calculationSharingDiscountRequestDto * @param calculationSharingDiscountRequestDto
...@@ -107,7 +115,7 @@ public class PlatformActiveServiceImpl implements ActiveService { ...@@ -107,7 +115,7 @@ public class PlatformActiveServiceImpl implements ActiveService {
cartGood.setClassificationName(product.getCategoryName()); cartGood.setClassificationName(product.getCategoryName());
// nodeId标识activeCode,用于计算均摊时每个商品在每个活动上均摊金额 // nodeId标识activeCode,用于计算均摊时每个商品在每个活动上均摊金额
cartGood.setNodeId(discount.getActivityCode()); cartGood.setNodeId(discount.getActivityCode());
addcartGoodsList.add(cartGood); addcartGoodsList.addAll(buyAndGiftsPromotionService.setGiftExtra(cartGood, product, addcartGoodsList));
} }
} }
......
...@@ -17,6 +17,7 @@ import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBase ...@@ -17,6 +17,7 @@ import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBase
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -99,9 +100,7 @@ public class BuyAndGiftsPromotionService implements IPromotionService { ...@@ -99,9 +100,7 @@ public class BuyAndGiftsPromotionService implements IPromotionService {
cartGoods.setNodeId(sendActivity.getActivityCode()); cartGoods.setNodeId(sendActivity.getActivityCode());
cartGoods.setOriginalGoodsUid(sendGoods.getOriginalGoodsUid()); cartGoods.setOriginalGoodsUid(sendGoods.getOriginalGoodsUid());
cartGoods.setIsSendGoods(true); cartGoods.setIsSendGoods(true);
cartGoodsList.addAll(this.setGiftExtra(cartGoods,product,cartGoodsList));
this.setGiftExtra(cartGoods,product,cartGoodsList);
cartGoodsList.add(cartGoods);
totalGiftAmount += product.getFinalPrice() * sendGoods.getSendNumber(); totalGiftAmount += product.getFinalPrice() * sendGoods.getSendNumber();
} }
} }
...@@ -202,7 +201,17 @@ public class BuyAndGiftsPromotionService implements IPromotionService { ...@@ -202,7 +201,17 @@ public class BuyAndGiftsPromotionService implements IPromotionService {
} }
private void setGiftExtra(CartGoods cartGoods,ProductBeanDTO product,List<CartGoods> cartGoodsList) { /**
* 设置赠品的属性, 默认选择第一个属性, 如果购物车有同样商品,则和购物车商品属性一致
* @param cartGoods 赠品的购物车行
* @param product 商品信息
* @param cartGoodsList 现购物车行信息
* @return 如果赠品有多个,则会分裂为多行返回
*/
public List<CartGoods> setGiftExtra(CartGoods cartGoods,ProductBeanDTO product,List<CartGoods> cartGoodsList) {
List<CartGoods> result = new ArrayList<>();
result.add(cartGoods);
long count = cartGoodsList.stream().filter(c -> c.getSpuId().equals(cartGoods.getSpuId())).count(); long count = cartGoodsList.stream().filter(c -> c.getSpuId().equals(cartGoods.getSpuId())).count();
//购物车内存在同类 //购物车内存在同类
if (count>0) { if (count>0) {
...@@ -217,9 +226,7 @@ public class BuyAndGiftsPromotionService implements IPromotionService { ...@@ -217,9 +226,7 @@ public class BuyAndGiftsPromotionService implements IPromotionService {
} }
//不存在 //不存在
else { else {
if (product.getProductAttributeGroupList().size()==0) { if (product.getProductAttributeGroupList().size() > 0) {
return;
}
List<CartGoods.CartGoodsExtra> extra = new ArrayList<>(); List<CartGoods.CartGoodsExtra> extra = new ArrayList<>();
ArrayList<String> name = new ArrayList<>(); ArrayList<String> name = new ArrayList<>();
List<ProductBeanDTO.ProductAttributeGroupListBean> productAttributeGroupList = product.getProductAttributeGroupList(); List<ProductBeanDTO.ProductAttributeGroupListBean> productAttributeGroupList = product.getProductAttributeGroupList();
...@@ -236,4 +243,19 @@ public class BuyAndGiftsPromotionService implements IPromotionService { ...@@ -236,4 +243,19 @@ public class BuyAndGiftsPromotionService implements IPromotionService {
cartGoods.setSubName(StringUtils.join(name, "/")); cartGoods.setSubName(StringUtils.join(name, "/"));
} }
} }
//如果赠品有属性,并且赠送的数量大于1,则分裂为多行,每行数量为1,这样前端可以为每一个赠品选择不同属性
if (CollectionUtils.isNotEmpty(cartGoods.getExtra()) && cartGoods.getQty() > 1) {
int qty = cartGoods.getQty();
cartGoods.setQty(1); //设置数量为1
for (int i=1; i<qty; i++) {
CartGoods newRow = new CartGoods();
BeanUtils.copyProperties(cartGoods, newRow);
newRow.setCartGoodsUid(UUID.randomUUID().toString());
newRow.setQty(1);
result.add(newRow);
}
}
return result;
}
} }
...@@ -370,7 +370,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -370,7 +370,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, addShoppingCartGoodsRequestVo.getOrderType()); ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, addShoppingCartGoodsRequestVo.getOrderType());
activityQueryDto.setBizType(bizType); activityQueryDto.setBizType(bizType);
if (grayPush(partnerId, storeId, "2")) { if (true) {
CalculationDiscountResult discountResult = null; CalculationDiscountResult discountResult = null;
discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType, partnerId, storeId, userId discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType, partnerId, storeId, userId
, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList , appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList
......
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