Commit f1fef8a7 by 查志伟

提供退订单金额接口

parent 6bda8ab9
......@@ -5,13 +5,14 @@ import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.order.PayConfigVo;
import cn.freemud.entities.vo.order.PaySuccessDataVo;
import cn.freemud.service.ExposureOrderService;
import cn.freemud.service.RefundService;
import cn.freemud.service.impl.OrderQueueService;
import cn.freemud.service.impl.OrderServiceImpl;
import cn.freemud.service.impl.PayServiceImpl;
import cn.freemud.utils.ResponseUtil;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
import org.springframework.beans.factory.annotation.Autowired;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -23,18 +24,14 @@ import org.springframework.web.bind.annotation.RestController;
*/
@RestController
@RequestMapping("/order/exposure")
@RequiredArgsConstructor
public class ExposureOrderController {
@Autowired
private PayServiceImpl payService;
@Autowired
private ExposureOrderService exposureOrderService;
@Autowired
private OrderServiceImpl orderService;
@Autowired
private OrderQueueService orderQueueService;
private final PayServiceImpl payService;
private final ExposureOrderService exposureOrderService;
private final OrderServiceImpl orderService;
private final OrderQueueService orderQueueService;
private final RefundService refundService;
/**
* 创建支付单,查询支付配置
......@@ -132,4 +129,14 @@ public class ExposureOrderController {
return ResponseUtil.success(exposureOrderService.getPayCode(req));
}
/**
* 退订单金额(仅退款,不会处理订单状态)
* 返回退款状态, 1-成功 {@link cn.freemud.enums.PayRefundStatus}
*/
@PostMapping("/refundOrderAmt")
@ApiAnnotation(logMessage = "退订单金额(仅退款,不会处理订单状态)")
public BaseResponse<Integer> refundOrderAmt(@Validated @LogParams @RequestBody RefundOrderAmtRequest request) {
return ResponseUtil.success(refundService.refundOrderAmt(request.getPartnerId(), request.getOrderCode(), request.getReason()));
}
}
package cn.freemud.entities.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @author Clover.z
* @version 1.0.0
* @since 1.0.0
*/
@Data
public class RefundOrderAmtRequest {
@ApiModelProperty(value = "商户号", required = true)
@NotBlank
private String partnerId;
@ApiModelProperty(value = "订单号", required = true)
@NotBlank
private String orderCode;
@ApiModelProperty(value = "退款说明", required = true)
@NotBlank
private String reason;
}
......@@ -124,7 +124,7 @@ public class RefundService {
// 未接单
if (NewOrderStatus.PLACE_AN_ORDER.getIndex().equals(order.getOrderState())) {
//商家未接单逻辑处理 1.调用支付退款 2.根据支付退款返回状态组装订单取消参数,调用订单取消接口
refundAmt(order, reason, refundDeliveryFee, refundMode);
refundOrder(order, reason, refundDeliveryFee, refundMode);
orderQueueService.backOrdersStatusChange(order.getOrderCode(), order.getOrderState(), order.getPayState(), order.getPartnerId());
} else {
//已接单的,创建售后单
......@@ -133,6 +133,22 @@ public class RefundService {
}
/**
* 退订单金额(仅退款,不会处理订单状态)
* @param partnerId 商户号
* @param orderCode 订单号
* @return 退款状态 {@link PayRefundStatus}
*/
public Integer refundOrderAmt(String partnerId, String orderCode, String refundReason) {
// 查询订单信息
QueryByCodeResponse response = orderSdkService.getOrderInfo(partnerId, orderCode);
if (null == response || null == response.getResult()) throw new ServiceException("订单信息不存在");
OrderInfoReqs order = response.getResult();
// 退款,这里不用关心订单状态,直接退这笔订单的支付金额
PayRefundResponse refundResponse = paymentHandle.getCommonPayRefundResponse(order, refundReason);
return refundResponse.getPayRefundStatus().getCode();
}
/**
* 研发批量退款,内部技术支持使用
*
*/
......@@ -247,7 +263,7 @@ public class RefundService {
* 1.调用支付退款 2.根据支付退款返回状态组装订单取消参数,调用订单取消接口
*
*/
private void refundAmt(OrderInfoReqs order, String reason, Boolean isRefundDeliveryFee, Byte refundMode) {
private void refundOrder(OrderInfoReqs order, String reason, Boolean isRefundDeliveryFee, Byte refundMode) {
int state = PayRefundStatus.SUCCESS.getCode();
if (order.getActualPayAmount().longValue() > 0) {
PayRefundResponse refundResponse = paymentHandle.getCommonPayRefundResponse(order, reason);
......
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