Commit 05fe7c58 by 周晓航

根据模板配置 计算包装费

Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent 54170d74
package cn.freemud.handle;
import cn.freemud.entities.dto.console.*;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.CreateOrderType;
import cn.freemud.enums.OrderType;
import cn.freemud.service.thirdparty.ConsoleApiClient;
import com.freemud.application.sdk.api.log.ApiLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Objects;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/7/23 上午11:58
* @description :
*/
@Component
public class CommonFunctionHandle {
@Autowired
private ConsoleApiClient consoleApiClient;
/**
* fisherman 【ID1033456】自提根据模板配置计算餐具包装费
*
* @param shoppingCartInfoRequestVo
* @param newPackAmount
* @return 外卖 true 打包带走 false null 为其他业务问题 不进入需求
*/
public Long getPackAmountByStoreConfig(ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, Long newPackAmount) {
Boolean isTakeOut = null;
if (Objects.equals(shoppingCartInfoRequestVo.getOrderType(), CreateOrderType.TAKE_OUT.getCode())) {
isTakeOut = true;
} else if (Objects.equals(shoppingCartInfoRequestVo.getReachStoreType(), OrderType.COLLECT_GOODS.getCode())) {
isTakeOut = false;
}
ApiLog.printLog("自提根据模板配置计算餐具包装费", String.valueOf(newPackAmount), String.valueOf(isTakeOut), null);
if (Objects.isNull(newPackAmount) || newPackAmount.compareTo(0L) == 0) {
return 0L;
}
if (Objects.isNull(isTakeOut)) {
return newPackAmount;
}
GetStoreMixRequest request = GetStoreMixRequest.builder().partnerId(shoppingCartInfoRequestVo.getPartnerId()).storeCode(shoppingCartInfoRequestVo.getShopId()).build();
// 查询 业务设置信息数据
request.setQuery(QueryFlag.builder().queryBusinessInfo(Boolean.TRUE).build());
ConsoleResponseDTO<BizDTO> responseDTO = consoleApiClient.getStoreMix(request);
BizDTO bizVO = responseDTO.getBizVO();
if (Objects.nonNull(bizVO) && Objects.nonNull(bizVO.getBusinessInfo())) {
// 查出 有配置 并且有开关 就判断 否则就走 默认值
ExpandFieldsDTO expandFields = bizVO.getBusinessInfo().getExpandFields();
if (Objects.nonNull(expandFields)) {
if (isTakeOut) {
// 外卖 是否计算 包装费
if (Objects.nonNull(expandFields.getDeliveryPackageFeeSwitch())
&& ExpandFieldsDTO.STR_FALSE.equals(expandFields.getDeliveryPackageFeeSwitch())) {
return 0L;
}
} else {
// 打包带走 是否计算包装费
if (Objects.nonNull(expandFields.getPickupPackageFeeSwitch())
&& ExpandFieldsDTO.STR_FALSE.equals(expandFields.getPickupPackageFeeSwitch())) {
return 0L;
}
}
}
}
return newPackAmount;
}
}
...@@ -28,7 +28,6 @@ import cn.freemud.entities.dto.activity.ActivityQueryDto; ...@@ -28,7 +28,6 @@ import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto; import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountRequestDto; import cn.freemud.entities.dto.calculate.CalculationSharingDiscountRequestDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto; import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.dto.console.*;
import cn.freemud.entities.dto.openplatform.WeixinProductRequestDto; import cn.freemud.entities.dto.openplatform.WeixinProductRequestDto;
import cn.freemud.entities.dto.openplatform.WeixinProductResponseDto; import cn.freemud.entities.dto.openplatform.WeixinProductResponseDto;
import cn.freemud.entities.dto.shoppingCart.SendPoint; import cn.freemud.entities.dto.shoppingCart.SendPoint;
...@@ -39,6 +38,7 @@ import cn.freemud.entities.vo.*; ...@@ -39,6 +38,7 @@ import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.coupon.CouponAvailableCartInfo; import cn.freemud.entities.vo.coupon.CouponAvailableCartInfo;
import cn.freemud.entities.vo.coupon.CouponAvailableRequestVo; import cn.freemud.entities.vo.coupon.CouponAvailableRequestVo;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.handle.CommonFunctionHandle;
import cn.freemud.interceptor.BizServiceException; import cn.freemud.interceptor.BizServiceException;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
...@@ -208,8 +208,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -208,8 +208,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
private StoreItemAdapter storeItemAdapter; private StoreItemAdapter storeItemAdapter;
@Autowired @Autowired
private ConsoleApiClient consoleApiClient; private CommonFunctionHandle commonFunctionHandle;
/** /**
* 从微信卡券向购物车中添加商品 * 从微信卡券向购物车中添加商品
...@@ -2157,68 +2156,20 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2157,68 +2156,20 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
|| Objects.equals(shoppingCartInfoRequestVo.getReachStoreType(), OrderType.EAT_IN.getCode()))) { || Objects.equals(shoppingCartInfoRequestVo.getReachStoreType(), OrderType.EAT_IN.getCode()))) {
shoppingCartGoodsResponseVo.setNewPackAmount(null); shoppingCartGoodsResponseVo.setNewPackAmount(null);
} else if ((Objects.equals(shoppingCartInfoRequestVo.getOrderType(), CreateOrderType.TAKE_OUT.getCode()) } else if ((Objects.equals(shoppingCartInfoRequestVo.getOrderType(), CreateOrderType.TAKE_OUT.getCode())
|| Objects.equals(shoppingCartInfoRequestVo.getReachStoreType(), OrderType.COLLECT_GOODS.getCode())) || Objects.equals(shoppingCartInfoRequestVo.getReachStoreType(), OrderType.COLLECT_GOODS.getCode()))) {
&& Objects.equals(shoppingCartInfoRequestVo.getFlag(), CouponFlag.YES.getCode())) {
//fisherman 【ID1033456】自提根据模板配置计算餐具包装费 //fisherman 【ID1033456】自提根据模板配置计算餐具包装费
// 外卖 true 打包带走 false null 为其他业务问题 不进入需求 Long packAmount = commonFunctionHandle.getPackAmountByStoreConfig(shoppingCartInfoRequestVo, shoppingCartGoodsResponseVo.getNewPackAmount());
Boolean isTakeOut = null; shoppingCartGoodsResponseVo.setNewPackAmount(packAmount);
if (Objects.equals(shoppingCartInfoRequestVo.getOrderType(), CreateOrderType.TAKE_OUT.getCode())) { if (Objects.equals(shoppingCartInfoRequestVo.getFlag(), CouponFlag.YES.getCode())){
isTakeOut = true; Long originalTotalAmount = shoppingCartGoodsResponseVo.getOriginalTotalAmount() + packAmount;
} else if (Objects.equals(shoppingCartInfoRequestVo.getReachStoreType(), OrderType.COLLECT_GOODS.getCode())) { Long totalAmount = shoppingCartGoodsResponseVo.getTotalAmount() + packAmount;
isTakeOut = false; shoppingCartGoodsResponseVo.setOriginalTotalAmount(originalTotalAmount);
shoppingCartGoodsResponseVo.setTotalAmount(totalAmount);
} }
Long packAmount = getPackAmountByStoreConfig(partnerId,storeId,shoppingCartGoodsResponseVo.getNewPackAmount(),isTakeOut);
Long originalTotalAmount = shoppingCartGoodsResponseVo.getOriginalTotalAmount() + packAmount;
Long totalAmount = shoppingCartGoodsResponseVo.getTotalAmount() + packAmount;
shoppingCartGoodsResponseVo.setOriginalTotalAmount(originalTotalAmount);
shoppingCartGoodsResponseVo.setTotalAmount(totalAmount);
} }
} }
/**
*
* fisherman 【ID1033456】自提根据模板配置计算餐具包装费
* @param partnerId 商户号
* @param storeId 门店号
* @param newPackAmount Shop/ValidateShopProduct 接口返回的包装费
* @param isTakeOut 外卖 true 打包带走 false null 为其他业务问题 不进入需求
* @return
*/
private Long getPackAmountByStoreConfig(String partnerId, String storeId, Long newPackAmount,Boolean isTakeOut) {
ApiLog.printLog("自提根据模板配置计算餐具包装费",String.valueOf(newPackAmount),String.valueOf(isTakeOut),null);
if (Objects.isNull(newPackAmount)) {
return 0L;
}
if (Objects.isNull(isTakeOut)) {
return newPackAmount;
}
GetStoreMixRequest request = GetStoreMixRequest.builder().partnerId(partnerId).storeCode(storeId).build();
// 查询 业务设置信息数据
request.setQuery(QueryFlag.builder().queryBusinessInfo(Boolean.TRUE).build());
ConsoleResponseDTO<BizDTO> responseDTO = consoleApiClient.getStoreMix(request);
BizDTO bizVO = responseDTO.getBizVO();
if (Objects.nonNull(bizVO) && Objects.nonNull(bizVO.getBusinessInfo())) {
// 查出 有配置 并且有开关 就判断 否则就走 默认值
ExpandFieldsDTO expandFields = bizVO.getBusinessInfo().getExpandFields();
if (Objects.nonNull(expandFields)) {
if (isTakeOut) {
// 外卖 是否计算 包装费
if (Objects.nonNull(expandFields.getDeliveryPackageFeeSwitch())
&& ExpandFieldsDTO.STR_FALSE.equals(expandFields.getDeliveryPackageFeeSwitch())) {
return 0L;
}
}else {
// 打包带走 是否计算包装费
if (Objects.nonNull(expandFields.getPickupPackageFeeSwitch())
&& ExpandFieldsDTO.STR_FALSE.equals(expandFields.getPickupPackageFeeSwitch())) {
return 0L;
}
}
}
}
return newPackAmount;
}
/** /**
* 在原价、现价、折扣价上增加第一次使用会员卡的费用 * 在原价、现价、折扣价上增加第一次使用会员卡的费用
......
...@@ -13,6 +13,7 @@ import cn.freemud.entities.vo.CartGoods; ...@@ -13,6 +13,7 @@ import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo; import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo; import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.handle.CommonFunctionHandle;
import cn.freemud.service.thirdparty.CustomerApplicationClient; import cn.freemud.service.thirdparty.CustomerApplicationClient;
import cn.freemud.utils.BeanUtil; import cn.freemud.utils.BeanUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
...@@ -60,12 +61,17 @@ public class CalculationCommonService { ...@@ -60,12 +61,17 @@ public class CalculationCommonService {
@Resource @Resource
private MapperFacade mapperFacade; private MapperFacade mapperFacade;
@Autowired
private CommonFunctionHandle commonFunctionHandle;
/** /**
* 初始化价格 新算价走了 * 初始化价格 新算价走了
*/ */
public void initShoppingCart(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult public void initShoppingCart(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult
, List<CartGoods> cartGoodsList , List<CartGoods> cartGoodsList
, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, String couponCode) { , ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,
String couponCode,
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo ) {
/** /**
* 使用促销算价赋值行记录 * 使用促销算价赋值行记录
...@@ -98,7 +104,8 @@ public class CalculationCommonService { ...@@ -98,7 +104,8 @@ public class CalculationCommonService {
} }
shoppingCartGoodsResponseVo.setOriginalTotalAmount(discountResult == null ? totalOriginalAmount : discountResult.getOriginalTotalAmount()); shoppingCartGoodsResponseVo.setOriginalTotalAmount(discountResult == null ? totalOriginalAmount : discountResult.getOriginalTotalAmount());
shoppingCartGoodsResponseVo.setTotalAmount(discountResult == null ? totalAmount : discountResult.getTotalAmount()); shoppingCartGoodsResponseVo.setTotalAmount(discountResult == null ? totalAmount : discountResult.getTotalAmount());
shoppingCartGoodsResponseVo.setNewPackAmount(totalPackageAmount); //fisherman 【ID1033456】自提根据模板配置计算餐具包装费 新算价一起处理
shoppingCartGoodsResponseVo.setNewPackAmount(commonFunctionHandle.getPackAmountByStoreConfig(shoppingCartInfoRequestVo,totalPackageAmount));
// fisehrman 总优惠金额 需要+配送券的优惠金额 // fisehrman 总优惠金额 需要+配送券的优惠金额
if (discountResult == null) { if (discountResult == null) {
shoppingCartGoodsResponseVo.setTotalDiscountAmount(0L); shoppingCartGoodsResponseVo.setTotalDiscountAmount(0L);
......
...@@ -73,7 +73,11 @@ public class CalculationSharingCartService { ...@@ -73,7 +73,11 @@ public class CalculationSharingCartService {
/** /**
* 用促销价格初始化购物车行记录成交价 * 用促销价格初始化购物车行记录成交价
*/ */
calculationCommonService.initShoppingCart(discountResult, cartGoodsList, shoppingCartGoodsResponseVo, couponPromotionVO != null ? couponPromotionVO.getCouponCode() : null); calculationCommonService.initShoppingCart(discountResult,
cartGoodsList,
shoppingCartGoodsResponseVo,
couponPromotionVO != null ? couponPromotionVO.getCouponCode() : null,
shoppingCartInfoRequestVo);
if (BusinessTypeEnum.SAAS_MALL.getCode().equals(menuType) && null != shoppingCartInfoRequestVo && OrderChannelType.SAASMALL.getCode().equalsIgnoreCase(shoppingCartInfoRequestVo.getChannelType())) { if (BusinessTypeEnum.SAAS_MALL.getCode().equals(menuType) && null != shoppingCartInfoRequestVo && OrderChannelType.SAASMALL.getCode().equalsIgnoreCase(shoppingCartInfoRequestVo.getChannelType())) {
deliverySharingService.mallDeliveryResponse(shoppingCartGoodsResponseVo, deliveryAmount,discountResult); deliverySharingService.mallDeliveryResponse(shoppingCartGoodsResponseVo, deliveryAmount,discountResult);
......
package cn.freemud.service.impl.calculate; package cn.freemud.service.impl.calculate;
import cn.freemud.constant.ShoppingCartConstant; import cn.freemud.constant.ShoppingCartConstant;
import cn.freemud.entities.dto.GetMemberCouponListRequestDto;
import cn.freemud.entities.dto.UserLoginInfoDto; import cn.freemud.entities.dto.UserLoginInfoDto;
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;
...@@ -10,10 +9,8 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; ...@@ -10,10 +9,8 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.OrderChannelType; import cn.freemud.enums.OrderChannelType;
import cn.freemud.enums.CouponStatus;
import cn.freemud.service.impl.calculate.promotion.*; import cn.freemud.service.impl.calculate.promotion.*;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum; import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -77,7 +74,11 @@ public class CalculationSharingEquallyService { ...@@ -77,7 +74,11 @@ public class CalculationSharingEquallyService {
, ShoppingCartGoodsDto shoppingCartGoodsDto , ShoppingCartGoodsDto shoppingCartGoodsDto
, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity) { , CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity) {
calculationCommonService.initShoppingCart(discountResult, cartGoodsList, shoppingCartGoodsResponseVo, couponPromotionVO != null ? couponPromotionVO.getCouponCode() : null); calculationCommonService.initShoppingCart(discountResult,
cartGoodsList,
shoppingCartGoodsResponseVo,
couponPromotionVO != null ? couponPromotionVO.getCouponCode() : null,
shoppingCartInfoRequestVo);
if (BusinessTypeEnum.SAAS_MALL.getCode().equals(menuType) && null != shoppingCartInfoRequestVo && OrderChannelType.SAASMALL.getCode().equalsIgnoreCase(shoppingCartInfoRequestVo.getChannelType())) { if (BusinessTypeEnum.SAAS_MALL.getCode().equals(menuType) && null != shoppingCartInfoRequestVo && OrderChannelType.SAASMALL.getCode().equalsIgnoreCase(shoppingCartInfoRequestVo.getChannelType())) {
deliverySharingService.mallDeliveryResponse(shoppingCartGoodsResponseVo, deliveryAmount,discountResult); deliverySharingService.mallDeliveryResponse(shoppingCartGoodsResponseVo, deliveryAmount,discountResult);
} }
......
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