Forráskód Böngészése

重构Farm模块控制器:统一使用Helper类处理表单和显示逻辑

Your Name 8 hónapja
szülő
commit
f700c46df9

+ 30 - 42
app/Module/Farm/AdminControllers/FarmCropController.php

@@ -2,7 +2,10 @@
 
 namespace App\Module\Farm\AdminControllers;
 
+use App\Module\Farm\AdminControllers\Helper\FilterHelper;
+use App\Module\Farm\AdminControllers\Helper\FormHelper;
 use App\Module\Farm\AdminControllers\Helper\GridHelper;
+use App\Module\Farm\AdminControllers\Helper\ShowHelper;
 use App\Module\Farm\Enums\GROWTH_STAGE;
 use App\Module\Farm\Repositories\FarmCropRepository;
 use App\Module\Farm\Repositories\FarmSeedRepository;
@@ -42,38 +45,29 @@ class FarmCropController extends AdminController
         return Grid::make(new FarmCropRepository(), function (Grid $grid) {
             $helper = new GridHelper($grid, $this);
 
-            $grid->column('id', 'ID')->sortable();
+            $helper->columnId();
             $grid->column('land_id', '土地ID')->sortable();
-            $grid->column('user_id', '用户ID')->sortable();
+            $helper->columnUserId();
             $grid->column('seed_id', '种子ID')->sortable();
             $grid->column('plant_time', '种植时间')->sortable();
-            $grid->column('growth_stage', '生长阶段')->display(function ($value) {
-                return GROWTH_STAGE::getName($value);
-            })->sortable();
+            $helper->columnGrowthStage();
             $grid->column('stage_end_time', '阶段结束时间')->sortable();
-            $grid->column('fertilized', '已施肥')->bool()->sortable();
-            $grid->column('created_at', '创建时间')->sortable();
-            $grid->column('updated_at', '更新时间')->sortable();
+            $helper->columnFertilized();
+            $helper->columnCreatedAt();
+            $helper->columnUpdatedAt();
 
             $grid->filter(function (Grid\Filter $filter) {
-                $filter->equal('id', 'ID');
+                $filterHelper = new FilterHelper($filter, $this);
+
+                $filterHelper->equalId();
                 $filter->equal('land_id', '土地ID');
-                $filter->equal('user_id', '用户ID');
+                $filterHelper->equalUserId();
                 $filter->equal('seed_id', '种子ID');
-                $filter->equal('growth_stage', '生长阶段')->select([
-                    GROWTH_STAGE::SEED => GROWTH_STAGE::getName(GROWTH_STAGE::SEED),
-                    GROWTH_STAGE::SPROUT => GROWTH_STAGE::getName(GROWTH_STAGE::SPROUT),
-                    GROWTH_STAGE::GROWTH => GROWTH_STAGE::getName(GROWTH_STAGE::GROWTH),
-                    GROWTH_STAGE::MATURE => GROWTH_STAGE::getName(GROWTH_STAGE::MATURE),
-                    GROWTH_STAGE::WITHERED => GROWTH_STAGE::getName(GROWTH_STAGE::WITHERED),
-                ]);
-                $filter->between('plant_time', '种植时间')->datetime();
-                $filter->between('stage_end_time', '阶段结束时间')->datetime();
-                $filter->equal('fertilized', '已施肥')->radio([
-                    1 => '是',
-                    0 => '否',
-                ]);
-                $filter->between('created_at', '创建时间')->datetime();
+                $filterHelper->equalGrowthStage();
+                $filterHelper->betweenDatetime('plant_time', '种植时间');
+                $filterHelper->betweenDatetime('stage_end_time', '阶段结束时间');
+                $filterHelper->equalFertilized();
+                $filterHelper->betweenDatetime('created_at', '创建时间');
             });
         });
     }
