Commit 5261c948 by 周晓航

维护有基础服务对接售后单状态的链路

parent 945cab85
...@@ -3,6 +3,7 @@ package cn.freemud.management.service.handle; ...@@ -3,6 +3,7 @@ package cn.freemud.management.service.handle;
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.pay.PayRefundResponse; import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.AfterSalesApplyClientEnum;
import cn.freemud.management.enums.ResponseResult; import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.OrderServiceException; import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
...@@ -11,12 +12,14 @@ import com.freemud.application.sdk.api.log.LogThreadLocal; ...@@ -11,12 +12,14 @@ 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.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo; import com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.RefundStatusV1; 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.OrderModifyRelatingCodeReq;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; 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.response.orderInfo.QueryByCodeResponse;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter; import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.entities.other.OtherParamDTO; import com.freemud.sdk.api.assortment.order.entities.other.OtherParamDTO;
import com.freemud.sdk.api.assortment.order.enums.AfterSalesRefunStateEnum;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus; import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest;
...@@ -75,7 +78,7 @@ public class SaasOrderHandle { ...@@ -75,7 +78,7 @@ public class SaasOrderHandle {
dto.setDispatchTimeout(request.getDispatchTimeout()); dto.setDispatchTimeout(request.getDispatchTimeout());
BaseQueryOrderRequest orderConfirmRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean, dto); BaseQueryOrderRequest orderConfirmRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean, dto);
orderSdkAdapter.convert2wmDeliveryTimeOut(orderConfirmRequest,this.wmDeliveryTimeOut); orderSdkAdapter.convert2wmDeliveryTimeOut(orderConfirmRequest, this.wmDeliveryTimeOut);
if (Objects.nonNull(request.getTimeout())) { if (Objects.nonNull(request.getTimeout())) {
orderConfirmRequest.setPreTimeout(request.getTimeout()); orderConfirmRequest.setPreTimeout(request.getTimeout());
} }
...@@ -97,13 +100,14 @@ public class SaasOrderHandle { ...@@ -97,13 +100,14 @@ public class SaasOrderHandle {
/** /**
* 更新取餐码 * 更新取餐码
*
* @param request * @param request
* @param orderBean * @param orderBean
* @return * @return
*/ */
public BaseResponse updatePickUpGoodNo(OrderManagerRequest request, OrderBeanV1 orderBean) { public BaseResponse updatePickUpGoodNo(OrderManagerRequest request, OrderBeanV1 orderBean) {
// 更新取餐码 // 更新取餐码
OrderModifyRelatingCodeReq relatingCodeReq =new OrderModifyRelatingCodeReq(); OrderModifyRelatingCodeReq relatingCodeReq = new OrderModifyRelatingCodeReq();
relatingCodeReq.setOrderCode(orderBean.getOid()); relatingCodeReq.setOrderCode(orderBean.getOid());
relatingCodeReq.setOperator(request.getOperator()); relatingCodeReq.setOperator(request.getOperator());
relatingCodeReq.setPartnerId(request.getPartnerId()); relatingCodeReq.setPartnerId(request.getPartnerId());
...@@ -145,7 +149,7 @@ public class SaasOrderHandle { ...@@ -145,7 +149,7 @@ public class SaasOrderHandle {
*/ */
public BaseResponse orderDelivery(OrderManagerRequest request, OrderBeanV1 orderBean) { public BaseResponse orderDelivery(OrderManagerRequest request, OrderBeanV1 orderBean) {
BaseQueryOrderRequest orderDeliveryRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean); BaseQueryOrderRequest orderDeliveryRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean);
orderDeliveryRequest = orderSdkAdapter.convert2wmDeliveryTimeOut(orderDeliveryRequest,this.wmDeliveryTimeOut); orderDeliveryRequest = orderSdkAdapter.convert2wmDeliveryTimeOut(orderDeliveryRequest, this.wmDeliveryTimeOut);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderSend(orderDeliveryRequest); BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderSend(orderDeliveryRequest);
if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) { if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) {
return ResponseUtil.error(ResponseResult.DELIVERY_FAIL); return ResponseUtil.error(ResponseResult.DELIVERY_FAIL);
...@@ -220,11 +224,16 @@ public class SaasOrderHandle { ...@@ -220,11 +224,16 @@ public class SaasOrderHandle {
refundAgreeRequest.setOperationClient(request.getOperationClient()); refundAgreeRequest.setOperationClient(request.getOperationClient());
BaseOrderResponse baseOrderResponse = null; BaseOrderResponse baseOrderResponse = null;
if (PayRefundStatus.SUCCESS.equals(refundResponse.getPayRefundStatus())) { if (PayRefundStatus.SUCCESS.equals(refundResponse.getPayRefundStatus())) {
// fisherman 判断是否在退款中, 如果是退款中 调用退货完成
if (orderBean.getAfterSalesOrderResp().getAfterSalesStatus().compareTo(AfterSalesRefunStateEnum.STATE_1.getIndex()) != 0) {
baseOrderResponse = orderCenterSdkService.orderRefundComplete(refundAgreeRequest);
} else {
baseOrderResponse = orderCenterSdkService.refundComplete(refundAgreeRequest); baseOrderResponse = orderCenterSdkService.refundComplete(refundAgreeRequest);
} else if(PayRefundStatus.RUNNING.equals(refundResponse.getPayRefundStatus()) && orderBean.getAfterSalesOrderResp().getAfterSalesStatus() != 4){ }
} else if (PayRefundStatus.RUNNING.equals(refundResponse.getPayRefundStatus()) && orderBean.getAfterSalesOrderResp().getAfterSalesStatus() != 4) {
//退款中, 基础服务售后状态不能为4,等待商家再次发起同意退款 //退款中, 基础服务售后状态不能为4,等待商家再次发起同意退款
baseOrderResponse = orderCenterSdkService.refundReturn(refundAgreeRequest); baseOrderResponse = orderCenterSdkService.refundReturn(refundAgreeRequest);
}else { } else {
return ResponseUtil.success(); return ResponseUtil.success();
} }
if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) { if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) {
...@@ -234,6 +243,42 @@ public class SaasOrderHandle { ...@@ -234,6 +243,42 @@ public class SaasOrderHandle {
} }
/** /**
* 处理支付 退款回调 订单业务处理
*
* @param request
* @param refundResponse
* @param orderBean
*/
public void refundAgreeByCallback(OrderManagerRequest request, PayRefundResponse refundResponse, OrderBeanV1 orderBean) {
BaseQueryOrderRequest refundAgreeRequest = orderSdkAdapter.getRefundAgreeRequest(refundResponse.getRefundId(), request.getReason(), request.getOperator(), orderBean);
refundAgreeRequest.setRefundState(PayRefundStatus.SUCCESS.getCode().equals(refundResponse.getPayRefundStatus().getCode()) ? 4 : 2);
refundAgreeRequest.setOperationClient(request.getOperationClient());
PayRefundStatus payRefundStatus = refundResponse.getPayRefundStatus();
if (payRefundStatus.getCode().equals(PayRefundStatus.SUCCESS.getCode())) {
// 退款成功 调用 -> /afterSales/v2/adultRefundComplete
orderCenterSdkService.orderRefundComplete(refundAgreeRequest);
} else {
// 退款失败 只记录失败日志
AfterSalesRefundFailReq refundFailReq = this.getAfterSalesRefundFailReq(orderBean,
"refundSuccessCallback",
AfterSalesApplyClientEnum.STATE_6.getIndex(),
refundResponse.getMessage());
orderSdkService.refundFail(refundFailReq, LogThreadLocal.getTrackingNo());
}
}
private AfterSalesRefundFailReq getAfterSalesRefundFailReq(OrderBeanV1 orderBean, String operator, Integer operationClient, String refundFailReason) {
AfterSalesRefundFailReq refundFailReq = new AfterSalesRefundFailReq();
refundFailReq.setOrderCode(orderBean.getOid());
refundFailReq.setPartnerId(orderBean.getCompanyId());
refundFailReq.setRefundFailReason(refundFailReason);
refundFailReq.setAfterSalesCode(orderBean.getAfterSalesOrderResp().getAfterSalesCode());
refundFailReq.setOperationClient(operationClient);
refundFailReq.setOperator(operator);
return refundFailReq;
}
/**
* 麦咖啡同意退款 * 麦咖啡同意退款
* *
* @param request * @param request
...@@ -287,6 +332,7 @@ public class SaasOrderHandle { ...@@ -287,6 +332,7 @@ public class SaasOrderHandle {
/** /**
* 拒绝退款 * 拒绝退款
*
* @param request * @param request
* @param orderBean * @param orderBean
* @return * @return
...@@ -303,6 +349,7 @@ public class SaasOrderHandle { ...@@ -303,6 +349,7 @@ public class SaasOrderHandle {
/** /**
* 麦咖啡拒绝退款 * 麦咖啡拒绝退款
*
* @param request * @param request
* @param orderBean * @param orderBean
* @return * @return
...@@ -310,7 +357,7 @@ public class SaasOrderHandle { ...@@ -310,7 +357,7 @@ public class SaasOrderHandle {
public BaseResponse mcCafeRefundReject(OrderManagerRequest request, OrderBeanV1 orderBean) { public BaseResponse mcCafeRefundReject(OrderManagerRequest request, OrderBeanV1 orderBean) {
CancelOrderRequest rejectRefundRequest = orderSdkAdapter.getRejectRefundRequest(request.getOperator(), request.getReason(), orderBean); CancelOrderRequest rejectRefundRequest = orderSdkAdapter.getRejectRefundRequest(request.getOperator(), request.getReason(), orderBean);
BaseOrderResponse baseOrderResponse = null; BaseOrderResponse baseOrderResponse = null;
for(int i=0;i<orderBean.getRefundList().size();i++) { for (int i = 0; i < orderBean.getRefundList().size(); i++) {
if (RefundStatusV1.APPLY_REFUND.getCodeV1().equals(orderBean.getRefundList().get(i).getStatus())) { if (RefundStatusV1.APPLY_REFUND.getCodeV1().equals(orderBean.getRefundList().get(i).getStatus())) {
rejectRefundRequest.setAfterSalesCode(orderBean.getRefundList().get(i).getRid()); rejectRefundRequest.setAfterSalesCode(orderBean.getRefundList().get(i).getRid());
...@@ -333,7 +380,7 @@ public class SaasOrderHandle { ...@@ -333,7 +380,7 @@ public class SaasOrderHandle {
* 取消订单 * 取消订单
*/ */
@Deprecated @Deprecated
public BaseResponse orderCancel(OrderManagerRequest request, PayRefundResponse refundResponse,OrderBeanV1 orderBean) { public BaseResponse orderCancel(OrderManagerRequest request, PayRefundResponse refundResponse, OrderBeanV1 orderBean) {
//作废订单 //作废订单
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.getCancelOrderRequest(request.getOperator(), request.getReason(), refundResponse.getPayRefundStatus(), refundResponse.getRefundId(), orderBean); CancelOrderRequest cancelOrderRequest = orderSdkAdapter.getCancelOrderRequest(request.getOperator(), request.getReason(), refundResponse.getPayRefundStatus(), refundResponse.getRefundId(), orderBean);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderCancel(cancelOrderRequest); BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderCancel(cancelOrderRequest);
...@@ -345,6 +392,7 @@ public class SaasOrderHandle { ...@@ -345,6 +392,7 @@ public class SaasOrderHandle {
/** /**
* 转换成callback消息体 * 转换成callback消息体
*
* @param orderCode 订单编号 * @param orderCode 订单编号
* @param orderState cn.freemud.shared.order.enums.order.OrderStatus.API_DESC="订单状态 1:待支付 2:下单 3:已接单 4:制作完成(待发货) 5:配送中 6:已完 7:已关闭"; * @param orderState cn.freemud.shared.order.enums.order.OrderStatus.API_DESC="订单状态 1:待支付 2:下单 3:已接单 4:制作完成(待发货) 5:配送中 6:已完 7:已关闭";
* @param operateType 操作类型 0= 其他信息修改,1=订单正向操作,2=订单逆向操作,3=通知消息 * @param operateType 操作类型 0= 其他信息修改,1=订单正向操作,2=订单逆向操作,3=通知消息
...@@ -377,4 +425,5 @@ public class SaasOrderHandle { ...@@ -377,4 +425,5 @@ public class SaasOrderHandle {
return notifyDto; return notifyDto;
} }
} }
...@@ -473,12 +473,6 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -473,12 +473,6 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
PayRefundStatus payRefundStatus = PayRefundStatus.SUCCESS; PayRefundStatus payRefundStatus = PayRefundStatus.SUCCESS;
if (!Objects.equals(refundStatus, "100")) { if (!Objects.equals(refundStatus, "100")) {
payRefundStatus = PayRefundStatus.FAIL; payRefundStatus = PayRefundStatus.FAIL;
// 告知基础服务 退款失败
AfterSalesRefundFailReq refundFailReq = this.getAfterSalesRefundFailReq(orderBean,
"refundSuccessCallback",
AfterSalesApplyClientEnum.STATE_6.getIndex(),
refundResponse.getMessage());
orderSdkService.refundFail(refundFailReq, LogThreadLocal.getTrackingNo());
} }
refundResponse.setPayRefundStatus(payRefundStatus); refundResponse.setPayRefundStatus(payRefundStatus);
refundResponse.setRefundId(request.getRefundId()); refundResponse.setRefundId(request.getRefundId());
...@@ -486,7 +480,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -486,7 +480,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
OrderManagerRequest omRequest = new OrderManagerRequest(); OrderManagerRequest omRequest = new OrderManagerRequest();
omRequest.setReason(reason); omRequest.setReason(reason);
omRequest.setOperator("支付退款回调系统补偿"); omRequest.setOperator("支付退款回调系统补偿");
saasOrderHandle.refundAgree(omRequest, refundResponse, orderBean); saasOrderHandle.refundAgreeByCallback(omRequest, refundResponse, orderBean);
// 退款失败 不应该走 冲正逻辑 // 退款失败 不应该走 冲正逻辑
if (payRefundStatus.getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 0) { if (payRefundStatus.getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 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