Commit deeef4d2 by 周晓航

下单新增 起送费校验规则

Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent 276945c5
package cn.freemud.entities.dto.store;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/7/22 下午3:12
* @description :
*/
@Data
public class DeliveryInfoDTO {
/**
* 每增加公里(单位米)
*/
private String addRange;
/**
* 每增加公里增加配送费(单位分)
*/
private Integer addRangeAmount;
/**
* 基础配送费(分)
*/
private Integer deliveryAmount;
/**
* 配送方式:1-三方物流配送、2-商家自配送
*/
private Integer deliveryMethod;
/**
* 配送半径
*/
private Integer deliveryRadius;
/**
* 基础配送距离(单位米)
*/
private String deliveryRange;
/**
* 手绘经纬度集合
*/
private String deliveryScope;
/**
* 外卖起送条件(1:杯数,2:金额)
*/
private Integer deliveryType;
/**
* 起送杯数
*/
private Integer freeDeliveryCup;
/**
* 起送价格(单位分)
*/
private Integer freeDeliveryPrice;
/**
* 所属商户号
*/
private String partnerId;
/**
* 配送范围类型 1 自定义 2 半径
*/
private Integer scopeConfig;
/**
* 扩展字段信息
*/
private DeliveryInfoExpFields expandFields;
}
package cn.freemud.entities.dto.store;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/9/22 下午3:24
* @description :
*/
@Data
public class DeliveryInfoExpFields {
/**
* 外卖起送价规则:1-按原价计算、2-按优惠价计算
*/
private String deliveryAmountType;
}
...@@ -10,7 +10,7 @@ public class SoreMixResponseDto { ...@@ -10,7 +10,7 @@ public class SoreMixResponseDto {
private BusinessInfoDto businessInfo; private BusinessInfoDto businessInfo;
private Object deliveryInfo; private DeliveryInfoDTO deliveryInfo;
private Object parentUntilTop; private Object parentUntilTop;
......
...@@ -219,6 +219,22 @@ public class CheckOrder { ...@@ -219,6 +219,22 @@ public class CheckOrder {
} }
/** /**
* 查询门店信息新接口
*/
public SoreMixResponseDto getStoreInfoNew(String partnerId, String shopId, StoreInfoRequestDto.QueryInfo query) {
// 获取门店信息
StoreInfoRequestDto request = new StoreInfoRequestDto();
request.setPartnerId(partnerId);
request.setStoreCode(shopId);
request.setQuery(query);
StoreBaseResponseDto<SoreMixResponseDto> storeInfoNew = storeClient.getStoreInfoNew(request);
if (storeInfoNew == null || storeInfoNew.getBizVO() == null) {
throw new ServiceException(ResponseResult.STORE_NOT_FOUND);
}
return storeInfoNew.getBizVO();
}
/**
* 下单门店相关校验 * 下单门店相关校验
*/ */
public StoreResponse.BizVO checkOrderByStore(CreateOrderVo createOrderVo, String trackingNo) { public StoreResponse.BizVO checkOrderByStore(CreateOrderVo createOrderVo, String trackingNo) {
...@@ -264,6 +280,19 @@ public class CheckOrder { ...@@ -264,6 +280,19 @@ public class CheckOrder {
} }
/** /**
* 调用该方法 需要自己判断 业务对象是否为null
* @param partnerId
* @param shopId
* @param query
* @return
*/
public SoreMixResponseDto getStoremixDto(String partnerId, String shopId, StoreInfoRequestDto.QueryInfo query) {
// 获取门店信息
SoreMixResponseDto storeInfoNew = getStoreInfoNew(partnerId, shopId, query);
return storeInfoNew;
}
/**
* 下单订单类型校验 * 下单订单类型校验
*/ */
public Integer checkOrderByOrderType(CreateOrderVo createOrderVo, AssortmentCustomerInfoVo userLoginInfoDto, public Integer checkOrderByOrderType(CreateOrderVo createOrderVo, AssortmentCustomerInfoVo userLoginInfoDto,
...@@ -409,14 +438,26 @@ public class CheckOrder { ...@@ -409,14 +438,26 @@ public class CheckOrder {
} }
} }
//订单金额小于起送费提示 //订单金额小于起送费提示
else if ((2 == storeDeliveryInfoDto.getDeliveryCondition() else if (2 == storeDeliveryInfoDto.getDeliveryCondition()
&& storeDeliveryInfoDto.getDeliveryLimitAmount() > shoppingCartGoodsDto.getTotalAmount())
&& !cocoPartnerId.contains(createOrderVo.getPartnerId())) { && !cocoPartnerId.contains(createOrderVo.getPartnerId())) {
// fisherman 【ID1037103】【野翠山】【B】外卖起送价规则取订单总金额 这特么用sdk就很吊, 得重新调用接口 // fisherman 【ID1037103】【野翠山】【B】外卖起送价规则取订单总金额 这特么用sdk就很吊, 得重新调用接口
if (businessInfoDto == null) { // 先暂时这么写, 到时候需要优化这一块 对于门店的请求操作
businessInfoDto = this.queryBusinessInfoNew(createOrderVo); StoreInfoRequestDto.QueryInfo query = new StoreInfoRequestDto.QueryInfo();
query.setQueryDeliveryInfo(Boolean.TRUE);
SoreMixResponseDto storemixDto = this.getStoremixDto(createOrderVo.getPartnerId(), createOrderVo.getShopId(), query);
DeliveryInfoDTO deliveryInfo = storemixDto.getDeliveryInfo();
Long deliveryLimitAmount = storeDeliveryInfoDto.getDeliveryLimitAmount();
Long totalAmount = shoppingCartGoodsDto.getTotalAmount();
if (Objects.nonNull(deliveryInfo) && Objects.nonNull(deliveryInfo.getExpandFields())) {
DeliveryInfoExpFields expandFields = deliveryInfo.getExpandFields();
if (Objects.equals(expandFields.getDeliveryAmountType(),"1")) {
//原价起送
totalAmount = shoppingCartGoodsDto.getOriginalTotalAmount();
}
}
if (deliveryLimitAmount.compareTo(totalAmount) > 0) {
throw new ServiceException(ResponseResult.STORE_DISCONTENT_DELIVERY_FEE);
} }
throw new ServiceException(ResponseResult.STORE_DISCONTENT_DELIVERY_FEE);
} }
storeDeliveryInfoDto.setEnableTakeaway(true); storeDeliveryInfoDto.setEnableTakeaway(true);
......
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