创建时间: 2025年06月16日 12:07
任务类型: 代码重构
关联模块: URS推广模块
在URS推广模块的后台管理功能中发现存在大量硬编码的达人等级名称,这些硬编码分散在多个文件中,包括:
这种硬编码方式存在以下问题:
UrsUserTalentController.php
UrsUserTalentFilterHelper.php
UrsProfitController.php
UpdateTalentAction.php
现有的UrsTalentLevel枚举类中的等级名称与数据库中的实际名称不一致:
修复UrsTalentLevel枚举类中的getName()方法,使其返回与数据库一致的等级名称:
public function getName(): string
{
return match($this) {
self::NONE => '非达人',
self::JUNIOR => 'URS初级达人',
self::INTERMEDIATE => 'URS中级达人',
self::SENIOR => 'URS高级达人',
self::EXPERT => 'URS资深达人',
self::MASTER => 'URS顶级达人',
};
}
在枚举类中添加两个静态方法:
// 根据等级值获取等级名称
public static function getLevelName(int $level): string
{
$enum = self::fromInt($level);
return $enum ? $enum->getName() : '未知等级';
}
// 获取所有等级的键值对数组
public static function getAllLevels(): array
{
return [
self::NONE->value => self::NONE->getName(),
self::JUNIOR->value => self::JUNIOR->getName(),
self::INTERMEDIATE->value => self::INTERMEDIATE->getName(),
self::SENIOR->value => self::SENIOR->getName(),
self::EXPERT->value => self::EXPERT->getName(),
self::MASTER->value => self::MASTER->getName(),
];
}
将所有硬编码的等级名称替换为枚举方法调用:
UrsTalentLevel::getLevelName($value)UrsTalentLevel::getAllLevels()UrsTalentLevel::getName()方法getLevelName()静态方法getAllLevels()静态方法->display(function ($value) { return UrsTalentLevel::getLevelName($value); })->using(UrsTalentLevel::getAllLevels())->options(UrsTalentLevel::getAllLevels())->select(UrsTalentLevel::getAllLevels())->display(function ($value) { return UrsTalentLevel::getLevelName($value); })->as(function ($value) { return UrsTalentLevel::getLevelName($value); })UrsTalentLevel::getLevelName($oldLevel)和UrsTalentLevel::getLevelName($newLevel)测试了单个等级更新功能:
修复URS推广模块后台达人等级更新功能
- 修复UpdateTalentAction中的方法调用错误
- 将updateUserTalent()改为updateTalentLevel()
- 修复返回值处理逻辑,适配DTO对象返回
- 修复UrsUserTalentController中的批量更新方法调用
- 将batchUpdateTalents()改为batchUpdateTalentLevels()
- 完善批量更新结果统计逻辑
- 测试验证单个更新功能正常工作,成功显示等级变化信息
修复URS推广模块中所有硬编码等级名称问题
- 修复UrsTalentLevel枚举类中的等级名称,与数据库保持一致
- 添加getLevelName()静态方法,根据等级值获取等级名称
- 修复UrsUserTalentController中的硬编码等级名称,使用枚举方法
- 修复UrsUserTalentFilterHelper中的硬编码等级名称
- 修复UrsProfitController中的硬编码等级名称
- 修复UpdateTalentAction中的硬编码等级名称
- 统一使用UrsTalentLevel::getLevelName()和getAllLevels()方法
- 消除所有魔法数字和硬编码字符串,提高代码维护性
- 测试验证功能正常,等级名称显示正确
任务状态: ✅ 已完成
代码已推送: 是
功能已验证: 是