Commit ad93eafb by ping.wu

自动接单标识

parent 3d93c743
......@@ -89,4 +89,9 @@ public class BaseQueryOrderRequest extends BaseConfig {
* 售后退款状态 0:未定义(存量数据) 1:未退款 2:退款中 3:退款失败 4:已退款
*/
private Integer refundState;
/**
* 1是服务端自动接单
*/
private Integer acceptMode;
}
......@@ -107,7 +107,7 @@ public interface OrderCenterSdkService {
/**
* 订单确认接单 POS
*/
BaseOrderResponse orderConfirmTake(BaseQueryOrderRequest baseQueryOrderRequest);
// BaseOrderResponse orderConfirmTake(BaseQueryOrderRequest baseQueryOrderRequest);
/**
* 订单确认接单 POS
......
......@@ -936,23 +936,23 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
return orderSdkAdapter.convent2PullOrderResponse(response);
}
@Override
public BaseOrderResponse orderConfirmTake(BaseQueryOrderRequest baseQueryOrderRequest) {
POSOrderOperationBaseReq request = new POSOrderOperationBaseReq();
request.setOrderCode(baseQueryOrderRequest.getOrderId());
request.setOperator(baseQueryOrderRequest.getOperator());
request.setDispatchType(baseQueryOrderRequest.getDispatchType());
request.setDispatchTimeout(baseQueryOrderRequest.getDispatchTimeout());
request.setPartnerId(baseQueryOrderRequest.getPartnerId());
// 引入门店基础服务 查询自动制作完成配置时间
if (Objects.nonNull(baseQueryOrderRequest.getPreTimeout())) {
request.setTimeout(baseQueryOrderRequest.getPreTimeout());
} else {
setTimeout(baseQueryOrderRequest, request);
}
com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp response = orderSdkService.acceptOrder(request, baseQueryOrderRequest.getTrackingNo());
return orderSdkAdapter.convent2BaseOrderResponse(response);
}
// @Override
// public BaseOrderResponse orderConfirmTake(BaseQueryOrderRequest baseQueryOrderRequest) {
// POSOrderOperationBaseReq request = new POSOrderOperationBaseReq();
// request.setOrderCode(baseQueryOrderRequest.getOrderId());
// request.setOperator(baseQueryOrderRequest.getOperator());
// request.setDispatchType(baseQueryOrderRequest.getDispatchType());
// request.setDispatchTimeout(baseQueryOrderRequest.getDispatchTimeout());
// request.setPartnerId(baseQueryOrderRequest.getPartnerId());
// // 引入门店基础服务 查询自动制作完成配置时间
// if (Objects.nonNull(baseQueryOrderRequest.getPreTimeout())) {
// request.setTimeout(baseQueryOrderRequest.getPreTimeout());
// } else {
// setTimeout(baseQueryOrderRequest, request);
// }
// com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp response = orderSdkService.acceptOrder(request, baseQueryOrderRequest.getTrackingNo());
// return orderSdkAdapter.convent2BaseOrderResponse(response);
// }
@Override
public BaseOrderResponse orderConfirmTakeMCCafe(BaseQueryOrderRequest baseQueryOrderRequest) {
......@@ -1202,9 +1202,9 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
request.setTimeout(120);
}
// 合阔pos商户订单不自动扭转
if (baseQueryOrderRequest.getNotAutomaticTwist() != null && baseQueryOrderRequest.getNotAutomaticTwist()) {
request.setTimeout(0);
}
// if (baseQueryOrderRequest.getNotAutomaticTwist() != null && baseQueryOrderRequest.getNotAutomaticTwist()) {
// request.setTimeout(0);
// }
com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp response = orderSdkService.prepareComplete(request, baseQueryOrderRequest.getTrackingNo());
return orderSdkAdapter.convent2BaseOrderResponse(response);
}
......@@ -2132,9 +2132,9 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
//saas 实时外卖 预约外卖都是 按3个小时流转
private void setTimeout(BaseQueryOrderRequest baseQueryOrderRequest, POSOrderOperationBaseReq request) {
//合阔pos 商户订单状态不自动扭转
if (baseQueryOrderRequest.getNotAutomaticTwist() != null && baseQueryOrderRequest.getNotAutomaticTwist()) {
return;
}
// if (baseQueryOrderRequest.getNotAutomaticTwist() != null && baseQueryOrderRequest.getNotAutomaticTwist()) {
// return;
// }
String partnerId = baseQueryOrderRequest.getPartnerId();
String storeCode = baseQueryOrderRequest.getShopId();
String trackingNo = baseQueryOrderRequest.getTrackingNo();
......
package cn.freemud.management.adapter;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.sdk.api.assortment.order.entities.other.OtherParamDTO;
import com.freemud.sdk.api.assortment.order.enums.StoreDeliveryMethod;
import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import java.util.Date;
import java.util.Objects;
public class BaseQueryOrderRequestAdapter {
/**
* 接单请求参数
*/
public static BaseQueryOrderRequest getOrderConfirmRequest(OrderManagerRequest request, OrderBeanV1 orderBean, OtherParamDTO otherParamDTO) {
BaseQueryOrderRequest orderRequest = new BaseQueryOrderRequest();
orderRequest.setOrderId(orderBean.getOid());
orderRequest.setShopId(orderBean.getShopId());
orderRequest.setHasSelfDelivery(true);
orderRequest.setPartnerId(orderBean.getCompanyId());
// 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));
}
orderRequest.setOperator(request.getOperator());
orderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
//配送信息为空,自配送
if (orderBean.getAddInfo() == null || orderBean.getAddInfo().getDeliveryType() == null) {
orderRequest.setDeliveryType(StoreDeliveryMethod.SELF.getCode());
} else {
orderRequest.setDeliveryType(orderBean.getAddInfo().getDeliveryType());
}
if (Objects.nonNull(otherParamDTO)) {
orderRequest.setDispatchType(otherParamDTO.getDispatchType());
orderRequest.setDispatchTimeout(otherParamDTO.getDispatchTimeout());
}
orderRequest.setAcceptMode(request.getAcceptMode());
//订单宝自动接单提醒需求,传标识到基础服务识别
if (request.getAcceptMode() == null && Objects.equals(4,request.getOperationClient())) {
orderRequest.setAcceptMode(1);
}
return orderRequest;
}
}
......@@ -88,4 +88,9 @@ public class OrderManagerRequest {
* 品牌审核售后单 不传默认无需品牌审核
*/
private Boolean brandVerifyAfterSales = false;
/**
* 1是服务端自动接单
*/
private Integer acceptMode;
}
package cn.freemud.management.service.handle;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.adapter.BaseQueryOrderRequestAdapter;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.AfterSalesApplyClientEnum;
......@@ -14,6 +15,8 @@ import com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequ
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.RefundStatusV1;
import com.freemud.application.sdk.api.ordercenter.request.AfterSalesRefundFailReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderModifyRelatingCodeReq;
import com.freemud.application.sdk.api.ordercenter.request.POSOrderOperationBaseReq;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
......@@ -35,8 +38,6 @@ import java.util.List;
import java.util.Objects;
import java.util.UUID;
//import com.freemud.application.sdk.api.log.LogThreadLocal;
/**
* All rights Reserved, Designed By www.freemud.cn
*
......@@ -64,6 +65,9 @@ public class SaasOrderHandle {
@Autowired
private OrderSdkService orderSdkService;
@Autowired
private StoreHandle storeHandle;
/**
* 确认接单
*
......@@ -76,7 +80,7 @@ public class SaasOrderHandle {
OtherParamDTO dto = new OtherParamDTO();
dto.setDispatchType(request.getDispatchType());
dto.setDispatchTimeout(request.getDispatchTimeout());
BaseQueryOrderRequest orderConfirmRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean, dto);
BaseQueryOrderRequest orderConfirmRequest = BaseQueryOrderRequestAdapter.getOrderConfirmRequest(request, orderBean, dto);
orderSdkAdapter.convert2wmDeliveryTimeOut(orderConfirmRequest, this.wmDeliveryTimeOut);
if (Objects.nonNull(request.getTimeout())) {
......@@ -87,7 +91,23 @@ public class SaasOrderHandle {
// if (CollectionUtils.isNotEmpty(notAutomaticTwistPartnerId) && notAutomaticTwistPartnerId.contains(orderBean.getCompanyId())) {
// orderConfirmRequest.setNotAutomaticTwist(true);
// }
BaseOrderResponse confirmOrderResponse = orderCenterSdkService.orderConfirmTake(orderConfirmRequest);
POSOrderOperationBaseReq requestDto = new POSOrderOperationBaseReq();
requestDto.setOrderCode(request.getOrderId());
requestDto.setOperator(request.getOperator());
requestDto.setDispatchType(request.getDispatchType());
requestDto.setDispatchTimeout(request.getDispatchTimeout());
requestDto.setPartnerId(request.getPartnerId());
requestDto.setAcceptMode(orderConfirmRequest.getAcceptMode());
// 引入门店基础服务 查询自动制作完成配置时间
if (Objects.nonNull(orderConfirmRequest.getPreTimeout())) {
request.setTimeout(orderConfirmRequest.getPreTimeout());
} else {
requestDto = storeHandle.setTimeout(orderConfirmRequest, requestDto);
}
OrderBaseResp response = orderSdkService.acceptOrder(requestDto, LogThreadLocal.getTrackingNo());
BaseOrderResponse confirmOrderResponse = orderSdkAdapter.convent2BaseOrderResponse(response);
// BaseOrderResponse confirmOrderResponse = orderCenterSdkService.orderConfirmTake(orderConfirmRequest);
//处理1秒重复接单问题 订单服务接单返回20067重复操作,20018状态机不支持认为接单成功
if ("20067".equals(confirmOrderResponse.getErrcode().toString()) || "20018".equals(confirmOrderResponse.getErrcode().toString()) || "50002".equals(confirmOrderResponse.getErrcode().toString())) {
return ResponseUtil.success(confirmOrderResponse.getErrcode());
......
package cn.freemud.management.service.handle;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.ordercenter.request.POSOrderOperationBaseReq;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.order.enums.AutoOrderConfigTime;
import com.freemud.sdk.api.assortment.order.enums.StoreDeliveryMethod;
import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class StoreHandle {
@Autowired
private StoreCenterService storeCenterService;
//saas 实时外卖 预约外卖都是 按3个小时流转
public POSOrderOperationBaseReq setTimeout(BaseQueryOrderRequest baseQueryOrderRequest, POSOrderOperationBaseReq request) {
String partnerId = baseQueryOrderRequest.getPartnerId();
String storeCode = baseQueryOrderRequest.getShopId();
String trackingNo = baseQueryOrderRequest.getTrackingNo();
if (StringUtils.isEmpty(storeCode)) {
return request;
}
StoreInfoRequest storeInfoRequest = new StoreInfoRequest();
storeInfoRequest.setPartnerId(partnerId);
storeInfoRequest.setStoreCode(storeCode);
StoreResponse storeResponse = storeCenterService.getStoreInfo(storeInfoRequest, trackingNo);
if (storeResponse == null || storeResponse.getBizVO() == null) {
return request;
}
StoreResponse.Configuration configuration = storeResponse.getBizVO().getStoreConfig();
String orderWarnTime = storeResponse.getBizVO().getOrderWarnTime();
Integer timeout = 0;
Boolean isTakeOut = false;
Integer takeOutTimeOut = (null == baseQueryOrderRequest.getTimeout() || baseQueryOrderRequest.getTimeout() == 0) ? 180 : baseQueryOrderRequest.getTimeout();
//是saas 外卖单 且是三方配送
if ((OrderType.GENERAL_EXPRESS.equals(baseQueryOrderRequest.getOrderType())
|| OrderType.RESERVED_EXPRESS.equals(baseQueryOrderRequest.getOrderType()))
&& StoreDeliveryMethod.THIRD.getCode().equals(baseQueryOrderRequest.getDeliveryType())) {
isTakeOut = true;
}
//自配送外卖单
if (configuration != null) {
//外卖单 店外快递实时-3常规外送 店外快递预约-4预约外送
// 重要的事情重复三遍 saas 实时外卖 预约外卖都是 按3个小时流转
if (OrderType.GENERAL_EXPRESS.equals(baseQueryOrderRequest.getOrderType()) || OrderType.RESERVED_EXPRESS.equals(baseQueryOrderRequest.getOrderType())) {
//deliveryProcessingAfterMinute:自建外卖订单-实时单,商家自配送,门店接单xx分钟后,订单状态变更为配送中;
//deliveryProcessingBeforeMinute: 自建外卖订单-预约单,商家自配送,预约商家前xx分钟,订单更改为配送中
if (configuration.getDeliveryProcessingAfterMinute() == null
|| configuration.getDeliveryProcessingBeforeMinute() == null) {
timeout = isTakeOut ? takeOutTimeOut : 120;
}
//自配送外卖单接单后自动流程时间
if (configuration.getDeliveryProcessingAfterMinute() != null && configuration.getDeliveryProcessingAfterMinute() > 0) {
timeout = StoreDeliveryMethod.SELF.getCode().equals(baseQueryOrderRequest.getDeliveryType())
//? AutoOrderConfigTime.getTime(configuration.getDeliveryProcessingAfterMinute().toString())
? configuration.getDeliveryProcessingAfterMinute()
: takeOutTimeOut;
}
//预约单
if (OrderType.RESERVED_EXPRESS.equals(baseQueryOrderRequest.getOrderType())
&& configuration.getDeliveryProcessingBeforeMinute() != null && configuration.getDeliveryProcessingBeforeMinute() > 0) {
timeout = StoreDeliveryMethod.SELF.getCode().equals(baseQueryOrderRequest.getDeliveryType())
//? AutoOrderConfigTime.getTime(configuration.getDeliveryProcessingBeforeMinute().toString())
? configuration.getDeliveryProcessingBeforeMinute()
: takeOutTimeOut;
}
} else {
//自提、堂食单
if (StringUtils.isNotEmpty(configuration.getAutoSelfmentionTakeOrderWorkflowFinishTime())) {
timeout = AutoOrderConfigTime.getTime(configuration.getAutoSelfmentionTakeOrderWorkflowFinishTime());
}
//自提、堂食预约单
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 = isTakeOut ? takeOutTimeOut : 120;
}
//预约单提醒任务,触发放拉单队列
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();
}
request.setRemindTime(getMinTime(orderWarnTime));
}
request.setTimeout(timeout);
return request;
}
public Integer getMinTime(String code) {
Integer minTime = 0;
if (StringUtils.isBlank(code)) {
return minTime;
}
switch (code) {
case "1":
minTime = 15;
break;
case "2":
minTime = 30;
break;
case "3":
minTime = 45;
break;
case "4":
minTime = 60;
break;
case "5":
minTime = 5;
break;
case "6":
minTime = 10;
break;
default:
minTime = 0;
}
return minTime;
}
}
......@@ -38,4 +38,9 @@ public class POSOrderOperationBaseReq {
* 半自动派单时间 (分钟)
*/
private Integer dispatchTimeout;
/**
* 1是服务端自动接单
*/
private Integer acceptMode;
}
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