Bläddra i källkod

后台用户物品管理列表增加是否冻结列

- 在Grid列表中添加'是否冻结'列,显示为正常/已冻结的badge
- 在筛选器中添加冻结状态筛选选项
- 在详情页中添加冻结状态显示
- 修复详情页中Repository使用问题,直接使用模型查询
- 修复过期状态检查逻辑,支持永不过期的物品显示
AI Assistant 6 månader sedan
förälder
incheckning
519c9c1f7f
1 ändrade filer med 29 tillägg och 4 borttagningar
  1. 29 4
      app/Module/GameItems/AdminControllers/UserItemController.php

+ 29 - 4
app/Module/GameItems/AdminControllers/UserItemController.php

@@ -69,6 +69,14 @@ class UserItemController extends AdminController
             $grid->column('item.name', '物品名称');
             $grid->column('instance_id', '实例ID');
             $grid->column('quantity', '数量');
+
+            // 添加是否冻结列
+            $grid->column('is_frozen', '是否冻结')->display(function ($value) {
+                return $value ?
+                    '<span class="badge badge-danger">已冻结</span>' :
+                    '<span class="badge badge-success">正常</span>';
+            });
+
             $grid->column('expire_at', '过期时间');
             $grid->column('created_at', '创建时间');
             $grid->column('updated_at', '更新时间');
@@ -81,6 +89,14 @@ class UserItemController extends AdminController
                 $helper->equalSelectModelItem('item_id', '物品');
                 $helper->equal('instance_id', '实例ID');
                 $filter->between('quantity', '数量');
+
+                // 添加冻结状态筛选
+                $filter->equal('is_frozen', '是否冻结')->select([
+                    '' => '全部',
+                    '0' => '正常',
+                    '1' => '已冻结'
+                ]);
+
                 $filter->between('expire_at', '过期时间')->datetime();
             });
             // 添加自定义"增加物品"按钮
@@ -119,9 +135,9 @@ class UserItemController extends AdminController
      */
     protected function detail($id)
     {
-        $model = (new ItemUserRepository())->findOrFail($id);
+        $model = \App\Module\GameItems\Models\ItemUser::with(['item', 'instance', 'freezeLog'])->findOrFail($id);
 
-        return Show::make($model, function (Show $show) {
+        return Show::make($model, function (Show $show) use ($model) {
             $helper = new ShowHelper($show, $this);
             $helper->field('id', 'ID');
             $helper->field('user_id', '用户ID');
@@ -139,7 +155,7 @@ class UserItemController extends AdminController
             });
 
             // 如果是单独属性物品,显示实例信息
-            if ($show->getModel()->instance_id) {
+            if ($model->instance_id) {
                 $show->field('instance_id', '实例ID');
                 $show->field('instance.name', '实例名称');
 
@@ -215,11 +231,20 @@ class UserItemController extends AdminController
             }
 
             $helper->field('quantity', '数量');
+
+            // 添加冻结状态显示
+            $show->field('is_frozen', '是否冻结')->as(function ($value) {
+                return $value ? '已冻结' : '正常';
+            });
+
             $helper->field('expire_at', '过期时间');
 
             // 检查是否过期
             $show->field('is_expired', '是否过期')->as(function () {
-                return $this->isExpired() ? '是' : '否';
+                if (!$this->expire_at) {
+                    return '永不过期';
+                }
+                return now()->gt($this->expire_at) ? '是' : '否';
             });
 
             $show->field('created_at', '创建时间');