zhibo/diagnose_balance_issue.md

168 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 余额显示为0问题诊断
## 问题现象
APP中钱包页面显示余额为0但后台管理系统中用户有余额。
## 可能原因
### 1. 后端未部署最新代码
**检查方法**
```bash
# 查看后端日志
ssh root@1.15.149.240 "tail -f /www/server/project/zhibo-h/logs/crmeb-front.log"
```
**解决方法**
```bash
# 重新部署后端
deploy-balance-system.bat
```
### 2. 数据库字段问题
**检查方法**
```sql
-- 检查now_money字段是否存在
SHOW COLUMNS FROM eb_user LIKE 'now_money';
-- 查看测试用户的余额
SELECT uid, account, nickname, now_money
FROM eb_user
WHERE uid = 43;
```
**解决方法**
```sql
-- 如果字段不存在,添加字段
ALTER TABLE eb_user ADD COLUMN now_money DECIMAL(10,2) DEFAULT 0.00 COMMENT '用户余额';
-- 如果余额为0给测试用户添加余额
UPDATE eb_user SET now_money = 1000.00 WHERE uid = 43;
```
### 3. API调用失败
**检查方法**
在Android Studio中查看logcat日志
```bash
adb logcat -s WalletActivity:D
```
查看日志输出:
- Response code: 应该是200
- Is OK: 应该是true
- Balance: 应该显示实际余额
**可能的错误**
- 401: 未登录或token过期
- 404: API路径错误
- 500: 服务器错误
### 4. APP未重新编译
**解决方法**
在Android Studio中
1. Build -> Clean Project
2. Build -> Rebuild Project
3. 重新运行APP
## 完整诊断步骤
### 步骤1: 检查数据库
```sql
-- 执行 test_balance_api.sql
SELECT uid, account, nickname, now_money
FROM eb_user
WHERE uid = 43;
```
如果余额为0执行
```sql
UPDATE eb_user SET now_money = 1000.00 WHERE uid = 43;
```
### 步骤2: 检查后端API
使用curl测试需要先获取token
```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"}'
# 2. 使用token测试余额API
curl -H "Authorization: Bearer YOUR_TOKEN" \
http://1.15.149.240:8080/api/front/virtual-currency/balance
```
预期返回:
```json
{
"success": true,
"code": 200,
"message": "操作成功",
"data": {
"balance": 1000.00,
"userId": 43
}
}
```
### 步骤3: 检查APP日志
```bash
# 清除旧日志
adb logcat -c
# 查看实时日志
adb logcat -s WalletActivity:D
# 然后在APP中打开钱包页面
```
查看日志输出,确认:
1. API是否调用成功
2. 返回的数据是否正确
3. 是否有异常错误
### 步骤4: 重新部署
如果以上都正常但还是显示0重新部署
```bash
# 1. 部署后端
deploy-balance-system.bat
# 2. 重新编译APP
# 在Android Studio中 Build -> Rebuild Project
# 3. 重新安装APP到设备
```
## 快速修复
如果确认是数据库余额为0的问题
```sql
-- 给所有测试用户添加余额
UPDATE eb_user
SET now_money = 1000.00
WHERE uid IN (43, 44, 45, 46) AND now_money = 0;
-- 验证
SELECT uid, account, nickname, now_money
FROM eb_user
WHERE uid IN (43, 44, 45, 46);
```
然后重启APP刷新钱包页面。
## 验证修复
1. 打开APP
2. 登录账号13800000043 / 123456
3. 进入"我的"页面
4. 点击"钱包"
5. 查看余额是否正确显示
如果显示正确,测试充值功能:
1. 点击"充值"
2. 选择充值套餐
3. 选择支付方式
4. 点击"确认充值"
5. 返回钱包页面,查看余额是否增加