Commit da5e7ae4 by xiaoer.li@freemud.com

fix:套餐折扣

parent 59fcb90d
......@@ -307,8 +307,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, allCartGoodsList
, new ArrayList<>() //券
, null //加价购商品
, deliveryAmount
, 0);
, deliveryAmount);
//
sharingCartService.distribute(discountResult
......@@ -426,8 +425,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, cartGoodsList
, null //券
, null //加价购商品
, deliveryAmount
, 0);
, deliveryAmount);
sharingCartService.distribute(discountResult
, cartGoodsList
......@@ -577,8 +575,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, cartGoodsList
, coupons
, sendGoods
, deliveryAmount
, shoppingCartInfoRequestVo.getReachStoreType());
, deliveryAmount);
sharingCartService.distribute(calculationSharingDiscountResult
, cartGoodsList
, shoppingCartGoodsResponseVo
......@@ -779,8 +776,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, cartGoodsList
, coupons
, shoppingCartInfoRequestVo.getSendGoods()
, deliveryAmount
, shoppingCartInfoRequestVo.getReachStoreType());
, deliveryAmount);
//直接利用促销返回做均摊
sharingEquallyService.equally(discountResult
......
......@@ -347,7 +347,7 @@ public class CalculationCommonService {
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount : calculationGoods.getDiscounts()) {
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(discount.getActivityCode());
activityDiscountsDto.setActivityName(discount.getActivityName());
activityDiscountsDto.setActivityName(this.convertName(discount.getType(), discount.getActivityName()));
activityDiscountsDto.setActivityType(this.convertType(discount.getType()));
activityDiscountsDto.setDiscountAmount(discount.getDiscount().intValue());
activityDiscountsDtoList.add(activityDiscountsDto);
......@@ -616,6 +616,15 @@ public class CalculationCommonService {
return newType;
}
public String convertName(Integer type, String activityCode) {
Integer newType = 310;
String code = activityCode;
if (newType.equals(type)) {
code = "setMeal";
}
return code;
}
@Data
@NoArgsConstructor
public static class BlockRow {
......
......@@ -63,9 +63,9 @@ public class CalculationSharingDiscountService {
, boolean isMember
, List<CartGoods> cartGoodsList, List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> coupons
, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList
, Long deliveryAmount, Integer reachStoreType) {
, Long deliveryAmount) {
CalculationSharingDiscountRequestDto calculationSharingDiscountRequestDto = this.commonSharingDto(partnerId, storeId, userId, appId, orderType, reachStoreType);
CalculationSharingDiscountRequestDto calculationSharingDiscountRequestDto = this.commonSharingDto(partnerId, storeId, userId, appId, orderType);
// 校验后有效的商品券map
HashMap<String, CheckSpqInfoResponseDto> validCouponMap = new HashMap<>(16);
......@@ -290,7 +290,7 @@ public class CalculationSharingDiscountService {
* @param orderType
* @return
*/
private CalculationSharingDiscountRequestDto commonSharingDto(String partnerId, String storeId, String userId, String appId, Integer orderType, Integer reachStoreType) {
private CalculationSharingDiscountRequestDto commonSharingDto(String partnerId, String storeId, String userId, String appId, Integer orderType) {
CalculationSharingDiscountRequestDto calculationSharingDiscountRequestDto = new CalculationSharingDiscountRequestDto();
calculationSharingDiscountRequestDto.setPartnerCode(partnerId);
......@@ -308,11 +308,9 @@ public class CalculationSharingDiscountService {
//========================== 购物车查询特有逻辑 =================================
// 到店自取包装费设为null,外卖要计算包装费,flag为1表示去结算
// 兼容老版本判断null
if (Objects.equals(orderType, CreateOrderType.COLLECT_GOODS.getCode())
&& (Objects.equals(reachStoreType, null)
|| Objects.equals(reachStoreType, OrderType.EAT_IN.getCode()))) {
if (Objects.equals(orderType, CreateOrderType.COLLECT_GOODS.getCode())) {
calculationSharingDiscountRequestDto.setProductChannel(BusinessTypeEnum.SAAS_PICKUP.getCode());
} else if (Objects.equals(orderType, CreateOrderType.TAKE_OUT.getCode()) || Objects.equals(reachStoreType, OrderType.COLLECT_GOODS.getCode())) {
} else if (Objects.equals(orderType, CreateOrderType.TAKE_OUT.getCode())) {
calculationSharingDiscountRequestDto.setProductChannel(BusinessTypeEnum.SAAS_DELIVERY.getCode());
}
return calculationSharingDiscountRequestDto;
......
......@@ -15,10 +15,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -158,12 +155,46 @@ public class CalculationSharingEquallyService {
* @param discountResult
* @param shoppingCartGoodsDto
*/
private void setShoppingCartGoodsDtoActivityDiscounts(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult
public void setShoppingCartGoodsDtoActivityDiscounts(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult
, ShoppingCartGoodsDto shoppingCartGoodsDto) {
List<ActivityDiscountsDto> activityDiscountsDtos = new ArrayList<>();
shoppingCartGoodsDto.setActivityDiscountsDtos(activityDiscountsDtos);
if (discountResult == null) return;
Integer type = 2;
List<ActivityTypeEnum> activityTypeEnums = new LinkedList<>();
activityTypeEnums.add(ActivityTypeEnum.TYPE_11);
activityTypeEnums.add(ActivityTypeEnum.TYPE_12);
activityTypeEnums.add(ActivityTypeEnum.TYPE_3);
activityTypeEnums.add(ActivityTypeEnum.TYPE_31);
List<Integer> typeEnums = activityTypeEnums.stream().map(ActivityTypeEnum::getCode).collect(Collectors.toList());
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods good : discountResult.getGoods()) {
if (CollectionUtils.isNotEmpty(good.getSmallMaterial())) {
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.SmallMaterial> sm = good.getSmallMaterial()
.stream()
.filter(d -> type.equals(d.getType())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(sm)) continue;
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.SmallMaterial s : sm) {
if (CollectionUtils.isEmpty(s.getDiscounts())) continue;
HashMap<Integer, Long> discountMap = new HashMap<>();
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount d : s.getDiscounts()) {
if (!typeEnums.contains(d.getType())) continue;
Integer sType = d.getType();
discountMap.put(sType, d.getDiscount());
}
if (discountMap.isEmpty()) continue;
if (CollectionUtils.isEmpty(good.getDiscounts())) continue;
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount : good.getDiscounts()) {
Integer mType = discount.getType();
if (discountMap.get(mType) != null) {
discount.setDiscount(discount.getDiscount() + discountMap.get(mType).longValue());
}
}
}
}
}
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount> discounts = discountResult.getDiscounts();
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount discount : discounts) {
int discountAmount = (discount.getDiscount() == null) ? 0 : discount.getDiscount();
......
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