|
|
@@ -60,7 +60,22 @@ class UserLogController extends AdminController
|
|
|
$grid->column('source_id', '来源ID');
|
|
|
|
|
|
$grid->column('source_table', '来源表名')
|
|
|
- ->limit(20);
|
|
|
+ ->limit(20)
|
|
|
+ ->display(function ($value) {
|
|
|
+ if (!$value || !$this->source_id) {
|
|
|
+ return $value;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取对应的后台管理页面URL
|
|
|
+ $url = self::getSourceDetailUrl($value, $this->source_id);
|
|
|
+
|
|
|
+ if ($url) {
|
|
|
+ return "<a href=\"{$url}\" target=\"_blank\" class=\"text-primary\" title=\"查看来源详情\">" .
|
|
|
+ "<i class=\"fa fa-external-link\"></i> {$value}</a>";
|
|
|
+ }
|
|
|
+
|
|
|
+ return $value;
|
|
|
+ });
|
|
|
|
|
|
$grid->column('created_at', '创建时间')
|
|
|
->sortable();
|
|
|
@@ -185,6 +200,40 @@ class UserLogController extends AdminController
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取来源详情页面URL
|
|
|
+ *
|
|
|
+ * @param string $sourceTable 来源表名
|
|
|
+ * @param int $sourceId 来源记录ID
|
|
|
+ * @return string|null 详情页面URL,null表示无对应页面
|
|
|
+ */
|
|
|
+ public static function getSourceDetailUrl(string $sourceTable, int $sourceId): ?string
|
|
|
+ {
|
|
|
+ // 来源表名到后台路由的映射关系
|
|
|
+ $tableRouteMap = [
|
|
|
+ 'fund_logs' => 'fund-logs',
|
|
|
+ 'item_transaction_logs' => 'game-items-transaction-logs',
|
|
|
+ 'farm_harvest_logs' => 'farm-harvest-logs',
|
|
|
+ 'farm_upgrade_logs' => 'farm-upgrade-logs',
|
|
|
+ 'pet_battle_logs' => 'pet-battle-logs',
|
|
|
+ 'pet_skill_logs' => 'pet-skill-logs',
|
|
|
+ 'task_reward_logs' => 'task-reward-logs',
|
|
|
+ 'task_reset_logs' => 'task-reset-logs',
|
|
|
+ 'game_items_dismantle_logs' => 'game-items-dismantle-logs',
|
|
|
+ 'system_logs' => 'system-logs',
|
|
|
+ ];
|
|
|
+
|
|
|
+ // 检查是否有对应的路由
|
|
|
+ if (!isset($tableRouteMap[$sourceTable])) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ $route = $tableRouteMap[$sourceTable];
|
|
|
+
|
|
|
+ // 生成详情页面URL
|
|
|
+ return admin_url("{$route}/{$sourceId}");
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 清理过期日志
|
|
|
*
|