Ver código fonte

实现用户日志管理页面来源表名列可点击跳转功能

- 修改UserLogController中source_table列的display方法
- 添加getSourceDetailUrl静态方法建立表名到后台路由的映射关系
- 支持fund_logs、item_transaction_logs等多种来源表的跳转
- 点击来源表名可在新标签页打开对应的详情页面
- 增强用户体验,方便快速查看来源记录详情
notfff 7 meses atrás
pai
commit
cf906f95

+ 50 - 1
app/Module/Game/AdminControllers/UserLogController.php

@@ -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}");
+    }
+
     /**
      * 清理过期日志
      *