# 立即修复余额显示为0的问题 ## 问题 APP钱包页面显示余额为0,但后台管理系统中用户有余额。 ## 最可能的原因 数据库中用户的 `now_money` 字段值为0。 ## 立即执行的修复步骤 ### 1. 连接数据库并执行SQL ```bash # 连接到数据库 mysql -h 1.15.149.240 -u root -p zhibo ``` 执行以下SQL: ```sql -- 查看用户43的余额 SELECT uid, account, nickname, now_money FROM eb_user WHERE uid = 43; -- 如果余额为0,给用户添加测试余额 UPDATE eb_user SET now_money = 1000.00 WHERE uid = 43; -- 验证 SELECT uid, account, nickname, now_money FROM eb_user WHERE uid = 43; ``` ### 2. 重新部署后端(确保使用最新代码) ```bash # 运行部署脚本 deploy-balance-system.bat ``` ### 3. 重新编译APP 在Android Studio中: 1. Build -> Clean Project 2. Build -> Rebuild Project 3. Run 'app' ### 4. 测试验证 1. 打开APP 2. 登录账号 13800000043 / 123456 3. 进入"我的"页面 4. 点击"钱包" 5. 应该看到余额显示为 1000.00 ## 如果还是显示0 ### 检查APP日志 ```bash adb logcat -c adb logcat -s WalletActivity:D ``` 然后在APP中打开钱包页面,查看日志输出。 ### 可能的日志输出和对应问题 **情况1: 看到 "Response code: 401"** - 问题:用户未登录或token过期 - 解决:重新登录APP **情况2: 看到 "Response code: 404"** - 问题:API路径错误 - 解决:检查后端是否部署成功 **情况3: 看到 "Response code: 500"** - 问题:服务器错误 - 解决:查看后端日志 ```bash ssh root@1.15.149.240 "tail -100 /www/server/project/zhibo-h/logs/crmeb-front.log" ``` **情况4: 看到 "Balance: 0.0"** - 问题:数据库中余额确实为0 - 解决:执行上面的SQL更新余额 **情况5: 看到 "Data is null or no balance key"** - 问题:API返回的数据格式不对 - 解决:检查后端代码是否正确部署 ## 使用curl直接测试API ```bash # 1. 先登录获取token curl -X POST http://1.15.149.240:8080/api/front/login \ -H "Content-Type: application/json" \ -d '{"account":"13800000043","password":"123456"}' \ | jq . # 复制返回的token # 2. 测试余额API curl -H "Authorization: Bearer YOUR_TOKEN_HERE" \ http://1.15.149.240:8080/api/front/virtual-currency/balance \ | jq . ``` 预期返回: ```json { "success": true, "code": 200, "message": "操作成功", "data": { "balance": 1000.00, "userId": 43 } } ``` ## 完整的测试流程 ### 1. 数据库测试 ```sql -- 执行 fix_balance_display.sql 中的所有SQL ``` ### 2. 后端测试 ```bash # 查看后端日志,确认API被调用 ssh root@1.15.149.240 "tail -f /www/server/project/zhibo-h/logs/crmeb-front.log | grep balance" ``` ### 3. APP测试 - 打开钱包页面 - 查看logcat日志 - 确认余额显示 ### 4. 充值测试 - 点击充值按钮 - 选择充值套餐 - 模拟支付 - 返回查看余额是否增加 ## 注意事项 1. **确保后端已部署最新代码**:修改了 `VirtualCurrencyController.java`,必须重新编译部署 2. **确保APP已重新编译**:修改了 `WalletActivity.java`,必须重新编译安装 3. **确保数据库有余额**:`eb_user.now_money` 字段不能为0 4. **确保用户已登录**:token必须有效 ## 快速验证命令 ```bash # 一键检查所有测试用户的余额 mysql -h 1.15.149.240 -u root -p -e "USE zhibo; SELECT uid, account, nickname, now_money FROM eb_user WHERE uid IN (43,44,45,46);" ```