Your Name 8 kuukautta sitten
vanhempi
commit
41eb50a21e

+ 1 - 1
.roo/rules-code/rules.md

@@ -45,4 +45,4 @@
 - 不要臆想内容,先查证,后使用
 - 遇到不好判断的内容,向用户发起提问,多向用户沟通
 - 验证每一个要用到的类的存在和内容
-- 阅读每一个涉及的类,以了解内容,不要揣测内容
+- 阅读每一个涉及的类,了解内容后再使用

+ 0 - 1
app/Module/GameItems/AdminControllers/CategoryController.php

@@ -168,7 +168,6 @@ class CategoryController extends AdminController
             })
             ->default(0);
 
-            });
         });
     }
 

+ 8 - 8
app/Module/GameItems/AdminControllers/ChestOpenLogController.php

@@ -56,14 +56,14 @@ class ChestOpenLogController extends AdminController
             });
 
             $helper->columnId();
-            $grid->column('user_id', '用户ID');
+            $helper->column('user_id', '用户ID');
             $grid->column('chest.name', '宝箱名称');
-            $grid->column('quantity', '开启数量');
-            $grid->column('pity_triggered', '触发保底')->switch();
-            $grid->column('pity_content_id', '保底内容ID');
-            $grid->column('open_time', '开启时间')->sortable();
-            $grid->column('ip_address', 'IP地址');
-            $grid->column('created_at', '创建时间');
+            $helper->column('quantity', '开启数量');
+            $helper->column('pity_triggered', '触发保底')->switch();
+            $helper->column('pity_content_id', '保底内容ID');
+            $helper->column('open_time', '开启时间')->sortable();
+            $helper->column('ip_address', 'IP地址');
+            $helper->column('created_at', '创建时间');
 
             // 筛选
             $grid->filter(function ($filter) {
@@ -118,7 +118,7 @@ class ChestOpenLogController extends AdminController
             $helper->field('user_id', '用户ID');
             $show->field('chest.name', '宝箱名称');
             $helper->field('quantity', '开启数量');
-            $show->field('pity_triggered', '触发保底')->as(function ($value) {
+            $helper->field('pity_triggered', '触发保底')->as(function ($value) {
                 return $value ? '是' : '否';
             });
             $helper->field('pity_content_id', '保底内容ID');

+ 8 - 8
app/Module/GameItems/AdminControllers/CraftLogController.php

@@ -57,15 +57,15 @@ class CraftLogController extends AdminController
             });
 
             $helper->columnId();
-            $grid->column('user_id', '用户ID');
+            $helper->column('user_id', '用户ID');
             $grid->column('recipe.name', '配方名称');
-            $grid->column('is_success', '是否成功')->switch();
+            $helper->column('is_success', '是否成功')->switch();
             $grid->column('resultItem.name', '产出物品');
-            $grid->column('result_instance_id', '产出实例ID');
-            $grid->column('result_quantity', '产出数量');
-            $grid->column('craft_time', '合成时间')->sortable();
-            $grid->column('ip_address', 'IP地址');
-            $grid->column('created_at', '创建时间');
+            $helper->column('result_instance_id', '产出实例ID');
+            $helper->column('result_quantity', '产出数量');
+            $helper->column('craft_time', '合成时间')->sortable();
+            $helper->column('ip_address', 'IP地址');
+            $helper->column('created_at', '创建时间');
 
             // 筛选
             $grid->filter(function ($filter) {
@@ -122,7 +122,7 @@ class CraftLogController extends AdminController
             $helper->field('id', 'ID');
             $helper->field('user_id', '用户ID');
             $show->field('recipe.name', '配方名称');
-            $show->field('is_success', '是否成功')->as(function ($value) {
+            $helper->field('is_success', '是否成功')->as(function ($value) {
                 return $value ? '是' : '否';
             });
 

+ 8 - 8
app/Module/GameItems/AdminControllers/DismantleLogController.php

@@ -57,15 +57,15 @@ class DismantleLogController extends AdminController
             });
 
             $helper->columnId();
-            $grid->column('user_id', '用户ID');
+            $helper->column('user_id', '用户ID');
             $grid->column('item.name', '物品名称');
-            $grid->column('instance_id', '实例ID');
-            $grid->column('quantity', '数量');
-            $grid->column('rule_id', '规则ID');
-            $grid->column('coin_returned', '返还金币');
-            $grid->column('dismantle_time', '分解时间')->sortable();
-            $grid->column('ip_address', 'IP地址');
-            $grid->column('created_at', '创建时间');
+            $helper->column('instance_id', '实例ID');
+            $helper->column('quantity', '数量');
+            $helper->column('rule_id', '规则ID');
+            $helper->column('coin_returned', '返还金币');
+            $helper->column('dismantle_time', '分解时间')->sortable();
+            $helper->column('ip_address', 'IP地址');
+            $helper->column('created_at', '创建时间');
 
             // 筛选
             $grid->filter(function ($filter) {

+ 4 - 4
app/Module/GameItems/AdminControllers/DismantleRuleController.php

@@ -48,16 +48,16 @@ class DismantleRuleController extends AdminController
             });
             $grid->column('item.name', '物品名称');
             $grid->column('category.name', '分类名称');
-            $grid->column('priority', '优先级')->sortable();
+            $helper->column('priority', '优先级')->sortable();
             $grid->column('coin_return_rate', '金币返还率')->display(function ($value) {
                 return $value * 100 . '%';
             });
             $grid->column('results', '结果数量')->display(function ($results) {
                 return count($results);
             });
-            $grid->column('is_active', '是否启用')->switch();
-            $grid->column('created_at', '创建时间');
-            $grid->column('updated_at', '更新时间');
+            $helper->column('is_active', '是否启用')->switch();
+            $helper->column('created_at', '创建时间');
+            $helper->column('updated_at', '更新时间');
 
             // 筛选
             $grid->filter(function ($filter) {

+ 5 - 5
app/Module/GameItems/AdminControllers/GroupController.php

@@ -34,11 +34,11 @@ class GroupController extends AdminController
         return Grid::make(new ItemGroup(), function (Grid $grid) {
             $helper = new GridHelper($grid, $this);
             $helper->columnId();
-            $grid->column('name', '名称');
-            $grid->column('code', '编码');
-            $grid->column('description', '描述')->limit(30);
-            $grid->column('created_at', '创建时间');
-            $grid->column('updated_at', '更新时间');
+            $helper->column('name', '名称');
+            $helper->column('code', '编码');
+            $helper->column('description', '描述')->limit(30);
+            $helper->column('created_at', '创建时间');
+            $helper->column('updated_at', '更新时间');
 
             // 筛选
             $grid->filter(function ($filter) {

+ 3 - 3
app/Module/GameItems/AdminControllers/GroupItemController.php

@@ -37,9 +37,9 @@ class GroupItemController extends AdminController
             $helper->columnId();
             $grid->column('group.name', '物品组');
             $grid->column('item.name', '物品');
-            $grid->column('weight', '权重');
-            $grid->column('created_at', '创建时间');
-            $grid->column('updated_at', '更新时间');
+            $helper->column('weight', '权重');
+            $helper->column('created_at', '创建时间');
+            $helper->column('updated_at', '更新时间');
 
             // 筛选
             $grid->filter(function ($filter) {

+ 5 - 5
app/Module/GameItems/AdminControllers/OutputLimitController.php

@@ -46,7 +46,7 @@ class OutputLimitController extends AdminController
                 ];
                 return $types[$value] ?? '未知';
             });
-            $grid->column('max_quantity', '最大数量');
+            $helper->column('max_quantity', '最大数量');
             $grid->column('period_type', '周期类型')->display(function ($value) {
                 $types = [
                     1 => '永久',
@@ -63,10 +63,10 @@ class OutputLimitController extends AdminController
                 }
                 return '-';
             });
-            $grid->column('reset_time', '重置时间');
-            $grid->column('is_active', '是否启用')->switch();
-            $grid->column('created_at', '创建时间');
-            $grid->column('updated_at', '更新时间');
+            $helper->column('reset_time', '重置时间');
+            $helper->column('is_active', '是否启用')->switch();
+            $helper->column('created_at', '创建时间');
+            $helper->column('updated_at', '更新时间');
 
             // 筛选
             $grid->filter(function ($filter) {

+ 14 - 9
app/Module/GameItems/AdminControllers/PityTimeController.php

@@ -4,12 +4,14 @@ namespace App\Module\GameItems\AdminControllers;
 
 use App\Module\GameItems\Models\ItemPityTime;
 use App\Module\GameItems\Models\ItemItem;
-use App\Module\GameItems\Models\ItemChestContent;
 use Dcat\Admin\Grid;
 use Dcat\Admin\Show;
 use UCore\DcatAdmin\AdminController;
 use Dcat\Admin\Layout\Content;
 use Spatie\RouteAttributes\Attributes\Resource;
+use UCore\DcatAdmin\FilterHelper;
+use UCore\DcatAdmin\GridHelper;
+use UCore\DcatAdmin\ShowHelper;
 
 #[Resource('game-items-pity-times', names: 'dcat.admin.game-items-pity-times')]
 class PityTimeController extends AdminController
@@ -50,7 +52,8 @@ class PityTimeController extends AdminController
                 $actions->disableQuickEdit();
             });
 
-            $grid->column('id', 'ID')->sortable();
+            $helper = new GridHelper($grid, $this);
+            $helper->columnId();
             $grid->column('user_id', '用户ID');
             $grid->column('chest.name', '宝箱名称');
             $grid->column('chest_content_id', '宝箱内容ID');
@@ -60,13 +63,14 @@ class PityTimeController extends AdminController
 
             // 筛选
             $grid->filter(function ($filter) {
-                $filter->equal('id', 'ID');
-                $filter->equal('user_id', '用户ID');
+                $helper = new FilterHelper($filter, $this);
+                $helper->equal('id', 'ID');
+                $helper->equal('user_id', '用户ID');
                 $filter->equal('chest_id', '宝箱')->select(
                     ItemItem::where('type', 5)->pluck('name', 'id')
                 );
-                $filter->equal('chest_content_id', '宝箱内容ID');
-                $filter->between('current_count', '当前计数');
+                $helper->equal('chest_content_id', '宝箱内容ID');
+                $helper->between('current_count', '当前计数');
             });
         });
     }
@@ -101,7 +105,8 @@ class PityTimeController extends AdminController
                 $tools->disableDelete();
             });
 
-            $show->field('id', 'ID');
+            $helper = new ShowHelper($show, $this);
+            $helper->field('id', 'ID');
             $show->field('user_id', '用户ID');
             $show->field('chest.name', '宝箱名称');
 
@@ -124,8 +129,8 @@ class PityTimeController extends AdminController
                 return $remaining;
             });
 
-            $show->field('created_at', '创建时间');
-            $show->field('updated_at', '更新时间');
+            $helper->field('created_at', '创建时间');
+            $helper->field('updated_at', '更新时间');
         });
     }
 }

