now.md 4.1 KB

URS达人等级逻辑修改 - 扩展团队统计到20代

任务概述

修改URS推广模块的达人等级逻辑,将团队总人数和活跃团队总人数的统计范围从3代扩展到20代。

当前时间

2025年07月03日 14:37:38 CST

工作列表(标记状态,一句话描述工作)

  • 修改UrsReferralService::getTeamMembers()方法
  • 修改UrsActiveUserService::getActiveTeamMembers()方法
  • 重构UrsTalentLogic::calculateTeamStats()方法
  • 添加20代统计的配置常量
  • 测试验证修改结果

工作详情(列表工作详细描述,保留5项工作的,旧的的删除)

任务1:URS达人等级逻辑修改 - 扩展团队统计到20代

当前实现分析

  • 团队总人数:统计3代(直推、间推、三推)
  • 活跃团队总人数:基于3代团队进行活跃用户筛选
  • 相关方法都硬编码了3代的限制

需要修改的文件

  1. app/Module/UrsPromotion/Services/UrsReferralService.php
  2. app/Module/UrsPromotion/Services/UrsActiveUserService.php
  3. app/Module/UrsPromotion/Logics/UrsTalentLogic.php
  4. 相关枚举或配置文件

修改策略

  • 将硬编码的3代改为20代
  • 保持向后兼容性
  • 确保性能不受太大影响

错误详情

  • 错误位置:app/Module/Farm/Logics/DisasterLogic.php 第386行
  • 错误信息:Attempt to read property "buffs" on null
  • 涉及作物:ID 890,关联用户ID 9999(不存在)

修复方案

generateDisasters 方法中添加用户存在性检查,跳过孤儿作物数据

修复详情

  • generateDisasters 方法中添加了用户存在性检查
  • 如果 $crop->usernull,记录警告日志并跳过该作物
  • 仍然更新 last_disaster_check_time 避免重复处理

测试结果

  • 命令执行成功:docker exec -it kku_laravel php artisan farm:generate-disasters
  • 日志显示正确处理:跳过了作物890(用户9999不存在)
  • 无空指针异常,系统稳定运行

任务2:调查URS WebHook问题

问题描述

用户报告:"包 urs 的处理器 register_farm_user 不存在"

调查结果

  1. 处理器存在UrsRegisterFarmUserWebhook 类存在且已注册
  2. 真实问题:WebHook签名验证失败
  3. 错误日志Webhook签名验证失败
  4. 原因分析:测试请求缺少正确的 X-Signature 头部

技术细节

  • URS服务配置存在,webhook_secret: Hy0LmLKJSbDQY2oaaZOZKR1XKpFHSY8Y
  • 签名验证使用 HMAC-SHA256 算法
  • 需要在请求头中包含 X-Signature 字段

根本原因

静态变量 $packageHandlers 在某些情况下被重置,导致处理器注册丢失

修复方案

WebhookDispatchService::dispatch 方法中添加自动重新注册机制:

  1. 当处理器不存在时,尝试重新注册该包的处理器
  2. 重新注册后再次检查处理器是否存在
  3. 添加详细的日志记录

测试结果

  • 清空处理器注册后,系统能自动重新注册
  • 错误信息从"处理器不存在"变为正确的"签名验证失败"
  • 日志显示自动重新注册功能正常工作
  • 在UrsServiceProvider中注册WebHook
  • 测试WebHook功能
  • 提交代码到git仓库
  • 创建工作记录文档

完成的工作

  1. 创建WebHook处理器:UrsRegisterFarmUserWebhook.php

    • 继承WebhookReceiver基类
    • 实现参数验证:user_id和user_key
    • 集成UrsUserMappingService::getFarmUserIdByUserKeyWithAutoCreate逻辑
    • 完整的错误处理和日志记录
  2. 注册WebHook:在UrsServiceProvider中注册

    • 路由映射:register_farm_user => UrsRegisterFarmUserWebhook::class
    • 添加必要的导入声明
  3. 测试验证

    • 测试URL:/thirdParty/webhook/urs/register_farm_user
    • 测试参数:{"user_id": 12345, "user_key": "test_user_key_12345"}
    • 测试结果:成功创建农场用户ID 39147

当前进度

WebHook开发任务已完成

Git提交记录

  • WebHook实现提交:✅ 成功 (commit: 2c3f4c9e)

时间记录

  • 任务开始:2025年07月02日 20:00:00 CST
  • 任务完成:2025年07月02日 20:30:00 CST
  • 总耗时:30分钟