From 380c0e958fbc3f2b42a3e38ae5dc9af3254b8f5c Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 25 五月 2023 09:36:16 +0800
Subject: [PATCH] 新增加功能和更换账号

---
 user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/AppUserServiceImpl.java |  117 +++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 74 insertions(+), 43 deletions(-)

diff --git a/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/AppUserServiceImpl.java b/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/AppUserServiceImpl.java
index 7775655..4d98ed3 100644
--- a/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/AppUserServiceImpl.java
+++ b/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/AppUserServiceImpl.java
@@ -13,12 +13,6 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import com.agentdriving.user.modular.system.model.*;
-import com.agentdriving.user.modular.system.service.*;
-import com.agentdriving.user.modular.system.util.MallBook.model.InterfaceResponse;
-import com.agentdriving.user.modular.system.util.MallBook.model.PaymentOrder;
-import com.agentdriving.user.modular.system.util.MallBook.model.PaymentOrderGood;
-import com.agentdriving.user.modular.system.util.MallBook.util.TrhRequest;
 import com.agentdriving.user.modular.system.util.PayMoneyUtil;
 import com.agentdriving.user.modular.system.util.RedisUtil;
 import com.agentdriving.user.modular.system.util.ResultUtil;
@@ -26,7 +20,6 @@
 import com.agentdriving.user.modular.system.util.weChat.WXCore;
 import com.agentdriving.user.modular.system.util.weChat.WeChatUtil;
 import com.agentdriving.user.modular.system.util.weChat.model.Code2Session;
-import com.agentdriving.user.modular.system.warpper.*;
 import org.apache.shiro.authc.SimpleAuthenticationInfo;
 import org.apache.shiro.authc.UsernamePasswordToken;
 import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
@@ -39,11 +32,11 @@
 import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.servlet.http.HttpServletRequest;
-import java.net.InetAddress;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -318,43 +311,81 @@
         rechargeRecord.setPayStatus(1);
         rechargeRecord.setPayType(1);
         rechargeRecordService.insert(rechargeRecord);
-//        ResultUtil weixinpay = payMoneyUtil.weixinpay("余额充值", "", out_trade_no, amount.toString(), "/base/appUser/rechargeBalanceCallback", "JSAPI", appUser.getOpenid());
-//        return weixinpay;
+        ResultUtil weixinpay = payMoneyUtil.weixinpay("余额充值", "", out_trade_no, amount.toString(), "/base/appUser/rechargeBalanceCallback", "JSAPI", appUser.getOpenid());
+        if(weixinpay.getCode() == 200){
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        int num = 1;
+                        int wait = 0;
+                        while (num <= 10) {
+                            int min = 5000;
+                            wait += (min * num);
+                            RechargeRecord rechargeRecord1 = rechargeRecordService.selectById(rechargeRecord.getId());
+                            if (rechargeRecord1.getPayStatus() == 2) {
+                                return;
+                            }
+                            ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(out_trade_no, "");
+                            if (resultUtil.getCode() == 200) {
+                                /**
+                                 * 订单状态
+                                 * SUCCESS—支付成功,
+                                 * REFUND—转入退款,
+                                 * NOTPAY—未支付,
+                                 * CLOSED—已关闭,
+                                 * REVOKED—已撤销(刷卡支付),
+                                 * USERPAYING--用户支付中,
+                                 * PAYERROR--支付失败(其他原因,如银行返回失败)
+                                 */
+                                Map<String, String> data2 = resultUtil.getData();
+                                String s = data2.get("state");
+                                String transaction_id = data2.get("transaction_id");
+                                if ("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s)) {
+                                    //回退
+                                    return;
+                                }
+                                if ("SUCCESS".equals(s)) {
+                                    rechargeRecord1.setPayStatus(2);
+                                    rechargeRecord1.setPayTime(new Date());
+                                    rechargeRecord1.setOrderNumber(transaction_id);
+                                    rechargeRecordService.updateById(rechargeRecord1);
 
-        PaymentOrder paymentOrder = new PaymentOrder();
-        paymentOrder.setBizOrderId(out_trade_no);
-        paymentOrder.setAmount(String.valueOf(amount * 100));
-        paymentOrder.setOrderName("余额充值");
-        paymentOrder.setPayType("WX_MINI");
-        paymentOrder.setTransferType("0");
-        paymentOrder.setAsynSplitFlag("1");
-        paymentOrder.setAppid(appletsAppid);
-        paymentOrder.setOpenid(appUser.getOpenid());
-        paymentOrder.setTerminalIp(InetAddress.getLocalHost().getHostAddress());
-        List<PaymentOrderGood> goodsDetail = new ArrayList<>();
-        PaymentOrderGood paymentOrderGood = new PaymentOrderGood();
-        paymentOrderGood.setGoodsName("余额充值");
-        goodsDetail.add(paymentOrderGood);
-        paymentOrder.setGoodsDetail(goodsDetail);
-        paymentOrder.setFrontUrl("");
-        paymentOrder.setNotifyUrl(callbackPath + "/base/appUser/rechargeBalanceCallback");
-        paymentOrder.setParameter1(out_trade_no);
-
-        TrhRequest<PaymentOrder> request = new TrhRequest();
-        InterfaceResponse execute = request.execute(paymentOrder, PaymentOrder.SERVICE_CODE);
-        if(!"0000".equals(execute.getResult())){
-            return ResultUtil.error(execute.getMsg());
+                                    AppUser appUser1 = AppUserServiceImpl.this.selectById(rechargeRecord1.getUserId());
+                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
+                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                                    accountChangeDetail.setUserType(1);
+                                    accountChangeDetail.setUserId(appUser1.getId());
+                                    accountChangeDetail.setCreateTime(new Date());
+                                    accountChangeDetail.setOldData(appUser1.getAccountBalance());
+                                    accountChangeDetail.setType(1);
+                                    accountChangeDetail.setChangeType(3);
+                                    accountChangeDetail.setExplain("余额充值");
+                                    appUser1.setAccountBalance(appUser1.getAccountBalance() + rechargeRecord1.getAmount());
+                                    accountChangeDetail.setNewData(appUser1.getAccountBalance());
+                                    AppUserServiceImpl.this.updateById(appUser1);
+                                    accountChangeDetailService.insert(accountChangeDetail);
+                                    return;
+                                }
+                                if ("USERPAYING".equals(s)) {
+                                    Thread.sleep(wait);
+                                    num++;
+                                }
+                            }else{
+                                Thread.sleep(wait);
+                                num++;
+                            }
+                            if(10 == num){
+                                rechargeRecordService.deleteById(rechargeRecord1.getId());
+                            }
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            }).start();
         }
-        JSONObject jsonObject = JSON.parseObject(execute.getResult());
-        String status = jsonObject.getString("status");
-        if("2".equals(status)){
-            return ResultUtil.error("失败");
-        }
-        if("0".equals(status)){
-            return ResultUtil.error("处理中");
-        }
-        String payCode = jsonObject.getString("payCode");
-        return ResultUtil.success(payCode);
+        return weixinpay;
     }
 
 

--
Gitblit v1.7.1