diff --git a/app/Admin/Controllers/OfflineProductCategoryController.php b/app/Admin/Controllers/OfflineProductCategoryController.php new file mode 100644 index 00000000..cd6edfc2 --- /dev/null +++ b/app/Admin/Controllers/OfflineProductCategoryController.php @@ -0,0 +1,70 @@ +column('id')->sortable(); + $grid->column('name'); + $grid->column('enabled')->filter( + Grid\Column\Filter\In::make([ + 0 => '否', + 1 => '是', + ]) + ) + ->if(function () { + return Admin::user()->can('dcat.admin.offline_product_categories.edit'); + }) + ->then(function (Column $column) { + $column->switch(); + }) + ->else(function (Column $column) { + $column->bool(); + }); + $grid->column('sort')->sortable(); + $grid->column('created_at'); + + $grid->model()->orderBy('id', 'desc'); + + if (Admin::user()->can('dcat.admin.offline_product_categories.create')) { + $grid->disableCreateButton(false); + $grid->enableDialogCreate(); + } + + $grid->actions(function (Grid\Displayers\Actions $actions) { + $actions->quickEdit(Admin::user()->can('dcat.admin.offline_product_categories.edit')); + $actions->delete(Admin::user()->can('dcat.admin.offline_product_categories.destroy')); + }); + + $grid->filter(function (Grid\Filter $filter) { + $filter->panel(); + $filter->like('name')->width(3); + }); + }); + } + + protected function form() + { + return Form::make(new OfflineProductCategoryRepository(), function (Form $form) { + $form->text('name') + ->rules(['bail', 'required', 'string', 'max:255']) + ->setLabelClass(['asterisk']) + ->attribute('required', true); + + $form->switch('enabled') + ->default(true); + + $form->number('sort')->default(0); + }); + } +} diff --git a/app/Admin/Repositories/OfflineProductCategory.php b/app/Admin/Repositories/OfflineProductCategory.php new file mode 100644 index 00000000..cf444c83 --- /dev/null +++ b/app/Admin/Repositories/OfflineProductCategory.php @@ -0,0 +1,11 @@ +put('draw-activities/{draw_activity}/logs/{log}', 'Draw\DrawLogController@update')->name('draw_activities.log_update'); $router->get('draw-activities/{draw_activity}/logs/{log}/edit', 'Draw\DrawLogController@edit')->name('draw_activities.log_edit'); + $router->resource('offline-product-categories', 'OfflineProductCategoryController', [ + 'only' => ['index', 'create', 'store', 'edit', 'update', 'destroy'], + ])->names('offline_product_categories'); + /** 调试接口 **/ // $router->get('test', 'HomeController@test'); diff --git a/app/Endpoint/Api/Http/Controllers/OfflineProductCategoryController.php b/app/Endpoint/Api/Http/Controllers/OfflineProductCategoryController.php new file mode 100644 index 00000000..a8855230 --- /dev/null +++ b/app/Endpoint/Api/Http/Controllers/OfflineProductCategoryController.php @@ -0,0 +1,17 @@ +latest('sort')->get(); + + return OfflineProductCategoryResource::collection($productCategories); + } +} diff --git a/app/Endpoint/Api/Http/Resources/OfflineProductCategoryResource.php b/app/Endpoint/Api/Http/Resources/OfflineProductCategoryResource.php new file mode 100644 index 00000000..39c2189d --- /dev/null +++ b/app/Endpoint/Api/Http/Resources/OfflineProductCategoryResource.php @@ -0,0 +1,16 @@ + $this->id, + 'name' => $this->name, + ]; + } +} diff --git a/app/Endpoint/Api/routes.php b/app/Endpoint/Api/routes.php index 54f5d185..7f0b2c03 100644 --- a/app/Endpoint/Api/routes.php +++ b/app/Endpoint/Api/routes.php @@ -96,6 +96,8 @@ Route::group([ Route::get('draw-activities/{draw_activity}', [App\Endpoint\Api\Http\Controllers\DrawActivityController::class, 'show']); Route::get('draw-activities/{draw_activity}/logs', [App\Endpoint\Api\Http\Controllers\DrawLogController::class, 'index']); + Route::get('offline-product-categories', [App\Endpoint\Api\Http\Controllers\OfflineProductCategoryController::class, 'index']); + //三方登录聚合 Route::group([ 'prefix' =>'socialite', diff --git a/app/Models/OfflineProductCategory.php b/app/Models/OfflineProductCategory.php new file mode 100644 index 00000000..21287dcf --- /dev/null +++ b/app/Models/OfflineProductCategory.php @@ -0,0 +1,31 @@ + false, + 'sort' => 0, + ]; + + protected $casts = [ + 'enabled' => 'bool', + ]; + + protected $fillable = [ + 'name', 'enabled', 'sort', + ]; + + public function scopeEnabled(Builder $builder) + { + $builder->where('enabled', true); + } +} diff --git a/database/migrations/2023_10_29_204407_create_offline_product_categories_table.php b/database/migrations/2023_10_29_204407_create_offline_product_categories_table.php new file mode 100644 index 00000000..c013972c --- /dev/null +++ b/database/migrations/2023_10_29_204407_create_offline_product_categories_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('name')->comment('名称'); + $table->boolean('enabled')->default(0)->comment('启用: 0 否, 1 是'); + $table->integer('sort')->default(0)->comment('排序'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('offline_product_categories'); + } +} diff --git a/database/seeders/AdminMenuSeeder.php b/database/seeders/AdminMenuSeeder.php index 1342ff44..bce0c3d9 100644 --- a/database/seeders/AdminMenuSeeder.php +++ b/database/seeders/AdminMenuSeeder.php @@ -358,6 +358,18 @@ class AdminMenuSeeder extends Seeder ], ], ], + [ + 'title' =>'线下订单', + 'icon' => 'fa fa-cubes', + 'uri' => '', + 'children' => [ + [ + 'title' => '商品分类', + 'icon' => '', + 'uri' => 'offline-product-categories', + ], + ], + ], ]; DB::table('admin_menu')->truncate(); try { diff --git a/database/seeders/AdminPermissionSeeder.php b/database/seeders/AdminPermissionSeeder.php index 49a44e21..9e0f9373 100644 --- a/database/seeders/AdminPermissionSeeder.php +++ b/database/seeders/AdminPermissionSeeder.php @@ -376,6 +376,11 @@ class AdminPermissionSeeder extends Seeder 'curd' => ['index'], 'children' => [], ], + 'offline_product_categories' => [ + 'name' => '线下订单 - 商品分类', + 'curd' => ['index', 'create', 'store', 'edit', 'update', 'destroy'], + 'children' => [], + ], ]; // try { // DB::begintransaction(); diff --git a/resources/lang/zh_CN/offline-product-category.php b/resources/lang/zh_CN/offline-product-category.php new file mode 100644 index 00000000..59383ef7 --- /dev/null +++ b/resources/lang/zh_CN/offline-product-category.php @@ -0,0 +1,15 @@ + [ + 'OfflineProductCategory' => '商品分类', + 'offline-product-categories' => '商品分类', + ], + 'fields' => [ + 'name' => '名称', + 'enabled' => '启用', + 'sort' => '排序', + ], + 'options' => [ + ], +];