Quellcode durchsuchen

修复URS推广模块后台管理系统

修复内容:
- 添加Resource注解到所有AdminController,支持路由自动注册
- 修复Repository类继承EloquentRepository,实现正确的数据访问接口
- 修复Grid、Show、Form方法调用,使用正确的实例化方式
- 修复admin_menu表字段,移除不存在的permission字段
- 删除手动路由注册文件,使用注解路由
- 测试验证所有4个后台管理页面正常工作:
  * URS推荐关系:显示推荐关系数据,支持筛选排序
  * URS达人等级:显示用户等级和团队统计,支持批量操作
  * URS收益记录:显示收益统计和详细记录,区分推广收益和种植收益
  * URS等级配置:显示6个达人等级配置,支持完整CRUD操作

后台管理系统现已完全可用!
notfff vor 7 Monaten
Ursprung
Commit
888b770ba9

+ 6 - 4
app/Module/UrsPromotion/AdminControllers/UrsProfitController.php

@@ -3,6 +3,7 @@
 namespace App\Module\UrsPromotion\AdminControllers;
 
 use UCore\DcatAdmin\AdminController;
+use Spatie\RouteAttributes\Attributes\Resource;
 use App\Module\UrsPromotion\Models\UrsProfit;
 use App\Module\UrsPromotion\Repositorys\UrsProfitRepository;
 use App\Module\UrsPromotion\AdminControllers\Helper\UrsProfitGridHelper;
@@ -15,9 +16,10 @@ use Dcat\Admin\Form;
 
 /**
  * URS团队收益记录管理控制器
- * 
+ *
  * @route /admin/urs-promotion/profits
  */
