Commit f6e2bd05 by 查志伟

修复新算价均摊赠品属性未显示问题

parent c4f18bc2
......@@ -7,8 +7,32 @@ import java.util.List;
@Data
public class ProductAttributeGroupListBean {
/**
* 名称
*/
private String attributeName;
/**
* 别名
*/
private String foreignAttributeName;
/**
* 属性类型
*/
private Integer attributeType;
/**
* 三方编号
*/
private String customerCode;
private Integer maxNumber;
private Integer minNumber;
private Integer must;
private String options;
/**
* 排序,越小越靠前
*/
private Integer sequence;
private List<AttributeValueBean> attributeValues;
}
......@@ -218,9 +218,8 @@ public class BuyAndGiftsPromotionService implements IPromotionService {
List<CartGoods> result = new ArrayList<>();
result.add(cartGoods);
long count = cartGoodsList.stream().filter(c -> c.getSpuId().equals(cartGoods.getSpuId())).count();
//购物车内存在同类
if (count>0) {
if (null != cartGoodsList && cartGoodsList.stream().filter(c -> c.getSpuId().equals(cartGoods.getSpuId())).count() > 0) {
CartGoods find = cartGoodsList.stream().filter(c -> c.getCartGoodsUid().equals(cartGoods.getOriginalGoodsUid())).findFirst().orElse(null);
if (null == find) {
find = cartGoodsList.stream().filter(c -> c.getSpuId().equals(cartGoods.getSpuId())).findFirst().get();
......
......@@ -128,7 +128,7 @@ public class CalculationSharingEquallyService {
/**
* 赠品
*/
giftSharingService.equally(discountResult, cartGoodsDetailDtoList, activityQueryDto, menuType);
giftSharingService.equally(discountResult, cartGoodsDetailDtoList, activityQueryDto, menuType, userLoginInfoDto);
/**
* 加价购商品
......
package cn.freemud.service.impl.calculate.promotion;
import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.calculate.CalculationDiscountResult;
import cn.freemud.entities.dto.calculate.Goods;
......@@ -15,9 +15,10 @@ 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 cn.freemud.service.cache.GiftCacheManager;
import cn.freemud.service.impl.BuyAndGiftsPromotionService;
import cn.freemud.service.impl.calculate.CalculationCommonService;
import cn.freemud.service.product.ProductInfoManager;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -26,6 +27,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -43,12 +45,13 @@ import java.util.stream.Collectors;
public class GiftSharingService {
@Autowired
private AssortmentSdkService assortmentSdkService;
private BuyAndGiftsPromotionService buyAndGiftsPromotionService;
@Autowired
private ShoppingCartBaseServiceImpl shoppingCartBaseService;
private GiftCacheManager giftCacheManager;
@Autowired
private ProductInfoManager productInfoManager;
@Autowired
private CalculationCommonService calculationCommonService;
@Autowired
private ActiveFactory activeFactory;
......@@ -153,12 +156,13 @@ public class GiftSharingService {
public void equally(CalculationDiscountResult discountResult
, List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtoList
, ActivityQueryDto activityQueryDto
, String menuType) {
, String menuType
, UserLoginInfoDto userLoginInfoDto) {
if (discountResult == null || CollectionUtils.isEmpty(discountResult.getGoods())) {
return;
}
List<ProductBean> beanDTOList = this.drawGiftInfo(discountResult, activityQueryDto, menuType);
this.doCartGoodsDetailDto(discountResult, cartGoodsDetailDtoList, beanDTOList);
this.doCartGoodsDetailDto(discountResult, cartGoodsDetailDtoList, activityQueryDto, beanDTOList, userLoginInfoDto);
}
/**
......@@ -170,57 +174,52 @@ public class GiftSharingService {
*/
private void doCartGoodsDetailDto(CalculationDiscountResult discountResult
, List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtoList
, List<ProductBean> products) {
List<ShoppingCartGoodsDto.CartGoodsDetailDto> manyCartGoodsDetailDto = new ArrayList<>();
if (CollectionUtils.isEmpty(products)) cartGoodsDetailDtoList.addAll(manyCartGoodsDetailDto);
,ActivityQueryDto activityQueryDto
, List<ProductBean> products
, UserLoginInfoDto userLoginInfoDto) {
else {
if (CollectionUtils.isNotEmpty(products)) {
List<CartGoods> list = new ArrayList<>();
Map<String, Goods> discountForGift = this.getDiscountForGift(discountResult);
for (ProductBean product : products) {
String k = product.getPid();
Goods goods = discountForGift.get(k);
Goods goods = discountForGift.get(product.getPid());
GoodsDiscount discount = this.discountInfo(goods);
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = new ShoppingCartGoodsDto.CartGoodsDetailDto();
cartGoodsDetailDto.setOriginalGoodsUid(goods.getOriginalGoodsUid());
cartGoodsDetailDto.setCartGoodsUid(goods.getCartGoodsUid());
cartGoodsDetailDto.setTaxId(product.getTaxId());
cartGoodsDetailDto.setTax(product.getTax());
cartGoodsDetailDto.setSpuId(product.getPid());
cartGoodsDetailDto.setSpuName(product.getName());
cartGoodsDetailDto.setSkuId(goods.getGoodsId());
cartGoodsDetailDto.setSkuName(product.getName());
cartGoodsDetailDto.setIsSendGoods(ObjectUtils.equals(1, goods.getCartGoodType()));
cartGoodsDetailDto.setSalePrice(product.getOriginalPrice());
cartGoodsDetailDto.setPicture(product.getPicture());
cartGoodsDetailDto.setQty(goods.getGoodsQuantity());
cartGoodsDetailDto.setActivityType(discount.getType());
cartGoodsDetailDto.setNodeId(discount.getActivityCode());
cartGoodsDetailDto.setCategoryName(product.getCategoryName());
cartGoodsDetailDto.setStockLimit(ObjectUtils.equals(1, product.getStockLimit()));
cartGoodsDetailDto.setProductCode(product.getCustomerCode());
cartGoodsDetailDto.setCustomerCode(product.getCustomerCode());
cartGoodsDetailDto.setWeight(product.getWeight());
cartGoodsDetailDto.setUnit(product.getUnit());
cartGoodsDetailDto.setActivityDiscountsDtos(new ArrayList<>());
cartGoodsDetailDto.setClassificationId(product.getCategory());
cartGoodsDetailDto.setClassificationName(product.getCategoryName());
cartGoodsDetailDto.setOriginalPrice(product.getOriginalPrice());
cartGoodsDetailDto.setTotalDiscountAmount(goods.getDiscountAmount().intValue());
List<ActivityDiscountsDto> activityDto = new ArrayList<>();
ActivityDiscountsDto dto = new ActivityDiscountsDto();
dto.setActivityCode(discount.getActivityCode());
dto.setActivityName(discount.getActivityName());
dto.setActivityType(discount.getType());
dto.setDiscountAmount(discount.getDiscount().intValue());
dto.setActualActivityGoodsNumber(discount.getActualGoodsNumber());
activityDto.add(dto);
cartGoodsDetailDto.setActivityDiscountsDtos(activityDto);
cartGoodsDetailDto.setOriginalProductType(product.getType());
manyCartGoodsDetailDto.add(cartGoodsDetailDto);
CartGoods cartGood = new CartGoods();
cartGood.setGoodsId(goods.getGoodsId());
cartGood.setGoodsType(1);
cartGood.setSpuId(Objects.equals(product.getIsSkuProduct(), 1) ? product.getSpecProductId() : 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.setActivityCode(discount.getActivityCode());
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());
list.addAll(buyAndGiftsPromotionService.setGiftExtra(cartGood, product, null));
}
cartGoodsDetailDtoList.addAll(manyCartGoodsDetailDto);
// 因为有涉及到用户选择的属性,存入redis
list = giftCacheManager.resetGiftCache(list, null, activityQueryDto.getPartnerId(), activityQueryDto.getStoreId(), userLoginInfoDto.getMemberId());
List<ShoppingCartGoodsDto.CartGoodsDetailDto> detail = new ArrayList<>();
list.forEach(c -> {
Goods goods = discountForGift.get(c.getGoodsId());
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = calculationCommonService.convertCartGoods2DetailGoodsList(goods, c, activityQueryDto.getPartnerId());
cartGoodsDetailDtoList.add(cartGoodsDetailDto);
});
}
}
......
......@@ -73,7 +73,7 @@ public class ProductInfoManager {
query.setShopId(storeCode);
query.setProductInfoType(2);
query.setProductIds(goodsIdList);
query.setChannel(menuType);
query.setChannel(StringUtils.isBlank(menuType) ? "saas" : menuType);
query.setAutoFillSkuAttr(querySkuAttr);
ProductInfosDto response = productClient.listProductInfos(query);
if (null == response || !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, response.getErrcode()) || null == response.getData()) {
......
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