From e8368bb7fdca7763139a8fff3f48fe898ed2bb28 Mon Sep 17 00:00:00 2001 From: jason <2667446@qq.com> Date: Sun, 26 Dec 2021 21:52:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=80=80=E6=AC=BE=E9=80=BB?= =?UTF-8?q?=E8=BE=91code=20review?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../convert/order/PayRefundCoreConvert.java | 4 +- .../order/PayRefundChannelPostHandler.java | 6 +- .../service/order/PayRefundCoreService.java | 7 +-- .../PayRefundPostReqDTO.java} | 8 ++- .../PayRefundReqDTO.java} | 5 +- .../PayRefundRespDTO.java} | 5 +- .../order/impl/PayRefundCoreServiceImpl.java | 57 ++++++++----------- .../PayRefundChannelFailedHandler.java | 18 +++--- .../PayRefundChannelNotifyHandler.java | 10 ++-- .../handler/PayRefundChannelQueryHandler.java | 16 +++--- .../handler/PayRefundChannelRetryHandler.java | 14 ++--- .../PayRefundChannelSuccessHandler.java | 18 +++--- .../controller/order/PayRefundController.java | 14 ++--- .../pay/convert/order/PayRefundConvert.java | 8 +-- 14 files changed, 90 insertions(+), 100 deletions(-) rename yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/{bo/PayRefundPostReqBO.java => dto/PayRefundPostReqDTO.java} (91%) rename yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/{bo/PayRefundReqBO.java => dto/PayRefundReqDTO.java} (79%) rename yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/{bo/PayRefundRespBO.java => dto/PayRefundRespDTO.java} (68%) diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/convert/order/PayRefundCoreConvert.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/convert/order/PayRefundCoreConvert.java index 8f5bb10d3..8bc035b51 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/convert/order/PayRefundCoreConvert.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/convert/order/PayRefundCoreConvert.java @@ -2,7 +2,7 @@ package cn.iocoder.yudao.coreservice.modules.pay.convert.order; import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO; import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayRefundDO; -import cn.iocoder.yudao.coreservice.modules.pay.service.order.bo.PayRefundPostReqBO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayRefundPostReqDTO; import cn.iocoder.yudao.framework.pay.core.client.dto.PayRefundUnifiedRespDTO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -14,7 +14,7 @@ public interface PayRefundCoreConvert { PayRefundCoreConvert INSTANCE = Mappers.getMapper(PayRefundCoreConvert.class); - PayRefundPostReqBO convert(PayRefundUnifiedRespDTO respDTO); + PayRefundPostReqDTO convert(PayRefundUnifiedRespDTO respDTO); //TODO 太多需要处理了, 暂时不用 @Mappings(value = { diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/PayRefundChannelPostHandler.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/PayRefundChannelPostHandler.java index 59ea07b50..8c0820acb 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/PayRefundChannelPostHandler.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/PayRefundChannelPostHandler.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.coreservice.modules.pay.service.order; -import cn.iocoder.yudao.coreservice.modules.pay.service.order.bo.PayRefundPostReqBO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayRefundPostReqDTO; import cn.iocoder.yudao.framework.pay.core.enums.PayChannelRespEnum; /** @@ -20,7 +20,7 @@ public interface PayRefundChannelPostHandler { /** * 根据渠道返回,处理支付退款单 * - * @param respBO + * @param req 退款后置处理请求 */ - void handleRefundChannelResp(PayRefundPostReqBO respBO); + void handleRefundChannelResp(PayRefundPostReqDTO req); } diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/PayRefundCoreService.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/PayRefundCoreService.java index e6c14222c..b56384ed6 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/PayRefundCoreService.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/PayRefundCoreService.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.coreservice.modules.pay.service.order; -import cn.iocoder.yudao.coreservice.modules.pay.service.order.bo.PayRefundReqBO; -import cn.iocoder.yudao.coreservice.modules.pay.service.order.bo.PayRefundRespBO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayRefundReqDTO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayRefundRespDTO; import cn.iocoder.yudao.framework.pay.core.client.dto.PayNotifyDataDTO; /** @@ -11,14 +11,13 @@ import cn.iocoder.yudao.framework.pay.core.client.dto.PayNotifyDataDTO; */ public interface PayRefundCoreService { - // TODO @jason:方法名改成,submitRefundOrder,发起退款订单。这样和发起支付单,保持一致 /** * 提交退款申请 * * @param reqDTO 退款申请信息 * @return 退款申请返回信息 */ - PayRefundRespBO refund(PayRefundReqBO reqDTO); + PayRefundRespDTO submitRefundOrder(PayRefundReqDTO reqDTO); /** * 渠道的退款通知 diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/bo/PayRefundPostReqBO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayRefundPostReqDTO.java similarity index 91% rename from yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/bo/PayRefundPostReqBO.java rename to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayRefundPostReqDTO.java index 6d5ecafae..ea32c32bf 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/bo/PayRefundPostReqBO.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayRefundPostReqDTO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.coreservice.modules.pay.service.order.bo; +package cn.iocoder.yudao.coreservice.modules.pay.service.order.dto; import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayRefundTypeEnum; import cn.iocoder.yudao.framework.pay.core.enums.PayChannelRespEnum; @@ -8,13 +8,15 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; -// TODO @jason:改到 dto 哈。我们项目,统一使用 DTO +/** + * 退款后置处理请求 Request DTO + */ @Data @Accessors(chain = true) @Builder @NoArgsConstructor @AllArgsConstructor -public class PayRefundPostReqBO { +public class PayRefundPostReqDTO { /** diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/bo/PayRefundReqBO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayRefundReqDTO.java similarity index 79% rename from yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/bo/PayRefundReqBO.java rename to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayRefundReqDTO.java index 526e86b77..d9bdb29b1 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/bo/PayRefundReqBO.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayRefundReqDTO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.coreservice.modules.pay.service.order.bo; +package cn.iocoder.yudao.coreservice.modules.pay.service.order.dto; import lombok.AllArgsConstructor; import lombok.Builder; @@ -6,7 +6,6 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; -// TODO @jason:改到 dto 哈。我们项目,统一使用 DTO /** * 退款申请单 Request DTO */ @@ -15,7 +14,7 @@ import lombok.experimental.Accessors; @Builder @NoArgsConstructor @AllArgsConstructor -public class PayRefundReqBO { +public class PayRefundReqDTO { /** * 支付订单编号自增 diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/bo/PayRefundRespBO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayRefundRespDTO.java similarity index 68% rename from yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/bo/PayRefundRespBO.java rename to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayRefundRespDTO.java index 037c62667..8a13212ac 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/bo/PayRefundRespBO.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayRefundRespDTO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.coreservice.modules.pay.service.order.bo; +package cn.iocoder.yudao.coreservice.modules.pay.service.order.dto; import lombok.AllArgsConstructor; import lombok.Builder; @@ -6,7 +6,6 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; -// TODO @jason:改到 dto 哈。我们项目,统一使用 DTO /** * 退款申请单 Response DTO */ @@ -15,7 +14,7 @@ import lombok.experimental.Accessors; @Builder @NoArgsConstructor @AllArgsConstructor -public class PayRefundRespBO { +public class PayRefundRespDTO { /** * 支付退款单编号, 自增 diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/PayRefundCoreServiceImpl.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/PayRefundCoreServiceImpl.java index 8d689642d..1c1f38433 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/PayRefundCoreServiceImpl.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/PayRefundCoreServiceImpl.java @@ -14,6 +14,8 @@ import cn.iocoder.yudao.coreservice.modules.pay.enums.notify.PayNotifyTypeEnum; import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayOrderNotifyStatusEnum; import cn.iocoder.yudao.coreservice.modules.pay.service.notify.PayNotifyCoreService; import cn.iocoder.yudao.coreservice.modules.pay.service.notify.dto.PayNotifyTaskCreateReqDTO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayRefundPostReqDTO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayRefundReqDTO; import cn.iocoder.yudao.framework.pay.core.client.dto.PayRefundNotifyDTO; import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayRefundTypeEnum; import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayOrderStatusEnum; @@ -22,9 +24,7 @@ import cn.iocoder.yudao.coreservice.modules.pay.service.merchant.PayAppCoreServi import cn.iocoder.yudao.coreservice.modules.pay.service.merchant.PayChannelCoreService; import cn.iocoder.yudao.coreservice.modules.pay.service.order.PayRefundCoreService; import cn.iocoder.yudao.coreservice.modules.pay.service.order.PayRefundChannelPostHandler; -import cn.iocoder.yudao.coreservice.modules.pay.service.order.bo.PayRefundPostReqBO; -import cn.iocoder.yudao.coreservice.modules.pay.service.order.bo.PayRefundReqBO; -import cn.iocoder.yudao.coreservice.modules.pay.service.order.bo.PayRefundRespBO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayRefundRespDTO; import cn.iocoder.yudao.coreservice.modules.pay.util.PaySeqUtils; import cn.iocoder.yudao.framework.pay.core.client.PayClient; import cn.iocoder.yudao.framework.pay.core.client.PayClientFactory; @@ -71,15 +71,14 @@ public class PayRefundCoreServiceImpl implements PayRefundCoreService { @Resource private List handlerList; - // TODO @json:mapHandlers - private final EnumMap mapHandler = new EnumMap<>(PayChannelRespEnum.class); + private final EnumMap mapHandlers = new EnumMap<>(PayChannelRespEnum.class); @PostConstruct public void init(){ if (Objects.nonNull(handlerList)) { handlerList.forEach(handler -> { for (PayChannelRespEnum item : handler.supportHandleResp()) { - mapHandler.put(item, handler); + mapHandlers.put(item, handler); } }); } @@ -87,9 +86,9 @@ public class PayRefundCoreServiceImpl implements PayRefundCoreService { @Override @Transactional(rollbackFor = Exception.class) - public PayRefundRespBO refund(PayRefundReqBO reqBO) { + public PayRefundRespDTO submitRefundOrder(PayRefundReqDTO req) { // 获得 PayOrderDO - PayOrderDO order = payOrderCoreMapper.selectById(reqBO.getPayOrderId()); + PayOrderDO order = payOrderCoreMapper.selectById(req.getPayOrderId()); // 校验订单是否存在 if (Objects.isNull(order) ) { throw exception(PAY_ORDER_NOT_FOUND); @@ -106,14 +105,13 @@ public class PayRefundCoreServiceImpl implements PayRefundCoreService { } // 校验退款的条件 - validatePayRefund(reqBO, order); + validatePayRefund(req, order); // 退款类型 PayRefundTypeEnum refundType = PayRefundTypeEnum.SOME; - if (Objects.equals(reqBO.getAmount(), order.getAmount())) { + if (Objects.equals(req.getAmount(), order.getAmount())) { refundType = PayRefundTypeEnum.ALL; } - // 退款单入库 退款单状态:生成, 没有和渠道产生交互 PayOrderExtensionDO orderExtensionDO = payOrderExtensionCoreMapper.selectById(order.getSuccessExtensionId()); PayRefundDO refundDO = PayRefundDO.builder().channelOrderNo(order.getChannelOrderNo()) @@ -123,54 +121,47 @@ public class PayRefundCoreServiceImpl implements PayRefundCoreService { .channelId(order.getChannelId()) .merchantId(order.getMerchantId()) .orderId(order.getId()) - .merchantRefundNo(reqBO.getMerchantRefundNo()) + .merchantRefundNo(req.getMerchantRefundNo()) .notifyUrl(app.getRefundNotifyUrl()) .payAmount(order.getAmount()) - .refundAmount(reqBO.getAmount()) - .userIp(reqBO.getUserIp()) + .refundAmount(req.getAmount()) + .userIp(req.getUserIp()) .merchantOrderId(order.getMerchantOrderId()) .tradeNo(orderExtensionDO.getNo()) .status(PayRefundStatusEnum.CREATE.getStatus()) - .reason(reqBO.getReason()) + .reason(req.getReason()) .notifyStatus(PayOrderNotifyStatusEnum.NO.getStatus()) .reqNo(PaySeqUtils.genRefundReqNo()) .type(refundType.getStatus()) .build(); payRefundCoreMapper.insert(refundDO); - // TODO @jason:可以把“调用渠道进行退款"写到这里,这样分块更明确 + // 调用渠道进行退款 PayRefundUnifiedReqDTO unifiedReqDTO = PayRefundUnifiedReqDTO.builder() - .userIp(reqBO.getUserIp()) + .userIp(req.getUserIp()) .channelOrderNo(refundDO.getChannelOrderNo()) .payTradeNo(refundDO.getTradeNo()) .refundReqNo(refundDO.getReqNo()) - .amount(reqBO.getAmount()) + .amount(req.getAmount()) .reason(refundDO.getReason()) .build(); - - // 调用渠道进行退款 PayRefundUnifiedRespDTO refundUnifiedRespDTO = client.unifiedRefund(unifiedReqDTO); - - // TODO @jason:下面这块,是一整块逻辑,不要空开。不然阅读的时候,会以为不是一块逻辑 // 根据渠道返回,获取退款后置处理,由postHandler 进行处理 - PayRefundChannelPostHandler payRefundChannelPostHandler = mapHandler.get(refundUnifiedRespDTO.getRespEnum()); - + PayRefundChannelPostHandler payRefundChannelPostHandler = mapHandlers.get(refundUnifiedRespDTO.getRespEnum()); if (Objects.isNull(payRefundChannelPostHandler)) { throw exception(PAY_REFUND_POST_HANDLER_NOT_FOUND); } - - PayRefundPostReqBO bo = PayRefundCoreConvert.INSTANCE.convert(refundUnifiedRespDTO); - bo.setRefundAmount(reqBO.getAmount()) + PayRefundPostReqDTO dto = PayRefundCoreConvert.INSTANCE.convert(refundUnifiedRespDTO); + dto.setRefundAmount(req.getAmount()) .setRefundedAmount(order.getRefundAmount()) .setRefundedTimes(order.getRefundTimes()) .setRefundId(refundDO.getId()) .setOrderId(order.getId()) .setRefundTypeEnum(refundType); - //调用退款的后置处理 - payRefundChannelPostHandler.handleRefundChannelResp(bo); + payRefundChannelPostHandler.handleRefundChannelResp(dto); - return PayRefundRespBO.builder().refundId(refundDO.getId()).build(); + return PayRefundRespDTO.builder().refundId(refundDO.getId()).build(); } @@ -234,10 +225,10 @@ public class PayRefundCoreServiceImpl implements PayRefundCoreService { /** * 校验是否进行退款 - * @param reqBO 退款申请信息 + * @param req 退款申请信息 * @param order 原始支付订单信息 */ - private void validatePayRefund(PayRefundReqBO reqBO, PayOrderDO order) { + private void validatePayRefund(PayRefundReqDTO req, PayOrderDO order) { // 校验状态,必须是支付状态 if (!PayOrderStatusEnum.SUCCESS.getStatus().equals(order.getStatus())) { throw exception(PAY_ORDER_STATUS_IS_NOT_SUCCESS); @@ -247,7 +238,7 @@ public class PayRefundCoreServiceImpl implements PayRefundCoreService { throw exception(PAY_REFUND_ALL_REFUNDED); } // 校验金额 退款金额不能大于 原定的金额 - if(reqBO.getAmount() + order.getRefundAmount() > order.getAmount()){ + if(req.getAmount() + order.getRefundAmount() > order.getAmount()){ throw exception(PAY_REFUND_AMOUNT_EXCEED); } // 校验渠道订单号 diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelFailedHandler.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelFailedHandler.java index 35066eb5d..02a121b92 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelFailedHandler.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelFailedHandler.java @@ -9,7 +9,7 @@ import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayRefundStatusEnum; import cn.iocoder.yudao.coreservice.modules.pay.service.notify.PayNotifyCoreService; import cn.iocoder.yudao.coreservice.modules.pay.service.notify.dto.PayNotifyTaskCreateReqDTO; import cn.iocoder.yudao.coreservice.modules.pay.service.order.PayRefundAbstractChannelPostHandler; -import cn.iocoder.yudao.coreservice.modules.pay.service.order.bo.PayRefundPostReqBO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayRefundPostReqDTO; import cn.iocoder.yudao.framework.pay.core.enums.PayChannelRespEnum; import org.springframework.stereotype.Service; @@ -38,25 +38,25 @@ public class PayRefundChannelFailedHandler extends PayRefundAbstractChannelPostH @Override - public void handleRefundChannelResp(PayRefundPostReqBO respBO) { + public void handleRefundChannelResp(PayRefundPostReqDTO req) { //退款失败 //更新退款单表 PayRefundDO updateRefundDO = new PayRefundDO(); - updateRefundDO.setId(respBO.getRefundId()) + updateRefundDO.setId(req.getRefundId()) .setStatus(PayRefundStatusEnum.FAILURE.getStatus()) - .setChannelErrorCode(respBO.getChannelErrCode()) - .setChannelErrorMsg(Optional.ofNullable(respBO.getChannelErrMsg()) - .orElse(respBO.getExceptionMsg())); + .setChannelErrorCode(req.getChannelErrCode()) + .setChannelErrorMsg(Optional.ofNullable(req.getChannelErrMsg()) + .orElse(req.getExceptionMsg())); updatePayRefund(updateRefundDO); PayOrderDO updateOrderDO = new PayOrderDO(); //更新订单表 - updateOrderDO.setId(respBO.getOrderId()) - .setRefundTimes(respBO.getRefundedTimes() + 1); + updateOrderDO.setId(req.getOrderId()) + .setRefundTimes(req.getRefundedTimes() + 1); updatePayOrder(updateOrderDO); // 立刻插入退款通知记录 // TODO 通知商户成功或者失败. 现在通知似乎没有实现, 只是回调 payNotifyCoreService.createPayNotifyTask(PayNotifyTaskCreateReqDTO.builder() - .type(PayNotifyTypeEnum.REFUND.getType()).dataId(respBO.getRefundId()).build()); + .type(PayNotifyTypeEnum.REFUND.getType()).dataId(req.getRefundId()).build()); } } diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelNotifyHandler.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelNotifyHandler.java index 8763ab2b7..32cf48754 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelNotifyHandler.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelNotifyHandler.java @@ -6,7 +6,7 @@ import cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.order.PayOrderCoreMapp import cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.order.PayRefundCoreMapper; import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayRefundStatusEnum; import cn.iocoder.yudao.coreservice.modules.pay.service.order.PayRefundAbstractChannelPostHandler; -import cn.iocoder.yudao.coreservice.modules.pay.service.order.bo.PayRefundPostReqBO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayRefundPostReqDTO; import cn.iocoder.yudao.framework.pay.core.enums.PayChannelRespEnum; import org.springframework.stereotype.Service; @@ -28,17 +28,17 @@ public class PayRefundChannelNotifyHandler extends PayRefundAbstractChannelPostH } @Override - public void handleRefundChannelResp(PayRefundPostReqBO respBO) { + public void handleRefundChannelResp(PayRefundPostReqDTO req) { PayRefundDO updateRefundDO = new PayRefundDO(); //更新退款单表 - updateRefundDO.setId(respBO.getRefundId()) + updateRefundDO.setId(req.getRefundId()) .setStatus(PayRefundStatusEnum.PROCESSING_NOTIFY.getStatus()); updatePayRefund(updateRefundDO); PayOrderDO updateOrderDO = new PayOrderDO(); //更新订单表 - updateOrderDO.setId(respBO.getOrderId()) - .setRefundTimes(respBO.getRefundedTimes() + 1); + updateOrderDO.setId(req.getOrderId()) + .setRefundTimes(req.getRefundedTimes() + 1); updatePayOrder(updateOrderDO); } diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelQueryHandler.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelQueryHandler.java index d8e3dcd88..58e840bf7 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelQueryHandler.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelQueryHandler.java @@ -6,7 +6,7 @@ import cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.order.PayOrderCoreMapp import cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.order.PayRefundCoreMapper; import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayRefundStatusEnum; import cn.iocoder.yudao.coreservice.modules.pay.service.order.PayRefundAbstractChannelPostHandler; -import cn.iocoder.yudao.coreservice.modules.pay.service.order.bo.PayRefundPostReqBO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayRefundPostReqDTO; import cn.iocoder.yudao.framework.pay.core.enums.PayChannelRespEnum; import org.springframework.stereotype.Service; @@ -32,23 +32,23 @@ public class PayRefundChannelQueryHandler extends PayRefundAbstractChannelPostHa } @Override - public void handleRefundChannelResp(PayRefundPostReqBO respBO) { - final PayChannelRespEnum respEnum = respBO.getRespEnum(); + public void handleRefundChannelResp(PayRefundPostReqDTO req) { + final PayChannelRespEnum respEnum = req.getRespEnum(); PayRefundStatusEnum refundStatus = Objects.equals(PayChannelRespEnum.PROCESSING_QUERY, respEnum) ? PayRefundStatusEnum.PROCESSING_QUERY : PayRefundStatusEnum.UNKNOWN_QUERY; //更新退款单表 PayRefundDO updateRefundDO = new PayRefundDO(); - updateRefundDO.setId(respBO.getRefundId()) + updateRefundDO.setId(req.getRefundId()) .setStatus(refundStatus.getStatus()) - .setChannelErrorCode(respBO.getChannelErrCode()) - .setChannelErrorMsg(respBO.getChannelErrMsg()); + .setChannelErrorCode(req.getChannelErrCode()) + .setChannelErrorMsg(req.getChannelErrMsg()); updatePayRefund(updateRefundDO); PayOrderDO updateOrderDO = new PayOrderDO(); //更新订单表 - updateOrderDO.setId(respBO.getOrderId()) - .setRefundTimes(respBO.getRefundedTimes() + 1); + updateOrderDO.setId(req.getOrderId()) + .setRefundTimes(req.getRefundedTimes() + 1); updatePayOrder(updateOrderDO); //TODO 发起查询任务 diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelRetryHandler.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelRetryHandler.java index 19f38f2be..2046adfb7 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelRetryHandler.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelRetryHandler.java @@ -6,7 +6,7 @@ import cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.order.PayOrderCoreMapp import cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.order.PayRefundCoreMapper; import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayRefundStatusEnum; import cn.iocoder.yudao.coreservice.modules.pay.service.order.PayRefundAbstractChannelPostHandler; -import cn.iocoder.yudao.coreservice.modules.pay.service.order.bo.PayRefundPostReqBO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayRefundPostReqDTO; import cn.iocoder.yudao.framework.pay.core.enums.PayChannelRespEnum; import org.springframework.stereotype.Service; @@ -29,20 +29,20 @@ public class PayRefundChannelRetryHandler extends PayRefundAbstractChannelPostHa } @Override - public void handleRefundChannelResp(PayRefundPostReqBO respBO) { + public void handleRefundChannelResp(PayRefundPostReqDTO req) { PayRefundDO updateRefundDO = new PayRefundDO(); //更新退款单表 - updateRefundDO.setId(respBO.getRefundId()) + updateRefundDO.setId(req.getRefundId()) .setStatus(PayRefundStatusEnum.UNKNOWN_RETRY.getStatus()) - .setChannelErrorCode(respBO.getChannelErrCode()) - .setChannelErrorMsg(respBO.getChannelErrMsg()); + .setChannelErrorCode(req.getChannelErrCode()) + .setChannelErrorMsg(req.getChannelErrMsg()); updatePayRefund(updateRefundDO); PayOrderDO updateOrderDO = new PayOrderDO(); //更新订单表 - updateOrderDO.setId(respBO.getOrderId()) - .setRefundTimes(respBO.getRefundedTimes() + 1); + updateOrderDO.setId(req.getOrderId()) + .setRefundTimes(req.getRefundedTimes() + 1); updatePayOrder(updateOrderDO); //TODO 发起重试任务 diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelSuccessHandler.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelSuccessHandler.java index 756f0a0c6..444974cc8 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelSuccessHandler.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/handler/PayRefundChannelSuccessHandler.java @@ -9,7 +9,7 @@ import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayRefundStatusEnum; import cn.iocoder.yudao.coreservice.modules.pay.service.notify.PayNotifyCoreService; import cn.iocoder.yudao.coreservice.modules.pay.service.notify.dto.PayNotifyTaskCreateReqDTO; import cn.iocoder.yudao.coreservice.modules.pay.service.order.PayRefundAbstractChannelPostHandler; -import cn.iocoder.yudao.coreservice.modules.pay.service.order.bo.PayRefundPostReqBO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayRefundPostReqDTO; import cn.iocoder.yudao.framework.pay.core.enums.PayChannelRespEnum; import org.springframework.stereotype.Service; @@ -38,27 +38,27 @@ public class PayRefundChannelSuccessHandler extends PayRefundAbstractChannelPost } @Override - public void handleRefundChannelResp(PayRefundPostReqBO respBO) { + public void handleRefundChannelResp(PayRefundPostReqDTO req) { //退款成功 PayRefundDO updateRefundDO = new PayRefundDO(); //更新退款单表 - updateRefundDO.setId(respBO.getRefundId()) + updateRefundDO.setId(req.getRefundId()) .setStatus(PayRefundStatusEnum.SUCCESS.getStatus()) - .setChannelRefundNo(respBO.getChannelRefundNo()) + .setChannelRefundNo(req.getChannelRefundNo()) .setSuccessTime(new Date()); updatePayRefund(updateRefundDO); PayOrderDO updateOrderDO = new PayOrderDO(); //更新订单表 - updateOrderDO.setId(respBO.getOrderId()) - .setRefundTimes(respBO.getRefundedTimes() + 1) - .setRefundStatus(respBO.getRefundTypeEnum().getStatus()) - .setRefundAmount(respBO.getRefundedAmount()+respBO.getRefundAmount()); + updateOrderDO.setId(req.getOrderId()) + .setRefundTimes(req.getRefundedTimes() + 1) + .setRefundStatus(req.getRefundTypeEnum().getStatus()) + .setRefundAmount(req.getRefundedAmount()+ req.getRefundAmount()); updatePayOrder(updateOrderDO); // 立刻插入退款通知记录 // TODO 通知商户成功或者失败. 现在通知似乎没有实现, 只是回调 payNotifyCoreService.createPayNotifyTask(PayNotifyTaskCreateReqDTO.builder() - .type(PayNotifyTypeEnum.REFUND.getType()).dataId(respBO.getRefundId()).build()); + .type(PayNotifyTypeEnum.REFUND.getType()).dataId(req.getRefundId()).build()); } } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/controller/order/PayRefundController.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/controller/order/PayRefundController.java index 0608d53e0..55259945f 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/controller/order/PayRefundController.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/controller/order/PayRefundController.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.userserver.modules.pay.controller.order; import cn.iocoder.yudao.coreservice.modules.pay.service.order.PayRefundCoreService; -import cn.iocoder.yudao.coreservice.modules.pay.service.order.bo.PayRefundReqBO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayRefundReqDTO; import cn.iocoder.yudao.coreservice.modules.pay.util.PaySeqUtils; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.userserver.modules.pay.controller.order.vo.PayRefundReqVO; @@ -32,13 +32,13 @@ public class PayRefundController { @PostMapping("/refund") @ApiOperation("提交退款订单") - public CommonResult refund(@RequestBody PayRefundReqVO reqVO){ - PayRefundReqBO reqBO = PayRefundConvert.INSTANCE.convert(reqVO); - reqBO.setUserIp(getClientIP()); + public CommonResult submitRefundOrder(@RequestBody PayRefundReqVO reqVO){ + PayRefundReqDTO req = PayRefundConvert.INSTANCE.convert(reqVO); + req.setUserIp(getClientIP()); //TODO 测试暂时模拟生成商户退款订单 - reqBO.setMerchantRefundNo(PaySeqUtils.genMerchantRefundNo()); - //reqBO.setMerchantRefundNo("MO202111210814084370000"); - return CommonResult.success( PayRefundConvert.INSTANCE.convert(payRefundCoreService.refund(reqBO))); + req.setMerchantRefundNo(PaySeqUtils.genMerchantRefundNo()); + //req.setMerchantRefundNo("MO202111210814084370000"); + return CommonResult.success( PayRefundConvert.INSTANCE.convert(payRefundCoreService.submitRefundOrder(req))); } } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/convert/order/PayRefundConvert.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/convert/order/PayRefundConvert.java index aeba347f9..6eec4e18a 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/convert/order/PayRefundConvert.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/convert/order/PayRefundConvert.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.userserver.modules.pay.convert.order; -import cn.iocoder.yudao.coreservice.modules.pay.service.order.bo.PayRefundReqBO; -import cn.iocoder.yudao.coreservice.modules.pay.service.order.bo.PayRefundRespBO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayRefundReqDTO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayRefundRespDTO; import cn.iocoder.yudao.userserver.modules.pay.controller.order.vo.PayRefundReqVO; import cn.iocoder.yudao.userserver.modules.pay.controller.order.vo.PayRefundRespVO; import org.mapstruct.Mapper; @@ -17,7 +17,7 @@ public interface PayRefundConvert { PayRefundConvert INSTANCE = Mappers.getMapper(PayRefundConvert.class); - PayRefundReqBO convert(PayRefundReqVO reqVO); + PayRefundReqDTO convert(PayRefundReqVO reqVO); - PayRefundRespVO convert(PayRefundRespBO respBO); + PayRefundRespVO convert(PayRefundRespDTO respBO); }