Commit d022b42f by chongfu.liang

x件y折

parent a8b4bdfe
...@@ -180,6 +180,7 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -180,6 +180,7 @@ public class ActivityCalculationDiscountResponseDto {
* 购物车商品行uid * 购物车商品行uid
*/ */
private String cartGoodsUid; private String cartGoodsUid;
private Boolean zeroDiscount;
} }
@Data @Data
......
...@@ -41,6 +41,7 @@ import cn.freemud.service.*; ...@@ -41,6 +41,7 @@ import cn.freemud.service.*;
import cn.freemud.service.delivery.DeliveryFactory; import cn.freemud.service.delivery.DeliveryFactory;
import cn.freemud.service.delivery.DeliveryService; import cn.freemud.service.delivery.DeliveryService;
import cn.freemud.service.impl.calculate.*; import cn.freemud.service.impl.calculate.*;
import cn.freemud.service.impl.calculate.promotion.GiftSharingService;
import cn.freemud.service.shoppingCart.ShoppingCartRelationFactory; import cn.freemud.service.shoppingCart.ShoppingCartRelationFactory;
import cn.freemud.service.shoppingCart.ShoppingCartRelationService; import cn.freemud.service.shoppingCart.ShoppingCartRelationService;
import cn.freemud.service.thirdparty.*; import cn.freemud.service.thirdparty.*;
...@@ -189,7 +190,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -189,7 +190,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
@Autowired @Autowired
private ShoppingCartRelationFactory shoppingCartRelationFactory; private ShoppingCartRelationFactory shoppingCartRelationFactory;
@Autowired
private GiftSharingService giftSharingService;
/** /**
...@@ -1251,6 +1253,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1251,6 +1253,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount discountDTO = result.getDiscounts().stream().filter(d -> 221 == d.getType()).findFirst().get(); ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount discountDTO = result.getDiscounts().stream().filter(d -> 221 == d.getType()).findFirst().get();
convert2SendPoint(result, discountDTO); convert2SendPoint(result, discountDTO);
} }
giftSharingService.xPiecesYFoldAdapter(activityCalculationDiscountResponseDto);
result.setValidCouponMap(validCouponMap); result.setValidCouponMap(validCouponMap);
result.setDeliveryAmount(distributionFee); result.setDeliveryAmount(distributionFee);
result.setDistributionFee(result.getDistributionFee()); result.setDistributionFee(result.getDistributionFee());
......
...@@ -17,6 +17,7 @@ import cn.freemud.service.CouponService; ...@@ -17,6 +17,7 @@ import cn.freemud.service.CouponService;
import cn.freemud.service.active.ActiveFactory; import cn.freemud.service.active.ActiveFactory;
import cn.freemud.service.active.ActiveService; import cn.freemud.service.active.ActiveService;
import cn.freemud.service.impl.AssortmentSdkService; import cn.freemud.service.impl.AssortmentSdkService;
import cn.freemud.service.impl.calculate.promotion.GiftSharingService;
import cn.freemud.service.thirdparty.CalculationClient; import cn.freemud.service.thirdparty.CalculationClient;
import cn.freemud.utils.PropertyConvertUtil; import cn.freemud.utils.PropertyConvertUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
...@@ -60,6 +61,9 @@ public class CalculationSharingDiscountService { ...@@ -60,6 +61,9 @@ public class CalculationSharingDiscountService {
@Autowired @Autowired
private ActiveFactory activeFactory; private ActiveFactory activeFactory;
@Autowired
private GiftSharingService giftSharingService;
public CalculationSharingDiscountResponseDto.CalculationDiscountResult getCalculationSharingDiscountResult(String menuType public CalculationSharingDiscountResponseDto.CalculationDiscountResult getCalculationSharingDiscountResult(String menuType
, String partnerId , String partnerId
, String storeId , String storeId
...@@ -202,7 +206,7 @@ public class CalculationSharingDiscountService { ...@@ -202,7 +206,7 @@ public class CalculationSharingDiscountService {
convert2SendPoint(result, discountDTO); convert2SendPoint(result, discountDTO);
} }
// 将x件y折的0折数据转为赠品 // 将x件y折的0折数据转为赠品
xPiecesYFoldAdapter(sharingDiscountResponseDto); giftSharingService.xPiecesYFoldAdapter(sharingDiscountResponseDto);
result.setValidCouponMap(validCouponMap); result.setValidCouponMap(validCouponMap);
result.setDeliveryAmount(deliveryAmount); result.setDeliveryAmount(deliveryAmount);
...@@ -220,47 +224,6 @@ public class CalculationSharingDiscountService { ...@@ -220,47 +224,6 @@ public class CalculationSharingDiscountService {
return null; return null;
} }
private void xPiecesYFoldAdapter(CalculationSharingDiscountResponseDto sharingDiscountResponseDto) {
CalculationSharingDiscountResponseDto.CalculationDiscountResult result = sharingDiscountResponseDto.getResult();
if (result == null){
return;
}
if (CollectionUtils.isEmpty(result.getDiscounts()) && CollectionUtils.isEmpty(result.getGoods())){
return;
}
// 0折的x件y折活动
List<String> activityCode = result.getDiscounts().stream()
.filter(p -> ActivityTypeEnum.TYPE_104.getCode().equals(p.getType()) && p.getZeroDiscount())
.map(p -> p.getActivityCode()).collect(Collectors.toList());
if (CollectionUtils.isEmpty(activityCode)){
return;
}
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> discountGoodsList = result.getGoods().stream().filter(p -> CollectionUtils.isNotEmpty(p.getDiscounts())
&& p.getDiscounts().stream().filter(discount -> activityCode.contains(discount.getActivityCode())).count() > 0).collect(Collectors.toList());
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = result.getGoods();
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods goods : discountGoodsList){
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discountList = goods.getDiscounts()
.stream().filter(p -> activityCode.contains(p.getActivityCode())).collect(Collectors.toList());
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount : discountList){
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods sendGoods = new CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods();
sendGoods.setCartGoodsUid(UUID.randomUUID().toString());
sendGoods.setGoodsId(discount.getGoodsId());
sendGoods.setCartGoodType(CalculationGoodsType.TYPE_1.getType());
sendGoods.setGoodsQuantity(discount.getActualGoodsNumber());
sendGoods.setOriginalPrice(discount.getSignleDiscount());
sendGoods.setRealAmount(0L);
goodsList.add(sendGoods);
}
}
}
private void convert2SendPoint(CalculationSharingDiscountResponseDto.CalculationDiscountResult result, CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount discountDTO) { private void convert2SendPoint(CalculationSharingDiscountResponseDto.CalculationDiscountResult result, CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount discountDTO) {
SendPoint sendPointNew = new SendPoint(); SendPoint sendPointNew = new SendPoint();
......
package cn.freemud.service.impl.calculate.promotion; package cn.freemud.service.impl.calculate.promotion;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.activity.ActivityDiscountsDto; import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
import cn.freemud.entities.dto.activity.ActivityQueryDto; import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto; import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
...@@ -23,6 +24,7 @@ import org.springframework.stereotype.Service; ...@@ -23,6 +24,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -62,6 +64,85 @@ public class GiftSharingService { ...@@ -62,6 +64,85 @@ public class GiftSharingService {
this.setCartGoods(discountResult, cartGoodsList, beanDTOList,shoppingCartInfoRequestVo, partnerId, flag); this.setCartGoods(discountResult, cartGoodsList, beanDTOList,shoppingCartInfoRequestVo, partnerId, flag);
} }
public void xPiecesYFoldAdapter(ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult result = activityCalculationDiscountResponseDto.getResult();
if (result == null){
return;
}
if (CollectionUtils.isEmpty(result.getDiscounts()) && CollectionUtils.isEmpty(result.getGoods())){
return;
}
// 0折的x件y折活动
List<String> activityCode = result.getDiscounts().stream()
.filter(p -> ActivityTypeEnum.TYPE_104.getCode().equals(p.getType()) && p.getZeroDiscount())
.map(p -> p.getActivityCode()).collect(Collectors.toList());
if (CollectionUtils.isEmpty(activityCode)){
return;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> discountGoodsList = result.getGoods().stream().filter(p -> CollectionUtils.isNotEmpty(p.getDiscounts())
&& p.getDiscounts().stream().filter(discount -> activityCode.contains(discount.getActivityCode())).count() > 0).collect(Collectors.toList());
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = result.getGoods();
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods : discountGoodsList){
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discountList = goods.getDiscounts()
.stream().filter(p -> activityCode.contains(p.getActivityCode())).collect(Collectors.toList());
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount : discountList){
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods sendGoods = new ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods();
sendGoods.setCartGoodsUid(UUID.randomUUID().toString());
sendGoods.setGoodsId(discount.getGoodsId());
sendGoods.setCartGoodType(CalculationGoodsType.TYPE_1.getType());
sendGoods.setGoodsQuantity(discount.getActualGoodsNumber());
sendGoods.setOriginalPrice(discount.getSignleDiscount());
sendGoods.setRealAmount(0L);
goodsList.add(sendGoods);
}
}
}
public void xPiecesYFoldAdapter(CalculationSharingDiscountResponseDto sharingDiscountResponseDto) {
CalculationSharingDiscountResponseDto.CalculationDiscountResult result = sharingDiscountResponseDto.getResult();
if (result == null){
return;
}
if (CollectionUtils.isEmpty(result.getDiscounts()) && CollectionUtils.isEmpty(result.getGoods())){
return;
}
// 0折的x件y折活动
List<String> activityCode = result.getDiscounts().stream()
.filter(p -> ActivityTypeEnum.TYPE_104.getCode().equals(p.getType()) && p.getZeroDiscount())
.map(p -> p.getActivityCode()).collect(Collectors.toList());
if (CollectionUtils.isEmpty(activityCode)){
return;
}
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> discountGoodsList = result.getGoods().stream().filter(p -> CollectionUtils.isNotEmpty(p.getDiscounts())
&& p.getDiscounts().stream().filter(discount -> activityCode.contains(discount.getActivityCode())).count() > 0).collect(Collectors.toList());
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = result.getGoods();
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods goods : discountGoodsList){
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discountList = goods.getDiscounts()
.stream().filter(p -> activityCode.contains(p.getActivityCode())).collect(Collectors.toList());
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount : discountList){
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods sendGoods = new CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods();
sendGoods.setCartGoodsUid(UUID.randomUUID().toString());
sendGoods.setGoodsId(discount.getGoodsId());
sendGoods.setCartGoodType(CalculationGoodsType.TYPE_1.getType());
sendGoods.setGoodsQuantity(discount.getActualGoodsNumber());
sendGoods.setOriginalPrice(discount.getSignleDiscount());
sendGoods.setRealAmount(0L);
goodsList.add(sendGoods);
}
}
}
/** /**
* 抽取赠品 * 抽取赠品
* goodsId->goods * goodsId->goods
......
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