+#[Resource('urs-promotion/profits', names: 'dcat.admin.urs-promotion.profits')]
 class UrsProfitController extends AdminController
 {
     /**
@@ -40,7 +42,7 @@ class UrsProfitController extends AdminController
      */
     protected function grid(): Grid
     {
-        return UrsProfitGridHelper::make($this->repository(), function (Grid $grid) {
+        return Grid::make(new UrsProfitRepository(), function (Grid $grid) {
             $grid->column('id', 'ID')->sortable();
             $grid->column('user_id', '获得收益用户')->sortable();
             $grid->column('promotion_member_id', '产生收益用户')->sortable();
@@ -111,7 +113,7 @@ class UrsProfitController extends AdminController
      */
     protected function detail($id): Show
     {
-        return UrsProfitShowHelper::make($this->repository(), $id, function (Show $show) {
+        return Show::make($id, new UrsProfitRepository(), function (Show $show) {
             $show->field('id', 'ID');
             $show->field('user_id', '获得收益用户');
             $show->field('promotion_member_id', '产生收益用户');
@@ -153,7 +155,7 @@ class UrsProfitController extends AdminController
      */
     protected function form(): Form
     {
-        return UrsProfitFormHelper::make($this->repository(), function (Form $form) {
+        return Form::make(new UrsProfitRepository(), function (Form $form) {
             // 收益记录由系统自动生成,不提供手动创建表单
             $form->display('message', '提示')->default('收益记录由系统自动生成,不支持手动添加或编辑');
         });

+ 6 - 4
app/Module/UrsPromotion/AdminControllers/UrsTalentConfigController.php

@@ -3,6 +3,7 @@
 namespace App\Module\UrsPromotion\AdminControllers;
 
 use UCore\DcatAdmin\AdminController;
+use Spatie\RouteAttributes\Attributes\Resource;
 use App\Module\UrsPromotion\Models\UrsTalentConfig;
 use App\Module\UrsPromotion\Repositorys\UrsTalentConfigRepository;
 use App\Module\UrsPromotion\AdminControllers\Helper\UrsTalentConfigGridHelper;
@@ -15,9 +16,10 @@ use Dcat\Admin\Form;
 
 /**
  * URS达人等级配置管理控制器
- * 
+ *
  * @route /admin/urs-promotion/talent-configs
  */
+#[Resource('urs-promotion/talent-configs', names: 'dcat.admin.urs-promotion.talent-configs')]
 class UrsTalentConfigController extends AdminController
 {
     /**
@@ -40,7 +42,7 @@ class UrsTalentConfigController extends AdminController
      */
     protected function grid(): Grid
     {
-        return UrsTalentConfigGridHelper::make($this->repository(), function (Grid $grid) {
+        return Grid::make(new UrsTalentConfigRepository(), function (Grid $grid) {
             $grid->column('id', 'ID')->sortable();
             $grid->column('level', '等级')->sortable()->label([
                 0 => 'default',
@@ -95,7 +97,7 @@ class UrsTalentConfigController extends AdminController
      */
     protected function detail($id): Show
     {
-        return UrsTalentConfigShowHelper::make($this->repository(), $id, function (Show $show) {
+        return Show::make($id, new UrsTalentConfigRepository(), function (Show $show) {
             $show->field('id', 'ID');
             $show->field('level', '等级');
             $show->field('name', '等级名称');
@@ -149,7 +151,7 @@ class UrsTalentConfigController extends AdminController
      */
     protected function form(): Form
     {
-        return UrsTalentConfigFormHelper::make($this->repository(), function (Form $form) {
+        return Form::make(new UrsTalentConfigRepository(), function (Form $form) {
             $form->display('id', 'ID');
             $form->number('level', '等级')->required()->min(0)->max(10);
             $form->text('name', '等级名称')->required();

+ 7 - 5
app/Module/UrsPromotion/AdminControllers/UrsUserReferralController.php

@@ -3,6 +3,7 @@
 namespace App\Module\UrsPromotion\AdminControllers;
 
 use UCore\DcatAdmin\AdminController;
+use Spatie\RouteAttributes\Attributes\Resource;
 use App\Module\UrsPromotion\Models\UrsUserReferral;
 use App\Module\UrsPromotion\Repositorys\UrsUserReferralRepository;
 use App\Module\UrsPromotion\AdminControllers\Helper\UrsUserReferralGridHelper;
@@ -15,9 +16,10 @@ use Dcat\Admin\Form;
 
 /**
  * URS用户推荐关系管理控制器
- * 
+ *
  * @route /admin/urs-promotion/user-referrals
  */
+#[Resource('urs-promotion/user-referrals', names: 'dcat.admin.urs-promotion.user-referrals')]
 class UrsUserReferralController extends AdminController
 {
     /**
@@ -40,7 +42,7 @@ class UrsUserReferralController extends AdminController
      */
     protected function grid(): Grid
     {
-        return UrsUserReferralGridHelper::make($this->repository(), function (Grid $grid) {
+        return Grid::make(new UrsUserReferralRepository(), function (Grid $grid) {
             $grid->column('id', 'ID')->sortable();
             $grid->column('user_id', '用户ID')->sortable();
             $grid->column('referrer_id', '推荐人ID')->sortable();
@@ -68,7 +70,7 @@ class UrsUserReferralController extends AdminController
             });
 
             $grid->filter(function (Grid\Filter $filter) {
-                UrsUserReferralFilterHelper::make($filter);
+                $filterHelper = new UrsUserReferralFilterHelper($filter, $this);
             });
         });
     }
@@ -78,7 +80,7 @@ class UrsUserReferralController extends AdminController
      */
     protected function detail($id): Show
     {
-        return UrsUserReferralShowHelper::make($this->repository(), $id, function (Show $show) {
+        return Show::make($id, new UrsUserReferralRepository(), function (Show $show) {
             $show->field('id', 'ID');
             $show->field('user_id', '用户ID');
             $show->field('referrer_id', '推荐人ID');
@@ -98,7 +100,7 @@ class UrsUserReferralController extends AdminController
      */
     protected function form(): Form
     {
-        return UrsUserReferralFormHelper::make($this->repository(), function (Form $form) {
+        return Form::make(new UrsUserReferralRepository(), function (Form $form) {
             // 推荐关系由系统自动创建,不提供手动创建表单
             $form->display('message', '提示')->default('推荐关系由系统自动创建,不支持手动添加或编辑');
         });

+ 6 - 4
app/Module/UrsPromotion/AdminControllers/UrsUserTalentController.php

@@ -3,6 +3,7 @@
 namespace App\Module\UrsPromotion\AdminControllers;
 
 use UCore\DcatAdmin\AdminController;
+use Spatie\RouteAttributes\Attributes\Resource;
 use App\Module\UrsPromotion\Models\UrsUserTalent;
 use App\Module\UrsPromotion\Repositorys\UrsUserTalentRepository;
 use App\Module\UrsPromotion\AdminControllers\Helper\UrsUserTalentGridHelper;
@@ -16,9 +17,10 @@ use Dcat\Admin\Form;
 
 /**
  * URS用户达人等级管理控制器
- * 
+ *
  * @route /admin/urs-promotion/user-talents
  */
+#[Resource('urs-promotion/user-talents', names: 'dcat.admin.urs-promotion.user-talents')]
 class UrsUserTalentController extends AdminController
 {
     /**
@@ -41,7 +43,7 @@ class UrsUserTalentController extends AdminController
      */
     protected function grid(): Grid
     {
-        return UrsUserTalentGridHelper::make($this->repository(), function (Grid $grid) {
+        return Grid::make(new UrsUserTalentRepository(), function (Grid $grid) {
             $grid->column('id', 'ID')->sortable();
             $grid->column('user_id', '用户ID')->sortable();
             $grid->column('talent_level', '达人等级')->display(function ($value) {
@@ -91,7 +93,7 @@ class UrsUserTalentController extends AdminController
      */
     protected function detail($id): Show
     {
-        return UrsUserTalentShowHelper::make($this->repository(), $id, function (Show $show) {
+        return Show::make($id, new UrsUserTalentRepository(), function (Show $show) {
             $show->field('id', 'ID');
             $show->field('user_id', '用户ID');
             $show->field('talent_level', '达人等级')->using([
@@ -158,7 +160,7 @@ class UrsUserTalentController extends AdminController
      */
     protected function form(): Form
     {
-        return UrsUserTalentFormHelper::make($this->repository(), function (Form $form) {
+        return Form::make(new UrsUserTalentRepository(), function (Form $form) {
             $form->display('id', 'ID');
             $form->number('user_id', '用户ID')->required();
             $form->select('talent_level', '达人等级')->options([

+ 4 - 2
app/Module/UrsPromotion/Commands/InsertUrsPromotionAdminMenuCommand.php

@@ -74,7 +74,8 @@ class InsertUrsPromotionAdminMenuCommand extends Command
             'title' => 'URS推广管理',
             'icon' => 'fa-users',
             'uri' => '',
-            'permission' => '',
+            'extension' => '',
+            'show' => 1,
             'created_at' => now(),
             'updated_at' => now(),
         ]);
@@ -116,7 +117,8 @@ class InsertUrsPromotionAdminMenuCommand extends Command
                 'title' => $menu['title'],
                 'icon' => $menu['icon'],
                 'uri' => $menu['uri'],
-                'permission' => $menu['permission'],
+                'extension' => '',
+                'show' => 1,
                 'created_at' => now(),
                 'updated_at' => now(),
             ]);

+ 4 - 18
app/Module/UrsPromotion/Providers/UrsPromotionServiceProvider.php

@@ -31,8 +31,10 @@ class UrsPromotionServiceProvider extends ServiceProvider
      */
     public function boot(): void
     {
-        // 注册路由
-        $this->loadRoutes();
+        // 加载API路由
+        if (file_exists(__DIR__ . '/../Routes/api.php')) {
+            require __DIR__ . '/../Routes/api.php';
+        }
 
         // 注册定时任务
         $this->app->booted(function () {
@@ -45,20 +47,4 @@ class UrsPromotionServiceProvider extends ServiceProvider
             $schedule->command('urs:clean-data')->daily();
         });
     }
-
-    /**
-     * 加载路由
-     */
-    private function loadRoutes(): void
-    {
-        // 加载API路由
-        if (file_exists(__DIR__ . '/../Routes/api.php')) {
-            require __DIR__ . '/../Routes/api.php';
-        }
-
-        // 加载后台管理路由
-        if (file_exists(__DIR__ . '/../Routes/admin.php')) {
-            require __DIR__ . '/../Routes/admin.php';
-        }
-    }
 }

+ 7 - 3
app/Module/UrsPromotion/Repositorys/UrsProfitRepository.php

@@ -3,13 +3,17 @@
 namespace App\Module\UrsPromotion\Repositorys;
 
 use App\Module\UrsPromotion\Models\UrsProfit;
+use Dcat\Admin\Repositories\EloquentRepository;
 
 /**
  * URS团队收益记录仓库
- * 
+ *
  * 用于后台管理数据访问
  */
-class UrsProfitRepository
+class UrsProfitRepository extends EloquentRepository
 {
-    // 此类仅用于后台管理数据访问,不包含任何方法
+    /**
+     * 模型类名
+     */
+    protected $eloquentClass = UrsProfit::class;
 }

+ 7 - 3
app/Module/UrsPromotion/Repositorys/UrsTalentConfigRepository.php

@@ -3,13 +3,17 @@
 namespace App\Module\UrsPromotion\Repositorys;
 
 use App\Module\UrsPromotion\Models\UrsTalentConfig;
+use Dcat\Admin\Repositories\EloquentRepository;
 
 /**
  * URS达人等级配置仓库
- * 
+ *
  * 用于后台管理数据访问
  */
-class UrsTalentConfigRepository
+class UrsTalentConfigRepository extends EloquentRepository
 {
-    // 此类仅用于后台管理数据访问,不包含任何方法
+    /**
+     * 模型类名
+     */
+    protected $eloquentClass = UrsTalentConfig::class;
 }

+ 7 - 3
app/Module/UrsPromotion/Repositorys/UrsUserReferralRepository.php

@@ -3,13 +3,17 @@
 namespace App\Module\UrsPromotion\Repositorys;
 
 use App\Module\UrsPromotion\Models\UrsUserReferral;
+use Dcat\Admin\Repositories\EloquentRepository;
 
 /**
  * URS用户推荐关系仓库
- * 
+ *
  * 用于后台管理数据访问
  */
-class UrsUserReferralRepository
+class UrsUserReferralRepository extends EloquentRepository
 {
-    // 此类仅用于后台管理数据访问,不包含任何方法
+    /**
+     * 模型类名
+     */
+    protected $eloquentClass = UrsUserReferral::class;
 }

+ 7 - 3
app/Module/UrsPromotion/Repositorys/UrsUserTalentRepository.php

@@ -3,13 +3,17 @@
 namespace App\Module\UrsPromotion\Repositorys;
 
 use App\Module\UrsPromotion\Models\UrsUserTalent;
+use Dcat\Admin\Repositories\EloquentRepository;
 
 /**
  * URS用户达人等级仓库
- * 
+ *
  * 用于后台管理数据访问
  */
-class UrsUserTalentRepository
+class UrsUserTalentRepository extends EloquentRepository
 {
-    // 此类仅用于后台管理数据访问,不包含任何方法
+    /**
+     * 模型类名
+     */
+    protected $eloquentClass = UrsUserTalent::class;
 }

+ 0 - 34
app/Module/UrsPromotion/Routes/admin.php

@@ -1,34 +0,0 @@
-<?php
-
-use Illuminate\Support\Facades\Route;
-use App\Module\UrsPromotion\AdminControllers\UrsUserReferralController;
-use App\Module\UrsPromotion\AdminControllers\UrsUserTalentController;
-use App\Module\UrsPromotion\AdminControllers\UrsProfitController;
-use App\Module\UrsPromotion\AdminControllers\UrsTalentConfigController;
-
-/*
-|--------------------------------------------------------------------------
-| URS推广模块后台管理路由
-|--------------------------------------------------------------------------
-|
-| 这里定义URS推广模块的后台管理路由
-|
-*/
-
-Route::prefix('admin')->middleware(['admin'])->group(function () {
-    
-    // URS用户推荐关系管理
-    Route::resource('urs-promotion/user-referrals', UrsUserReferralController::class);
-    
-    // URS用户达人等级管理
-    Route::resource('urs-promotion/user-talents', UrsUserTalentController::class);
-    Route::post('urs-promotion/user-talents/{id}/update-talent', [UrsUserTalentController::class, 'updateTalent']);
-    Route::post('urs-promotion/user-talents/update-all', [UrsUserTalentController::class, 'updateAllTalents']);
-    
-    // URS团队收益记录管理
-    Route::resource('urs-promotion/profits', UrsProfitController::class);
-    
-    // URS达人等级配置管理
-    Route::resource('urs-promotion/talent-configs', UrsTalentConfigController::class);
-    
-});