5.1 KiB
5.1 KiB
推广设置页面 - 完整性测试清单
前置条件
- ✅ 已创建
app/admin/referral-settings/page.tsx - ✅ 已修改
app/admin/layout.tsx添加菜单入口 - ✅ 已修复
app/api/referral/bind/route.ts读取bindingDays
功能验证(按顺序测试)
1. 页面访问测试
- 访问
https://soul.quwanzhi.com/admin/referral-settings页面正常加载 - 左侧菜单显示「推广设置」入口
- 点击菜单可正常跳转,高亮状态正确
2. 配置加载测试
- 页面打开时自动从
system_config表加载现有配置 - 若无配置,显示默认值:
- 好友优惠:5%
- 推广者分成:90%
- 绑定有效期:30天
- 最低提现金额:10元
- 自动提现:关闭
3. 表单输入验证
- 修改「好友优惠」为 10,输入框显示正确
- 拖动「推广者分成」滑块,数值同步更新
- 输入「绑定有效期」为 60,输入框显示正确
- 修改「最低提现金额」为 50,输入框显示正确
- 切换「自动提现」开关,状态正确
4. 配置保存测试
- 点击「保存配置」按钮
- 弹出成功提示:「✅ 分销配置已保存成功!」
- 刷新页面后,配置仍然是刚才保存的值
5. 数据库验证
在数据库执行以下查询:
SELECT config_key, config_value, description
FROM system_config
WHERE config_key = 'referral_config';
预期结果:
{
"distributorShare": 90,
"minWithdrawAmount": 10,
"bindingDays": 30,
"userDiscount": 5,
"enableAutoWithdraw": false
}
所有字段都应该是 数字类型(不是字符串 "90")
6. 业务流程验证
6.1 绑定关系测试
- 修改「绑定有效期」为 60 天,保存
- 在小程序中让一个新用户通过推广链接进入并登录
- 查询数据库:
SELECT referee_id, referrer_id, expiry_date, status
FROM referral_bindings
WHERE referee_id = '新用户ID'
ORDER BY created_at DESC LIMIT 1;
- 验证:
expiry_date应该是当前时间 + 60 天(不是硬编码的 30 天)
6.2 佣金计算测试
- 修改「推广者分成」为 85%,保存
- 让已绑定的用户在小程序购买 100 元的订单
- 等待支付成功回调
- 查询数据库:
SELECT user_id, earnings, pending_earnings
FROM users
WHERE user_id = '推广者ID';
- 验证:
pending_earnings应该增加 85 元(不是 90 元)
6.3 提现门槛测试
- 修改「最低提现金额」为 50 元,保存
- 刷新小程序「推广中心」页面
- 验证:推广规则卡片显示「满 50 元 可提现」
- 用 pending_earnings < 50 的账号点击提现,应提示「可提现金额不足」
6.4 小程序展示验证
刷新小程序「推广中心」页面,检查「推广规则」卡片:
- 「好友优惠」显示与后台设置一致(如 5%)
- 「你得收益」显示与后台设置一致(如 90%)
- 「绑定期」显示与后台设置一致(如 30 天)
关键代码验证点
读取 referral_config 的 API:
- ✅
app/api/referral/bind/route.ts- 读取bindingDays - ✅
app/api/miniprogram/pay/notify/route.ts- 读取distributorShare并除以 100 - ✅
app/api/referral/data/route.ts- 读取distributorShare并除以 100
数据类型保护:
- ✅ 前端保存时强制转换为
Number类型 - ✅ 后端
setConfig使用JSON.stringify正确序列化 - ✅ 后端
getConfig使用JSON.parse正确反序列化
回滚方案
如果测试发现问题,可以执行以下 SQL 恢复默认配置:
UPDATE system_config
SET config_value = '{"distributorShare":90,"minWithdrawAmount":10,"bindingDays":30,"userDiscount":5,"enableAutoWithdraw":false}'
WHERE config_key = 'referral_config';
常见问题排查
Q1: 保存后刷新,配置变成了默认值?
排查:检查数据库 system_config 表是否正确写入
Q2: 小程序显示的比例与后台不一致?
排查:
- 小程序端是否有缓存,清除缓存重试
- 检查 API
/api/referral/data是否正确读取配置 - 检查小程序代码是否硬编码了规则文案
Q3: 新绑定关系的过期时间还是 30 天?
排查:
- 确认
app/api/referral/bind/route.ts已正确修改 - 重启 Node.js 服务(
pm2 restart soul) - 检查服务器日志是否有 "读取配置失败" 的警告
Q4: 佣金计算还是用的旧比例?
排查:
- 确认订单是在 修改配置之后 创建的
- 历史订单不会重算,只影响新订单
- 检查
app/api/miniprogram/pay/notify/route.ts的日志
上线建议
- 先在测试环境验证:完成上述所有测试用例
- 备份数据库:上线前导出
system_config表 - 灰度发布:先让内部测试账号测试,确认无误后全量放开
- 监控日志:上线后密切关注 PM2 日志,搜索 "referral_config" 关键词
性能影响
- 每次绑定/支付回调会额外查询 1 次
system_config表 - 由于
config_key有索引,性能影响可忽略 - 建议后续可增加 Redis 缓存(TTL 60秒)优化性能