@@ -87,19 +81,17 @@ class FarmCropController extends AdminController
     protected function detail($id)
     {
         return Show::make($id, new FarmCropRepository(), function (Show $show) {
+            $helper = new ShowHelper($show, $this);
+
             $show->field('id', 'ID');
             $show->field('land_id', '土地ID');
-            $show->field('user_id', '用户ID');
+            $helper->fieldUserId('user_id', '用户ID');
             $show->field('seed_id', '种子ID');
             $show->field('plant_time', '种植时间');
-            $show->field('growth_stage', '生长阶段')->as(function ($value) {
-                return GROWTH_STAGE::getName($value);
-            });
+            $helper->fieldGrowthStage('growth_stage', '生长阶段');
             $show->field('stage_end_time', '阶段结束时间');
-            $show->field('disasters', '灾害情况')->json();
-            $show->field('fertilized', '已施肥')->as(function ($value) {
-                return $value ? '是' : '否';
-            });
+            $helper->fieldModelCatsJson('disasters', '灾害情况');
+            $helper->fieldFertilized('fertilized', '已施肥');
             $show->field('created_at', '创建时间');
             $show->field('updated_at', '更新时间');
         });
@@ -113,9 +105,11 @@ class FarmCropController extends AdminController
     protected function form()
     {
         return Form::make(new FarmCropRepository(), function (Form $form) {
+            $helper = new FormHelper($form, $this);
+
             $form->display('id', 'ID');
             $form->text('land_id', '土地ID')->required()->rules('required|integer');
-            $form->text('user_id', '用户ID')->required()->rules('required|integer');
+            $helper->userId('user_id', '用户ID');
 
             // 获取所有种子选项
             $seedRepository = new FarmSeedRepository();
@@ -123,16 +117,10 @@ class FarmCropController extends AdminController
 
             $form->select('seed_id', '种子ID')->options($seedOptions)->required();
             $form->datetime('plant_time', '种植时间')->required();
-            $form->select('growth_stage', '生长阶段')->options([
-                GROWTH_STAGE::SEED => GROWTH_STAGE::getName(GROWTH_STAGE::SEED),
-                GROWTH_STAGE::SPROUT => GROWTH_STAGE::getName(GROWTH_STAGE::SPROUT),
-                GROWTH_STAGE::GROWTH => GROWTH_STAGE::getName(GROWTH_STAGE::GROWTH),
-                GROWTH_STAGE::MATURE => GROWTH_STAGE::getName(GROWTH_STAGE::MATURE),
-                GROWTH_STAGE::WITHERED => GROWTH_STAGE::getName(GROWTH_STAGE::WITHERED),
-            ])->required();
+            $helper->selectGrowthStage('growth_stage', '生长阶段');
             $form->datetime('stage_end_time', '阶段结束时间');
-            $form->textarea('disasters', '灾害情况')->json();
-            $form->switch('fertilized', '已施肥')->default(false);
+            $helper->tableDisasters('disasters', '灾害情况');
+            $helper->switchFertilized();
 
             $form->display('created_at', '创建时间');
             $form->display('updated_at', '更新时间');

+ 23 - 28
app/Module/Farm/AdminControllers/FarmGodBuffController.php

@@ -2,7 +2,10 @@
 
 namespace App\Module\Farm\AdminControllers;
 
+use App\Module\Farm\AdminControllers\Helper\FilterHelper;
+use App\Module\Farm\AdminControllers\Helper\FormHelper;
 use App\Module\Farm\AdminControllers\Helper\GridHelper;
+use App\Module\Farm\AdminControllers\Helper\ShowHelper;
 use App\Module\Farm\Enums\BUFF_TYPE;
 use App\Module\Farm\Repositories\FarmGodBuffRepository;
 use Dcat\Admin\Form;
@@ -41,26 +44,21 @@ class FarmGodBuffController extends AdminController
         return Grid::make(new FarmGodBuffRepository(), function (Grid $grid) {
             $helper = new GridHelper($grid, $this);
 
-            $grid->column('id', 'ID')->sortable();
-            $grid->column('user_id', '用户ID')->sortable();
-            $grid->column('buff_type', '加持类型')->display(function ($value) {
-                return BUFF_TYPE::getName($value);
-            })->sortable();
+            $helper->columnId();
+            $helper->columnUserId();
+            $helper->columnBuffType();
             $grid->column('expire_time', '过期时间')->sortable();
-            $grid->column('created_at', '创建时间')->sortable();
-            $grid->column('updated_at', '更新时间')->sortable();
+            $helper->columnCreatedAt();
+            $helper->columnUpdatedAt();
 
             $grid->filter(function (Grid\Filter $filter) {
-                $filter->equal('id', 'ID');
-                $filter->equal('user_id', '用户ID');
-                $filter->equal('buff_type', '加持类型')->select([
-                    BUFF_TYPE::HARVEST_GOD => BUFF_TYPE::getName(BUFF_TYPE::HARVEST_GOD),
-                    BUFF_TYPE::RAIN_GOD => BUFF_TYPE::getName(BUFF_TYPE::RAIN_GOD),
-                    BUFF_TYPE::WEED_KILLER_GOD => BUFF_TYPE::getName(BUFF_TYPE::WEED_KILLER_GOD),
-                    BUFF_TYPE::PEST_CLEANER_GOD => BUFF_TYPE::getName(BUFF_TYPE::PEST_CLEANER_GOD),
-                ]);
-                $filter->between('expire_time', '过期时间')->datetime();
-                $filter->between('created_at', '创建时间')->datetime();
+                $filterHelper = new FilterHelper($filter, $this);
+
+                $filterHelper->equalId();
+                $filterHelper->equalUserId();
+                $filterHelper->equalBuffType();
+                $filterHelper->betweenDatetime('expire_time', '过期时间');
+                $filterHelper->betweenDatetime('created_at', '创建时间');
             });
         });
     }
@@ -74,11 +72,11 @@ class FarmGodBuffController extends AdminController
     protected function detail($id)
     {
         return Show::make($id, new FarmGodBuffRepository(), function (Show $show) {
+            $helper = new ShowHelper($show, $this);
+
             $show->field('id', 'ID');
-            $show->field('user_id', '用户ID');
-            $show->field('buff_type', '加持类型')->as(function ($value) {
-                return BUFF_TYPE::getName($value);
-            });
+            $helper->fieldUserId('user_id', '用户ID');
+            $helper->fieldBuffType('buff_type', '加持类型');
             $show->field('expire_time', '过期时间');
             $show->field('created_at', '创建时间');
             $show->field('updated_at', '更新时间');
@@ -93,14 +91,11 @@ class FarmGodBuffController extends AdminController
     protected function form()
     {
         return Form::make(new FarmGodBuffRepository(), function (Form $form) {
+            $helper = new FormHelper($form, $this);
+
             $form->display('id', 'ID');
-            $form->text('user_id', '用户ID')->required()->rules('required|integer');
-            $form->select('buff_type', '加持类型')->options([
-                BUFF_TYPE::HARVEST_GOD => BUFF_TYPE::getName(BUFF_TYPE::HARVEST_GOD),
-                BUFF_TYPE::RAIN_GOD => BUFF_TYPE::getName(BUFF_TYPE::RAIN_GOD),
-                BUFF_TYPE::WEED_KILLER_GOD => BUFF_TYPE::getName(BUFF_TYPE::WEED_KILLER_GOD),
-                BUFF_TYPE::PEST_CLEANER_GOD => BUFF_TYPE::getName(BUFF_TYPE::PEST_CLEANER_GOD),
-            ])->required();
+            $helper->userId('user_id', '用户ID');
+            $helper->selectBuffType();
             $form->datetime('expire_time', '过期时间')->required();
 
             $form->display('created_at', '创建时间');

+ 26 - 51
app/Module/Farm/AdminControllers/FarmLandController.php

@@ -2,7 +2,10 @@
 
 namespace App\Module\Farm\AdminControllers;
 
+use App\Module\Farm\AdminControllers\Helper\FilterHelper;
+use App\Module\Farm\AdminControllers\Helper\FormHelper;
 use App\Module\Farm\AdminControllers\Helper\GridHelper;
+use App\Module\Farm\AdminControllers\Helper\ShowHelper;
 use App\Module\Farm\Enums\LAND_STATUS;
 use App\Module\Farm\Enums\LAND_TYPE;
 use App\Module\Farm\Repositories\FarmLandRepository;
@@ -42,38 +45,23 @@ class FarmLandController extends AdminController
         return Grid::make(new FarmLandRepository(), function (Grid $grid) {
             $helper = new GridHelper($grid, $this);
 
-            $grid->column('id', 'ID')->sortable();
-            $grid->column('user_id', '用户ID')->sortable();
+            $helper->columnId();
+            $helper->columnUserId();
             $grid->column('position', '位置')->sortable();
-            $grid->column('land_type', '土地类型')->display(function ($value) {
-                return LAND_TYPE::getName($value);
-            })->sortable();
-            $grid->column('status', '状态')->display(function ($value) {
-                return LAND_STATUS::getName($value);
-            })->sortable();
-            $grid->column('created_at', '创建时间')->sortable();
-            $grid->column('updated_at', '更新时间')->sortable();
+            $helper->columnLandType();
+            $helper->columnLandStatus();
+            $helper->columnCreatedAt();
+            $helper->columnUpdatedAt();
 
             $grid->filter(function (Grid\Filter $filter) {
-                $filter->equal('id', 'ID');
-                $filter->equal('user_id', '用户ID');
+                $filterHelper = new FilterHelper($filter, $this);
+
+                $filterHelper->equalId();
+                $filterHelper->equalUserId();
                 $filter->equal('position', '位置');
-                $filter->equal('land_type', '土地类型')->select([
-                    LAND_TYPE::NORMAL => LAND_TYPE::getName(LAND_TYPE::NORMAL),
-                    LAND_TYPE::RED => LAND_TYPE::getName(LAND_TYPE::RED),
-                    LAND_TYPE::BLACK => LAND_TYPE::getName(LAND_TYPE::BLACK),
-                    LAND_TYPE::GOLD => LAND_TYPE::getName(LAND_TYPE::GOLD),
-                    LAND_TYPE::BLUE => LAND_TYPE::getName(LAND_TYPE::BLUE),
-                    LAND_TYPE::PURPLE => LAND_TYPE::getName(LAND_TYPE::PURPLE),
-                ]);
-                $filter->equal('status', '状态')->select([
-                    LAND_STATUS::IDLE => LAND_STATUS::getName(LAND_STATUS::IDLE),
-                    LAND_STATUS::PLANTING => LAND_STATUS::getName(LAND_STATUS::PLANTING),
-                    LAND_STATUS::DISASTER => LAND_STATUS::getName(LAND_STATUS::DISASTER),
-                    LAND_STATUS::HARVESTABLE => LAND_STATUS::getName(LAND_STATUS::HARVESTABLE),
-                    LAND_STATUS::WITHERED => LAND_STATUS::getName(LAND_STATUS::WITHERED),
-                ]);
-                $filter->between('created_at', '创建时间')->datetime();
+                $filterHelper->equalLandType();
+                $filterHelper->equalLandStatus();
+                $filterHelper->betweenDatetime('created_at', '创建时间');
             });
         });
     }
@@ -87,15 +75,13 @@ class FarmLandController extends AdminController
     protected function detail($id)
     {
         return Show::make($id, new FarmLandRepository(), function (Show $show) {
+            $helper = new ShowHelper($show, $this);
+
             $show->field('id', 'ID');
-            $show->field('user_id', '用户ID');
+            $helper->fieldUserId('user_id', '用户ID');
             $show->field('position', '位置');
-            $show->field('land_type', '土地类型')->as(function ($value) {
-                return LAND_TYPE::getName($value);
-            });
-            $show->field('status', '状态')->as(function ($value) {
-                return LAND_STATUS::getName($value);
-            });
+            $helper->fieldLandType('land_type', '土地类型');
+            $helper->fieldLandStatus('status', '状态');
             $show->field('created_at', '创建时间');
             $show->field('updated_at', '更新时间');
         });
@@ -109,24 +95,13 @@ class FarmLandController extends AdminController
     protected function form()
     {
         return Form::make(new FarmLandRepository(), function (Form $form) {
+            $helper = new FormHelper($form, $this);
+
             $form->display('id', 'ID');
-            $form->text('user_id', '用户ID')->required()->rules('required|integer');
+            $helper->userId('user_id', '用户ID');
             $form->number('position', '位置')->min(1)->max(20)->required();
-            $form->select('land_type', '土地类型')->options([
-                LAND_TYPE::NORMAL => LAND_TYPE::getName(LAND_TYPE::NORMAL),
-                LAND_TYPE::RED => LAND_TYPE::getName(LAND_TYPE::RED),
-                LAND_TYPE::BLACK => LAND_TYPE::getName(LAND_TYPE::BLACK),
-                LAND_TYPE::GOLD => LAND_TYPE::getName(LAND_TYPE::GOLD),
-                LAND_TYPE::BLUE => LAND_TYPE::getName(LAND_TYPE::BLUE),
-                LAND_TYPE::PURPLE => LAND_TYPE::getName(LAND_TYPE::PURPLE),
-            ])->required();
-            $form->select('status', '状态')->options([
-                LAND_STATUS::IDLE => LAND_STATUS::getName(LAND_STATUS::IDLE),
-                LAND_STATUS::PLANTING => LAND_STATUS::getName(LAND_STATUS::PLANTING),
-                LAND_STATUS::DISASTER => LAND_STATUS::getName(LAND_STATUS::DISASTER),
-                LAND_STATUS::HARVESTABLE => LAND_STATUS::getName(LAND_STATUS::HARVESTABLE),
-                LAND_STATUS::WITHERED => LAND_STATUS::getName(LAND_STATUS::WITHERED),
-            ])->required();
+            $helper->selectLandType('land_type', '土地类型');
+            $helper->selectLandStatus('status', '状态');
 
             $form->display('created_at', '创建时间');
             $form->display('updated_at', '更新时间');

+ 18 - 9
app/Module/Farm/AdminControllers/FarmLandUpgradeConfigController.php

@@ -2,7 +2,10 @@
 
 namespace App\Module\Farm\AdminControllers;
 
+use App\Module\Farm\AdminControllers\Helper\FilterHelper;
+use App\Module\Farm\AdminControllers\Helper\FormHelper;
 use App\Module\Farm\AdminControllers\Helper\GridHelper;
+use App\Module\Farm\AdminControllers\Helper\ShowHelper;
 use App\Module\Farm\Repositories\FarmLandTypeRepository;
 use App\Module\Farm\Repositories\FarmLandUpgradeConfigRepository;
 use Dcat\Admin\Form;
@@ -41,17 +44,19 @@ class FarmLandUpgradeConfigController extends AdminController
         return Grid::make(new FarmLandUpgradeConfigRepository(), function (Grid $grid) {
             $helper = new GridHelper($grid, $this);
 
-            $grid->column('id', 'ID')->sortable();
+            $helper->columnId();
             $grid->column('from_type_id', '起始土地类型ID')->sortable();
             $grid->column('to_type_id', '目标土地类型ID')->sortable();
-            $grid->column('created_at', '创建时间')->sortable();
-            $grid->column('updated_at', '更新时间')->sortable();
+            $helper->columnCreatedAt();
+            $helper->columnUpdatedAt();
 
             $grid->filter(function (Grid\Filter $filter) {
-                $filter->equal('id', 'ID');
+                $filterHelper = new FilterHelper($filter, $this);
+
+                $filterHelper->equalId();
                 $filter->equal('from_type_id', '起始土地类型ID');
                 $filter->equal('to_type_id', '目标土地类型ID');
-                $filter->between('created_at', '创建时间')->datetime();
+                $filterHelper->betweenDatetime('created_at', '创建时间');
             });
         });
     }
@@ -65,11 +70,13 @@ class FarmLandUpgradeConfigController extends AdminController
     protected function detail($id)
     {
         return Show::make($id, new FarmLandUpgradeConfigRepository(), function (Show $show) {
+            $helper = new ShowHelper($show, $this);
+
             $show->field('id', 'ID');
             $show->field('from_type_id', '起始土地类型ID');
             $show->field('to_type_id', '目标土地类型ID');
-            $show->field('materials', '升级所需材料')->json();
-            $show->field('conditions', '其他升级条件')->json();
+            $helper->fieldModelCatsJson('materials', '升级所需材料');
+            $helper->fieldModelCatsJson('conditions', '其他升级条件');
             $show->field('created_at', '创建时间');
             $show->field('updated_at', '更新时间');
         });
@@ -83,6 +90,8 @@ class FarmLandUpgradeConfigController extends AdminController
     protected function form()
     {
         return Form::make(new FarmLandUpgradeConfigRepository(), function (Form $form) {
+            $helper = new FormHelper($form, $this);
+
             $form->display('id', 'ID');
 
             // 获取所有土地类型选项
@@ -91,8 +100,8 @@ class FarmLandUpgradeConfigController extends AdminController
 
             $form->select('from_type_id', '起始土地类型ID')->options($landTypeOptions)->required();
             $form->select('to_type_id', '目标土地类型ID')->options($landTypeOptions)->required();
-            $form->textarea('materials', '升级所需材料')->json()->required();
-            $form->textarea('conditions', '其他升级条件')->json();
+            $helper->tableMaterials('materials', '升级所需材料');
+            $helper->tableConditions('conditions', '其他升级条件');
 
             $form->display('created_at', '创建时间');
             $form->display('updated_at', '更新时间');