From 24fb5b33db2c7c823f9dbefe459384148f2ee00e Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Tue, 4 Jun 2024 15:26:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=AE=A2=E5=8D=95=E9=80=80?= =?UTF-8?q?=E6=AC=BE=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/java/SpringBootTestController.java | 12 ++++++ .../pile/service/OrderPayRecordService.java | 2 + .../impl/OrderPayRecordServiceImpl.java | 10 +++++ .../DelayMerchantProgramLogic.java | 41 ++++++++++++++----- 4 files changed, 55 insertions(+), 10 deletions(-) diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index bd4d46a97..121ff7660 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -252,6 +252,18 @@ public class SpringBootTestController { @Autowired private NotificationService notificationService; + @Test + public void getOrderRefundInfoListTest() { + String orderCode = "C44565166677"; + OrderBasicInfo orderBasicInfo = new OrderBasicInfo(); + orderBasicInfo.setOrderCode(orderCode); + orderBasicInfo.setMerchantId("33"); + orderBasicInfo.setPayMode("4"); + // 查询退款明细 + List orderRefundInfoList = orderBasicInfoService.getOrderRefundInfoList(orderBasicInfo); + System.out.println(JSON.toJSONString(orderRefundInfoList)); + } + @Test public void getSnowflakeIdTest() { for (int i = 0; i < 100; i++) { diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java index ffdf0389f..6d83a06f3 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java @@ -37,6 +37,8 @@ public interface OrderPayRecordService{ List parseDeductionRecord(String deductionRecord); + List parsePaymentIdByDeductionRecord(String deductionRecord); + // 更新订单退款金额 void updateRefundAmount(String orderCode, String paymentId, BigDecimal refundAmt); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java index c41dabd43..63e3be088 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java @@ -204,6 +204,16 @@ public class OrderPayRecordServiceImpl implements OrderPayRecordService { return resultList; } + @Override + public List parsePaymentIdByDeductionRecord(String deductionRecord) { + List resultList = Lists.newArrayList(); + List paymentInfos = parseDeductionRecord(deductionRecord); + if (CollectionUtils.isNotEmpty(paymentInfos)) { + resultList = paymentInfos.stream().map(PaymentInfo::getPaymentId).collect(Collectors.toList()); + } + return resultList; + } + @Override public void updateRefundAmount(String orderCode, String paymentId, BigDecimal refundAmt) { List orderPayRecordList = getOrderPayRecordList(orderCode); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java index 4074766dc..7323e10cb 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java @@ -609,31 +609,52 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { } } + /** + * 查询订单在线支付的退款信息 + */ @Override public List getOrderRefundInfoList(OrderBasicInfo orderBasicInfo) { List resultList = Lists.newArrayList(); // 查到原汇付支付id - AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderBasicInfo.getOrderCode()); - if (adapayCallbackRecord == null) { + // AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderBasicInfo.getOrderCode()); + // if (adapayCallbackRecord == null) { + // return resultList; + // } + + List orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderBasicInfo.getOrderCode()); + if (CollectionUtils.isEmpty(orderPayRecordList)) { return resultList; } + List paymentIdList = Lists.newArrayList(); + for (OrderPayRecord orderPayRecord : orderPayRecordList) { + String payMode = orderPayRecord.getPayMode(); + if (StringUtils.equals(payMode, OrderPayRecordEnum.WECHATPAY_PAYMENT.getValue()) + || StringUtils.equals(payMode, OrderPayRecordEnum.ALIPAY_PAYMENT.getValue())) { + List idList = orderPayRecordService.parsePaymentIdByDeductionRecord(orderPayRecord.getDeductionRecord()); + paymentIdList.addAll(idList); + } + } // 获取appId String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(orderBasicInfo.getMerchantId()); // 通过支付id查询退款记录 - String paymentId = adapayCallbackRecord.getPaymentId(); - List paymentReverseResponses = null; - try { - paymentReverseResponses = adapayService.queryPaymentReverse(paymentId, wechatAppId); - } catch (BaseAdaPayException e) { - logger.error("查询支付撤销对象发生异常", e); + List paymentReverseResponseList = Lists.newArrayList(); + for (String paymentId : paymentIdList) { + try { + List paymentReverseResponses = adapayService.queryPaymentReverse(paymentId, wechatAppId); + if (CollectionUtils.isNotEmpty(paymentReverseResponses)) { + paymentReverseResponseList.addAll(paymentReverseResponses); + } + } catch (BaseAdaPayException e) { + logger.error("查询支付撤销对象发生异常", e); + } } OrderDetailInfoVO.OrderRefundInfo refundInfo; - if (CollectionUtils.isNotEmpty(paymentReverseResponses)) { - for (PaymentReverseResponse reverseResponse : paymentReverseResponses) { + if (CollectionUtils.isNotEmpty(paymentReverseResponseList)) { + for (PaymentReverseResponse reverseResponse : paymentReverseResponseList) { refundInfo = new OrderDetailInfoVO.OrderRefundInfo(); refundInfo.setReverseId(reverseResponse.getId()); refundInfo.setPaymentId(reverseResponse.getPayment_id());