+ 24 - 16
app/Module/GameItems/AdminControllers/RecipeController.php

@@ -10,6 +10,10 @@ use Dcat\Admin\Show;
 use UCore\DcatAdmin\AdminController;
 use Dcat\Admin\Layout\Content;
 use Spatie\RouteAttributes\Attributes\Resource;
+use UCore\DcatAdmin\FilterHelper;
+use UCore\DcatAdmin\FormHelper;
+use UCore\DcatAdmin\GridHelper;
+use UCore\DcatAdmin\ShowHelper;
 
 #[Resource('game-items-recipes', names: 'dcat.admin.game-items-recipes')]
 class RecipeController extends AdminController
@@ -29,10 +33,11 @@ class RecipeController extends AdminController
     protected function grid()
     {
         return Grid::make(new ItemRecipe(), function (Grid $grid) {
-            $grid->column('id', 'ID')->sortable();
-            $grid->column('name', '配方名称');
+            $helper = new GridHelper($grid, $this);
+            $helper->columnId();
+            $helper->column('name', '配方名称');
             $grid->column('resultItem.name', '产出物品');
-            $grid->column('result_quantity', '产出数量');
+            $helper->column('result_quantity', '产出数量');
             $grid->column('success_rate', '成功率')->display(function ($value) {
                 return $value * 100 . '%';
             });
@@ -58,15 +63,16 @@ class RecipeController extends AdminController
 
                 return $value;
             });
-            $grid->column('cooldown_seconds', '冷却时间(秒)');
-            $grid->column('is_visible', '是否可见')->switch();
-            $grid->column('created_at', '创建时间');
-            $grid->column('updated_at', '更新时间');
+            $helper->column('cooldown_seconds', '冷却时间(秒)');
+            $helper->column('is_visible', '是否可见')->switch();
+            $helper->column('created_at', '创建时间');
+            $helper->column('updated_at', '更新时间');
 
             // 筛选
             $grid->filter(function ($filter) {
-                $filter->equal('id', 'ID');
-                $filter->like('name', '配方名称');
+                $helper = new FilterHelper($filter, $this);
+                $helper->equal('id', 'ID');
+                $helper->like('name', '配方名称');
                 $filter->equal('result_item_id', '产出物品')->select(
                     ItemItem::pluck('name', 'id')
                 );
@@ -102,10 +108,11 @@ class RecipeController extends AdminController
     protected function detail($id)
     {
         return Show::make(ItemRecipe::findOrFail($id), function (Show $show) {
-            $show->field('id', 'ID');
-            $show->field('name', '配方名称');
+            $helper = new ShowHelper($show, $this);
+            $helper->field('id', 'ID');
+            $helper->field('name', '配方名称');
             $show->field('resultItem.name', '产出物品');
-            $show->field('result_quantity', '产出数量');
+            $helper->field('result_quantity', '产出数量');
             $show->field('success_rate', '成功率')->as(function ($value) {
                 return $value * 100 . '%';
             });
@@ -131,7 +138,7 @@ class RecipeController extends AdminController
                 return $value;
             })->unescape();
 
-            $show->field('cooldown_seconds', '冷却时间(秒)');
+            $helper->field('cooldown_seconds', '冷却时间(秒)');
             $show->field('is_visible', '是否可见')->as(function ($value) {
                 return $value ? '是' : '否';
             });
@@ -157,8 +164,8 @@ class RecipeController extends AdminController
                 return $value;
             })->unescape();
 
-            $show->field('created_at', '创建时间');
-            $show->field('updated_at', '更新时间');
+            $helper->field('created_at', '创建时间');
+            $helper->field('updated_at', '更新时间');
 
             // 显示配方材料
             $show->divider('配方材料');
@@ -220,7 +227,8 @@ class RecipeController extends AdminController
     protected function form()
     {
         return Form::make(new ItemRecipe(), function (Form $form) {
-            $form->text('name', '配方名称')->required();
+            $helper = new FormHelper($form, $this);
+            $helper->text('name', '配方名称')->required();
             $form->select('result_item_id', '产出物品')
                 ->options(ItemItem::pluck('name', 'id'))
                 ->required();

+ 34 - 26
app/Module/GameItems/AdminControllers/TransactionLogController.php

@@ -10,6 +10,9 @@ use Dcat\Admin\Show;
 use UCore\DcatAdmin\AdminController;
 use Dcat\Admin\Layout\Content;
 use Spatie\RouteAttributes\Attributes\Resource;
+use UCore\DcatAdmin\FilterHelper;
+use UCore\DcatAdmin\GridHelper;
+use UCore\DcatAdmin\ShowHelper;
 
 #[Resource('game-items-transaction-logs', names: 'dcat.admin.game-items-transaction-logs')]
 class TransactionLogController extends AdminController
@@ -36,6 +39,8 @@ class TransactionLogController extends AdminController
     protected function grid()
     {
         return Grid::make(new ItemTransactionLog(), function (Grid $grid) {
+            $helper = new GridHelper($grid, $this);
+            
             // 禁用创建、编辑和删除按钮
             $grid->disableCreateButton();
             $grid->disableActions();
@@ -50,32 +55,33 @@ class TransactionLogController extends AdminController
                 $actions->disableQuickEdit();
             });
 
-            $grid->column('id', 'ID')->sortable();
-            $grid->column('user_id', '用户ID');
+            $helper->columnId();
+            $helper->column('user_id', '用户ID');
             $grid->column('item.name', '物品名称');
-            $grid->column('instance_id', '实例ID');
-            $grid->column('quantity', '数量');
+            $helper->column('instance_id', '实例ID');
+            $helper->column('quantity', '数量');
             $grid->column('transaction_type', '交易类型')->display(function ($value) {
                 return TRANSACTION_TYPE::getName($value);
             });
-            $grid->column('source_type', '来源类型');
-            $grid->column('source_id', '来源ID');
-            $grid->column('expire_at', '过期时间');
-            $grid->column('ip_address', 'IP地址');
-            $grid->column('created_at', '创建时间')->sortable();
+            $helper->column('source_type', '来源类型');
+            $helper->column('source_id', '来源ID');
+            $helper->column('expire_at', '过期时间');
+            $helper->column('ip_address', 'IP地址');
+            $helper->column('created_at', '创建时间');
 
             // 筛选
             $grid->filter(function ($filter) {
-                $filter->equal('id', 'ID');
-                $filter->equal('user_id', '用户ID');
+                $helper = new FilterHelper($filter, $this);
+                $helper->equal('id', 'ID');
+                $helper->equal('user_id', '用户ID');
                 $filter->equal('item_id', '物品')->select(
                     ItemItem::pluck('name', 'id')
                 );
-                $filter->equal('instance_id', '实例ID');
+                $helper->equal('instance_id', '实例ID');
                 $filter->equal('transaction_type', '交易类型')->select(TRANSACTION_TYPE::all());
-                $filter->like('source_type', '来源类型');
-                $filter->equal('source_id', '来源ID');
-                $filter->between('created_at', '创建时间')->datetime();
+                $helper->like('source_type', '来源类型');
+                $helper->equal('source_id', '来源ID');
+                $helper->between('created_at', '创建时间')->datetime();
             });
         });
     }
@@ -104,22 +110,24 @@ class TransactionLogController extends AdminController
     protected function detail($id)
     {
         return Show::make(ItemTransactionLog::findOrFail($id), function (Show $show) {
+            $helper = new ShowHelper($show, $this);
+            
             // 禁用编辑和删除按钮
             $show->panel()->tools(function ($tools) {
                 $tools->disableEdit();
                 $tools->disableDelete();
             });
 
-            $show->field('id', 'ID');
-            $show->field('user_id', '用户ID');
+            $helper->field('id', 'ID');
+            $helper->field('user_id', '用户ID');
             $show->field('item.name', '物品名称');
-            $show->field('instance_id', '实例ID');
-            $show->field('quantity', '数量');
+            $helper->field('instance_id', '实例ID');
+            $helper->field('quantity', '数量');
             $show->field('transaction_type', '交易类型')->as(function ($value) {
                 return TRANSACTION_TYPE::getName($value);
             });
-            $show->field('source_type', '来源类型');
-            $show->field('source_id', '来源ID');
+            $helper->field('source_type', '来源类型');
+            $helper->field('source_id', '来源ID');
 
             // 显示详细信息
             $show->field('details', '详细信息')->as(function ($details) {
@@ -151,11 +159,11 @@ class TransactionLogController extends AdminController
                 return $details;
             })->unescape();
 
-            $show->field('expire_at', '过期时间');
-            $show->field('ip_address', 'IP地址');
-            $show->field('device_info', '设备信息');
-            $show->field('created_at', '创建时间');
-            $show->field('updated_at', '更新时间');
+            $helper->field('expire_at', '过期时间');
+            $helper->field('ip_address', 'IP地址');
+            $helper->field('device_info', '设备信息');
+            $helper->field('created_at', '创建时间');
+            $helper->field('updated_at', '更新时间');
         });
     }
 }

+ 25 - 17
app/Module/GameItems/AdminControllers/UserItemController.php

@@ -11,6 +11,10 @@ use Dcat\Admin\Show;
 use UCore\DcatAdmin\AdminController;
 use Dcat\Admin\Layout\Content;
 use Spatie\RouteAttributes\Attributes\Resource;
+use UCore\DcatAdmin\FilterHelper;
+use UCore\DcatAdmin\FormHelper;
+use UCore\DcatAdmin\GridHelper;
+use UCore\DcatAdmin\ShowHelper;
 
 #[Resource('game-items-user-items', names: 'dcat.admin.game-items-user-items')]
 class UserItemController extends AdminController
@@ -30,25 +34,27 @@ class UserItemController extends AdminController
     protected function grid()
     {
         return Grid::make(new ItemUser(), function (Grid $grid) {
-            $grid->column('id', 'ID')->sortable();
-            $grid->column('user_id', '用户ID');
+            $helper = new GridHelper($grid, $this);
+            $helper->columnId();
+            $helper->column('user_id', '用户ID');
             $grid->column('item.name', '物品名称');
-            $grid->column('instance_id', '实例ID');
-            $grid->column('quantity', '数量');
-            $grid->column('expire_at', '过期时间');
-            $grid->column('created_at', '创建时间');
-            $grid->column('updated_at', '更新时间');
+            $helper->column('instance_id', '实例ID');
+            $helper->column('quantity', '数量');
+            $helper->column('expire_at', '过期时间');
+            $helper->column('created_at', '创建时间');
+            $helper->column('updated_at', '更新时间');
 
             // 筛选
             $grid->filter(function ($filter) {
-                $filter->equal('id', 'ID');
-                $filter->equal('user_id', '用户ID');
+                $helper = new FilterHelper($filter, $this);
+                $helper->equal('id', 'ID');
+                $helper->equal('user_id', '用户ID');
                 $filter->equal('item_id', '物品')->select(
                     Item::pluck('name', 'id')
                 );
-                $filter->equal('instance_id', '实例ID');
-                $filter->between('quantity', '数量');
-                $filter->between('expire_at', '过期时间')->datetime();
+                $helper->equal('instance_id', '实例ID');
+                $helper->between('quantity', '数量');
+                $helper->between('expire_at', '过期时间')->datetime();
             });
         });
     }
@@ -79,8 +85,9 @@ class UserItemController extends AdminController
         $model = ItemUser::findOrFail($id);
 
         return Show::make($model, function (Show $show) {
-            $show->field('id', 'ID');
-            $show->field('user_id', '用户ID');
+            $helper = new ShowHelper($show, $this);
+            $helper->field('id', 'ID');
+            $helper->field('user_id', '用户ID');
             $show->field('item.name', '物品名称');
             $show->field('item.description', '物品描述');
             $show->field('item.type', '物品类型')->as(function ($type) {
@@ -170,8 +177,8 @@ class UserItemController extends AdminController
                 $show->field('instance.expire_at', '实例过期时间');
             }
 
-            $show->field('quantity', '数量');
-            $show->field('expire_at', '过期时间');
+            $helper->field('quantity', '数量');
+            $helper->field('expire_at', '过期时间');
 
             // 检查是否过期
             $show->field('is_expired', '是否过期')->as(function () {
@@ -220,7 +227,8 @@ class UserItemController extends AdminController
     protected function form()
     {
         return Form::make(new ItemUser(), function (Form $form) {
-            $form->text('user_id', '用户ID')
+            $helper = new FormHelper($form, $this);
+            $helper->text('user_id', '用户ID')
                 ->required()
                 ->help('物品所属的用户ID');
 

+ 25 - 17
app/Module/GameItems/AdminControllers/UserOutputCounterController.php

@@ -9,6 +9,9 @@ use Dcat\Admin\Show;
 use Dcat\Admin\Layout\Content;
 use Spatie\RouteAttributes\Attributes\Resource;
 use UCore\DcatAdmin\AdminController;
+use UCore\DcatAdmin\FilterHelper;
+use UCore\DcatAdmin\GridHelper;
+use UCore\DcatAdmin\ShowHelper;
 
 #[Resource('game-items-user-output-counters', names: 'dcat.admin.game-items-user-output-counters')]
 class UserOutputCounterController extends AdminController
@@ -35,6 +38,8 @@ class UserOutputCounterController extends AdminController
     protected function grid()
     {
         return Grid::make(new ItemUserOutputCounter(), function (Grid $grid) {
+            $helper = new GridHelper($grid, $this);
+            
             // 禁用创建、编辑和删除按钮
             $grid->disableCreateButton();
             $grid->disableActions();
@@ -49,23 +54,24 @@ class UserOutputCounterController extends AdminController
                 $actions->disableQuickEdit();
             });
 
-            $grid->column('id', 'ID')->sortable();
-            $grid->column('user_id', '用户ID');
+            $helper->columnId();
+            $helper->column('user_id', '用户ID');
             $grid->column('outputLimit.item.name', '物品名称');
-            $grid->column('current_count', '当前计数');
-            $grid->column('last_reset_time', '上次重置时间');
-            $grid->column('created_at', '创建时间');
-            $grid->column('updated_at', '更新时间');
+            $helper->column('current_count', '当前计数');
+            $helper->column('last_reset_time', '上次重置时间');
+            $helper->column('created_at', '创建时间');
+            $helper->column('updated_at', '更新时间');
 
             // 筛选
             $grid->filter(function ($filter) {
-                $filter->equal('id', 'ID');
-                $filter->equal('user_id', '用户ID');
+                $helper = new FilterHelper($filter, $this);
+                $helper->equal('id', 'ID');
+                $helper->equal('user_id', '用户ID');
                 $filter->equal('limit_id', '限制ID')->select(
                     ItemOutputLimit::with('item')->get()->pluck('item.name', 'id')
                 );
-                $filter->between('current_count', '当前计数');
-                $filter->between('last_reset_time', '上次重置时间')->datetime();
+                $helper->between('current_count', '当前计数');
+                $helper->between('last_reset_time', '上次重置时间')->datetime();
             });
         });
     }
@@ -94,17 +100,19 @@ class UserOutputCounterController extends AdminController
     protected function detail($id)
     {
         return Show::make(ItemUserOutputCounter::findOrFail($id), function (Show $show) {
+            $helper = new ShowHelper($show, $this);
+            
             // 禁用编辑和删除按钮
             $show->panel()->tools(function ($tools) {
                 $tools->disableEdit();
                 $tools->disableDelete();
             });
 
-            $show->field('id', 'ID');
-            $show->field('user_id', '用户ID');
+            $helper->field('id', 'ID');
+            $helper->field('user_id', '用户ID');
 
             // 显示限制信息
-            $show->field('limit_id', '限制ID');
+            $helper->field('limit_id', '限制ID');
             $show->field('outputLimit.item.name', '物品名称');
             $show->field('outputLimit.limit_type', '限制类型')->as(function ($value) {
                 $types = [
@@ -118,7 +126,7 @@ class UserOutputCounterController extends AdminController
             });
             $show->field('outputLimit.max_quantity', '最大数量');
 
-            $show->field('current_count', '当前计数');
+            $helper->field('current_count', '当前计数');
 
             // 计算剩余可获取数量
             $show->field('remaining_count', '剩余可获取数量')->as(function () {
@@ -130,9 +138,9 @@ class UserOutputCounterController extends AdminController
                 return $remaining;
             });
 
-            $show->field('last_reset_time', '上次重置时间');
-            $show->field('created_at', '创建时间');
-            $show->field('updated_at', '更新时间');
+            $helper->field('last_reset_time', '上次重置时间');
+            $helper->field('created_at', '创建时间');
+            $helper->field('updated_at', '更新时间');
         });
     }
 }

+ 29 - 22
app/Module/GameItems/AdminControllers/UserRecipeController.php

@@ -6,10 +6,12 @@ use App\Module\GameItems\Models\ItemUserRecipe;
 use App\Module\GameItems\Models\ItemRecipe;
 use Dcat\Admin\Grid;
 use Dcat\Admin\Show;
-
 use Dcat\Admin\Layout\Content;
 use Spatie\RouteAttributes\Attributes\Resource;
 use UCore\DcatAdmin\AdminController;
+use UCore\DcatAdmin\FilterHelper;
+use UCore\DcatAdmin\GridHelper;
+use UCore\DcatAdmin\ShowHelper;
 
 #[Resource('game-items-user-recipes', names: 'dcat.admin.game-items-user-recipes')]
 class UserRecipeController extends AdminController
@@ -36,6 +38,8 @@ class UserRecipeController extends AdminController
     protected function grid()
     {
         return Grid::make(new ItemUserRecipe(), function (Grid $grid) {
+            $helper = new GridHelper($grid, $this);
+            
             // 禁用创建、编辑和删除按钮
             $grid->disableCreateButton();
             $grid->disableActions();
@@ -50,20 +54,21 @@ class UserRecipeController extends AdminController
                 $actions->disableQuickEdit();
             });
 
-            $grid->column('id', 'ID')->sortable();
-            $grid->column('user_id', '用户ID');
+            $helper->columnId();
+            $helper->column('user_id', '用户ID');
             $grid->column('recipe.name', '配方名称');
-            $grid->column('is_unlocked', '是否解锁')->switch();
-            $grid->column('unlock_time', '解锁时间');
-            $grid->column('craft_count', '合成次数');
-            $grid->column('last_craft_time', '上次合成时间');
-            $grid->column('created_at', '创建时间');
-            $grid->column('updated_at', '更新时间');
+            $helper->column('is_unlocked', '是否解锁')->switch();
+            $helper->column('unlock_time', '解锁时间');
+            $helper->column('craft_count', '合成次数');
+            $helper->column('last_craft_time', '上次合成时间');
+            $helper->column('created_at', '创建时间');
+            $helper->column('updated_at', '更新时间');
 
             // 筛选
             $grid->filter(function ($filter) {
-                $filter->equal('id', 'ID');
-                $filter->equal('user_id', '用户ID');
+                $helper = new FilterHelper($filter, $this);
+                $helper->equal('id', 'ID');
+                $helper->equal('user_id', '用户ID');
                 $filter->equal('recipe_id', '配方')->select(
                     ItemRecipe::pluck('name', 'id')
                 );
@@ -71,9 +76,9 @@ class UserRecipeController extends AdminController
                     1 => '是',
                     0 => '否',
                 ]);
-                $filter->between('unlock_time', '解锁时间')->datetime();
-                $filter->between('craft_count', '合成次数');
-                $filter->between('last_craft_time', '上次合成时间')->datetime();
+                $helper->between('unlock_time', '解锁时间')->datetime();
+                $helper->between('craft_count', '合成次数');
+                $helper->between('last_craft_time', '上次合成时间')->datetime();
             });
         });
     }
@@ -102,19 +107,21 @@ class UserRecipeController extends AdminController
     protected function detail($id)
     {
         return Show::make(ItemUserRecipe::findOrFail($id), function (Show $show) {
+            $helper = new ShowHelper($show, $this);
+            
             // 禁用编辑和删除按钮
             $show->panel()->tools(function ($tools) {
                 $tools->disableEdit();
                 $tools->disableDelete();
             });
 
-            $show->field('id', 'ID');
-            $show->field('user_id', '用户ID');
+            $helper->field('id', 'ID');
+            $helper->field('user_id', '用户ID');
 
             // 显示配方信息
             $show->field('recipe.name', '配方名称');
             $show->field('recipe.resultItem.name', '产出物品');
-            $show->field('recipe.result_quantity', '产出数量');
+            $helper->field('recipe.result_quantity', '产出数量');
             $show->field('recipe.success_rate', '成功率')->as(function ($value) {
                 return ($value * 100) . '%';
             });
@@ -123,9 +130,9 @@ class UserRecipeController extends AdminController
             $show->field('is_unlocked', '是否解锁')->as(function ($value) {
                 return $value ? '是' : '否';
             });
-            $show->field('unlock_time', '解锁时间');
-            $show->field('craft_count', '合成次数');
-            $show->field('last_craft_time', '上次合成时间');
+            $helper->field('unlock_time', '解锁时间');
+            $helper->field('craft_count', '合成次数');
+            $helper->field('last_craft_time', '上次合成时间');
 
             // 计算冷却状态
             $show->field('cooldown_status', '冷却状态')->as(function () {
@@ -146,8 +153,8 @@ class UserRecipeController extends AdminController
                 }
             });
 
-            $show->field('created_at', '创建时间');
-            $show->field('updated_at', '更新时间');
+            $helper->field('created_at', '创建时间');
+            $helper->field('updated_at', '更新时间');
         });
     }
 }