Commit 2177ca8a by shuhu.hou@freemud.cn

oms订单正向流程

parent 34dbe1b4
...@@ -62,7 +62,7 @@ public class WaimaiSdkAdapter { ...@@ -62,7 +62,7 @@ public class WaimaiSdkAdapter {
* @return * @return
*/ */
public OrderSendOutRequest getOrderArriveRequest (OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean){ public OrderSendOutRequest getOrderArriveRequest (OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean){
BaseOrderRequest arriveReq = new BaseOrderRequest(); OrderSendOutRequest arriveReq = new OrderSendOutRequest();
arriveReq.setOrderId(orderBean.getOid()); arriveReq.setOrderId(orderBean.getOid());
arriveReq.setChannel( orderBean.getSource()); arriveReq.setChannel( orderBean.getSource());
arriveReq.setCompanyId(orderBean.getCompanyId()); arriveReq.setCompanyId(orderBean.getCompanyId());
......
...@@ -52,7 +52,7 @@ public class OrderManagerController { ...@@ -52,7 +52,7 @@ public class OrderManagerController {
case ORDER_SEND: case ORDER_SEND:
return orderManagerAdapter.orderDelivery(request); return orderManagerAdapter.orderDelivery(request);
case ORDER_AFFIRM: case ORDER_AFFIRM:
return orderManagerAdapter.orderAffirm(request); return orderManagerAdapter.orderAffirm(request,null);
case ORDER_REJECT: case ORDER_REJECT:
return orderManagerAdapter.orderReject(request); return orderManagerAdapter.orderReject(request);
default: default:
......
...@@ -50,6 +50,12 @@ public class OrderManagerResponse { ...@@ -50,6 +50,12 @@ public class OrderManagerResponse {
this.refundStatus=refundStatus.getCode(); this.refundStatus=refundStatus.getCode();
} }
} }
public OrderManagerResponse(Long gmtExpect, Integer status, Integer refundStatus) {
this.gmtExpect=gmtExpect;
this.status = status;
this.refundStatus = refundStatus;
}
public OrderManagerResponse(String orderPrintConfig, Long gmtExpect, RefundStatus refundStatus){ public OrderManagerResponse(String orderPrintConfig, Long gmtExpect, RefundStatus refundStatus){
this.orderPrintConfig=orderPrintConfig; this.orderPrintConfig=orderPrintConfig;
this.gmtExpect=gmtExpect; this.gmtExpect=gmtExpect;
......
...@@ -17,11 +17,11 @@ public enum OrderStatus { ...@@ -17,11 +17,11 @@ public enum OrderStatus {
TAKE_ORDER(1, "下单"), TAKE_ORDER(1, "下单"),
WAIT_PAY(2, "待支付"), WAIT_PAY(2, "待支付"),
RECEIPT(3, "接单"), RECEIPT(3, "接单"),
COMPLETE_MAKE(31, "制作完成"),
DISTRIBUTION(4, "配送中"), DISTRIBUTION(4, "配送中"),
COMPLETE(5, "完成"), COMPLETE(5, "完成"),
CANCEL(6, "取消"), CANCEL(6, "取消"),
REFUSE(7,"拒单"), REFUSE(7,"拒单");
COMPLETE_MAKE(31, "制作完成");
private Integer code; private Integer code;
private String desc; private String desc;
......
...@@ -135,7 +135,7 @@ public enum ResponseResult { ...@@ -135,7 +135,7 @@ public enum ResponseResult {
ORDER_REPEAT_DO_COMPLETE("45052", "重复操作,订单已经完成"), ORDER_REPEAT_DO_COMPLETE("45052", "重复操作,订单已经完成"),
ORDER_HAS_CANCELED("45053", "订单已经被取消"), ORDER_HAS_CANCELED("45053", "订单已经被取消"),
ORDER_MALL_NOT_MATCH("45054", "非商城订单,无法操作"), ORDER_MALL_NOT_MATCH("45054", "非商城订单,无法操作"),
AFFIRM_ORDER_FAIL("45055", "确认订单失败"), AFFIRM_ORDER_FAIL("45055", "订单完成失败"),
ORDER_CANNOT_CONFIRM("45056", "该笔订单不是新订单,不能接单"), ORDER_CANNOT_CONFIRM("45056", "该笔订单不是新订单,不能接单"),
ORDER_ACCEPT_FAILED("45057", "接单失败"), ORDER_ACCEPT_FAILED("45057", "接单失败"),
ORDER_ACCEPT_FAILED_CREATE_DELIVERY_FAILED("45058", "创建配送单失败导致接单失败"), ORDER_ACCEPT_FAILED_CREATE_DELIVERY_FAILED("45058", "创建配送单失败导致接单失败"),
...@@ -151,6 +151,7 @@ public enum ResponseResult { ...@@ -151,6 +151,7 @@ public enum ResponseResult {
AFFIRM_FAIL_APPLY_REFUND("45068","订单已经申请退款,不能完成"), AFFIRM_FAIL_APPLY_REFUND("45068","订单已经申请退款,不能完成"),
DONE_FAIL_NOT_ACCEPT("45069","订单不是接单状态,不能制作"), DONE_FAIL_NOT_ACCEPT("45069","订单不是接单状态,不能制作"),
DONE_FAIL_REPETITION("45070","重复操作,订单已送出"), DONE_FAIL_REPETITION("45070","重复操作,订单已送出"),
DONE_ORDER_FAIL("45071", "制作完成更改作态失败"),
/** /**
* 支付 * 支付
*/ */
......
package cn.freemud.management.intercept;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.util.ResponseUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: BizExceptionHandler 拦截校验参数
* @Package com.freemud.base.exception
* @Description: 全局异常处理
* @author: aiqi.gong
* @date: 2017/5/8 11:27
* @Copyright: 2017 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@RestControllerAdvice
@Slf4j
public class OrderExceptionHandler {
@ExceptionHandler(OrderServiceException.class)
@ResponseStatus(HttpStatus.OK)
public BaseResponse bindException(OrderServiceException e) {
return ResponseUtil.error(e.getResult());
}
}
\ No newline at end of file
package cn.freemud.management.intercept;
import cn.freemud.management.enums.ResponseResult;
import com.freemud.application.sdk.api.exception.IgnoreErrorAnnotation;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: OrderServiceException
* @Package cn.freemud.management.intercept
* @Description:
* @author: shuhu.hou
* @date: 2020/4/23 11:37
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@IgnoreErrorAnnotation
public class OrderServiceException extends RuntimeException {
private ResponseResult result;
private String message;
public OrderServiceException(ResponseResult result) {
this.result = result;
this.message = result.getMessage();
}
public OrderServiceException(ResponseResult result, String message) {
this.result = result;
this.message = message;
}
public ResponseResult getResult() {
return result;
}
public void setResult(ResponseResult result) {
this.result = result;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
\ No newline at end of file
...@@ -3,11 +3,17 @@ package cn.freemud.management.service.adapter; ...@@ -3,11 +3,17 @@ package cn.freemud.management.service.adapter;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse; import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.enums.OperateType;
import cn.freemud.management.enums.OrderStatus;
import cn.freemud.management.enums.RefundStatus;
import cn.freemud.management.enums.ResponseResult; import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.service.OrderBaseService; import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.service.impl.OrderVerifyService; import cn.freemud.management.service.impl.OrderVerifyService;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.sdk.api.assortment.order.enums.OldOrderType;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -52,9 +58,10 @@ public class OrderManagerAdapter { ...@@ -52,9 +58,10 @@ public class OrderManagerAdapter {
//订单接单参数校验 //订单接单参数校验
BaseResponse verifyResponse = orderVerifyService.orderDoneVerify(orderBean, request); BaseResponse verifyResponse = orderVerifyService.orderDoneVerify(orderBean, request);
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) { if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return verifyResponse; return handleResponse(request,orderBean,verifyResponse);
} }
return orderBeanFactory.getOrderManagerService(orderBean).orderDone(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderDone(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse);
} }
/** /**
...@@ -65,12 +72,18 @@ public class OrderManagerAdapter { ...@@ -65,12 +72,18 @@ public class OrderManagerAdapter {
public BaseResponse<OrderManagerResponse> orderDelivery(OrderManagerRequest request) { public BaseResponse<OrderManagerResponse> orderDelivery(OrderManagerRequest request) {
//查询订单 //查询订单
QueryOrdersResponse.DataBean.OrderBean orderBean = orderBaseService.getByOrderCode(request.getOrderId()); QueryOrdersResponse.DataBean.OrderBean orderBean = orderBaseService.getByOrderCode(request.getOrderId());
/*****兼容爱马哥,送出即完成start******/
if (orderBean.getType().equals(OldOrderType.TAKE_OUT.getCode())){
orderAffirm(request,orderBean);
}
/*****容爱马哥,送出即完成end******/
//订单接单参数校验 //订单接单参数校验
BaseResponse verifyResponse = orderVerifyService.orderDeliveryVerify(orderBean, request); BaseResponse verifyResponse = orderVerifyService.orderDeliveryVerify(orderBean, request);
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) { if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return StringUtils.equals(verifyResponse.getCode(), ResponseResult.ORDER_IS_COMPLETE_CAN_NOT_DELIVERY.getCode()) ? ResponseUtil.success() : verifyResponse; return StringUtils.equals(verifyResponse.getCode(), ResponseResult.ORDER_IS_COMPLETE_CAN_NOT_DELIVERY.getCode()) ? handleResponse(request,orderBean,ResponseUtil.success()) : handleResponse(request,orderBean,verifyResponse);
} }
return orderBeanFactory.getOrderManagerService(orderBean).orderDelivery(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderDelivery(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse);
} }
/** /**
...@@ -78,15 +91,47 @@ public class OrderManagerAdapter { ...@@ -78,15 +91,47 @@ public class OrderManagerAdapter {
* @param request * @param request
* @return * @return
*/ */
public BaseResponse<OrderManagerResponse> orderAffirm(OrderManagerRequest request) { public BaseResponse<OrderManagerResponse> orderAffirm(OrderManagerRequest request,QueryOrdersResponse.DataBean.OrderBean orderBean) {
//查询订单 if (orderBean==null){
QueryOrdersResponse.DataBean.OrderBean orderBean = orderBaseService.getByOrderCode(request.getOrderId()); //查询订单
orderBean = orderBaseService.getByOrderCode(request.getOrderId());
}
//订单接单参数校验 //订单接单参数校验
BaseResponse verifyResponse = orderVerifyService.orderAffirmVerify(orderBean, request); BaseResponse verifyResponse = orderVerifyService.orderAffirmVerify(orderBean, request);
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) { if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return StringUtils.equals(verifyResponse.getCode(), ResponseResult.ORDER_IS_COMPLETE_CAN_NOT_DELIVERY.getCode()) ? ResponseUtil.success() : verifyResponse; return handleResponse(request,orderBean,verifyResponse);
}
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderAffirm(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse);
}
private BaseResponse<OrderManagerResponse> handleResponse(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean,BaseResponse result) {
if (orderBean==null){
return result;
}
RefundStatus refundStatus = CollectionUtils.isNotEmpty(orderBean.getRefundList()) ? RefundStatus.getByCode(orderBean.getRefundList().get(0).getStatus()) : null;
OrderStatus orderStatus = OrderStatus.getByCode(orderBean.getStatus());
if (ObjectUtils.equals(ResponseResult.SUCCESS.getCode(),result.getCode())){
OperateType byOpType = OperateType.getByOpType(request.getOperateType());
switch (byOpType) {
case ORDER_CONFIRM:
orderStatus=OrderStatus.RECEIPT;
break;
case ORDER_DONE:
orderStatus=OrderStatus.COMPLETE_MAKE;
break;
case ORDER_SEND:
orderStatus=OrderStatus.DISTRIBUTION;
break;
case ORDER_AFFIRM:
orderStatus=OrderStatus.COMPLETE;
break;
default:
}
return ResponseUtil.success(new OrderManagerResponse(orderStatus,refundStatus));
} }
return orderBeanFactory.getOrderManagerService(orderBean).orderAffirm(request, orderBean); result.setResult(new OrderManagerResponse(orderStatus,refundStatus));
return result;
} }
/** /**
......
...@@ -2,12 +2,14 @@ package cn.freemud.management.service.impl; ...@@ -2,12 +2,14 @@ package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.enums.OrderSource; import cn.freemud.management.enums.OrderSource;
import cn.freemud.management.enums.OrderStatus; import cn.freemud.management.enums.OrderStatus;
import cn.freemud.management.enums.ResponseResult; import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.ordercenter.enums.OperateClient; import com.freemud.application.sdk.api.ordercenter.enums.OperateClient;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -38,7 +40,7 @@ public class OrderVerifyService { ...@@ -38,7 +40,7 @@ public class OrderVerifyService {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST); return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
} }
if (!OrderStatus.TAKE_ORDER.getCode().equals(orderBean.getStatus())) { if (!OrderStatus.TAKE_ORDER.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_CANNOT_CONFIRM); return ResponseUtil.error(ResponseResult.ORDER_CANNOT_CONFIRM,getOrderManagerResponse(orderBean));
} }
return commonVerify(orderBean, request); return commonVerify(orderBean, request);
} }
...@@ -55,22 +57,22 @@ public class OrderVerifyService { ...@@ -55,22 +57,22 @@ public class OrderVerifyService {
} }
//已完成的订单不能配送 //已完成的订单不能配送
if(OrderStatus.COMPLETE.getCode().equals(orderBean.getStatus())){ if(OrderStatus.COMPLETE.getCode().equals(orderBean.getStatus())){
return ResponseUtil.error(ResponseResult.ORDER_IS_COMPLETE_CAN_NOT_DELIVERY); return ResponseUtil.error(ResponseResult.ORDER_IS_COMPLETE_CAN_NOT_DELIVERY,getOrderManagerResponse(orderBean));
} }
//订单已经发送过配送 //订单已经发送过配送
if(OrderStatus.DISTRIBUTION.getCode().equals(orderBean.getStatus())){ if(OrderStatus.DISTRIBUTION.getCode().equals(orderBean.getStatus())){
return ResponseUtil.error(ResponseResult.DELIVERY_SEND_REPETITION); return ResponseUtil.error(ResponseResult.DELIVERY_SEND_REPETITION,getOrderManagerResponse(orderBean));
} }
//判断订单状态是否为已经申请退款订单 //判断订单状态是否为已经申请退款订单
if (orderBean.getHasRefund() != null if (orderBean.getHasRefund() != null
&& orderBean.getHasRefund() && orderBean.getHasRefund()
&& (orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 1 && (orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 1
|| orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 4)) { || orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 4)) {
return ResponseUtil.error(ResponseResult.DELIVERY_SEND_APPLY_REFUND); return ResponseUtil.error(ResponseResult.DELIVERY_SEND_APPLY_REFUND,getOrderManagerResponse(orderBean));
} }
//外卖订单不是接单不能送出 //外卖订单不是接单不能送出
if (!OrderStatus.RECEIPT.getCode().equals(orderBean.getStatus())) { if (!OrderStatus.RECEIPT.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.DELIVERY_SEND_STATUS_NOTAKE); return ResponseUtil.error(ResponseResult.DELIVERY_SEND_STATUS_NOTAKE,getOrderManagerResponse(orderBean));
} }
return commonVerify(orderBean, request); return commonVerify(orderBean, request);
} }
...@@ -83,20 +85,23 @@ public class OrderVerifyService { ...@@ -83,20 +85,23 @@ public class OrderVerifyService {
* @return * @return
*/ */
public BaseResponse orderDoneVerify(QueryOrdersResponse.DataBean.OrderBean orderBean, OrderManagerRequest request) { public BaseResponse orderDoneVerify(QueryOrdersResponse.DataBean.OrderBean orderBean, OrderManagerRequest request) {
if (orderBean == null) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
//已制作完成的订单不能重复操作 //已制作完成的订单不能重复操作
if (OrderStatus.COMPLETE_MAKE.getCode().equals(orderBean.getStatus())) { if (OrderStatus.COMPLETE_MAKE.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.DONE_FAIL_REPETITION); return ResponseUtil.error(ResponseResult.DONE_FAIL_REPETITION,getOrderManagerResponse(orderBean));
} }
//订单非接单状态,不能制作完成 //订单非接单状态,不能制作完成
if (!OrderStatus.RECEIPT.getCode().equals(orderBean.getStatus())) { if (!OrderStatus.RECEIPT.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.DONE_FAIL_NOT_ACCEPT); return ResponseUtil.error(ResponseResult.DONE_FAIL_NOT_ACCEPT,getOrderManagerResponse(orderBean));
} }
//判断订单状态是否为已经申请退款订单 //判断订单状态是否为已经申请退款订单
if (orderBean.getHasRefund() != null if (orderBean.getHasRefund() != null
&& orderBean.getHasRefund() && orderBean.getHasRefund()
&& (orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 1 && (orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 1
|| orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 4)) { || orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 4)) {
return ResponseUtil.error(ResponseResult.DONE_FAIL_APPLY_REFUND); return ResponseUtil.error(ResponseResult.DONE_FAIL_APPLY_REFUND,getOrderManagerResponse(orderBean));
} }
return ResponseUtil.success(); return ResponseUtil.success();
} }
...@@ -108,42 +113,53 @@ public class OrderVerifyService { ...@@ -108,42 +113,53 @@ public class OrderVerifyService {
* @return * @return
*/ */
public BaseResponse orderAffirmVerify(QueryOrdersResponse.DataBean.OrderBean orderBean, OrderManagerRequest request) { public BaseResponse orderAffirmVerify(QueryOrdersResponse.DataBean.OrderBean orderBean, OrderManagerRequest request) {
if (orderBean == null) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
//判断订单是否已送达 //判断订单是否已送达
if (OrderStatus.COMPLETE.getCode().equals(orderBean.getStatus())) { if (OrderStatus.COMPLETE.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.DELIVERY_SEND_REPETITION); return ResponseUtil.error(ResponseResult.DELIVERY_SEND_REPETITION,getOrderManagerResponse(orderBean));
} }
//已取消的订单不能操作 //已取消的订单不能操作
if(OrderStatus.CANCEL.getCode().equals(orderBean.getStatus())){ if(OrderStatus.CANCEL.getCode().equals(orderBean.getStatus())){
return ResponseUtil.error(ResponseResult.ORDER_HAS_CANCELED); return ResponseUtil.error(ResponseResult.ORDER_HAS_CANCELED,getOrderManagerResponse(orderBean));
} }
//判断订单状态是否为已经申请退款订单 //判断订单状态是否为已经申请退款订单
if (orderBean.getHasRefund() != null if (orderBean.getHasRefund() != null
&& orderBean.getHasRefund() && orderBean.getHasRefund()
&& (orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 1 && (orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 1
|| orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 4)) { || orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 4)) {
return ResponseUtil.error(ResponseResult.AFFIRM_FAIL_APPLY_REFUND); return ResponseUtil.error(ResponseResult.AFFIRM_FAIL_APPLY_REFUND,getOrderManagerResponse(orderBean));
} }
//校验订单是否为配送状态 //校验订单是否为配送状态
if(isWaimai(orderBean) && ObjectUtils.notEqual(OrderStatus.DISTRIBUTION.getCode(),orderBean.getStatus())){ if(isWaimai(orderBean) && ObjectUtils.notEqual(OrderStatus.DISTRIBUTION.getCode(),orderBean.getStatus())){
return ResponseUtil.error(ResponseResult.ORDER_DELIVERY_FAILED); return ResponseUtil.error(ResponseResult.ORDER_DELIVERY_FAILED,getOrderManagerResponse(orderBean));
} }
return commonVerify(orderBean, request); return commonVerify(orderBean, request);
} }
/**
* 通用校验
* @param orderBean
* @param request
* @return
*/
private BaseResponse commonVerify(QueryOrdersResponse.DataBean.OrderBean orderBean, OrderManagerRequest request) { private BaseResponse commonVerify(QueryOrdersResponse.DataBean.OrderBean orderBean, OrderManagerRequest request) {
if (ObjectUtils.notEqual(orderBean.getCompanyId(), request.getPartnerId())) { if (ObjectUtils.notEqual(orderBean.getCompanyId(), request.getPartnerId())) {
return ResponseUtil.error(ResponseResult.ORDER_PARTNER_ID_NOT_MATCTH); return ResponseUtil.error(ResponseResult.ORDER_PARTNER_ID_NOT_MATCTH,getOrderManagerResponse(orderBean));
} }
//开放平台不传入门店 //开放平台不传入门店
if (ObjectUtils.notEqual(request.getOperator(), OperateClient.OPEN_PLATFORM.getOpName()) && ObjectUtils.notEqual(orderBean.getShopId(), request.getStoreId())) { if (ObjectUtils.notEqual(request.getOperator(), OperateClient.OPEN_PLATFORM.getOpName()) && ObjectUtils.notEqual(orderBean.getShopId(), request.getStoreId())) {
return ResponseUtil.error(ResponseResult.ORDER_STORE_ID_NOT_MATCTH); return ResponseUtil.error(ResponseResult.ORDER_STORE_ID_NOT_MATCTH,getOrderManagerResponse(orderBean));
} }
return ResponseUtil.success(); return ResponseUtil.success();
} }
/**
* 是否是外卖
* @param orderBean
* @return
*/
private boolean isWaimai(QueryOrdersResponse.DataBean.OrderBean orderBean){ private boolean isWaimai(QueryOrdersResponse.DataBean.OrderBean orderBean){
String source = orderBean.getSource(); String source = orderBean.getSource();
if (OrderSource.BDWM.getSource().equals(source) || OrderSource.JDWM.getSource().equals(source) if (OrderSource.BDWM.getSource().equals(source) || OrderSource.JDWM.getSource().equals(source)
...@@ -152,4 +168,9 @@ public class OrderVerifyService { ...@@ -152,4 +168,9 @@ public class OrderVerifyService {
} }
return false; return false;
} }
private OrderManagerResponse getOrderManagerResponse(QueryOrdersResponse.DataBean.OrderBean orderBean){
Integer refundStatus= CollectionUtils.isEmpty(orderBean.getRefundList())?null:orderBean.getRefundList().get(0).getStatus();
return new OrderManagerResponse(orderBean.getGmtExpect(),orderBean.getStatus(),refundStatus);
}
} }
...@@ -4,6 +4,7 @@ import cn.freemud.base.entity.BaseResponse; ...@@ -4,6 +4,7 @@ import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse; import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.enums.OperateType; import cn.freemud.management.enums.OperateType;
import cn.freemud.management.enums.OrderStatus;
import cn.freemud.management.enums.RefundStatus; import cn.freemud.management.enums.RefundStatus;
import cn.freemud.management.enums.ResponseResult; import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.service.OrderBaseService; import cn.freemud.management.service.OrderBaseService;
...@@ -43,6 +44,8 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -43,6 +44,8 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
@Autowired @Autowired
private OrderCenterSdkService orderCenterSdkService; private OrderCenterSdkService orderCenterSdkService;
@Autowired @Autowired
private SaasOrderService saasOrderService;
@Autowired
private OrderDeliveryService orderDeliveryService; private OrderDeliveryService orderDeliveryService;
@Autowired @Autowired
private OrderBaseService orderBaseService; private OrderBaseService orderBaseService;
...@@ -94,6 +97,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -94,6 +97,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
*/ */
@Override @Override
public BaseResponse<OrderManagerResponse> orderDone(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) { public BaseResponse<OrderManagerResponse> orderDone(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//订单制作完成
BaseQueryOrderRequest orderDoneRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean); BaseQueryOrderRequest orderDoneRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderDone(orderDoneRequest); BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderDone(orderDoneRequest);
if (baseOrderResponse==null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),baseOrderResponse.getErrcode().toString())){ if (baseOrderResponse==null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),baseOrderResponse.getErrcode().toString())){
...@@ -121,7 +125,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -121,7 +125,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
} }
// 推送pos消息中心 // 推送pos消息中心
orderBaseService.sendMessage(orderBean, OperateType.ORDER_SEND,request.getReason()); orderBaseService.sendMessage(orderBean, OperateType.ORDER_SEND,request.getReason());
return CollectionUtils.isNotEmpty(orderBean.getRefundList())? ResponseUtil.success(new OrderManagerResponse(RefundStatus.getByCode(orderBean.getRefundList().get(0).getStatus()))):ResponseUtil.success(); return ResponseUtil.success();
} }
/** /**
...@@ -143,4 +147,5 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -143,4 +147,5 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
orderBaseService.sendMessage(orderBean, OperateType.ORDER_AFFIRM,request.getReason()); orderBaseService.sendMessage(orderBean, OperateType.ORDER_AFFIRM,request.getReason());
return ResponseUtil.success(); return ResponseUtil.success();
} }
} }
package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.util.ResponseUtil;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: SaasOrderService
* @Package cn.freemud.management.service.impl
* @Description:
* @author: shuhu.hou
* @date: 2020/4/23 11:30
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Component
public class SaasOrderService {
@Autowired
private OrderSdkAdapter orderSdkAdapter;
@Autowired
private OrderCenterSdkService orderCenterSdkService;
/**
* 订单制作完成
* @param request
* @param orderBean
* @return
*/
public BaseResponse orderDone(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean){
BaseQueryOrderRequest orderDoneRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderDone(orderDoneRequest);
if (baseOrderResponse==null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),baseOrderResponse.getErrcode().toString())){
throw new OrderServiceException(ResponseResult.DONE_ORDER_FAIL);
}
return ResponseUtil.success();
}
/**
* 订单配送
* @param request
* @param orderBean
* @return
*/
public BaseResponse orderDelivery(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean){
BaseQueryOrderRequest orderDeliveryRequest = orderSdkAdapter.getOrderDeliveryRequest(request.getOperator(), orderBean);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderSend(orderDeliveryRequest);
if (baseOrderResponse==null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),baseOrderResponse.getErrcode().toString())){
throw new OrderServiceException(ResponseResult.DELIVERY_FAIL);
}
return ResponseUtil.success();
}
/**
* 订单完成
* @param request
* @param orderBean
* @return
*/
public BaseResponse orderAffirm(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean){
BaseQueryOrderRequest orderAffirmRequest = orderSdkAdapter.getOrderDeliveryRequest(request.getOperator(), orderBean);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderAffirm(orderAffirmRequest);
if (baseOrderResponse==null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),baseOrderResponse.getErrcode().toString())){
throw new OrderServiceException(ResponseResult.AFFIRM_ORDER_FAIL);
}
return ResponseUtil.success();
}
}
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