# 充值审批余额不更新 - 磰急修复方案

## ⚠️ 问题紧急程度： 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分钟
