时间: 2025年06月22日 22:31
任务类型: Bug修复
影响模块: Game模块 - 奖励日志、用户日志管理
/admin/game-reward-logs 页面显示 "Undefined constant REWARD_SOURCE_TYPE::USER_REGISTER_TEST" 错误文件: app/Module/Game/Services/RewardSourceResolver.php
问题原因:
USER_REGISTER_TESTCRAFT 和 URSPROMOTION_BACKFILL 来源类型的支持修复内容:
// 修正枚举常量引用
case REWARD_SOURCE_TYPE::URSPROMOTION_REGISTER->value:
case REWARD_SOURCE_TYPE::URSPROMOTION_REWARD->value:
case REWARD_SOURCE_TYPE::URSPROMOTION_BACKFILL->value:
// 添加合成来源支持
case REWARD_SOURCE_TYPE::CRAFT->value:
return self::resolveCraftSource($sourceId, $typeInfo);
新增方法:
resolveCraftSource(): 处理合成来源的日志解析文件: app/Module/Game/AdminControllers/UserLogController.php
修复内容:
// 修改默认排序为按原始时间排序
$grid->model()->orderBy('original_time', 'desc');
// 添加原始时间列
$grid->column('original_time', '原始时间')
->display(function ($value) {
return $value ? $value->format('Y-m-d H:i:s') : '-';
})
->sortable()
->help('业务发生的原始时间');
// 修改收集时间列
$grid->column('created_at', '收集时间')
->display(function ($value) {
return $value ? $value->format('Y-m-d H:i:s') : '-';
})
->sortable()
->help('日志收集时间');
// 更新筛选器
$filter->between('original_time', '原始时间')->datetime();
详情页面优化:
验证结果: LogDataHandler已经正确实现按原始时间排序
调用链路:
LogDataHandler → UserLogService::getUserLogs()UserLogService → UserLogLogic::getUserLogs()UserLogLogic → UserLog::byUser($userId)->latest()UserLog::scopeLatest() → orderBy('original_time', 'desc')时间字段使用:
$logItem->time 访问器original_time 字段// 原有错误的常量
USER_REGISTER_TEST → URSPROMOTION_REGISTER
PROMOTION_REWARD → URSPROMOTION_REWARD
// 新增支持的常量
URSPROMOTION_BACKFILL → URS推广奖励补发
CRAFT → 合成奖励
original_time: 业务发生的原始时间(用于排序和显示)created_at/collected_at: 日志收集时间(系统记录时间)original_time 降序排列UserLog::latest() scope 按 original_time 降序排列提交哈希: 84b96187
提交信息: 修复游戏奖励日志和用户日志管理的显示问题
文件变更: 3个文件,78行新增,37行删除
已推送到远程仓库: ✅