Commit 81f9bfbe by 周晓航

【订C】新增订单退款成功回调接口,需要修改售后单状态(原因:发起退款时支付那边可能是退款中状态,定时任务补偿后需要回调订单)

parent a068ef59
...@@ -22,6 +22,7 @@ import cn.freemud.entities.vo.encircle.CreateReserveOrderVo; ...@@ -22,6 +22,7 @@ import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.entities.vo.encircle.EncircleReserveBaseVo; import cn.freemud.entities.vo.encircle.EncircleReserveBaseVo;
import cn.freemud.entities.vo.order.*; import cn.freemud.entities.vo.order.*;
import cn.freemud.handler.OrderReportJobHandler; import cn.freemud.handler.OrderReportJobHandler;
import cn.freemud.management.entities.dto.request.order.RefundSuccessCallbackVo;
import cn.freemud.service.EncircleOrderService; import cn.freemud.service.EncircleOrderService;
import cn.freemud.service.Orderservice; import cn.freemud.service.Orderservice;
import cn.freemud.service.PointsMallOrderService; import cn.freemud.service.PointsMallOrderService;
...@@ -556,16 +557,5 @@ public class OrderController { ...@@ -556,16 +557,5 @@ public class OrderController {
return ResponseUtil.success(orderAdapterService.getOrderConfig(request)); return ResponseUtil.success(orderAdapterService.getOrderConfig(request));
} }
/**
* 同意退款, 支付服务退款失败的补偿接口
*
* 退款成功会回调该接口进行后续流程补偿
*/
@IsConvertEN
@ApiAnnotation(logMessage = "/order/refund/callback")
@PostMapping("/refund/callback")
public BaseResponse refundSuccessCallback(@Validated @LogParams @RequestBody RefundSuccessCallbackVo req) {
return orderAdapterService.refundSuccessCallback(req);
}
} }
...@@ -17,6 +17,7 @@ import cn.freemud.entities.vo.order.PaymentConfigVo; ...@@ -17,6 +17,7 @@ import cn.freemud.entities.vo.order.PaymentConfigVo;
import cn.freemud.entities.vo.order.PlugInParameter; import cn.freemud.entities.vo.order.PlugInParameter;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.entities.dto.request.order.RefundSuccessCallbackVo;
import cn.freemud.management.service.handle.SaasOrderHandle; import cn.freemud.management.service.handle.SaasOrderHandle;
import cn.freemud.management.thirdparty.OrderCallbackClient; import cn.freemud.management.thirdparty.OrderCallbackClient;
import cn.freemud.manager.OpenPlatformOrderConfigManager; import cn.freemud.manager.OpenPlatformOrderConfigManager;
...@@ -465,13 +466,4 @@ public class OrderAdapterServiceImpl { ...@@ -465,13 +466,4 @@ public class OrderAdapterServiceImpl {
} }
/**
* 支付退款成功回调
*
* @param req
* @return
*/
public BaseResponse refundSuccessCallback(RefundSuccessCallbackVo req) {
return null;
}
} }
...@@ -3,6 +3,7 @@ package cn.freemud.management.controller; ...@@ -3,6 +3,7 @@ package cn.freemud.management.controller;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.McCafeOrderManagerRequest; import cn.freemud.management.entities.dto.request.order.McCafeOrderManagerRequest;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.request.order.RefundSuccessCallbackVo;
import cn.freemud.management.enums.McCafeOperateType; import cn.freemud.management.enums.McCafeOperateType;
import cn.freemud.management.enums.OperateType; import cn.freemud.management.enums.OperateType;
import cn.freemud.management.enums.ResponseResult; import cn.freemud.management.enums.ResponseResult;
...@@ -72,6 +73,17 @@ public class OrderManagerController { ...@@ -72,6 +73,17 @@ public class OrderManagerController {
} }
} }
/**
* 同意退款, 支付服务退款失败的补偿接口
*
* 退款成功会回调该接口进行后续流程补偿
*/
@ApiAnnotation(logMessage = "/order/refund/callback")
@PostMapping("/refund/callback")
public BaseResponse refundSuccessCallback(@Validated @LogParams @RequestBody RefundSuccessCallbackVo req) {
return orderManagerAdapter.refundSuccessCallback(req);
}
@ApiAnnotation(logMessage = "mcCafeDeliveryCreate") @ApiAnnotation(logMessage = "mcCafeDeliveryCreate")
@ApiOperation(value = "麦咖啡订单入机", notes = "麦咖啡订单入机", produces = "application/json") @ApiOperation(value = "麦咖啡订单入机", notes = "麦咖啡订单入机", produces = "application/json")
@PostMapping("/mcCafe/statusOperate") @PostMapping("/mcCafe/statusOperate")
......
package cn.freemud.entities.vo; package cn.freemud.management.entities.dto.request.order;
import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
...@@ -8,6 +10,7 @@ import javax.validation.constraints.NotBlank; ...@@ -8,6 +10,7 @@ import javax.validation.constraints.NotBlank;
* @Date : 2022/6/8 17:38 * @Date : 2022/6/8 17:38
* @description : * @description :
*/ */
@Data
public class RefundSuccessCallbackVo { public class RefundSuccessCallbackVo {
/** /**
......
...@@ -2,6 +2,7 @@ package cn.freemud.management.service; ...@@ -2,6 +2,7 @@ package cn.freemud.management.service;
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.request.order.RefundSuccessCallbackVo;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse; import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
...@@ -110,4 +111,14 @@ public interface OrderManagerService { ...@@ -110,4 +111,14 @@ public interface OrderManagerService {
default BaseResponse<OrderManagerResponse> orderCancelDelivery(OrderManagerRequest request, OrderBeanV1 orderBean){ default BaseResponse<OrderManagerResponse> orderCancelDelivery(OrderManagerRequest request, OrderBeanV1 orderBean){
return ResponseUtil.success(); return ResponseUtil.success();
}; };
/**
* 支付退款成功的售后状态回调
* @param request
* @param orderBean
* @return
*/
default BaseResponse refundSuccessCallback(RefundSuccessCallbackVo request, OrderBeanV1 orderBean){
return ResponseUtil.success();
};
} }
...@@ -2,6 +2,7 @@ package cn.freemud.management.service.adapter; ...@@ -2,6 +2,7 @@ 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.request.order.RefundSuccessCallbackVo;
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.ResponseResult; import cn.freemud.management.enums.ResponseResult;
...@@ -371,4 +372,27 @@ public class OrderManagerAdapter { ...@@ -371,4 +372,27 @@ public class OrderManagerAdapter {
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderAgreeRefund(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderAgreeRefund(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse); return handleResponse(request,orderBean,orderManagerResponse);
} }
/**
* 支付退款成功回调
*
* @param request
* @return
*/
public BaseResponse refundSuccessCallback(RefundSuccessCallbackVo request) {
// step 1 查订单
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderCode());
if (null == orderBean) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
// step 2 检查订单状态
//已取消的订单不能操作
if (ObjectUtils.equals(OrderStatusV1.CANCEL.getV2Code(), orderBean.getStatusV2())) {
return ResponseUtil.error(ResponseResult.ORDER_HAS_CANCELED);
}
// step 3 调用后续逻辑操作
orderBeanFactory.getOrderManagerService(orderBean).refundSuccessCallback(request, orderBean);
return ResponseUtil.success();
}
} }
...@@ -4,6 +4,7 @@ import cn.freemud.base.entity.BaseResponse; ...@@ -4,6 +4,7 @@ import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.constant.ResponseCodeConstant; import cn.freemud.management.constant.ResponseCodeConstant;
import cn.freemud.management.entities.dto.request.console.*; import cn.freemud.management.entities.dto.request.console.*;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.request.order.RefundSuccessCallbackVo;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse; import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse; import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.OperateType; import cn.freemud.management.enums.OperateType;
...@@ -30,6 +31,7 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderExpressReq; ...@@ -30,6 +31,7 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderExpressReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp; import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.service.EmailAlertService; import com.freemud.application.sdk.api.service.EmailAlertService;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
...@@ -435,6 +437,31 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -435,6 +437,31 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
return ResponseUtil.success(); return ResponseUtil.success();
} }
@Override
public BaseResponse refundSuccessCallback(RefundSuccessCallbackVo request, OrderBeanV1 orderBean) {
String reason = "支付补偿,订单退款";
AfterSalesOrderResp afterSalesOrderResp = orderBean.getAfterSalesOrderResp();
if (Objects.nonNull(afterSalesOrderResp)) {
reason = afterSalesOrderResp.getAfterSalesReason();
}
//订单同意退款
PayRefundResponse refundResponse = new PayRefundResponse();
refundResponse.setPayRefundStatus(PayRefundStatus.SUCCESS);
refundResponse.setRefundId(request.getRefundId());
OrderManagerRequest omRequest = new OrderManagerRequest();
omRequest.setReason(reason);
omRequest.setOperator("支付退款回调系统补偿");
saasOrderHandle.refundAgree(omRequest, refundResponse, orderBean);
// 推送pos、微信消息中心
orderBaseService.sendMessage(orderBean, ORDER_AGREE_REFUND, reason);
//todo 可以考虑基于订单回调异步实现
//冲正库存
stockHandle.revert(omRequest, orderBean);
return ResponseUtil.success();
}
/** /**
* @param query * @param query
* @param partnerId * @param partnerId
......
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