Commit a63de6c6 by ping.wu

Merge branches 'develop' and 'feature/20200611_未在营业时间预约单_wuping' of…

Merge branches 'develop' and 'feature/20200611_未在营业时间预约单_wuping' of http://gitlab.freemud.com/order-group-application/order-group into develop

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
#	order-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
#	order-application-service/src/main/java/cn/freemud/service/impl/CheckOrder.java
parents 97b8fc63 e6315f9c
...@@ -88,7 +88,7 @@ ...@@ -88,7 +88,7 @@
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>storecenter-sdk</artifactId> <artifactId>storecenter-sdk</artifactId>
<version>2.6.4-SNAPSHOT</version> <version>2.10.3-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
...@@ -346,7 +346,6 @@ ...@@ -346,7 +346,6 @@
<groupId>org.apache.skywalking</groupId> <groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId> <artifactId>apm-toolkit-logback-1.x</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>
<plugins> <plugins>
......
...@@ -495,7 +495,7 @@ public class OrderAdapter { ...@@ -495,7 +495,7 @@ public class OrderAdapter {
createOrderDto.setSource(OrderSourceType.SAAS.getCode()); createOrderDto.setSource(OrderSourceType.SAAS.getCode());
createOrderDto.setSourceName(OrderSourceType.SAAS.getDesc()); createOrderDto.setSourceName(OrderSourceType.SAAS.getDesc());
createOrderDto.setRemark(remark); createOrderDto.setRemark(remark);
createOrderDto.setGmtExpect(StringUtils.isNotBlank(createOrderVo.getTakeMealTime()) ? DateUtil.convert2Date(createOrderVo.getTakeMealTime(),"yyyy-MM-dd HH:mm:ss").getTime() : null); createOrderDto.setGmtExpect(StringUtils.isNotBlank(createOrderVo.getExpectTime()) ? DateUtil.convert2Date(createOrderVo.getExpectTime(),"yyyy-MM-dd HH:mm:ss").getTime() : null);
BaseCreateOrderRequest.DeliveryTypeInfo deliveryTypeInfo = new BaseCreateOrderRequest.DeliveryTypeInfo(); BaseCreateOrderRequest.DeliveryTypeInfo deliveryTypeInfo = new BaseCreateOrderRequest.DeliveryTypeInfo();
deliveryTypeInfo.setDeliveryType(QueryDeliveryType.getByCode(deliveryType)); deliveryTypeInfo.setDeliveryType(QueryDeliveryType.getByCode(deliveryType));
createOrderDto.setAddInfo(deliveryTypeInfo); createOrderDto.setAddInfo(deliveryTypeInfo);
...@@ -551,7 +551,7 @@ public class OrderAdapter { ...@@ -551,7 +551,7 @@ public class OrderAdapter {
productOrderInfo.setSource(OrderSourceType.SAAS.getCode()); productOrderInfo.setSource(OrderSourceType.SAAS.getCode());
productOrderInfo.setSourceName(OrderSourceType.SAAS.getDesc()); productOrderInfo.setSourceName(OrderSourceType.SAAS.getDesc());
productOrderInfo.setRemark(remark); productOrderInfo.setRemark(remark);
productOrderInfo.setGmtExpect(StringUtils.isNotBlank(createOrderVo.getTakeMealTime()) ? DateUtil.convert2Date(createOrderVo.getTakeMealTime(),"yyyy-MM-dd HH:mm:ss").getTime() : null); productOrderInfo.setGmtExpect(StringUtils.isNotBlank(createOrderVo.getExpectTime()) ? DateUtil.convert2Date(createOrderVo.getExpectTime(),"yyyy-MM-dd HH:mm:ss").getTime() : null);
BaseCreateOrderRequest.DeliveryTypeInfo deliveryTypeInfo = new BaseCreateOrderRequest.DeliveryTypeInfo(); BaseCreateOrderRequest.DeliveryTypeInfo deliveryTypeInfo = new BaseCreateOrderRequest.DeliveryTypeInfo();
deliveryTypeInfo.setDeliveryType(QueryDeliveryType.getByCode(deliveryType)); deliveryTypeInfo.setDeliveryType(QueryDeliveryType.getByCode(deliveryType));
productOrderInfo.setAddInfo(deliveryTypeInfo); productOrderInfo.setAddInfo(deliveryTypeInfo);
......
package cn.freemud.entities.dto.order;
import lombok.Data;
import java.util.Date;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: BusinessDate
* @Package cn.freemud.entities.dto.order
* @Description:
* @author: ping1.wu
* @date: 2020/6/16 23:09
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class BusinessDate {
private Date startDate ;
private Date endDate ;
}
...@@ -97,6 +97,11 @@ public class CreateOrderVo { ...@@ -97,6 +97,11 @@ public class CreateOrderVo {
private String takeMealTime; private String takeMealTime;
/** /**
* 预约时间 格式yyyy-MM-dd HH:mm:ss
*/
private String expectTime;
/**
* 取餐标识 0=我已到店、尽快送出 * 取餐标识 0=我已到店、尽快送出
*/ */
private String takeMealFlag; private String takeMealFlag;
......
...@@ -142,6 +142,7 @@ public enum ResponseResult { ...@@ -142,6 +142,7 @@ public enum ResponseResult {
ORDER_PRE_PAYMENT_CLOSE_FAILED("45058","关闭预支付订单失败"), ORDER_PRE_PAYMENT_CLOSE_FAILED("45058","关闭预支付订单失败"),
ORDER_OWNER_ERROR("45059","订单归属错误"), ORDER_OWNER_ERROR("45059","订单归属错误"),
ORDER_STATUS_PRE_PAYMENT_NOT_SUPPORT("45060", "订单非待支付状态, 创建预支付失败"), ORDER_STATUS_PRE_PAYMENT_NOT_SUPPORT("45060", "订单非待支付状态, 创建预支付失败"),
ORDER_TAKEMEALTIME_INVALID("45061", "你的隔日预约时间有误,请重新刷新后选择!"),
/** /**
* 支付 * 支付
......
...@@ -159,7 +159,7 @@ public class AppOrderServiceImpl implements AppOrderService { ...@@ -159,7 +159,7 @@ public class AppOrderServiceImpl implements AppOrderService {
throw new ServiceException(ResponseResult.STORE_NOT_FOUND); throw new ServiceException(ResponseResult.STORE_NOT_FOUND);
} }
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内 点餐桌号 // 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内 点餐桌号
checkOrder.checkOrderByStore(storeResponse.getBizVO(),createOrderReq.getTakeMealTime()); checkOrder.checkOrderByStore(storeResponse.getBizVO());
// 查商品服务确定金额 // 查商品服务确定金额
ShoppingCartGoodsDto shoppingCartGoodsDto = checkOrderProduct(partnerId,shopId,createOrderReq.getOrderProducts(), ShoppingCartGoodsDto shoppingCartGoodsDto = checkOrderProduct(partnerId,shopId,createOrderReq.getOrderProducts(),
createOrderReq.getMenuType(),createOrderReq.getReachStoreType()); createOrderReq.getMenuType(),createOrderReq.getReachStoreType());
......
...@@ -19,6 +19,7 @@ import cn.freemud.entities.db.OpenPlatformIappWxappConfig; ...@@ -19,6 +19,7 @@ import cn.freemud.entities.db.OpenPlatformIappWxappConfig;
import cn.freemud.entities.db.OpenPlatformPartnerStoreDeliveryConfig; import cn.freemud.entities.db.OpenPlatformPartnerStoreDeliveryConfig;
import cn.freemud.entities.db.StoreTableNumber; import cn.freemud.entities.db.StoreTableNumber;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.order.BusinessDate;
import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto; import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
...@@ -165,6 +166,7 @@ public class CheckOrder { ...@@ -165,6 +166,7 @@ public class CheckOrder {
/*if (StringUtils.isNotBlank(createOrderVo.getTableNumber())) { /*if (StringUtils.isNotBlank(createOrderVo.getTableNumber())) {
createOrderVo.setTableNumber(getTableNumber(partnerId, shopId, createOrderVo.getTableNumber())); createOrderVo.setTableNumber(getTableNumber(partnerId, shopId, createOrderVo.getTableNumber()));
}*/ }*/
checkOrderByStore(storeResponse.getBizVO());
createOrderVo.setStoreName(storeResponseDto.getStoreName()); createOrderVo.setStoreName(storeResponseDto.getStoreName());
createOrderVo.setStoreAddress(storeResponseDto.getAddress()); createOrderVo.setStoreAddress(storeResponseDto.getAddress());
createOrderVo.setThirdShopId(storeResponseDto.getThirdPartCode()); createOrderVo.setThirdShopId(storeResponseDto.getThirdPartCode());
...@@ -177,39 +179,33 @@ public class CheckOrder { ...@@ -177,39 +179,33 @@ public class CheckOrder {
public Integer checkOrderByOrderType(CreateOrderVo createOrderVo, AssortmentCustomerInfoVo userLoginInfoDto, public Integer checkOrderByOrderType(CreateOrderVo createOrderVo, AssortmentCustomerInfoVo userLoginInfoDto,
StoreResponse.BizVO storeResponseDto,Long totalAmount, String trackingNo) { StoreResponse.BizVO storeResponseDto,Long totalAmount, String trackingNo) {
Integer pushOrderTime = 0; Integer pushOrderTime = 0;
//TODO 设置预约时间 //非到店或者外卖,类型错误
Date takeMealDateTime = null; if (!(CreateOrderType.COLLECT_GOODS.getCode().equals(createOrderVo.getOrderType()) ||
Date date = new Date(); CreateOrderType.TAKE_OUT.getCode().equals(createOrderVo.getOrderType()))) {
if (StringUtils.isNotBlank(createOrderVo.getTakeMealTime())) { throw new ServiceException(ResponseResult.PARAMETER_MISSING);
StringBuffer takeMealTime = new StringBuffer("");
takeMealTime = takeMealTime.append(DateUtil.convert2String(date, "yyyy-MM-dd"))
.append(" ").append(createOrderVo.getTakeMealTime()).append(":00");
takeMealDateTime = DateUtil.convert2Date(takeMealTime.toString(), "yyyy-MM-dd HH:mm:ss");
}
//隔天预约时间处理 8:00-2:00 预约1:00 ,下单时间在2:00 - 23:59加1天,00:00-1:59不加
if(takeMealDateTime != null && takeMealDateTime.before(storeResponseDto.getBusinessHoursDayStartTime())
&& takeMealDateTime.before(DateUtil.addDays(DateUtil.convert2Date(storeResponseDto.getBusinessHoursDayStartTime(),"yyyy-MM-dd"),1))){
takeMealDateTime = DateUtil.addDays(takeMealDateTime,1);
}
//有预约时间,预约时间要在营业时间范围内
if (takeMealDateTime != null && (takeMealDateTime.before(storeResponseDto.getBusinessHoursDayStartTime())
|| takeMealDateTime.after(storeResponseDto.getBusinessHoursDayEndTime()))) {
throw new ServiceException(ResponseResult.ORDER_TAKEMEALTIME_INVAILD);
}
//0=到店单我已到店、外卖单尽快送出
if (StringUtils.isNotBlank(createOrderVo.getTakeMealFlag()) && "0".equals(createOrderVo.getTakeMealFlag())) {
takeMealDateTime = null;
}
//当顾客指定送达时间小于当前时间,订单记录类型为即时单
if (takeMealDateTime != null && takeMealDateTime.before(date)) {
takeMealDateTime = null;
} }
//当顾客指定送达时间小于当前时间+提前预约时间时,订单记录类型为即时单 String takeMealTimes = createOrderVo.getTakeMealTime();
if (CreateOrderType.TAKE_OUT.getCode().equals(createOrderVo.getOrderType()) && takeMealDateTime != null
&& storeResponseDto.getServiceTime() != null && takeMealDateTime.before(DateUtil.addMinutes(date,storeResponseDto.getServiceTime()))) { // TODO: 2020/6/16 门店校验处理
takeMealDateTime = null; String takeMealFlag = createOrderVo.getTakeMealFlag();
//未营业无预约时间无法下单
if (!StoreConstant.BUSINESS.equals(storeResponseDto.getState()) && StringUtils.isBlank(takeMealFlag) && "0".equals(takeMealFlag)) {
throw new ServiceException(ResponseResult.STORE_ITEM_CHECK_CLOSE);
} }
//有预约时间
if(StringUtils.isNotBlank(takeMealTimes) || StringUtils.isNotBlank(createOrderVo.getExpectTime())){
// 设置预约时间
Date takeMealDateTime = getOrderExpectTime(takeMealFlag,takeMealTimes,createOrderVo.getExpectTime(),
CreateOrderType.getByCode(createOrderVo.getOrderType()),storeResponseDto.getServiceTime());
if(takeMealDateTime != null){
//校验预约时间
takeMealDateTime = checkOrderExpectTime(createOrderVo,storeResponseDto,takeMealDateTime);
//重新赋值为yyyy-MM-dd HH:mm:ss格式字符串时间
createOrderVo.setExpectTime(takeMealDateTime == null ? null : DateUtil.convert2String(takeMealDateTime, "yyyy-MM-dd HH:mm:ss"));
}
}
String appId = userLoginInfoDto.getWxAppId(); String appId = userLoginInfoDto.getWxAppId();
// 校验小程序是否支持到店或者外卖 // 校验小程序是否支持到店或者外卖
AssortmentOpenPlatformIappWxappConfig config = openPlatformIappWxappConfigManager.selectIappWxappConfigByWxAppId(appId); AssortmentOpenPlatformIappWxappConfig config = openPlatformIappWxappConfigManager.selectIappWxappConfigByWxAppId(appId);
...@@ -246,6 +242,59 @@ public class CheckOrder { ...@@ -246,6 +242,59 @@ public class CheckOrder {
if (storeDeliveryInfoDto.getDeliveryLimitAmount() > totalAmount) { if (storeDeliveryInfoDto.getDeliveryLimitAmount() > totalAmount) {
throw new ServiceException(ResponseResult.STORE_DISCONTENT_DELIVERY_FEE); throw new ServiceException(ResponseResult.STORE_DISCONTENT_DELIVERY_FEE);
} }
storeDeliveryInfoDto.setEnableTakeaway(true);
// 校验收货地址是否可配送
checkReceiveAddress(storeDeliveryInfoDto, createOrderVo);
}
return pushOrderTime;
}
public Date checkOrderExpectTime(CreateOrderVo createOrderVo,StoreResponse.BizVO storeResponseDto,Date takeMealDateTime){
if(takeMealDateTime == null){
return takeMealDateTime;
}
//获取门店当天营业时间
BusinessDate storeBusinessDate = getStoreBusinessDate(storeResponseDto.getBusinessHoursDay(), true);
Date endDate = storeBusinessDate.getEndDate();
Date startDate =storeBusinessDate.getStartDate();
storeResponseDto.setBusinessHoursDayStartTime(startDate);
storeResponseDto.setBusinessHoursDayEndTime(endDate);
//在当天营业时间内
boolean inTodayBusinessTime = true;
Date date = new Date();
Date newDate = DateUtil.convert2Date(date,DateUtil.FORMAT_yyyyMMdd_date);
newDate = DateUtil.addDays(newDate,1);
//隔天预约(在明日凌晨之后且在门店营业结束之后)
if(takeMealDateTime.after(newDate) && takeMealDateTime.after(endDate)){
inTodayBusinessTime = false;
List<String> nextDayBusinessTimes = storeCenterService.getNextDayBusinessTime(Integer.parseInt(storeResponseDto.getBusinessType()), storeResponseDto.getBusinessHoursDay());
//当天营业时间结束 不校验预约时间
boolean inNextDayBusinessTime = true;
for (String nextDayTime : nextDayBusinessTimes){
BusinessDate storeNextBusinessDate = getStoreBusinessDate(nextDayTime,false);
if (takeMealDateTime.after(storeNextBusinessDate.getStartDate()) && takeMealDateTime.before(storeNextBusinessDate.getEndDate())) {
inNextDayBusinessTime = false;
}
}
if(inNextDayBusinessTime){
throw new ServiceException(ResponseResult.ORDER_TAKEMEALTIME_INVALID);
}
}
//00:00-营业结束(隔天营业)
if(takeMealDateTime.after(newDate) && takeMealDateTime.before(endDate)){
return takeMealDateTime;
}
//当前时间刚过凌晨-营业结束(隔天营业)
if(takeMealDateTime.after(date) && takeMealDateTime.before(startDate)){
return takeMealDateTime;
}
//有预约时间,预约时间要在营业时间范围内
if (inTodayBusinessTime && (takeMealDateTime.before(storeResponseDto.getBusinessHoursDayStartTime())
|| takeMealDateTime.after(storeResponseDto.getBusinessHoursDayEndTime()))) {
throw new ServiceException(ResponseResult.ORDER_TAKEMEALTIME_INVAILD);
}
if(CreateOrderType.TAKE_OUT.getCode().equals(createOrderVo.getOrderType())){
String deliveryStr = storeResponseDto.getDeliveryHoursDay().replace("-", ",") String deliveryStr = storeResponseDto.getDeliveryHoursDay().replace("-", ",")
.replace("_", ","); .replace("_", ",");
String[] deliverys = deliveryStr.split(","); String[] deliverys = deliveryStr.split(",");
...@@ -259,40 +308,98 @@ public class CheckOrder { ...@@ -259,40 +308,98 @@ public class CheckOrder {
try { try {
deliveryEndDate = hhmmss.parse(endDateTimeStr); deliveryEndDate = hhmmss.parse(endDateTimeStr);
deliveryStartDate = hhmmss.parse(startDateTimeStr); deliveryStartDate = hhmmss.parse(startDateTimeStr);
storeDeliveryInfoDto.setDeliveryStartTime(deliveryStartDate);
storeDeliveryInfoDto.setDeliveryEndTime(deliveryEndDate);
} catch (ParseException e) { } catch (ParseException e) {
LogUtil.error("getStoreDeliveryInfo_error", endDateTimeStr, e.getMessage()); LogUtil.error("getStoreDeliveryInfo_error", endDateTimeStr, e.getMessage());
} }
} }
if (deliveryStartDate == null || deliveryEndDate == null || date.after(deliveryEndDate)) { if (deliveryStartDate == null || deliveryEndDate == null) {
throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY); throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY);
} }
// 校验预约配送时间 // 校验预约配送时间
if (StringUtils.isBlank(createOrderVo.getTakeMealTime()) && date.before(deliveryStartDate)) { if (inTodayBusinessTime && (takeMealDateTime.before(deliveryStartDate) || takeMealDateTime.after(deliveryEndDate))) {
long takeAwayTime = deliveryStartDate.getTime() + storeResponseDto.getServiceTime() * 60 * 1000L; throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY);
takeMealDateTime = new Date(takeAwayTime);
// createOrderVo.setTakeMealTime(DateUtil.convert2Str(takeMealDateTime, "HH:mm"));
} }
if (takeMealDateTime != null && (takeMealDateTime.before(deliveryStartDate) || takeMealDateTime.after(deliveryEndDate))) { Date nextDeliveryStartDate = DateUtil.addDays(deliveryStartDate,1);
Date nextDeliveryEndDate = DateUtil.addDays(deliveryEndDate,1);
// 隔日预约外卖校验预约配送时间
if (!inTodayBusinessTime && (takeMealDateTime.before(nextDeliveryStartDate) || takeMealDateTime.after(nextDeliveryEndDate))) {
throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY); throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY);
} }
storeDeliveryInfoDto.setEnableTakeaway(true);
// 校验收货地址是否可配送
checkReceiveAddress(storeDeliveryInfoDto, createOrderVo);
} }
//重新赋值为yyyy-MM-dd HH:mm:ss格式字符串时间 return takeMealDateTime;
if(takeMealDateTime != null){ }
createOrderVo.setTakeMealTime(DateUtil.convert2String(takeMealDateTime, "yyyy-MM-dd HH:mm:ss"));
}else {
createOrderVo.setTakeMealTime(null); public Date getOrderExpectTime(String takeMealFlag,String takeMealTimes,String expectTime,
CreateOrderType createOrderType,Integer serviceTime){
Date takeMealDateTime = null;
//0=到店单我已到店、外卖单尽快送出
if (StringUtils.isNotBlank(takeMealFlag) && "0".equals(takeMealFlag)) {
return takeMealDateTime;
} }
//非到店或者外卖,类型错误 if (StringUtils.isBlank(takeMealTimes) && StringUtils.isBlank(expectTime)) {
if (!(CreateOrderType.COLLECT_GOODS.getCode().equals(createOrderVo.getOrderType()) || return takeMealDateTime;
CreateOrderType.TAKE_OUT.getCode().equals(createOrderVo.getOrderType()))) {
throw new ServiceException(ResponseResult.PARAMETER_MISSING);
} }
return pushOrderTime; Date date = new Date();
if (StringUtils.isNotBlank(takeMealTimes)) {
StringBuffer takeMealTime = new StringBuffer("");
takeMealTime = takeMealTime.append(DateUtil.convert2String(date, "yyyy-MM-dd"))
.append(" ").append(takeMealTimes).append(":00");
takeMealDateTime = DateUtil.convert2Date(takeMealTime.toString(), "yyyy-MM-dd HH:mm:ss");
//隔天营业的预约时间处理 计算出预约时间在当前时间之前,预约时间加1天
if(takeMealDateTime != null && takeMealDateTime.before(date)){
takeMealDateTime = DateUtil.addDays(takeMealDateTime,1);
}
}
if (StringUtils.isNotBlank(expectTime)) {
takeMealDateTime = DateUtil.convert2Date(expectTime, "yyyy-MM-dd HH:mm:ss");
}
//当顾客指定送达时间小于当前时间,订单记录类型为即时单
if (takeMealDateTime != null && takeMealDateTime.before(date)) {
takeMealDateTime = null;
}
//当顾客指定送达时间小于当前时间+提前预约时间时,订单记录类型为即时单
if (CreateOrderType.TAKE_OUT.equals(createOrderType) && takeMealDateTime != null
&& serviceTime != null && takeMealDateTime.before(DateUtil.addMinutes(date,serviceTime))) {
takeMealDateTime = null;
}
return takeMealDateTime;
}
public BusinessDate getStoreBusinessDate(String businessHoursDay, boolean today){
BusinessDate businessDate = new BusinessDate();
//设置营业开始和结束时间
String businessHourStr = businessHoursDay.replace("-", ",").replace("_", ",");
String[] businessHours = businessHourStr.split(",");
if (businessHours.length != 2) {
throw new ServiceException(ResponseResult.STORE_NOT_FOUND);
}
Date date = new Date();
if(!today){
date = DateUtil.addDays(date,1);
}
String startDateTimeStr = DateUtil.convert2String(date, DateUtil.FORMAT_YMD) + " " + businessHours[0] + ":00";
String endDateTimeStr = DateUtil.convert2String(date, DateUtil.FORMAT_YMD) + " " + businessHours[1] + ":00";
Date startDateTime ;
Date endDateTime ;
startDateTime = DateUtil.convert2Date(startDateTimeStr, DateUtil.FORMAT_YYYY_MM_DD_HHMMSS);
SimpleDateFormat hhmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
endDateTime = hhmmss.parse(endDateTimeStr);
} catch (ParseException e) {
throw new ServiceException(ResponseResult.STORE_BUSINESS_HOUR_ERROR);
}
//隔天营业时间处理
if(startDateTime.after(endDateTime)){
endDateTime = DateUtil.addDays(endDateTime,1);
}
// 校验门店是否打烊,打烊了则不让操作
if (startDateTime == null || endDateTime == null) {
throw new ServiceException(ResponseResult.STORE_ITEM_STOP_BUSINESS);
}
businessDate.setStartDate(startDateTime);
businessDate.setEndDate(endDateTime);
return businessDate;
} }
public ShoppingCartGoodsDto getShoppingCartGoodsDto(CreateOrderVo createOrderVo) { public ShoppingCartGoodsDto getShoppingCartGoodsDto(CreateOrderVo createOrderVo) {
...@@ -547,15 +654,11 @@ public class CheckOrder { ...@@ -547,15 +654,11 @@ public class CheckOrder {
} }
} }
public void checkOrderByStore(StoreResponse.BizVO storeResponseDto,String takeMealTime){ public void checkOrderByStore(StoreResponse.BizVO storeResponseDto){
// 校验门店是否停业 1 营业 2 停业 3 繁忙置休 // 校验门店是否停业 1 营业 2 停业 3 繁忙置休
if (storeResponseDto.getActiveFlag() == null || storeResponseDto.getActiveFlag() != 1) { if (storeResponseDto.getActiveFlag() == null || storeResponseDto.getActiveFlag() != 1) {
throw new ServiceException(ResponseResult.STORE_ITEM_STOP_BUSINESS); throw new ServiceException(ResponseResult.STORE_ITEM_STOP_BUSINESS);
} }
//未营业无预约时间无法下单
if (!StoreConstant.BUSINESS.equals(storeResponseDto.getState()) && StringUtils.isBlank(takeMealTime)) {
throw new ServiceException(ResponseResult.STORE_ITEM_CHECK_CLOSE);
}
//设置营业开始和结束时间 //设置营业开始和结束时间
String businessHourStr = storeResponseDto.getBusinessHoursDay().replace("-", ",").replace("_", ","); String businessHourStr = storeResponseDto.getBusinessHoursDay().replace("-", ",").replace("_", ",");
String[] businessHours = businessHourStr.split(","); String[] businessHours = businessHourStr.split(",");
......
...@@ -48,14 +48,17 @@ import cn.freemud.service.CouponActivityService; ...@@ -48,14 +48,17 @@ import cn.freemud.service.CouponActivityService;
import cn.freemud.service.OrderAdapterService; import cn.freemud.service.OrderAdapterService;
import cn.freemud.service.Orderservice; import cn.freemud.service.Orderservice;
import cn.freemud.service.thirdparty.*; import cn.freemud.service.thirdparty.*;
import cn.freemud.utils.*; import cn.freemud.utils.BeanUtil;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.ResponseUtil;
import cn.freemud.utils.ValidationCode;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.*; import com.freemud.api.assortment.datamanager.entity.db.*;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo; import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.AssortmentCloudPrinterManager;
import com.freemud.api.assortment.datamanager.enums.IappIdType; import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.AssortmentCloudPrinterManager;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerConfigManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerConfigManager;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappAuthorizerManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappAuthorizerManager;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager;
...@@ -93,7 +96,6 @@ import com.freemud.sdk.api.assortment.message.enums.MessageEventType; ...@@ -93,7 +96,6 @@ import com.freemud.sdk.api.assortment.message.enums.MessageEventType;
import com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRequest; import com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRequest;
import com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest; import com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest;
import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService; import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService;
import com.freemud.sdk.api.assortment.order.adapter.ActivitySdkAdapter;
import com.freemud.sdk.api.assortment.order.enums.OldOrderStatus; import com.freemud.sdk.api.assortment.order.enums.OldOrderStatus;
import com.freemud.sdk.api.assortment.order.request.order.*; import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.*; import com.freemud.sdk.api.assortment.order.response.order.*;
...@@ -279,10 +281,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -279,10 +281,7 @@ public class OrderServiceImpl implements Orderservice {
ShoppingCartGoodsDto shoppingCartGoodsDto = checkOrder.getShoppingCartGoodsDto(createOrderVo); ShoppingCartGoodsDto shoppingCartGoodsDto = checkOrder.getShoppingCartGoodsDto(createOrderVo);
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件 // 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto,shoppingCartGoodsDto.getTotalAmount(), trackingNo); Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto,shoppingCartGoodsDto.getTotalAmount(), trackingNo);
//1.5.4版本,商品库存校验与扣库存
//List<String> stockProductIds = checkOrder.getStockProductIdList(createOrderVo, shoppingCartGoodsDto);
OrderExtInfoDto extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo); OrderExtInfoDto extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo);
//1.9.2套餐需求同步优化创建订单代码 //1.9.2套餐需求同步优化创建订单代码
BaseResponse createOrderOperateDtoResponse = this.sdkCreateOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, userLoginInfoDto); BaseResponse createOrderOperateDtoResponse = this.sdkCreateOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, userLoginInfoDto);
if(createOrderOperateDtoResponse == null || !ResponseResult.SUCCESS.getCode().equals(createOrderOperateDtoResponse.getCode()) || createOrderOperateDtoResponse.getResult() == null ) { if(createOrderOperateDtoResponse == null || !ResponseResult.SUCCESS.getCode().equals(createOrderOperateDtoResponse.getCode()) || createOrderOperateDtoResponse.getResult() == null ) {
......
...@@ -124,7 +124,7 @@ public class SellCouponOrderServiceImpl { ...@@ -124,7 +124,7 @@ public class SellCouponOrderServiceImpl {
} }
StoreResponse.BizVO storeResponseDto = storeResponse.getBizVO(); StoreResponse.BizVO storeResponseDto = storeResponse.getBizVO();
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内 点餐桌号 // 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内 点餐桌号
checkOrder.checkOrderByStore(storeResponseDto,null); checkOrder.checkOrderByStore(storeResponseDto);
GetProductInfoRequest request = new GetProductInfoRequest(); GetProductInfoRequest request = new GetProductInfoRequest();
request.setChannel(requestVo.getMenuType()); request.setChannel(requestVo.getMenuType());
......
...@@ -52,7 +52,7 @@ public class OrderControllerTest { ...@@ -52,7 +52,7 @@ public class OrderControllerTest {
request.setPartnerId("360bb48b-5316-458a-903e-9a44c7f339b1"); request.setPartnerId("360bb48b-5316-458a-903e-9a44c7f339b1");
request.setShopId("1036"); request.setShopId("1036");
request.setOrderType(1); request.setOrderType(1);
request.setTakeMealTime("12:00"); // request.setTakeMealTime("12:00");
request.setTakeOut(0); request.setTakeOut(0);
request.setOrderRemark("不加香菜"); request.setOrderRemark("不加香菜");
String str = JSONObject.toJSONString(request); String str = JSONObject.toJSONString(request);
......
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