From 1fea0355931a6149a480a0d1eb8e6f3aed5558ad Mon Sep 17 00:00:00 2001 From: sion <450702724@qq.com> Date: Mon, 23 Mar 2026 23:12:41 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0=E5=85=85=E5=80=BC?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E5=A4=8D=E6=8C=87=E5=8D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DEPOSIT_FIX_GUIDE.md | 227 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 227 insertions(+) create mode 100644 DEPOSIT_FIX_GUIDE.md diff --git a/DEPOSIT_FIX_GUIDE.md b/DEPOSIT_FIX_GUIDE.md new file mode 100644 index 0000000..2f81d82 --- /dev/null +++ b/DEPOSIT_FIX_GUIDE.md @@ -0,0 +1,227 @@ +# 充值功能修复方案 + +## 📋 问题分析 + +**现象**: 充值功能点击"下一步"报错 + +**可能原因**: +1. ✅ StackOverflowError(已修复) +2. ⚠️ 前端解析响应错误 +3. ⚠️ 后端异常处理不当 + +## 🔍 诊断步骤 + +### 1. 检查后端日志 + +```bash +# SSH 登录服务器 +ssh root@8.155.172.147 + +# 查看最新错误日志 +tail -f /var/log/monisuo/app.log | grep -A 50 ERROR + +# 查看最近 100 行日志 +tail -100 /var/log/monisuo/app.log +``` + +### 2. 测试后端接口 + +```bash +# 获取 Token(先登录) +curl -X POST http://localhost:5010/api/user/login \ + -H "Content-Type: application/json" \ + -d '{"username":"testuser","password":"test123456"}' + +# 测试充值接口(替换 YOUR_TOKEN) +curl -X POST http://localhost:5010/api/fund/deposit \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer YOUR_TOKEN" \ + -d '{"amount":"100","remark":"测试充值"}' +``` + +### 3. 检查前端日志 + +在浏览器开发者工具中: +1. 打开 Console 选项卡 +2. 查看 Network 选项卡 +3. 点击"充值"按钮 +4. 查看请求和响应 + +## 🛠️ 修复方案 + +### 方案 1: 重启后端服务(推荐) + +```bash +# SSH 登录服务器 +ssh root@8.155.172.147 + +# 拉取最新代码 +cd /path/to/monisuo +git pull origin main + +# 重启服务 +systemctl restart monisuo + +# 查看日志 +tail -f /var/log/monisuo/app.log +``` + +### 方案 2: 增强错误处理 + +如果重启后问题仍然存在,需要增强错误处理。 + +#### 后端改进 + +在 `FundController.java` 中添加更详细的错误信息: + +```java +@PostMapping("/deposit") +public Result> deposit(@RequestBody Map params) { + try { + Long userId = UserContext.getUserId(); + if (userId == null) { + return Result.unauthorized("请先登录"); + } + + Object amountObj = params.get("amount"); + if (amountObj == null) { + return Result.fail("充值金额不能为空"); + } + + BigDecimal amount; + try { + amount = new BigDecimal(amountObj.toString()); + } catch (NumberFormatException e) { + return Result.fail("充值金额格式错误"); + } + + if (amount.compareTo(BigDecimal.ZERO) <= 0) { + return Result.fail("充值金额必须大于0"); + } + + String remark = (String) params.get("remark"); + + Map result = fundService.deposit(userId, amount, remark); + return Result.success("申请成功,请完成打款", result); + } catch (Exception e) { + e.printStackTrace(); // 打印完整堆栈 + return Result.fail("充值申请失败: " + e.getMessage()); + } +} +``` + +#### 前端改进 + +在 `asset_page.dart` 中改进错误处理: + +```dart +onPressed: () async { + if (formKey.currentState!.saveAndValidate()) { + Navigator.of(ctx).pop(); + try { + final response = await context.read().deposit( + amount: amountController.text, + ); + if (context.mounted) { + if (response.success && response.data != null) { + _showDepositResultDialog(context, response.data!); + } else { + _showResultDialog( + context, + '申请失败', + response.message ?? '未知错误,请稍后重试', + ); + } + } + } catch (e) { + if (context.mounted) { + _showResultDialog( + context, + '申请失败', + '充值申请异常: $e', + ); + } + } + } +}, +``` + +### 方案 3: 数据库检查 + +```bash +# 检查冷钱包数据 +mysql -h 8.155.172.147 -P 3306 -u monisuo -pJPJ8wYicSGC8aRnk monisuo \ + -e "SELECT * FROM cold_wallet WHERE is_default=1 AND status=1;" + +# 检查用户资金账户 +mysql -h 8.155.172.147 -P 3306 -u monisuo -pJPJ8wYicSGC8aRnk monisuo \ + -e "SELECT * FROM account_fund WHERE user_id=YOUR_USER_ID;" +``` + +## 📊 测试验证 + +### 1. 后端测试 + +```bash +# 运行测试脚本 +cd /path/to/monisuo +./test_fund_flow.sh +``` + +### 2. 前端测试 + +1. 打开用户端应用 +2. 登录账户 +3. 进入资产页面 +4. 点击充值按钮 +5. 输入金额(如 100) +6. 点击"下一步" +7. **预期结果**: 显示钱包地址对话框 + +### 3. 验证清单 + +- [ ] 后端服务运行正常 +- [ ] 充值接口返回正确 +- [ ] 前端显示钱包地址 +- [ ] 无错误提示 + +## 🚀 快速修复 + +如果问题紧急,可以直接执行: + +```bash +# 一键修复脚本 +ssh root@8.155.172.147 << 'EOF' +cd /path/to/monisuo +git pull origin main +systemctl restart monisuo +sleep 5 +systemctl status monisuo +tail -50 /var/log/monisuo/app.log +EOF +``` + +## 📞 技术支持 + +如果以上方案都无法解决,请提供: + +1. **后端日志**: + ```bash + tail -100 /var/log/monisuo/app.log + ``` + +2. **浏览器控制台错误**: + - F12 打开开发者工具 + - Console 选项卡的错误信息 + - Network 选项卡的请求/响应 + +3. **复现步骤**: + - 详细描述操作步骤 + - 输入的金额 + - 期望结果 vs 实际结果 + +--- + +**修复优先级**: 🔴 高 +**预计修复时间**: 5-10 分钟 +**状态**: ⏳ 等待服务器重启