Commit fb1ec4c5 by 姜海波

购物车接口 计算满额减配送费 并返回结果

parent 650a7edc
...@@ -62,6 +62,8 @@ public class ActivityCalculationDiscountRequestDto { ...@@ -62,6 +62,8 @@ public class ActivityCalculationDiscountRequestDto {
*/ */
private List<CalculationDiscountGoods> goods; private List<CalculationDiscountGoods> goods;
private Long distributionFee;
@Data @Data
public static class CalculationDiscountCoupon { public static class CalculationDiscountCoupon {
/** /**
......
...@@ -22,6 +22,11 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -22,6 +22,11 @@ public class ActivityCalculationDiscountResponseDto {
private String msg; private String msg;
/** /**
* 优惠后运费
*/
private Long distributionFee;
/**
* 集合外的为系统按照优先级计算出来的优惠信息 * 集合外的为系统按照优先级计算出来的优惠信息
* ,calculationResults集合中的为多种优惠方案 * ,calculationResults集合中的为多种优惠方案
* 计算出来的优惠信息列表,并按优惠力度倒序排列 * 计算出来的优惠信息列表,并按优惠力度倒序排列
...@@ -84,6 +89,17 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -84,6 +89,17 @@ public class ActivityCalculationDiscountResponseDto {
*/ */
private List<SubtractStockVO> stocks; private List<SubtractStockVO> stocks;
/**
* 配送费
*/
private Long deliveryAmount;
/**
* 优惠后 配送费
*/
private Long distributionFee;
@Data @Data
public static class ActivityPrompt { public static class ActivityPrompt {
...@@ -120,6 +136,7 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -120,6 +136,7 @@ public class ActivityCalculationDiscountResponseDto {
* 11-每满减 * 11-每满减
* 12-阶梯满减 * 12-阶梯满减
* 2-单品特价 * 2-单品特价
* 14-满额减配送费
* 21-单品折扣 * 21-单品折扣
* 3-优惠券 * 3-优惠券
* 5-整单满金额折 * 5-整单满金额折
...@@ -134,6 +151,8 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -134,6 +151,8 @@ public class ActivityCalculationDiscountResponseDto {
* 83-整单满数量打折 * 83-整单满数量打折
*/ */
private Integer type; private Integer type;
private Long thresholdAmount;
} }
@Data @Data
......
...@@ -5,6 +5,7 @@ import cn.freemud.entities.dto.activity.ActivityDiscountsDto; ...@@ -5,6 +5,7 @@ import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
import cn.freemud.entities.dto.activity.ShareDiscountActivityDto; import cn.freemud.entities.dto.activity.ShareDiscountActivityDto;
import cn.freemud.entities.vo.SubtractStockVO; import cn.freemud.entities.vo.SubtractStockVO;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -93,6 +94,27 @@ public class ShoppingCartGoodsDto { ...@@ -93,6 +94,27 @@ public class ShoppingCartGoodsDto {
*/ */
private List<SubtractStockVO> stocks; private List<SubtractStockVO> stocks;
/**
* 配送费
*/
private Long deliveryAmount;
/**
* 减免后配送费
*/
private Long discountDeliveryAmount;
/**
* 满多少额度 减免
*/
private Long thresholdAmount;
/**
* 是否参加满额减免
*/
@Builder.Default
private Boolean isDiscountDelivery = false;
@Data @Data
public static class CartGoodsDetailDto { public static class CartGoodsDetailDto {
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
*/ */
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
...@@ -91,4 +92,29 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV ...@@ -91,4 +92,29 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
* 会员卡优惠金额 * 会员卡优惠金额
*/ */
private Integer cardDiscountAmount; private Integer cardDiscountAmount;
/**
* 配送费
*/
private Long deliveryAmount;
/**
* 减免后配送费
*/
private Long discountDeliveryAmount;
/**
* 满多少额度 减免
*/
private Long thresholdAmount;
/**
* 是否参加满额减免
*/
@Builder.Default
private Boolean isDiscountDelivery = false;
} }
...@@ -17,6 +17,7 @@ public enum ActivityTypeEnum { ...@@ -17,6 +17,7 @@ public enum ActivityTypeEnum {
TYPE_11(11, "每满减"), TYPE_11(11, "每满减"),
TYPE_12(12, "阶梯满减"), TYPE_12(12, "阶梯满减"),
TYPE_13(13, "新用户立减"), TYPE_13(13, "新用户立减"),
TYPE_14(14, "满额减配送费"),
TYPE_104(104,"x件y折"), TYPE_104(104,"x件y折"),
/** /**
......
...@@ -95,7 +95,7 @@ public interface ShoppingCartNewService { ...@@ -95,7 +95,7 @@ public interface ShoppingCartNewService {
Integer orderType, Integer orderType,
List<CartGoods> cartGoodsList, List<CartGoods> cartGoodsList,
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons,
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList,String menuType); List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList,String menuType,Long distributionFee);
List<CartGoods> updateCartGoodsLegal(CartGoods cartGoods, String userId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, List<CartGoods> oldAllCartGoodsList); List<CartGoods> updateCartGoodsLegal(CartGoods cartGoods, String userId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, List<CartGoods> oldAllCartGoodsList);
......
...@@ -215,6 +215,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -215,6 +215,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
String spuId = addShoppingCartGoodsRequestVo.getSpuId(); String spuId = addShoppingCartGoodsRequestVo.getSpuId();
String skuId = addShoppingCartGoodsRequestVo.getSkuId(); String skuId = addShoppingCartGoodsRequestVo.getSkuId();
String goodsId = StringUtils.isEmpty(skuId) ? spuId : skuId; String goodsId = StringUtils.isEmpty(skuId) ? spuId : skuId;
String menuType = addShoppingCartGoodsRequestVo.getMenuType();
Integer orderType = addShoppingCartGoodsRequestVo.getOrderType();
CartGoods cartGoods = ShoppingCartConvertAdapter.convent2CartGoods(addShoppingCartGoodsRequestVo); CartGoods cartGoods = ShoppingCartConvertAdapter.convent2CartGoods(addShoppingCartGoodsRequestVo);
List<Long> productIds = new ArrayList<>(); List<Long> productIds = new ArrayList<>();
...@@ -238,6 +240,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -238,6 +240,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
Integer checkQty = allCartGoodsList.indexOf(cartGoods) != -1 ? Integer checkQty = allCartGoodsList.indexOf(cartGoods) != -1 ?
allCartGoodsList.get(allCartGoodsList.indexOf(cartGoods)).getQty() + cartGoods.getQty() : cartGoods.getQty(); allCartGoodsList.get(allCartGoodsList.indexOf(cartGoods)).getQty() + cartGoods.getQty() : cartGoods.getQty();
//查询多个商品库存信息 //查询多个商品库存信息
queryManyGoodsStocks(addShoppingCartGoodsRequestVo, productIds, productBeanListSpuClass, skuId, checkQty); queryManyGoodsStocks(addShoppingCartGoodsRequestVo, productIds, productBeanListSpuClass, skuId, checkQty);
...@@ -253,7 +256,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -253,7 +256,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
// 获取优惠信息 // 获取优惠信息
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, addShoppingCartGoodsRequestVo.getOrderType(), allCartGoodsList,BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode()); ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult
=getCalculationDiscountResult(menuType,partnerId,storeId,userId,appId,userLoginInfoDto.getWxAppid(),orderType,allCartGoodsList,new ArrayList(),new ArrayList<>());
// 当商品数量被设为0时 // 当商品数量被设为0时
if (Objects.equals(cartGoods.getQty(), 0)) { if (Objects.equals(cartGoods.getQty(), 0)) {
assortmentSdkService.updateGoodsQtyBySdk(partnerId, userId, storeId, cartGoods.getCartGoodsUid(), 0, "", shoppingCartBaseService); assortmentSdkService.updateGoodsQtyBySdk(partnerId, userId, storeId, cartGoods.getCartGoodsUid(), 0, "", shoppingCartBaseService);
...@@ -314,6 +320,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -314,6 +320,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
String appId = updateShoppingCartGoodsQtyRequestVo.getAppId(); String appId = updateShoppingCartGoodsQtyRequestVo.getAppId();
String cartGoodsUid = updateShoppingCartGoodsQtyRequestVo.getCartGoodsUid(); String cartGoodsUid = updateShoppingCartGoodsQtyRequestVo.getCartGoodsUid();
Integer qty = updateShoppingCartGoodsQtyRequestVo.getQty(); Integer qty = updateShoppingCartGoodsQtyRequestVo.getQty();
String menuType = updateShoppingCartGoodsQtyRequestVo.getMenuType();
Integer orderType=updateShoppingCartGoodsQtyRequestVo.getOrderType();
// 先验证商品是否存在 // 先验证商品是否存在
CartGoods cartGoods = assortmentSdkService.getCartGoodsBySdk(partnerId, userId, storeId, cartGoodsUid, "", shoppingCartBaseService); CartGoods cartGoods = assortmentSdkService.getCartGoodsBySdk(partnerId, userId, storeId, cartGoodsUid, "", shoppingCartBaseService);
if (cartGoods == null) { if (cartGoods == null) {
...@@ -336,7 +345,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -336,7 +345,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, updateShoppingCartGoodsQtyRequestVo.getSessionId(), "", shoppingCartBaseService); assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, updateShoppingCartGoodsQtyRequestVo.getSessionId(), "", shoppingCartBaseService);
// 获取优惠信息 // 获取优惠信息
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, updateShoppingCartGoodsQtyRequestVo.getOrderType(), cartGoodsList,BusinessTypeEnum.getByType(updateShoppingCartGoodsQtyRequestVo.getMenuType()).getCode()); ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult
=getCalculationDiscountResult(menuType,partnerId,storeId,userId,appId,userLoginInfoDto.getWxAppid(),orderType,cartGoodsList,new ArrayList(),new ArrayList<>());
if (calculationDiscountResult == null) { if (calculationDiscountResult == null) {
shoppingCartGoodsResponseVo.setProducts(cartGoodsList); shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
// return shoppingCartGoodsResponseVo; // return shoppingCartGoodsResponseVo;
...@@ -409,6 +419,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -409,6 +419,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
String appId = shoppingCartInfoRequestVo.getAppId(); String appId = shoppingCartInfoRequestVo.getAppId();
String couponCode = shoppingCartInfoRequestVo.getCouponCode(); String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String activityCode = shoppingCartInfoRequestVo.getActivityCode(); String activityCode = shoppingCartInfoRequestVo.getActivityCode();
String menuType = shoppingCartInfoRequestVo.getMenuType();
Integer orderType = shoppingCartInfoRequestVo.getOrderType();
// 获取购物车商品 // 获取购物车商品
List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, null, "", shoppingCartBaseService); List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, null, "", shoppingCartBaseService);
...@@ -431,8 +443,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -431,8 +443,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
coupon.setActivityCode(activityCode); coupon.setActivityCode(activityCode);
coupons.add(coupon); coupons.add(coupon);
} }
// 获取优惠信息 // 获取优惠信息
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType(), cartGoodsList, coupons, null,BusinessTypeEnum.getByType(shoppingCartInfoRequestVo.getMenuType()).getCode()); ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType,partnerId,storeId,userId,appId,userLoginInfoDto.getWxAppid(),orderType,cartGoodsList,coupons,null);
if (calculationDiscountResult == null) { if (calculationDiscountResult == null) {
shoppingCartGoodsResponseVo.setProducts(cartGoodsList); shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
} }
...@@ -530,6 +544,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -530,6 +544,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
String couponCode = shoppingCartInfoRequestVo.getCouponCode(); String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String activityCode = shoppingCartInfoRequestVo.getActivityCode(); String activityCode = shoppingCartInfoRequestVo.getActivityCode();
String tableNumber = assortmentCustomerInfoVo.getTableNumber(); String tableNumber = assortmentCustomerInfoVo.getTableNumber();
String menuType = shoppingCartInfoRequestVo.getMenuType();
Integer orderType = shoppingCartInfoRequestVo.getOrderType();
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList = shoppingCartInfoRequestVo.getSendGoods(); List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList = shoppingCartInfoRequestVo.getSendGoods();
...@@ -591,7 +607,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -591,7 +607,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
} }
// 获取优惠信息 // 获取优惠信息
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType(), cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(shoppingCartInfoRequestVo.getMenuType()).getCode()); ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType,partnerId,storeId,userId,appId,userLoginInfoDto.getWxAppid(),orderType,cartGoodsList,coupons,sendGoodsList);
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType()); ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType());
...@@ -611,6 +627,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -611,6 +627,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
shoppingCartGoodsDto.setTotalAmount(shoppingCartGoodsDto.getTotalAmount() - packAmount); shoppingCartGoodsDto.setTotalAmount(shoppingCartGoodsDto.getTotalAmount() - packAmount);
shoppingCartGoodsDto.setOriginalTotalAmount(shoppingCartGoodsDto.getOriginalTotalAmount() - packAmount); shoppingCartGoodsDto.setOriginalTotalAmount(shoppingCartGoodsDto.getOriginalTotalAmount() - packAmount);
shoppingCartGoodsDto.setPackageAmount(packAmount);*/ shoppingCartGoodsDto.setPackageAmount(packAmount);*/
shoppingCartGoodsDto.setDeliveryAmount(shoppingCartGoodsResponseVo.getDeliveryAmount());
shoppingCartGoodsDto.setDiscountDeliveryAmount(shoppingCartGoodsResponseVo.getDiscountDeliveryAmount());
shoppingCartGoodsDto.setThresholdAmount(shoppingCartGoodsResponseVo.getThresholdAmount());
shoppingCartGoodsDto.setIsDiscountDelivery(shoppingCartGoodsResponseVo.getIsDiscountDelivery());
return ResponseUtil.success(shoppingCartGoodsDto); return ResponseUtil.success(shoppingCartGoodsDto);
} }
...@@ -671,8 +691,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -671,8 +691,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
* @return * @return
*/ */
public ActivityCalculationDiscountResponseDto.CalculationDiscountResult getActivityCalculationDiscountResponse( public ActivityCalculationDiscountResponseDto.CalculationDiscountResult getActivityCalculationDiscountResponse(
String partnerId, String storeId, String userId, String wxAppid, Integer orderType, List<CartGoods> cartGoodsList,String menuType) { String partnerId, String storeId, String userId, String wxAppid, Integer orderType, List<CartGoods> cartGoodsList,String menuType, Long distributionFee) {
return getActivityCalculationDiscountResponse(partnerId, storeId, userId, wxAppid, orderType, cartGoodsList, new ArrayList<>(), new ArrayList<>(),menuType); return getActivityCalculationDiscountResponse(partnerId, storeId, userId, wxAppid, orderType, cartGoodsList, new ArrayList<>(), new ArrayList<>(),menuType,distributionFee);
} }
/** /**
...@@ -687,15 +707,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -687,15 +707,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
public ActivityCalculationDiscountResponseDto.CalculationDiscountResult getActivityCalculationDiscountResponse( public ActivityCalculationDiscountResponseDto.CalculationDiscountResult getActivityCalculationDiscountResponse(
String partnerId, String storeId, String userId, String appId, Integer orderType, List<CartGoods> cartGoodsList, String partnerId, String storeId, String userId, String appId, Integer orderType, List<CartGoods> cartGoodsList,
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons,
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList,String menuType) { List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList,String menuType,Long distributionFee) {
// 当购物车中只有商品券并且未使用折扣券时,不调用接口计算
// if (cartGoodsList.size() == 1
// && coupons.size() == 0) {
// if (cartGoodsList.get(0).getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) {
// return null;
// }
// }
//cartGoodsList = cartGoodsList.stream().filter(goods -> ObjectUtils.notEqual(GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType(), goods.getGoodsType())).collect(Collectors.toList());
ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType); ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList = new ArrayList<>(); List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList = new ArrayList<>();
// 校验后有效的商品券map // 校验后有效的商品券map
...@@ -746,6 +759,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -746,6 +759,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
activityCalculationDiscountRequestDto.setGoods(calculationDiscountGoodsList); activityCalculationDiscountRequestDto.setGoods(calculationDiscountGoodsList);
activityCalculationDiscountRequestDto.setCoupons(coupons); activityCalculationDiscountRequestDto.setCoupons(coupons);
activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIds(partnerId, storeId)); activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIds(partnerId, storeId));
activityCalculationDiscountRequestDto.setDistributionFee(distributionFee);
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto; ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto;
try { try {
activityCalculationDiscountResponseDto = activityClient.calculationDiscount(activityCalculationDiscountRequestDto); activityCalculationDiscountResponseDto = activityClient.calculationDiscount(activityCalculationDiscountRequestDto);
...@@ -757,6 +771,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -757,6 +771,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
if (activityCalculationDiscountResponseDto != null && StringUtils.equals(activityCalculationDiscountResponseDto.getStatusCode(), ResponseCodeConstant.RESPONSE_SUCCESS_STR)) { if (activityCalculationDiscountResponseDto != null && StringUtils.equals(activityCalculationDiscountResponseDto.getStatusCode(), ResponseCodeConstant.RESPONSE_SUCCESS_STR)) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult result = activityCalculationDiscountResponseDto.getResult(); ActivityCalculationDiscountResponseDto.CalculationDiscountResult result = activityCalculationDiscountResponseDto.getResult();
result.setValidCouponMap(validCouponMap); result.setValidCouponMap(validCouponMap);
result.setDeliveryAmount(distributionFee);
result.setDistributionFee(result.getDistributionFee());
return result; return result;
} }
throw new ServiceException(ResponseResult.OPERATE_TOO_OFTEN); throw new ServiceException(ResponseResult.OPERATE_TOO_OFTEN);
...@@ -804,6 +820,33 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -804,6 +820,33 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
return activityCalculationDiscountRequestDto; return activityCalculationDiscountRequestDto;
} }
/**
* * 构建 ActivityCalculationDiscountRequestDto
*
* @param partnerId
* @param storeId
* @param userId
* @param appId
* @param orderType
* @param distributionFee
* @return
*/
private ActivityCalculationDiscountRequestDto getActivityCalculationDiscountRequestDto(String partnerId, String storeId, String userId, String appId, Integer orderType, Long distributionFee) {
ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = new ActivityCalculationDiscountRequestDto();
activityCalculationDiscountRequestDto.setPartnerCode(partnerId);
activityCalculationDiscountRequestDto.setStoreId(storeId);
activityCalculationDiscountRequestDto.setIsShowGoodsActivity(1);
activityCalculationDiscountRequestDto.setUserId(userId);
activityCalculationDiscountRequestDto.setVer(1);
activityCalculationDiscountRequestDto.setAppId(appId);
activityCalculationDiscountRequestDto.setDistributionFee(distributionFee);
ActivityChannelEnum activityChannelEnum = PropertyConvertUtil.orderTypeConvert2ActivityChannel(orderType);
if (!Objects.isNull(activityChannelEnum)) {
activityCalculationDiscountRequestDto.setChannel(activityChannelEnum.getCode());
}
return activityCalculationDiscountRequestDto;
}
/** /**
* 累加需加入计算的商品 * 累加需加入计算的商品
...@@ -943,6 +986,24 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -943,6 +986,24 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
BuyAndGiftsPromotionService buyAndGiftsPromotionService =(BuyAndGiftsPromotionService) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.BUY_GIFTS); BuyAndGiftsPromotionService buyAndGiftsPromotionService =(BuyAndGiftsPromotionService) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.BUY_GIFTS);
buyAndGiftsPromotionService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo); buyAndGiftsPromotionService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo);
/**
* 满额减配送费
*/
if (calculationDiscountResult != null && CollectionUtils.isNotEmpty(calculationDiscountResult.getDiscounts())) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount discount
= calculationDiscountResult.getDiscounts().stream()
.filter(discount1 -> { return discount1.getType().equals(ActivityTypeEnum.TYPE_14.getCode());})
.findFirst().get();
if (discount != null) {
shoppingCartGoodsResponseVo.setDeliveryAmount(calculationDiscountResult.getDeliveryAmount());
shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(calculationDiscountResult.getDistributionFee());
shoppingCartGoodsResponseVo.setThresholdAmount(discount.getThresholdAmount());
shoppingCartGoodsResponseVo.setIsDiscountDelivery(true);
}
}
} }
/** /**
...@@ -1341,4 +1402,29 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1341,4 +1402,29 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
return point2DList; return point2DList;
} }
/**
* 获取优惠
*/
private ActivityCalculationDiscountResponseDto.CalculationDiscountResult getCalculationDiscountResult(String menuType
,String partnerId,String storeId,String userId,String appId,String wxappid,Integer orderType
,List<CartGoods> cartGoodsList,List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons
,List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList){
// 获取优惠信息
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult=null;
//外卖场景下 查询门店配送信息
if(BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)){
//TODO 查询门店信息
StoreResponseDto storeResponseDto = storeService.getStoreInfo(partnerId, storeId);
//TODO 查询门店外卖信息
StoreDeliveryInfoDto storeDeliveryInfoDto = storeService.getStoreDeliveryInfo(storeResponseDto, wxappid);
calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType, cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(menuType).getCode(),storeDeliveryInfoDto.getDeliveryAmount());
}else{
calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType, cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(menuType).getCode(),null);
}
return calculationDiscountResult;
}
} }
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