时间: 2025年06月09日 20:08
任务类型: 代码重构
状态: 已完成
Game模块中存在多处条件组类型(CONDITION_TYPE)和消耗组类型(CONSUME_TYPE)判断的重复性硬编码,用于处理类型描述、名称获取等工作,不利于维护。需要进行统一处理,消除重复代码,提升代码维护性。
app/Module/Game/Services/ConditionService.phpapp/Module/Game/Services/ConditionGroupService.phpapp/Module/Game/Services/ConsumeService.phpapp/Module/Game/Services/ConsumeGroupService.phpapp/Module/Game/Models/GameConditionItem.phpapp/Module/Game/AdminControllers/GameConditionItemController.phpapp/Module/Game/AdminControllers/GameConsumeItemController.phpapp/Module/Game/AdminControllers/GameConsumeGroupController.php文件: app/Module/Game/Services/ConditionTypeDescriptor.php
主要功能:
核心方法:
// 获取条件目标名称
public static function getTargetName(int $conditionType, int $targetId, int $param1 = 0, int $param2 = 0): string
// 从GameConditionItem模型获取目标名称
public static function getTargetNameFromModel(GameConditionItem $item): string
// 格式化条件项显示
public static function formatConditionDisplay(int $conditionType, int $targetId, int $operator, int $value, int $param1 = 0, int $param2 = 0, bool $withBadge = true): string
// 获取条件类型的目标选项(用于表单)
public static function getTargetOptions(int $conditionType): array
文件: app/Module/Game/Services/ConsumeTypeDescriptor.php
主要功能:
核心方法:
// 获取消耗目标名称
public static function getTargetName(int $consumeType, int $targetId, int $param1 = 0, int $param2 = 0): string
// 从GameConsumeItem模型获取目标名称
public static function getTargetNameFromModel(GameConsumeItem $item): string
// 格式化消耗项显示
public static function formatConsumeDisplay(int $consumeType, int $targetId, int $quantity, int $param1 = 0, int $param2 = 0, bool $withBadge = true): string
// 获取消耗类型的目标选项(用于表单)
public static function getTargetOptions(int $consumeType): array
// 转换消耗项为数组格式(用于API返回)
public static function convertToArray(GameConsumeItem $item): array
CONDITION_TYPE枚举:
// 获取条件类型的详细信息
public static function getTypeInfo(int $type): array
CONSUME_TYPE枚举:
// 获取消耗类型的详细信息
public static function getTypeInfo(int $type): array
提供每种类型的详细描述信息,包括:
getTargetName方法,直接调用描述器本次重构成功解决了Game模块中条件组类型和消耗组类型处理的重复性硬编码问题:
这次重构进一步体现了"DRY(Don't Repeat Yourself)"原则的重要性,为Game模块的条件组和消耗组系统奠定了良好的架构基础。