171647-修复推广信息Handler缺少达人等级.md 2.9 KB

修复推广信息Handler缺少达人等级

任务概述

修复app/Module/AppGame/Handler/Promotion/InfoHandler.php中缺少达人等级字段的问题。

问题描述

推广信息Handler在返回响应时,protobuf定义中包含star_level字段用于表示达人等级,但Handler实现中没有设置这个字段,导致客户端无法获取用户的达人等级信息。

解决方案

1. 分析问题

  • 检查ResponsePromotionInfo protobuf定义,确认有star_level字段(第76行)
  • 查看当前InfoHandler实现,发现缺少达人等级获取和设置逻辑
  • 确认UrsPromotion模块提供了UrsTalentService::getTalentInfo()方法获取达人等级

2. 实现修复

2.1 修改InfoHandler.php

  1. 添加服务引用

    use App\Module\UrsPromotion\Services\UrsTalentService;
    
  2. 添加达人等级获取逻辑

    // 获取达人等级信息
    $talentInfo = UrsTalentService::getTalentInfo($ursUserId);
    $starLevel = $talentInfo ? $talentInfo->talentLevel : 0;
    
  3. 设置响应字段

    $response->setStarLevel($starLevel);
    
  4. 更新注释

    • 在类注释中添加"达人等级信息"说明

2.2 更新文档

修改README.md,在响应字段列表中添加:

- `star_level`: 达人等级(0=无等级,1-5=对应达人等级)

3. 测试验证

3.1 数据准备

查看测试数据:

  • URS用户10007绑定到农场用户38908
  • 该用户达人等级为1(URS初级达人)
  • 直推人数:7,团队总人数:14

3.2 测试结果

测试用户ID: 38908
对应URS用户ID: 10007
达人等级: 1
直推人数: 7
团队总人数: 14

✅ UrsTalentService::getTalentInfo() 成功
- 达人等级: 1
- 直推人数: 7
- 团队总人数: 14

✅ 成功!达人等级数据正确,InfoHandler应该能正确返回达人等级

技术细节

涉及文件

  1. app/Module/AppGame/Handler/Promotion/InfoHandler.php - 主要修改文件
  2. app/Module/AppGame/Handler/Promotion/README.md - 文档更新

依赖服务

  • UrsPromotion\Services\UrsTalentService::getTalentInfo() - 获取用户达人等级信息
  • UrsPromotion\Services\UrsUserMappingService::getUrsUserId() - 获取URS用户ID映射

数据流程

  1. 通过农场用户ID获取对应的URS用户ID
  2. 使用URS用户ID调用UrsTalentService获取达人等级信息
  3. 从DTO对象中提取talentLevel字段
  4. 设置到ResponsePromotionInfo的star_level字段

提交信息

修复推广信息Handler缺少达人等级字段

- 在InfoHandler中添加达人等级获取逻辑
- 使用UrsTalentService::getTalentInfo()获取用户达人等级
- 在响应中设置star_level字段返回达人等级
- 更新Handler注释和README文档说明新增字段
- 测试验证:用户38908(URS用户10007)达人等级1正确返回

完成时间

2025-06-17 16:47

状态

✅ 已完成并提交