Commit fc9684c2 by ping.wu

下单新增预约时间字段修改,格式yyyy-MM-dd HH:mm:ss

parent 908258ff
...@@ -117,18 +117,18 @@ public class OrderAdapter { ...@@ -117,18 +117,18 @@ public class OrderAdapter {
public BaseCreateOrderRequest convent2CreateOrderDto(CreateOrderVo createOrderVo, ShoppingCartGoodsDto shoppingCartGoodsDto,StoreResponse.BizVO storeResponseDto) { public BaseCreateOrderRequest convent2CreateOrderDto(CreateOrderVo createOrderVo, ShoppingCartGoodsDto shoppingCartGoodsDto,StoreResponse.BizVO storeResponseDto) {
// UserDeliveryInfoDto deliveryInfoDto = createOrderVo.getUserDeliveryInfoDto(); // UserDeliveryInfoDto deliveryInfoDto = createOrderVo.getUserDeliveryInfoDto();
BaseCreateOrderRequest createOrderDto = getCreateOrderDto(createOrderVo); BaseCreateOrderRequest createOrderDto = getCreateOrderDto(createOrderVo);
OrderTaskReq orderTask = null; // OrderTaskReq orderTask = null;
if(StringUtils.isNotEmpty(createOrderVo.getTakeMealTime())){ // if(StringUtils.isNotEmpty(createOrderVo.getTakeMealTime())){
Integer orderType = 0; // Integer orderType = 0;
if (Objects.equals(createOrderVo.getOrderType(), CreateOrderType.TAKE_OUT.getCode())) { // if (Objects.equals(createOrderVo.getOrderType(), CreateOrderType.TAKE_OUT.getCode())) {
orderType = 1; // orderType = 1;
} // }
//预订单任务 // //预订单任务
orderTask = getOrderTaskReq(storeResponseDto,createOrderVo.getTakeMealTime(),orderType); // orderTask = getOrderTaskReq(storeResponseDto,createOrderVo.getTakeMealTime(),orderType);
} // }
if(orderTask != null){ // if(orderTask != null){
createOrderDto.setOrderTask(orderTask); // createOrderDto.setOrderTask(orderTask);
} // }
ArrayList<CreateOrderAccountRequest> orderAccountDtos = new ArrayList<>(); ArrayList<CreateOrderAccountRequest> orderAccountDtos = new ArrayList<>();
long deliveryAmount = 0; long deliveryAmount = 0;
long discountDeliveryAmount = 0; long discountDeliveryAmount = 0;
...@@ -269,18 +269,18 @@ public class OrderAdapter { ...@@ -269,18 +269,18 @@ public class OrderAdapter {
CreateFatherSonOrderRequest.OrderInfo productOrderInfo = convertProductOrderInfo(createOrderVo, deliveryInfoDto, shoppingCartGoodsDto); CreateFatherSonOrderRequest.OrderInfo productOrderInfo = convertProductOrderInfo(createOrderVo, deliveryInfoDto, shoppingCartGoodsDto);
productOrderInfo.setOrderExtended(orderExtendedReq); productOrderInfo.setOrderExtended(orderExtendedReq);
productOrderInfo.setAppId(appId); productOrderInfo.setAppId(appId);
OrderTaskReq orderTask = null; // OrderTaskReq orderTask = null;
if(StringUtils.isNotEmpty(createOrderVo.getTakeMealTime())){ // if(StringUtils.isNotEmpty(createOrderVo.getTakeMealTime())){
Integer orderType = 0; // Integer orderType = 0;
if (Objects.equals(createOrderVo.getOrderType(), CreateOrderType.TAKE_OUT.getCode())) { // if (Objects.equals(createOrderVo.getOrderType(), CreateOrderType.TAKE_OUT.getCode())) {
orderType = 1; // orderType = 1;
} // }
//预订单任务 // //预订单任务
orderTask = getOrderTaskReq(storeResponseDto,createOrderVo.getTakeMealTime(),orderType); // orderTask = getOrderTaskReq(storeResponseDto,createOrderVo.getTakeMealTime(),orderType);
} // }
if(orderTask != null){ // if(orderTask != null){
productOrderInfo.setOrderTask(orderTask); // productOrderInfo.setOrderTask(orderTask);
} // }
CreateFatherSonOrderRequest.OrderInfo memberOrderInfo = convertMemberOrderInfo(createOrderVo, shoppingCartGoodsDto, productOrderInfo.getOrderType()); CreateFatherSonOrderRequest.OrderInfo memberOrderInfo = convertMemberOrderInfo(createOrderVo, shoppingCartGoodsDto, productOrderInfo.getOrderType());
CreateFatherSonOrderRequest.OrderInfo fatherOrderInfo = convertFatherOrderInfo(createOrderVo, shoppingCartGoodsDto, deliveryInfoDto, productOrderInfo.getOrderType()); CreateFatherSonOrderRequest.OrderInfo fatherOrderInfo = convertFatherOrderInfo(createOrderVo, shoppingCartGoodsDto, deliveryInfoDto, productOrderInfo.getOrderType());
...@@ -514,7 +514,7 @@ public class OrderAdapter { ...@@ -514,7 +514,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);
...@@ -569,7 +569,7 @@ public class OrderAdapter { ...@@ -569,7 +569,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);
...@@ -2664,44 +2664,44 @@ public class OrderAdapter { ...@@ -2664,44 +2664,44 @@ public class OrderAdapter {
return type; return type;
} }
public OrderTaskReq getOrderTaskReq(StoreResponse.BizVO storeResponse,String expectTime,Integer orderType){ // public OrderTaskReq getOrderTaskReq(StoreResponse.BizVO storeResponse,String expectTime,Integer orderType){
OrderTaskReq orderTask = new OrderTaskReq(); // OrderTaskReq orderTask = new OrderTaskReq();
StoreResponse.Configuration configuration = storeResponse.getStoreConfig(); // StoreResponse.Configuration configuration = storeResponse.getStoreConfig();
Integer timeout = 0; // Integer timeout = 0;
if (configuration != null) { // if (configuration != null) {
//外卖单 // //外卖单
if (OldOrderType.TAKE_OUT.getCode().equals(orderType)) { // if (OldOrderType.TAKE_OUT.getCode().equals(orderType)) {
if (StringUtils.isNotEmpty(configuration.getAutoTakeOutTakeOrderWorkflowFinishTime())) { // if (StringUtils.isNotEmpty(configuration.getAutoTakeOutTakeOrderWorkflowFinishTime())) {
timeout = AutoOrderConfigTime.getTime(configuration.getAutoTakeOutTakeOrderWorkflowFinishTime()); // timeout = AutoOrderConfigTime.getTime(configuration.getAutoTakeOutTakeOrderWorkflowFinishTime());
} // }
//预约单 // //预约单
if(StringUtils.isNotEmpty(expectTime) // if(StringUtils.isNotEmpty(expectTime)
&& StringUtils.isNotEmpty(configuration.getAppointAutoTakeOutTakeOrderWorkflowFinishTime())){ // && StringUtils.isNotEmpty(configuration.getAppointAutoTakeOutTakeOrderWorkflowFinishTime())){
timeout = AutoOrderConfigTime.getTime(configuration.getAppointAutoTakeOutTakeOrderWorkflowFinishTime()); // timeout = AutoOrderConfigTime.getTime(configuration.getAppointAutoTakeOutTakeOrderWorkflowFinishTime());
} // }
} else {//自提单 // } else {//自提单
if (org.apache.commons.lang.StringUtils.isNotEmpty(configuration.getAutoSelfmentionTakeOrderWorkflowFinishTime())) { // if (org.apache.commons.lang.StringUtils.isNotEmpty(configuration.getAutoSelfmentionTakeOrderWorkflowFinishTime())) {
timeout = AutoOrderConfigTime.getTime(configuration.getAutoSelfmentionTakeOrderWorkflowFinishTime()); // timeout = AutoOrderConfigTime.getTime(configuration.getAutoSelfmentionTakeOrderWorkflowFinishTime());
} // }
//预约单 // //预约单
if(StringUtils.isNotEmpty(expectTime) // if(StringUtils.isNotEmpty(expectTime)
&& StringUtils.isNotEmpty(configuration.getAppointAutoSelfmentionTakeOrderWorkflowFinishTime())){ // && StringUtils.isNotEmpty(configuration.getAppointAutoSelfmentionTakeOrderWorkflowFinishTime())){
timeout = AutoOrderConfigTime.getTime(configuration.getAppointAutoSelfmentionTakeOrderWorkflowFinishTime()); // timeout = AutoOrderConfigTime.getTime(configuration.getAppointAutoSelfmentionTakeOrderWorkflowFinishTime());
} // }
} // }
} else { // } else {
timeout = 120; // timeout = 120;
} // }
//预约单提醒任务,触发放拉单队列 // //预约单提醒任务,触发放拉单队列
if(StringUtils.isNotEmpty(expectTime) && timeout != null && timeout != 0){ // if(StringUtils.isNotEmpty(expectTime) && timeout != null && timeout != 0){
orderTask.setTaskType(1); // orderTask.setTaskType(1);
Date processingDate = DateUtil.addMinutes(DateUtil.convert2Date(expectTime, DateUtil.FORMAT_YYYY_MM_DD_HHMMSS), timeout); // Date processingDate = DateUtil.addMinutes(DateUtil.convert2Date(expectTime, DateUtil.FORMAT_YYYY_MM_DD_HHMMSS), timeout);
orderTask.setProcessingTime(expectTime); // orderTask.setProcessingTime(expectTime);
orderTask.setTaskTime(DateUtil.convert2String(processingDate,DateUtil.FORMAT_YYYY_MM_DD_HHMMSS)); // orderTask.setTaskTime(DateUtil.convert2String(processingDate,DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
orderTask.setTimeout(timeout); // orderTask.setTimeout(timeout);
} // }
return orderTask; // return orderTask;
} // }
public CreatePrepayRequestDto convertToCreatePrepayRequestDto(String partnerId, String wxAppId, String openId, public CreatePrepayRequestDto convertToCreatePrepayRequestDto(String partnerId, String wxAppId, String openId,
......
...@@ -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;
......
...@@ -153,7 +153,7 @@ public class AppOrderServiceImpl implements AppOrderService { ...@@ -153,7 +153,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());
......
...@@ -155,11 +155,7 @@ public class CheckOrder { ...@@ -155,11 +155,7 @@ public class CheckOrder {
throw new ServiceException(ResponseResult.STORE_NOT_FOUND); throw new ServiceException(ResponseResult.STORE_NOT_FOUND);
} }
StoreResponse.BizVO storeResponseDto = storeResponse.getBizVO(); StoreResponse.BizVO storeResponseDto = storeResponse.getBizVO();
checkOrderByStore(storeResponse.getBizVO(),createOrderVo.getTakeMealTime()); checkOrderByStore(storeResponse.getBizVO());
// 桌号不为空,查数据库重新设置桌号
/*if (StringUtils.isNotBlank(createOrderVo.getTableNumber())) {
createOrderVo.setTableNumber(getTableNumber(partnerId, shopId, createOrderVo.getTableNumber()));
}*/
createOrderVo.setStoreName(storeResponseDto.getStoreName()); createOrderVo.setStoreName(storeResponseDto.getStoreName());
createOrderVo.setStoreAddress(storeResponseDto.getAddress()); createOrderVo.setStoreAddress(storeResponseDto.getAddress());
createOrderVo.setThirdShopId(storeResponseDto.getThirdPartCode()); createOrderVo.setThirdShopId(storeResponseDto.getThirdPartCode());
...@@ -172,39 +168,16 @@ public class CheckOrder { ...@@ -172,39 +168,16 @@ 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;
}
//当顾客指定送达时间小于当前时间+提前预约时间时,订单记录类型为即时单
if (CreateOrderType.TAKE_OUT.getCode().equals(createOrderVo.getOrderType()) && takeMealDateTime != null
&& storeResponseDto.getServiceTime() != null && takeMealDateTime.before(DateUtil.addMinutes(date,storeResponseDto.getServiceTime()))) {
takeMealDateTime = null;
} }
//校验预约时间
Date takeMealDateTime = checkOrderExpectTime(createOrderVo,storeResponseDto);
//重新赋值为yyyy-MM-dd HH:mm:ss格式字符串时间
String expectTime = takeMealDateTime == null ? null : DateUtil.convert2String(takeMealDateTime, "yyyy-MM-dd HH:mm:ss");
createOrderVo.setExpectTime(expectTime);
String appId = userLoginInfoDto.getWxAppId(); String appId = userLoginInfoDto.getWxAppId();
// 校验小程序是否支持到店或者外卖 // 校验小程序是否支持到店或者外卖
OpenPlatformIappWxappConfig config = openPlatformIappWxappConfigManager.selectIappWxappConfigByWxAppId(appId); OpenPlatformIappWxappConfig config = openPlatformIappWxappConfigManager.selectIappWxappConfigByWxAppId(appId);
...@@ -241,6 +214,36 @@ public class CheckOrder { ...@@ -241,6 +214,36 @@ 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){
String takeMealTimes = createOrderVo.getTakeMealTime();
String takeMealFlag = createOrderVo.getTakeMealFlag();
// 设置预约时间
Date takeMealDateTime = getOrderExpectTime(takeMealFlag,takeMealTimes,createOrderVo.getExpectTime(),
storeResponseDto,CreateOrderType.getByCode(createOrderVo.getOrderType()));
//未营业无预约时间无法下单
if (!StoreConstant.BUSINESS.equals(storeResponseDto.getState()) && StringUtils.isBlank(takeMealFlag) && "0".equals(takeMealFlag)) {
throw new ServiceException(ResponseResult.STORE_ITEM_CHECK_CLOSE);
}
//当天营业时间结束 不校验预约时间
boolean inBusinessTime = true;
if(takeMealDateTime != null && takeMealDateTime.after(storeResponseDto.getBusinessHoursDayEndTime())){
inBusinessTime = false;
}
//有预约时间,预约时间要在营业时间范围内
if (inBusinessTime && takeMealDateTime != null && (takeMealDateTime.before(storeResponseDto.getBusinessHoursDayStartTime())
|| takeMealDateTime.after(storeResponseDto.getBusinessHoursDayEndTime()))) {
throw new ServiceException(ResponseResult.ORDER_TAKEMEALTIME_INVAILD);
}
if(CreateOrderType.TAKE_OUT.getCode().equals(createOrderVo.getOrderType())){
Date date = new Date();
String deliveryStr = storeResponseDto.getDeliveryHoursDay().replace("-", ",") String deliveryStr = storeResponseDto.getDeliveryHoursDay().replace("-", ",")
.replace("_", ","); .replace("_", ",");
String[] deliverys = deliveryStr.split(","); String[] deliverys = deliveryStr.split(",");
...@@ -254,40 +257,59 @@ public class CheckOrder { ...@@ -254,40 +257,59 @@ 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 (inBusinessTime && takeMealDateTime != null && (takeMealDateTime.before(deliveryStartDate) || takeMealDateTime.after(deliveryEndDate))) {
long takeAwayTime = deliveryStartDate.getTime() + storeResponseDto.getServiceTime() * 60 * 1000L;
takeMealDateTime = new Date(takeAwayTime);
// createOrderVo.setTakeMealTime(DateUtil.convert2Str(takeMealDateTime, "HH:mm"));
}
if (takeMealDateTime != null && (takeMealDateTime.before(deliveryStartDate) || takeMealDateTime.after(deliveryEndDate))) {
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);
} }
//非到店或者外卖,类型错误
if (!(CreateOrderType.COLLECT_GOODS.getCode().equals(createOrderVo.getOrderType()) ||
CreateOrderType.TAKE_OUT.getCode().equals(createOrderVo.getOrderType()))) { public Date getOrderExpectTime(String takeMealFlag,String takeMealTimes,String expectTime,
throw new ServiceException(ResponseResult.PARAMETER_MISSING); StoreResponse.BizVO storeResponseDto,CreateOrderType createOrderType){
Date takeMealDateTime = null;
//0=到店单我已到店、外卖单尽快送出
if (StringUtils.isNotBlank(takeMealFlag) && "0".equals(takeMealFlag)) {
return takeMealDateTime;
} }
return pushOrderTime; if (StringUtils.isBlank(takeMealTimes) && StringUtils.isBlank(expectTime)) {
return takeMealDateTime;
}
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");
//隔天预约时间处理 营业时间8:00-2:00 预约1:00
// 当前时间 2020-6-11 09:00:00 下单时间在02:00-24:00,计算预约时间2020-6-11 01:00:00 实际预约时间 2020-6-12 1:00:00
// 当前时间 2020-6-11 00:01:00 下单时间在00:00-02:00,计算预约时间2020-6-11 01:00:00 实际预约时间 2020-6-11 1:00:00
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 (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
&& storeResponseDto.getServiceTime() != null && takeMealDateTime.before(DateUtil.addMinutes(date,storeResponseDto.getServiceTime()))) {
takeMealDateTime = null;
}
return takeMealDateTime;
} }
public ShoppingCartGoodsDto getShoppingCartGoodsDto(CreateOrderVo createOrderVo) { public ShoppingCartGoodsDto getShoppingCartGoodsDto(CreateOrderVo createOrderVo) {
...@@ -542,15 +564,11 @@ public class CheckOrder { ...@@ -542,15 +564,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(",");
......
...@@ -274,9 +274,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -274,9 +274,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,1L, 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套餐需求同步优化创建订单代码
......
...@@ -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