From 75e9aad73f07263789335a803e067b33c743f80d Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Thu, 21 Aug 2025 20:16:08 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/service/impl/PayServiceImpl.java |   82 +++++++++++++++++++++++++++++------------
 1 files changed, 58 insertions(+), 24 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/PayServiceImpl.java b/src/main/java/com/nq/service/impl/PayServiceImpl.java
index 7b1c67a..d8c71cc 100644
--- a/src/main/java/com/nq/service/impl/PayServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/PayServiceImpl.java
@@ -8,6 +8,8 @@
 import com.nq.common.CmcPayConfig;
 import com.nq.common.ServerResponse;
 import com.nq.dao.*;
+import com.nq.enums.EStockType;
+import com.nq.enums.EUserAssets;
 import com.nq.pay.PayUtil;
 import com.nq.pojo.*;
 import com.nq.service.*;
@@ -83,6 +85,9 @@
     @Autowired
     PaymentRechargeService paymentRechargeService;
 
+    @Autowired
+    UserAssetsServices userAssetsServices;
+
     public ServerResponse thirdPartyRecharge(HttpServletRequest request, String tradeAmount, Integer type) throws UnsupportedEncodingException, JsonProcessingException, NoSuchAlgorithmException {
         // 支付1
         String reqUrl = "https://api.watchglb.com/pay/web";
@@ -150,6 +155,19 @@
         paymentRecharge.setNotifyUrl(getOrderTime());
         paymentRecharge.setPayInfo(payResponse.toString());
         paymentRechargeService.save(paymentRecharge);
+
+        UserRecharge userRecharge = new UserRecharge();
+        userRecharge.setUserId(user.getId());
+        userRecharge.setNickName(user.getRealName());
+        userRecharge.setAgentId(user.getAgentId());
+        userRecharge.setOrderSn(params.get("out_trade_no"));
+        userRecharge.setPayChannel("Payment 1");
+        userRecharge.setPayAmt(amount);
+        userRecharge.setAddTime(new Date());
+        userRecharge.setPayTime(new Date());
+        userRecharge.setOrderStatus(Integer.valueOf(0));
+        userRecharge.setPayId(1);
+        userRechargeMapper.insert(userRecharge);
         return ServerResponse.createBySuccess(payResponse.getData().getUrl());
     }
 
@@ -724,7 +742,7 @@
             }
             UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<>(UserAssets.class)
                     .eq(UserAssets::getUserId, paymentRecharge.getUserId())
-                    .eq(UserAssets::getAccectType, "IN")
+                    .eq(UserAssets::getAccectType, "US")
             );
             ServerResponse serverResponse = iUserAssetsServices.updateUserAssets(userAssets.getId(), vo.getOriAmount().toString(), "2");
             if(serverResponse.getStatus() == 0){
@@ -910,41 +928,57 @@
             PrintWriter pw = response.getWriter();
 
             PaymentRecharge paymentRecharge = paymentRechargeService.getOne(new LambdaQueryWrapper<>(PaymentRecharge.class)
-                    .eq(PaymentRecharge::getMchOrderNo, vo.getOut_trade_no())
+                    .eq(PaymentRecharge::getOrderNo,vo.getOut_trade_no())
                     .eq(PaymentRecharge::getStatus,1)
                     .last("limit 1")
             );
-
-            if(!vo.getStatus().equals("payin_ing")){
-                log.error("充值2回调交易中:"+vo.toString());
-                return;
-            }
-
-            if(!vo.getStatus().equals("payin_fail")){
-                paymentRecharge.setStatus(2);
-                paymentRecharge.setAmount(new BigDecimal(vo.getAccount_fee()));
-                paymentRecharge.setPayInfo(vo.toString());
-                paymentRechargeService.updateById(paymentRecharge);
-                log.error("充值回调失败:"+vo.toString());
-                return;
-            }
-
             if(ObjectUtils.isEmpty(paymentRecharge)){
                 log.info("未找到充值订单");
                 pw.print("error 未找到充值订单");
                 return;
             }
-            UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<>(UserAssets.class)
-                    .eq(UserAssets::getUserId, paymentRecharge.getUserId())
-                    .eq(UserAssets::getAccectType, "IN")
-            );
-            ServerResponse serverResponse = iUserAssetsServices.updateUserAssets(userAssets.getId(), vo.getAccount_fee().toString(), "2");
-            if(serverResponse.getStatus() == 0){
+            UserRecharge userRecharge = userRechargeMapper.selectOne(new LambdaQueryWrapper<>(UserRecharge.class)
+                    .eq(UserRecharge::getOrderSn, paymentRecharge.getOrderNo())
+                    .eq(UserRecharge::getOrderStatus, 0).last(" limit 1"));
+            if(ObjectUtils.isEmpty(userRecharge)){
+                log.info("未找到充值记录订单");
+                pw.print("error 未找到充值订单");
+                return;
+            }
+
+            if(vo.getStatus().equals("payin_ing")){
+                log.error("充值2回调交易中:"+vo.toString());
+                return;
+            }else if(vo.getStatus().equals("payin_fail")){
                 paymentRecharge.setStatus(2);
-                paymentRecharge.setAmount(new BigDecimal(vo.getAccount_fee()));
+                paymentRecharge.setAmount(new BigDecimal(vo.getTotal_fee()));
                 paymentRecharge.setPayInfo(vo.toString());
                 paymentRechargeService.updateById(paymentRecharge);
+                userRecharge.setOrderStatus(2);
+                userRechargeMapper.updateById(userRecharge);
+                log.error("充值回调失败:"+vo.toString());
+                return;
+            }else if(!vo.getStatus().equals("payin_fail") && !vo.getStatus().equals("payin_ing") && !vo.getStatus().equals("payin_success")){
+                log.error("充值回调失败----未知状态:"+vo.toString());
+                return;
             }
+
+            UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<>(UserAssets.class)
+                    .eq(UserAssets::getUserId, paymentRecharge.getUserId())
+                    .eq(UserAssets::getAccectType, "US")
+            );
+//            ServerResponse serverResponse = iUserAssetsServices.updateUserAssets(userAssets.getId(), vo.getTotal_fee().toString(), "2");
+            userAssetsServices.availablebalanceChange(EStockType.US.getCode(),
+                    paymentRecharge.getUserId(), EUserAssets.TOP_UP,new BigDecimal(vo.getTotal_fee().toString()),"","");
+
+            paymentRecharge.setStatus(2);
+            paymentRecharge.setAmount(new BigDecimal(vo.getTotal_fee()));
+            paymentRecharge.setPayInfo(vo.toString());
+            paymentRechargeService.updateById(paymentRecharge);
+
+            userRecharge.setOrderStatus(1);
+            userRechargeMapper.updateById(userRecharge);
+
             log.info("充值回调----完成");
             pw.print("success");
             pw.flush();

--
Gitblit v1.9.3