Commit 81f9bfbe by 周晓航

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

parent a068ef59
......@@ -22,6 +22,7 @@ import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.entities.vo.encircle.EncircleReserveBaseVo;
import cn.freemud.entities.vo.order.*;
import cn.freemud.handler.OrderReportJobHandler;
import cn.freemud.management.entities.dto.request.order.RefundSuccessCallbackVo;
import cn.freemud.service.EncircleOrderService;
import cn.freemud.service.Orderservice;
import cn.freemud.service.PointsMallOrderService;
......@@ -556,16 +557,5 @@ public class OrderController {
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;
import cn.freemud.entities.vo.order.PlugInParameter;
import cn.freemud.enums.*;
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.thirdparty.OrderCallbackClient;
import cn.freemud.manager.OpenPlatformOrderConfigManager;
......@@ -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;
import cn.freemud.base.entity.BaseResponse;
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.RefundSuccessCallbackVo;
import cn.freemud.management.enums.McCafeOperateType;
import cn.freemud.management.enums.OperateType;
import cn.freemud.management.enums.ResponseResult;
......@@ -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")
@ApiOperation(value = "麦咖啡订单入机", notes = "麦咖啡订单入机", produces = "application/json")
@PostMapping("/mcCafe/statusOperate")
......
package cn.freemud.entities.vo;
package cn.freemud.management.entities.dto.request.order;
import lombok.Data;
import javax.validation.constraints.NotBlank;
......@@ -8,6 +10,7 @@ import javax.validation.constraints.NotBlank;
* @Date : 2022/6/8 17:38
* @description :
*/
@Data
public class RefundSuccessCallbackVo {
/**
......
......@@ -2,6 +2,7 @@ package cn.freemud.management.service;
import cn.freemud.base.entity.BaseResponse;
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.util.ResponseUtil;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
......@@ -110,4 +111,14 @@ public interface OrderManagerService {
default BaseResponse<OrderManagerResponse> orderCancelDelivery(OrderManagerRequest request, OrderBeanV1 orderBean){
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;
import cn.freemud.base.entity.BaseResponse;
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.enums.OperateType;
import cn.freemud.management.enums.ResponseResult;
......@@ -371,4 +372,27 @@ public class OrderManagerAdapter {
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderAgreeRefund(request, orderBean);
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;
import cn.freemud.management.constant.ResponseCodeConstant;
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.RefundSuccessCallbackVo;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.OperateType;
......@@ -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.OrderExtendedReq;
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.service.EmailAlertService;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
......@@ -435,6 +437,31 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
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 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