URS达人等级逻辑修改 - 扩展团队统计到20代
任务概述
修改URS推广模块的达人等级逻辑,将团队总人数和活跃团队总人数的统计范围从3代扩展到20代。
当前时间
2025年07月03日 14:37:38 CST
工作列表(标记状态,一句话描述工作)
工作详情(列表工作详细描述,保留5项工作的,旧的的删除)
任务1:URS达人等级逻辑修改 - 扩展团队统计到20代
当前实现分析
- 团队总人数:统计3代(直推、间推、三推)
- 活跃团队总人数:基于3代团队进行活跃用户筛选
- 相关方法都硬编码了3代的限制
需要修改的文件
app/Module/UrsPromotion/Services/UrsReferralService.php
app/Module/UrsPromotion/Services/UrsActiveUserService.php
app/Module/UrsPromotion/Logics/UrsTalentLogic.php
- 相关枚举或配置文件
修改策略
- 将硬编码的3代改为20代
- 保持向后兼容性
- 确保性能不受太大影响
错误详情
- 错误位置:
app/Module/Farm/Logics/DisasterLogic.php 第386行
- 错误信息:
Attempt to read property "buffs" on null
- 涉及作物:ID 890,关联用户ID 9999(不存在)
修复方案
在 generateDisasters 方法中添加用户存在性检查,跳过孤儿作物数据
修复详情
- 在
generateDisasters 方法中添加了用户存在性检查
- 如果
$crop->user 为 null,记录警告日志并跳过该作物
- 仍然更新
last_disaster_check_time 避免重复处理
测试结果
- 命令执行成功:
docker exec -it kku_laravel php artisan farm:generate-disasters
- 日志显示正确处理:跳过了作物890(用户9999不存在)
- 无空指针异常,系统稳定运行
任务2:调查URS WebHook问题
问题描述
用户报告:"包 urs 的处理器 register_farm_user 不存在"
调查结果
- 处理器存在:
UrsRegisterFarmUserWebhook 类存在且已注册
- 真实问题:WebHook签名验证失败
- 错误日志:
Webhook签名验证失败
- 原因分析:测试请求缺少正确的
X-Signature 头部
技术细节
- URS服务配置存在,webhook_secret:
Hy0LmLKJSbDQY2oaaZOZKR1XKpFHSY8Y
- 签名验证使用 HMAC-SHA256 算法
- 需要在请求头中包含
X-Signature 字段
根本原因
静态变量 $packageHandlers 在某些情况下被重置,导致处理器注册丢失
修复方案
在 WebhookDispatchService::dispatch 方法中添加自动重新注册机制:
- 当处理器不存在时,尝试重新注册该包的处理器
- 重新注册后再次检查处理器是否存在
- 添加详细的日志记录
测试结果
完成的工作
创建WebHook处理器:UrsRegisterFarmUserWebhook.php
- 继承WebhookReceiver基类
- 实现参数验证:user_id和user_key
- 集成UrsUserMappingService::getFarmUserIdByUserKeyWithAutoCreate逻辑
- 完整的错误处理和日志记录
注册WebHook:在UrsServiceProvider中注册
- 路由映射:register_farm_user => UrsRegisterFarmUserWebhook::class
- 添加必要的导入声明
测试验证:
- 测试URL:/thirdParty/webhook/urs/register_farm_user
- 测试参数:{"user_id": 12345, "user_key": "test_user_key_12345"}
- 测试结果:成功创建农场用户ID 39147
当前进度
✅ WebHook开发任务已完成
Git提交记录
时间记录
- 任务开始:2025年07月02日 20:00:00 CST
- 任务完成:2025年07月02日 20:30:00 CST
- 总耗时:30分钟