# 充值审批余额不更新 - 磰急修复方案 ## ⚠️ 问题紧急程度: HIGH 用户反馈订单状态已更新,但余额未增加! ## 🎯 磁急修复步骤 ### 步骤 1: 重启后端服务(最关键!) ```bash # 埥找并停止旧进程 ps aux | grep monisuo pkill -f monisuo-1.0.jar # 重新启动 cd ~/Desktop/projects/monisuo java -jar target/monisuo-1.0.jar --server.port=5010 # 实时查看日志 tail -f logs/spring.log | grep -A20 "FundService.approve" ``` ### 步骤 2: 查看关键日志 审批时应该看到: ``` [FundService.approve] 步骤1: 查询订单... - 订单ID: 123 - 订单类型: 充值 - 当前状态: 2 [FundService.approve] 步骤2: 查询资金账户... - 账户ID: 456 - 余额: 100.00000000 <-- 这是旧余额 [FundService.approve] 步骤4: 处理充值通过... - 审批前余额: 100.00000000 - 准备更新账户余额: 200.00000000 - 执行 SQL UPDATE (使用 LambdaUpdateWrapper)... - 账户更新结果: 1 (1=成功, 0=失败) - 验证更新后余额: 200.00000000 <-- 确认更新成功! [FundService.approve] 创建资金流水记录... - 流水记录创建成功 [充值审批成功] 订单号: xxx, 用户ID: yyy, 充值金额: 100 USDT ``` ### 步骤 3: 数据库验证 ```sql -- 1. 查询订单状态 SELECT order_no, status, approve_time FROM order_fund WHERE order_no = '订单号'; -- 2. 查询账户余额(关键!) SELECT user_id, balance, total_deposit, update_time FROM account_fund WHERE user_id = 用户ID; -- 3. 查询流水记录 SELECT * FROM account_flow WHERE related_order_no = '订单号' ORDER BY create_time DESC; ``` ## 🔧 如果重启后问题依然存在 ### 修复方案 A: 强制刷新 MyBatis 缓存 在 approve 方法开始添加: ```java // 清除可能的缓存 sqlSession.clearCache(); ``` ### 修复方案 B: 添加最终验证 在 approve 方法最后添加 ```java // 最终验证 AccountFund finalCheck = accountFundMapper.selectById(fund.getId()); System.out.println("[最终检查] 数据库中的实际余额: " + finalCheck.getBalance()); if (!finalCheck.getBalance().equals(newBalance)) { System.err.println("[严重错误] 余额更新失败! 期望: " + newBalance + ", 实际: " + finalCheck.getBalance()); throw new RuntimeException("余额更新失败,请联系管理员"); } ``` ### 修复方案 C: 检查是否有异常被吞掉 检查 GlobalExceptionHandler 是否捕获了异常 ## 📊 风险评估 - **风险等级**: 中等 - **影响范围**: 充值功能不可用 - **修复时间**: 5-10分钟(重启服务) - **回滚风险**: 低(只是重启服务) ## 🚀 执行命令 ```bash # 1. 重启服务 cd ~/Desktop/projects/monisuo pkill -f monisuo-1.0.jar nohup java -jar target/monisuo-1.0.jar > logs/spring.log 2>&1 & # 2. 查看日志 tail -f logs/spring.log | grep --line-buffer -A30 "FundService.approve" # 3. 测试审批 # 使用前端或 curl 测试 # 4. 查看日志输出 grep -A50 "充值审批成功" logs/spring.log ``` ## ✅ 成功标志 看到以下日志说明修复成功: ``` ✅ 账户更新结果: 1 ✅ 验证更新后余额: xxx (新余额) ✅ 最终检查] 数据库中的实际余额: xxx (新余额) ✅ 充值审批成功 ``` ## ❌ 失败标志 ``` ❌ 账户更新结果: 0 ❌ 余额更新失败 ❌ Transaction rolled back ``` --- **最后更新**: 2026-03-24 09:55 **状态**: 等待重启服务并测试 **预期修复时间**: 5-10分钟