Commit ec989a00 by xiaoer.li@freemud.com

Merge remote-tracking branch 'remotes/origin/feature/1.9.30_门店起送规则' into develop

parents 6e6bb6af 1c9d4c57
......@@ -88,7 +88,7 @@
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>storecenter-sdk</artifactId>
<version>2.10.1.RELEASE</version>
<version>3.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>cn.freemud</groupId>
......
......@@ -82,4 +82,13 @@ public class StoreDeliveryInfoDto {
*/
private Integer pushOrderTime;
/**
* 外卖起送条件(1:杯数,2:金额)
*/
private Integer deliveryCondition;
/**
* 起送杯数
*/
private Integer freeDeliveryCup;
}
......@@ -55,10 +55,12 @@ public enum ResponseResult {
STORE_ITEM_NOT_DELIVERY("43008", "门店不支持外卖配送"),
STORE_ITEM_NOT_IN_DELIVERY_LIMIT_AMOUNT("43009", "订单金额未满足门店起送费"),
STORE_BUSINESS_HOUR_ERROR("43010", "门店营业时间错误"),
STORE_NOT_ENABLE_COLLECT_GOODS("43011","门店不支持到店"),
STORE_NOT_TABLE_INFO("43012","查询桌号失败"),
STORE_DISCONTENT_DELIVERY_FEE("43013","不满足起送金额"),
STORE_BIND_MALL_NOT_FOUND("43014","商城门店存在"),
STORE_NOT_ENABLE_COLLECT_GOODS("43011", "门店不支持到店"),
STORE_NOT_TABLE_INFO("43012", "查询桌号失败"),
STORE_DISCONTENT_DELIVERY_FEE("43013", "不满足起送金额"),
STORE_BIND_MALL_NOT_FOUND("43014", "商城门店存在"),
STORE_DISCONTENT_DELIVERY_CONDITION("43015", "门店起送条件设置错误"),
STORE_DISCONTENT_DELIVERY_CUP("43016", "不满足起送杯数"),
/**
* 购物车状态码
......
......@@ -94,7 +94,7 @@ public class AppOrderServiceImpl implements AppOrderService {
// 查询购物车(内部校验券点餐方式,券是否可用) 校验当前订单类型的下单参数
ShoppingCartGoodsDto shoppingCartGoodsDto = checkOrder.getShoppingCartGoodsDto(createOrderVo);
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto,shoppingCartGoodsDto.getTotalAmount(), trackingNo);
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto, shoppingCartGoodsDto, trackingNo);
//1.5.4版本,商品库存校验与扣库存
//List<String> stockProductIds = checkOrder.getStockProductIdList(createOrderVo, shoppingCartGoodsDto);
OrderExtInfoDto extInfo = orderservice.getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo);
......@@ -170,7 +170,7 @@ public class AppOrderServiceImpl implements AppOrderService {
BeanUtil.convertBean(createOrderReq,createOrderVo);
createOrderVo.setStoreName(storeResponse.getBizVO().getStoreName());
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, customerInfo, storeResponse.getBizVO(),shoppingCartGoodsDto.getTotalAmount(), trackingNo);
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, customerInfo, storeResponse.getBizVO(), shoppingCartGoodsDto, trackingNo);
//1.5.4版本,商品库存校验与扣库存
//List<String> stockProductIds = checkOrder.getStockProductIdList(createOrderVo, shoppingCartGoodsDto);
OrderExtInfoDto extInfo = orderservice.getExtInfo(customerInfo, storeResponse.getBizVO(), pushOrderTime, createOrderVo);
......
......@@ -174,7 +174,7 @@ public class CheckOrder {
* 下单订单类型校验
*/
public Integer checkOrderByOrderType(CreateOrderVo createOrderVo, AssortmentCustomerInfoVo userLoginInfoDto,
StoreResponse.BizVO storeResponseDto,Long totalAmount, String trackingNo) {
StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto, String trackingNo) {
Integer pushOrderTime = 0;
//非到店或者外卖,类型错误
if (!(CreateOrderType.COLLECT_GOODS.getCode().equals(createOrderVo.getOrderType()) ||
......@@ -228,15 +228,27 @@ public class CheckOrder {
}
//获取门店配送信息
StoreDeliveryInfoDto storeDeliveryInfoDto = null;
if(storeDeliveryUseOld) {
if (storeDeliveryUseOld) {
storeDeliveryInfoDto = getStoreDeliveryInfo(storeResponseDto, config, appId);
} else {
storeDeliveryInfoDto = getNewStoreDeliveryInfo(storeResponseDto, config, appId, trackingNo);
}
//todo : 这里不再支持从表中获取门店配送信息 改用接口方式调用
//外卖起送条件(1:杯数,2:金额)
if (!Arrays.asList(1, 2).contains(storeDeliveryInfoDto.getDeliveryCondition())) {
throw new ServiceException(ResponseResult.STORE_DISCONTENT_DELIVERY_CONDITION);
}
if (1 == storeDeliveryInfoDto.getDeliveryCondition()) {
int sum = shoppingCartGoodsDto.getProducts().stream().mapToInt(ShoppingCartGoodsDto.CartGoodsDetailDto::getQty).sum();
if (sum < storeDeliveryInfoDto.getFreeDeliveryCup()) {
throw new ServiceException(ResponseResult.STORE_DISCONTENT_DELIVERY_CUP);
}
}
//订单金额小于起送费提示
if (storeDeliveryInfoDto.getDeliveryLimitAmount() > totalAmount) {
else if (2 == storeDeliveryInfoDto.getDeliveryCondition() && storeDeliveryInfoDto.getDeliveryLimitAmount() > shoppingCartGoodsDto.getTotalAmount()) {
throw new ServiceException(ResponseResult.STORE_DISCONTENT_DELIVERY_FEE);
}
storeDeliveryInfoDto.setEnableTakeaway(true);
// 校验收货地址是否可配送
checkReceiveAddress(storeDeliveryInfoDto, createOrderVo);
......@@ -582,6 +594,8 @@ public class CheckOrder {
storeDeliveryInfoDto.setPushOrderTime(0);
}
}
storeDeliveryInfoDto.setDeliveryCondition(deliveryDetail.getDeliveryType());
storeDeliveryInfoDto.setFreeDeliveryCup(deliveryDetail.getFreeDeliveryCup());
return storeDeliveryInfoDto;
}
......
......@@ -282,7 +282,7 @@ public class OrderServiceImpl implements Orderservice {
// 查询购物车(内部校验券点餐方式,券是否可用) 校验当前订单类型的下单参数
ShoppingCartGoodsDto shoppingCartGoodsDto = checkOrder.getShoppingCartGoodsDto(createOrderVo);
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto,shoppingCartGoodsDto.getTotalAmount(), trackingNo);
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto, shoppingCartGoodsDto, trackingNo);
OrderExtInfoDto extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo);
//1.9.2套餐需求同步优化创建订单代码
BaseResponse createOrderOperateDtoResponse = this.sdkCreateOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, userLoginInfoDto);
......@@ -308,7 +308,7 @@ public class OrderServiceImpl implements Orderservice {
// 查询购物车(内部校验券点餐方式,券是否可用) 校验当前订单类型的下单参数
ShoppingCartGoodsDto shoppingCartGoodsDto = checkOrder.getShoppingCartGoodsDto(createOrderVo);
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto,shoppingCartGoodsDto.getTotalAmount(), trackingNo);
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto, shoppingCartGoodsDto, trackingNo);
//1.5.4版本,商品库存校验与扣库存
//List<String> stockProductIds = checkOrder.getStockProductIdList(createOrderVo, shoppingCartGoodsDto);
OrderExtInfoDto extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo);
......
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