Commit 5ab71b7f by ping.wu

Merge branches 'feature/20200506_取餐时间调整_wuping' and…

Merge branches 'feature/20200506_取餐时间调整_wuping' and 'feature/20200525_预约单下单判断代码合并_wuping' of http://gitlab.freemud.com/order-group-application/order-group into feature/20200525_预约单下单判断代码合并_wuping

# Conflicts:
#	assortment-ordercenter-sdk/readme.md
#	order-management/src/main/java/cn/freemud/management/service/handle/SaasOrderHandle.java
parents ed55b350 4a73009f
......@@ -48,3 +48,5 @@
| 1.3.5-SNAPSHOT | 取消订单增加任务 | wuping | 2020-04-28 |
| 1.4.9.RELEASE | 售后单任务 | wuping | 2020-05-21 |
| 1.5.0-RELEASE| 订单查询返回配送渠道字段 | 雷后领 | 2020-05-22 |
| 1.7.7-SNAPSHOT| 聚合订单综合查询新增新订单类型 | wuping | 2020-05-15 |
| 1.7.8-SNAPSHOT| 预约单接单后提醒时间区分外卖自提 | wuping | 2020-05-18 |
\ No newline at end of file
......@@ -60,7 +60,8 @@ public class OrderSdkAdapter {
orderRequest.setShopId(orderBean.getShopId());
orderRequest.setHasSelfDelivery(true);
orderRequest.setPartnerId(orderBean.getCompanyId());
orderRequest.setOrderType(getNewOrderTypeEnum(orderBean.getType(), orderBean.getGmtExpect()));
// orderRequest.setOrderType(getNewOrderTypeEnum(orderBean.getType(), orderBean.getGmtExpect()));
orderRequest.setOrderType(OrderType.getOrderType(orderBean.getNewOrderType()));
if(orderBean.getGmtExpect() != null && orderBean.getGmtExpect() != 0){
orderRequest.setExpectTime(cn.freemud.base.util.DateUtil.convert2String(new Date(orderBean.getGmtExpect()), cn.freemud.base.util.DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
}
......@@ -75,15 +76,15 @@ public class OrderSdkAdapter {
* @param orderBean
* @return
*/
public BaseQueryOrderRequest getOrderDeliveryRequest(String operator, QueryOrdersResponse.DataBean.OrderBean orderBean){
BaseQueryOrderRequest orderDeliveryRequest = getOrderConfirmRequest(operator, orderBean);
if (orderBean.getType() == 1) {
orderDeliveryRequest.setOrderType(com.freemud.application.sdk.api.ordercenter.enums.OrderType.GENERAL_EXPRESS);
} else {
orderDeliveryRequest.setOrderType(com.freemud.application.sdk.api.ordercenter.enums.OrderType.GENERAL_SELF_PICKUP);
}
return orderDeliveryRequest;
}
// public BaseQueryOrderRequest getOrderDeliveryRequest(String operator, QueryOrdersResponse.DataBean.OrderBean orderBean){
// BaseQueryOrderRequest orderDeliveryRequest = getOrderConfirmRequest(operator, orderBean);
// if (orderBean.getType() == 1) {
// orderDeliveryRequest.setOrderType(com.freemud.application.sdk.api.ordercenter.enums.OrderType.GENERAL_EXPRESS);
// } else {
// orderDeliveryRequest.setOrderType(com.freemud.application.sdk.api.ordercenter.enums.OrderType.GENERAL_SELF_PICKUP);
// }
// return orderDeliveryRequest;
// }
/**
* 拒单request
......@@ -532,10 +533,6 @@ public class OrderSdkAdapter {
}
orderConditionsReq.setOrderStatuses(orderStatusList);
}
//订单类型 1:(店内自取实时-常规堂食) 2:(店内自取预约-预约堂食) 3:(店外快递实时-常规外送) 4:(店外快递预约-预约外送) 5:(店外自取实时-常规自取) 6:(店外自取预约-预约自取)
if (CollectionUtils.isNotEmpty(request.getOrderTypes())) {
orderConditionsReq.setOrderTypes(request.getOrderTypes().stream().filter(orderType -> orderType != null && !orderType.equals(0)).collect(Collectors.toList()));
}
if (CollectionUtils.isNotEmpty(request.getOrderTypes())) {
List<Integer> orderTypeList = request.getOrderTypes().stream().filter(orderType -> orderType != null && !orderType.equals(0)).collect(Collectors.toList());
if (orderTypeList != null && orderTypeList.size() > 0) {
......@@ -547,6 +544,12 @@ public class OrderSdkAdapter {
orderConditionsReq.setOrderTypes(orderTypes);
}
}
//订单类型 1:(店内自取实时-常规堂食) 2:(店内自取预约-预约堂食) 3:(店外快递实时-常规外送) 4:(店外快递预约-预约外送) 5:(店外自取实时-常规自取) 6:(店外自取预约-预约自取)
if (CollectionUtils.isNotEmpty(request.getNewOrderTypes())) {
orderConditionsReq.setOrderTypes(request.getNewOrderTypes().stream().filter(orderType -> orderType != null && !orderType.equals(0)).collect(Collectors.toList()));
}
orderConditionsReq.setAfterSalesStatus(getOldRefoundStatus(request.getAfterSalesStatus()));
List<Integer> orderClients = new ArrayList<>();
if (request.getSource() != null && request.getSource().size() != 0) {
......@@ -874,11 +877,13 @@ public class OrderSdkAdapter {
public QueryOrdersResponse.DataBean.OrderBean convent2NEWOrderInfo(OrderInfoReqs orderInfoReqs) {
QueryOrdersResponse.DataBean.OrderBean data = new QueryOrdersResponse.DataBean.OrderBean();
data.setOrderClient(orderInfoReqs.getOrderClient().toString());
data.setCompanyId(orderInfoReqs.getPartnerId());
data.setShopId(orderInfoReqs.getStoreId());
data.setShopName(orderInfoReqs.getStoreName());
data.setOid(orderInfoReqs.getOrderCode());
data.setOrderType(getOldOrderType(orderInfoReqs.getOrderType()));
data.setNewOrderType(orderInfoReqs.getOrderType());
data.setAmount(orderInfoReqs.getSettlementAmount() == null ? 0L : orderInfoReqs.getSettlementAmount().longValue());
data.setSettlementAmount(orderInfoReqs.getSettlementAmount() == null ? 0L : orderInfoReqs.getSettlementAmount().longValue());
data.setActualPayAmount(orderInfoReqs.getActualPayAmount() == null ? 0L : orderInfoReqs.getActualPayAmount().longValue());
......
......@@ -22,7 +22,10 @@ public class QueryOrdersByConditionsRequest extends BaseConfig {
private List<Integer> discountTypes;
private String discountId;
private List<Integer> orderStatuses;
//老版订单 订单类型集合
private List<Integer> orderTypes;
//新订单 订单类型集合
private List<Integer> newOrderTypes;
private Integer afterSalesStatus;
private List<Integer> payStatuses;
private String thirdOrderCode;
......
......@@ -164,8 +164,15 @@ public class QueryOrdersResponse {
* 订单ID
*/
private String oid;
/**
* 老版本订单类型
*/
private Integer orderType;
/**
* 新订单服务订单类型
*/
private Integer newOrderType;
/**
* 取餐码
*/
private String otherCode;
......
......@@ -1381,22 +1381,32 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
timeout = AutoOrderConfigTime.getTime(configuration.getAutoTakeOutTakeOrderWorkflowFinishTime());
}
//预约单
if(StringUtils.isNotEmpty(baseQueryOrderRequest.getExpectTime())
if(OrderType.RESERVED_EXPRESS.equals(baseQueryOrderRequest.getOrderType())
&& StringUtils.isNotEmpty(configuration.getAppointAutoTakeOutTakeOrderWorkflowFinishTime())){
timeout = AutoOrderConfigTime.getTime(configuration.getAppointAutoTakeOutTakeOrderWorkflowFinishTime());
}
} else {//自提单
} else {//自提、堂食
if (StringUtils.isNotEmpty(configuration.getAutoSelfmentionTakeOrderWorkflowFinishTime())) {
timeout = AutoOrderConfigTime.getTime(configuration.getAutoSelfmentionTakeOrderWorkflowFinishTime());
}
//预约单
if(StringUtils.isNotEmpty(baseQueryOrderRequest.getExpectTime())
//自提、堂食预约单
if((OrderType.RESERVED_DINE_IN.equals(baseQueryOrderRequest.getOrderType()) || OrderType.RESERVED_SELF_PICKUP.equals(baseQueryOrderRequest.getOrderType()))
&& StringUtils.isNotEmpty(configuration.getAppointAutoSelfmentionTakeOrderWorkflowFinishTime())){
timeout = AutoOrderConfigTime.getTime(configuration.getAppointAutoSelfmentionTakeOrderWorkflowFinishTime());
}
}
} else {
timeout = 120;
}
//预约单提醒任务,触发放拉单队列
if(StringUtils.isNotEmpty(baseQueryOrderRequest.getExpectTime())){
if (OrderType.RESERVED_EXPRESS.equals(baseQueryOrderRequest.getOrderType())
|| OrderType.RESERVED_DINE_IN.equals(baseQueryOrderRequest.getOrderType())
|| OrderType.RESERVED_SELF_PICKUP.equals(baseQueryOrderRequest.getOrderType())){
//外卖预约单
if(OrderType.RESERVED_EXPRESS.equals(baseQueryOrderRequest.getOrderType()) &&
configuration != null && configuration.getDeliveryOrderWarnTime() != null){
orderWarnTime = configuration.getDeliveryOrderWarnTime();
}
OrderTaskReq orderTask = new OrderTaskReq();
orderTask.setTaskType(3);
Date processingDate = DateUtil.addMinutes(DateUtil.convert2Date(baseQueryOrderRequest.getExpectTime(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS), -getMinTime(orderWarnTime));
......@@ -1405,9 +1415,6 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
// orderTask.setTimeout(0);
request.setOrderTask(orderTask);
}
} else {
timeout = 120;
}
request.setTimeout(timeout);
}
......
......@@ -94,6 +94,11 @@ public class CreateOrderVo {
* 取餐时间
*/
private String takeMealTime;
/**
* 取餐标识 0=我已到店、尽快送出
*/
private String takeMealFlag;
/**
* 是否外带 ,打包 1 是 0 否
*/
......
......@@ -169,10 +169,6 @@ public class CheckOrder {
.append(" ").append(createOrderVo.getTakeMealTime()).append(":00");
takeMealDateTime = DateUtil.convert2Date(takeMealTime.toString(), "yyyy-MM-dd HH:mm:ss");
}
// System.out.println(takeMealDateTime.before(storeResponseDto.getBusinessHoursDayStartTime()));
// Date convert2Date = DateUtil.convert2Date(storeResponseDto.getBusinessHoursDayStartTime(), "yyyy-MM-dd");
// boolean before = takeMealDateTime.before(DateUtil.addDays(convert2Date, 1));
//隔天预约时间处理 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))){
......@@ -183,6 +179,20 @@ public class CheckOrder {
|| 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;
}
String appId = userLoginInfoDto.getWxAppId();
// 校验小程序是否支持到店或者外卖
OpenPlatformIappWxappConfig config = openPlatformIappWxappConfigManager.selectIappWxappConfigByWxAppId(appId);
......@@ -222,32 +232,32 @@ public class CheckOrder {
String deliveryStr = storeResponseDto.getDeliveryHoursDay().replace("-", ",")
.replace("_", ",");
String[] deliverys = deliveryStr.split(",");
Date startDate = null;
Date endDate = null;
Date deliveryStartDate = null;
Date deliveryEndDate = null;
if (deliverys.length == 2) {
SimpleDateFormat hhmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyy-MM-dd");
String startDateTimeStr = yyyyMMdd.format(date) + " " + deliverys[0] + ":00";
String endDateTimeStr = yyyyMMdd.format(date) + " " + deliverys[1] + ":00";
try {
endDate = hhmmss.parse(endDateTimeStr);
startDate = hhmmss.parse(startDateTimeStr);
storeDeliveryInfoDto.setDeliveryStartTime(hhmmss.parse(startDateTimeStr));
storeDeliveryInfoDto.setDeliveryEndTime(hhmmss.parse(endDateTimeStr));
deliveryEndDate = hhmmss.parse(endDateTimeStr);
deliveryStartDate = hhmmss.parse(startDateTimeStr);
storeDeliveryInfoDto.setDeliveryStartTime(deliveryStartDate);
storeDeliveryInfoDto.setDeliveryEndTime(deliveryEndDate);
} catch (ParseException e) {
LogUtil.error("getStoreDeliveryInfo_error", endDateTimeStr, e.getMessage());
}
}
if (startDate == null || endDate == null || date.after(endDate)) {
if (deliveryStartDate == null || deliveryEndDate == null || date.after(deliveryEndDate)) {
throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY);
}
// 校验预约配送时间
if (StringUtils.isBlank(createOrderVo.getTakeMealTime()) && date.before(startDate)) {
long takeAwayTime = startDate.getTime() + storeResponseDto.getServiceTime() * 60 * 1000L;
if (StringUtils.isBlank(createOrderVo.getTakeMealTime()) && date.before(deliveryStartDate)) {
long takeAwayTime = deliveryStartDate.getTime() + storeResponseDto.getServiceTime() * 60 * 1000L;
takeMealDateTime = new Date(takeAwayTime);
// createOrderVo.setTakeMealTime(DateUtil.convert2Str(takeMealDateTime, "HH:mm"));
}
if (takeMealDateTime != null && (takeMealDateTime.before(startDate) || takeMealDateTime.after(endDate))) {
if (takeMealDateTime != null && (takeMealDateTime.before(deliveryStartDate) || takeMealDateTime.after(deliveryEndDate))) {
throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY);
}
storeDeliveryInfoDto.setEnableTakeaway(true);
......@@ -257,6 +267,8 @@ public class CheckOrder {
//重新赋值为yyyy-MM-dd HH:mm:ss格式字符串时间
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()) ||
......
package cn.freemud.management.adapter;
import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.springframework.stereotype.Component;
......@@ -55,7 +56,7 @@ public class DeliverySdkAdapter {
if (order.getGmtExpect() != null && order.getGmtExpect() != 0) {
deliveryOrderRequestDto.setExpectTime(new Date(order.getGmtExpect()));
}
deliveryOrderRequestDto.setIsPre(order.getGmtExpect() != null ? 1 : 0);
deliveryOrderRequestDto.setIsPre(order.getNewOrderType() == OrderType.RESERVED_EXPRESS.getIndex() ? 1 : 0);
List<CreateDeliveryOrderRequestDto.DeliveryProductInfo> productInfos = new ArrayList<>();
order.getProductList().forEach(productList -> {
if (productList.getPrice() > 0) {
......
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