Your Name 9 months ago
parent
commit
8a0fbd2870

+ 4 - 4
app/Module/Pet/AdminControllers/Helper/FilterHelperTrait.php

@@ -4,7 +4,7 @@ namespace App\Module\Pet\AdminControllers\Helper;
 
 use App\Module\Pet\Enums\PetGrade;
 use App\Module\Pet\Enums\PetStatus;
-use App\Module\Pet\AdminControllers\LazyRenderable\PetLazyRenderable;
+use App\Module\Pet\AdminControllers\LazyRenderable\PetUserLazyRenderable;
 
 trait FilterHelperTrait
 {
@@ -17,14 +17,14 @@ trait FilterHelperTrait
      */
     public function equalSelectModelPet($field, $label = '宠物')
     {
-        $table = PetLazyRenderable::make();
+        $table = PetUserLazyRenderable::make();
 
         return $this->filter->equal($field, $label)
             ->selectTable($table) // 设置渲染类实例,并传递自定义参数
             ->title($label)
             ->model($table->getModel(), $table->getModelSelectId(), $table->getModelViewName()); // 设置编辑数据显示
     }
-    
+
     /**
      * 宠物品阶筛选
      *
@@ -41,7 +41,7 @@ trait FilterHelperTrait
             PetGrade::FOURTH->value => '四品',
         ]);
     }
-    
+
     /**
      * 宠物状态筛选
      *

+ 3 - 3
app/Module/Pet/AdminControllers/Helper/FormHelperTrait.php

@@ -2,8 +2,8 @@
 
 namespace App\Module\Pet\AdminControllers\Helper;
 
-use App\Module\Pet\Models\Pet;
-use App\Module\Pet\AdminControllers\LazyRenderable\PetLazyRenderable;
+use App\Module\Pet\Models\PetUser;
+use App\Module\Pet\AdminControllers\LazyRenderable\PetUserLazyRenderable;
 
 trait FormHelperTrait
 {
@@ -16,7 +16,7 @@ trait FormHelperTrait
      */
     public function selectModelPet($field, $label = '宠物')
     {
-        $table = PetLazyRenderable::make();
+        $table = PetUserLazyRenderable::make();
 
         return $this->form->selectTable($field, $label)->from($table)
             ->title($label)

+ 0 - 72
app/Module/Pet/AdminControllers/LazyRenderable/PetLazyRenderable.php

@@ -1,72 +0,0 @@
-<?php
-
-namespace App\Module\Pet\AdminControllers\LazyRenderable;
-
-use App\Module\Pet\Models\Pet;
-use App\Module\Pet\Enums\PetGrade;
-use App\Module\Pet\Enums\PetStatus;
-use App\Module\Pet\Repositorys\PetRepository;
-use Dcat\Admin\Grid;
-use Dcat\Admin\Grid\LazyRenderable;
-
-class PetLazyRenderable extends LazyRenderable
-{
-    /**
-     * 获取模型ID字段
-     *
-     * @return string
-     */
-    public function getModelSelectId()
-    {
-        return 'id';
-    }
-
-    /**
-     * 获取模型显示字段
-     *
-     * @return string
-     */
-    public function getModelViewName()
-    {
-        return 'name';
-    }
-
-    /**
-     * 获取模型类
-     *
-     * @return string
-     */
-    public function getModel()
-    {
-        return Pet::class;
-    }
-
-    /**
-     * 渲染表格
-     *
-     * @return Grid
-     */
-    public function grid(): Grid
-    {
-        return Grid::make(new PetRepository(), function (Grid $grid) {
-            $grid->column('id', 'ID')->sortable();
-            $grid->column('name', '宠物名称');
-
-
-
-            $grid->quickSearch(['id', 'name']);
-
-            $grid->filter(function (Grid\Filter $filter) {
-                $filter->equal('id', 'ID');
-                $filter->like('name', '宠物名称');
-
-
-            });
-
-            $grid->disablePagination(true);
-            $grid->disableActions();
-            $grid->disableBatchActions();
-            $grid->disableCreateButton();
-        });
-    }
-}

+ 108 - 0
app/Module/Pet/AdminControllers/LazyRenderable/PetUserLazyRenderable.php

@@ -0,0 +1,108 @@
+<?php
+
+namespace App\Module\Pet\AdminControllers\LazyRenderable;
+
+use App\Module\Pet\Models\PetUser;
+use App\Module\Pet\Enums\PetGrade;
+use App\Module\Pet\Enums\PetStatus;
+use Dcat\Admin\Grid;
+use Dcat\Admin\Grid\LazyRenderable;
+
+class PetUserLazyRenderable extends LazyRenderable
+{
+    /**
+     * 获取模型ID字段
+     *
+     * @return string
+     */
+    public function getModelSelectId()
+    {
+        return 'id';
+    }
+
+    /**
+     * 获取模型显示字段
+     *
+     * @return string
+     */
+    public function getModelViewName()
+    {
+        return 'name';
+    }
+
+    /**
+     * 获取模型类
+     *
+     * @return string
+     */
+    public function getModel()
+    {
+        return PetUser::class;
+    }
+
+    /**
+     * 渲染表格
+     *
+     * @return Grid
+     */
+    public function grid(): Grid
+    {
+        return Grid::make(new PetUser(), function (Grid $grid) {
+            $grid->column('id', 'ID')->sortable();
+            $grid->column('name', '宠物名称');
+            $grid->column('grade', '品阶')->display(function ($value) {
+                if ($value instanceof PetGrade) {
+                    $value = $value->value;
+                }
+                
+                $labels = [
+                    PetGrade::FIRST->value => '一品',
+                    PetGrade::SECOND->value => '二品',
+                    PetGrade::THIRD->value => '三品',
+                    PetGrade::FOURTH->value => '四品',
+                ];
+                
+                return $labels[$value] ?? '未知';
+            });
+            $grid->column('level', '等级');
+            $grid->column('status', '状态')->display(function ($value) {
+                if ($value instanceof PetStatus) {
+                    $value = $value->value;
+                }
+                
+                $labels = [
+                    PetStatus::NONE->value => '未知',
+                    PetStatus::NORMAL->value => '正常',
+                    PetStatus::FIGHTING->value => '战斗中',
+                    PetStatus::DEAD->value => '死亡',
+                ];
+                
+                return $labels[$value] ?? '未知';
+            });
+
+            $grid->quickSearch(['id', 'name']);
+
+            $grid->filter(function (Grid\Filter $filter) {
+                $filter->equal('id', 'ID');
+                $filter->like('name', '宠物名称');
+                $filter->equal('grade', '品阶')->select([
+                    PetGrade::FIRST->value => '一品',
+                    PetGrade::SECOND->value => '二品',
+                    PetGrade::THIRD->value => '三品',
+                    PetGrade::FOURTH->value => '四品',
+                ]);
+                $filter->equal('status', '状态')->select([
+                    PetStatus::NONE->value => '未知',
+                    PetStatus::NORMAL->value => '正常',
+                    PetStatus::FIGHTING->value => '战斗中',
+                    PetStatus::DEAD->value => '死亡',
+                ]);
+            });
+
+            $grid->disablePagination(true);
+            $grid->disableActions();
+            $grid->disableBatchActions();
+            $grid->disableCreateButton();
+        });
+    }
+}

+ 12 - 12
app/Module/Pet/AdminControllers/PetBattleTeamMemberController.php

@@ -47,8 +47,8 @@ class PetBattleTeamMemberController extends AdminController
 
             // 添加是否队长标识
             $grid->column('is_leader', '是否队长')->display(function () {
-                return $this->team && $this->team->leader_id == $this->user_id 
-                    ? '<span class="label bg-success">是</span>' 
+                return $this->team && $this->team->leader_id == $this->user_id
+                    ? '<span class="label bg-success">是</span>'
                     : '<span class="label bg-default">否</span>';
             })->label();
 
@@ -99,7 +99,7 @@ class PetBattleTeamMemberController extends AdminController
             $show->field('pet.level', '宠物等级');
             $show->field('power', '战力贡献');
             $show->field('join_time', '加入时间');
-            
+
             // 显示是否队长
             $show->field('is_leader', '是否队长')->as(function () {
                 return $this->team && $this->team->leader_id == $this->user_id ? '是' : '否';
@@ -119,27 +119,27 @@ class PetBattleTeamMemberController extends AdminController
         return Form::make(new PetBattleTeamMemberRepository(), function (Form $form) {
             $helper = new FormHelper($form, $this);
             $form->display('id', 'ID');
-            
+
             $form->select('team_id', '所属队伍')
                 ->options(function () {
                     return \App\Module\Pet\Models\PetBattleTeam::pluck('name', 'id');
                 })
                 ->required();
-                
+
             $form->number('user_id', '用户ID')
                 ->required()
                 ->help('用户的ID');
-                
+
             $helper->selectModelPet('pet_id', '宠物')
                 ->required()
                 ->help('用户参赛的宠物');
-                
+
             $form->number('power', '战力贡献')
                 ->min(0)
                 ->default(0)
                 ->required()
                 ->help('宠物的战力贡献值');
-                
+
             $form->datetime('join_time', '加入时间')
                 ->default(now())
                 ->required();
@@ -148,12 +148,12 @@ class PetBattleTeamMemberController extends AdminController
             $form->saving(function (Form $form) {
                 // 验证用户和宠物的关联性
                 if ($form->pet_id && $form->user_id) {
-                    $pet = \App\Module\Pet\Models\Pet::find($form->pet_id);
+                    $pet = \App\Module\Pet\Models\PetUser::find($form->pet_id);
                     if ($pet && $pet->user_id != $form->user_id) {
                         return $form->error('所选宠物不属于该用户');
                     }
                 }
-                
+
                 // 验证用户在同一赛季中是否已经加入了其他队伍
                 if ($form->team_id && $form->user_id) {
                     $team = \App\Module\Pet\Models\PetBattleTeam::find($form->team_id);
@@ -164,7 +164,7 @@ class PetBattleTeamMemberController extends AdminController
                         })->where('user_id', $form->user_id)
                           ->where('id', '!=', $form->model()->id)
                           ->first();
-                          
+
                         if ($existingMember) {
                             return $form->error('该用户已经加入了本赛季的其他队伍');
                         }
@@ -180,7 +180,7 @@ class PetBattleTeamMemberController extends AdminController
                     if ($team) {
                         $totalPower = PetBattleTeamMember::where('team_id', $team->id)->sum('power');
                         $memberCount = PetBattleTeamMember::where('team_id', $team->id)->count();
-                        
+
                         $team->total_power = $totalPower;
                         $team->member_count = $memberCount;
                         $team->save();

+ 12 - 12
app/Module/Pet/AdminControllers/PetController.php → app/Module/Pet/AdminControllers/PetUserController.php

@@ -4,8 +4,8 @@ namespace App\Module\Pet\AdminControllers;
 
 use App\Module\Pet\Enums\PetGrade;
 use App\Module\Pet\Enums\PetStatus;
-use App\Module\Pet\Models\Pet;
-use App\Module\Pet\Repositorys\PetRepository;
+use App\Module\Pet\Models\PetUser;
+use App\Module\Pet\Repositorys\PetUserRepository;
 use Dcat\Admin\Form;
 use Dcat\Admin\Grid;
 use Dcat\Admin\Show;
@@ -17,12 +17,12 @@ use App\Module\Pet\AdminControllers\Helper\GridHelper;
 use App\Module\Pet\AdminControllers\Helper\ShowHelper;
 
 /**
- * 宠物管理控制器
+ * 宠物用户管理控制器
  *
  * @package App\Module\Pet\AdminControllers
  */
 #[Resource('pet-users', names: 'dcat.admin.pet-users')]
-class PetController extends AdminController
+class PetUserController extends AdminController
 {
     /**
      * 标题
@@ -38,7 +38,7 @@ class PetController extends AdminController
      */
     protected function grid()
     {
-        return Grid::make(new PetRepository(['user']), function (Grid $grid) {
+        return Grid::make(new PetUserRepository(['user']), function (Grid $grid) {
             $helper = new GridHelper($grid, $this);
             $grid->column('id', 'ID')->sortable();
             $grid->column('user_id', '用户ID')->sortable();
@@ -74,7 +74,7 @@ class PetController extends AdminController
      */
     protected function detail($id)
     {
-        return Show::make($id, new PetRepository(['user', 'skillLogs', 'remouldLogs']), function (Show $show) {
+        return Show::make($id, new PetUserRepository(['user', 'skillLogs', 'remouldLogs']), function (Show $show) {
             $helper = new ShowHelper($show, $this);
             $helper->field('id', 'ID');
             $helper->field('user_id', '用户ID');
@@ -132,36 +132,36 @@ class PetController extends AdminController
      */
     protected function form()
     {
-        return Form::make(new PetRepository(), function (Form $form) {
+        return Form::make(new PetUserRepository(), function (Form $form) {
             $helper = new FormHelper($form, $this);
             $form->display('id', 'ID');
             $form->number('user_id', '用户ID')->required();
             $helper->text('name')->required();
-
+            
             $form->select('grade', '品阶')->options([
                 PetGrade::FIRST->value => '一品',
                 PetGrade::SECOND->value => '二品',
                 PetGrade::THIRD->value => '三品',
                 PetGrade::FOURTH->value => '四品',
             ])->required();
-
+            
             $form->number('level', '等级')
                 ->default(1)
                 ->min(1)
                 ->max(30)
                 ->required();
-
+                
             $form->number('experience', '经验值')
                 ->default(0)
                 ->min(0)
                 ->required();
-
+                
             $form->number('stamina', '体力值')
                 ->default(100)
                 ->min(0)
                 ->max(100)
                 ->required();
-
+                
             $form->select('status', '状态')->options([
                 PetStatus::NONE->value => '未知',
                 PetStatus::NORMAL->value => '正常',

+ 0 - 21
app/Module/Pet/Repositorys/PetRepository.php

@@ -1,21 +0,0 @@
-<?php
-
-namespace App\Module\Pet\Repositorys;
-
-use App\Module\Pet\Models\Pet;
-use Dcat\Admin\Repositories\EloquentRepository;
-
-/**
- * 宠物数据仓库
- *
- * 用于处理宠物数据的CRUD操作,提供给后台管理界面使用
- */
-class PetRepository extends EloquentRepository
-{
-    /**
-     * 关联的Eloquent模型类
-     *
-     * @var string
-     */
-    protected $eloquentClass = Pet::class;
-}

+ 21 - 0
app/Module/Pet/Repositorys/PetUserRepository.php

@@ -0,0 +1,21 @@
+<?php
+
+namespace App\Module\Pet\Repositorys;
+
+use App\Module\Pet\Models\PetUser;
+use Dcat\Admin\Repositories\EloquentRepository;
+
+/**
+ * 宠物用户数据仓库
+ *
+ * 用于处理宠物用户数据的CRUD操作,提供给后台管理界面使用
+ */
+class PetUserRepository extends EloquentRepository
+{
+    /**
+     * 关联的Eloquent模型类
+     *
+     * @var string
+     */
+    protected $eloquentClass = PetUser::class;
+}