From 9486766c806fe1d9e082b2fd02ea1cc558f1b443 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 08 五月 2025 09:21:57 +0800
Subject: [PATCH] bug修改

---
 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java |   29 +++++++++++++++++++++++++----
 1 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java
index 45d3a29..81b6967 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java
@@ -48,6 +48,7 @@
     @Resource
     private StoreClient storeClient;
 
+
     @Autowired
     private UserCompetitionService userCompetitionService;
 
@@ -65,7 +66,8 @@
 
     @Resource
     private StudentClient studentClient;
-    @Autowired
+
+    @Resource
     private PaymentCompetitionMapper paymentCompetitionMapper;
 
 
@@ -247,18 +249,37 @@
 
         String payOrderNo = paymentCompetition.getPayOrderNo();
         if (paymentCompetition.getPayType() == 1) {//微信支付
-            Map<String, String> map = payMoneyUtil.wxRefund(payOrderNo, code, amount.toString(), amount.toString(), "/base/competition/weChatCancelPaymentCompetitionCallback");
+            if (StringUtils.hasLength(paymentCompetition.getFenzhangNo())){
+                // 是分账订单 如果分账金额不为0 那么回退分账金额
+                if (paymentCompetition.getFenzhangAmount()!=null && paymentCompetition.getFenzhangAmount().compareTo(BigDecimal.ZERO)>0){
+                    String randomCode = UUIDUtil.getRandomCode(16);
+                    String randomCode1 = UUIDUtil.getRandomCode(16);
+                    if (competition.getOperatorId()!=null && competition.getOperatorId()!=0){
+                        // 微信商户号
+                        String s2 =storeClient.getmerchantNumberByOperatorId(competition.getOperatorId());
+                        ResultUtil resultUtil = payMoneyUtil.fenzhangRefund(paymentCompetition.getFenzhangNo(), paymentCompetition.getFenzhangAmount(), s2, randomCode, randomCode1);
+                        if (!resultUtil.getCode().equals(200)){
+                            System.err.println("分账回退失败 原因是:"+resultUtil.getData().toString());
+                        }else{
+                            paymentCompetition.setFenzhangRefundNo(resultUtil.getData().toString());
+                            paymentCompetitionMapper.updateById(paymentCompetition);
+                        }
+
+                    }
+                }
+            }
+            Map<String, String> map = payMoneyUtil.wxRefund(payOrderNo, code, amount.toString(), amount.toString(),
+                    "/base/competition/weChatCancelPaymentCompetitionCallback");
             String return_code = map.get("return_code");
             if (!"SUCCESS".equals(return_code)) {
                 return ResultUtil.error(map.get("return_msg"));
             }
             String refund_id = map.get("refund_id");
             paymentCompetition.setRefundOrderNo(refund_id);
+            paymentCompetition.setAppUserId(null);
             this.updateById(paymentCompetition);
 
             storeClient.addBackRecord(paymentCompetition.getAmount() + "_" + paymentCompetition.getAppUserId());
-
-
         }
         if (paymentCompetition.getPayType() == 2) {//支付宝支付
             Map<String, String> map = payMoneyUtil.aliRefund(payOrderNo, amount.toString());

--
Gitblit v1.7.1