6
0
Fork 0

商品分类

base
Jing Li 2023-10-30 13:30:51 +08:00
parent 74735050a4
commit 7e62970561
11 changed files with 217 additions and 0 deletions

View File

@ -0,0 +1,70 @@
<?php
namespace App\Admin\Controllers;
use App\Admin\Repositories\OfflineProductCategory as OfflineProductCategoryRepository;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Grid\Column;
use Dcat\Admin\Http\Controllers\AdminController;
class OfflineProductCategoryController extends AdminController
{
protected function grid()
{
return Grid::make(new OfflineProductCategoryRepository(), function (Grid $grid) {
$grid->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);
});
}
}

View File

@ -0,0 +1,11 @@
<?php
namespace App\Admin\Repositories;
use App\Models\OfflineProductCategory as Model;
use Dcat\Admin\Repositories\EloquentRepository;
class OfflineProductCategory extends EloquentRepository
{
protected $eloquentClass = Model::class;
}

View File

@ -182,6 +182,10 @@ Route::group([
$router->put('draw-activities/{draw_activity}/logs/{log}', 'Draw\DrawLogController@update')->name('draw_activities.log_update'); $router->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->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'); // $router->get('test', 'HomeController@test');

View File

@ -0,0 +1,17 @@
<?php
namespace App\Endpoint\Api\Http\Controllers;
use App\Endpoint\Api\Http\Controllers\Controller;
use App\Endpoint\Api\Http\Resources\OfflineProductCategoryResource;
use App\Models\OfflineProductCategory;
class OfflineProductCategoryController extends Controller
{
public function index()
{
$productCategories = OfflineProductCategory::enabled()->latest('sort')->get();
return OfflineProductCategoryResource::collection($productCategories);
}
}

View File

@ -0,0 +1,16 @@
<?php
namespace App\Endpoint\Api\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class OfflineProductCategoryResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
];
}
}

View File

@ -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}', [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('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([ Route::group([
'prefix' =>'socialite', 'prefix' =>'socialite',

View File

@ -0,0 +1,31 @@
<?php
namespace App\Models;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class OfflineProductCategory extends Model
{
use HasFactory, HasDateTimeFormatter;
protected $attributes = [
'enabled' => false,
'sort' => 0,
];
protected $casts = [
'enabled' => 'bool',
];
protected $fillable = [
'name', 'enabled', 'sort',
];
public function scopeEnabled(Builder $builder)
{
$builder->where('enabled', true);
}
}

View File

@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOfflineProductCategoriesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('offline_product_categories', function (Blueprint $table) {
$table->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');
}
}

View File

@ -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(); DB::table('admin_menu')->truncate();
try { try {

View File

@ -376,6 +376,11 @@ class AdminPermissionSeeder extends Seeder
'curd' => ['index'], 'curd' => ['index'],
'children' => [], 'children' => [],
], ],
'offline_product_categories' => [
'name' => '线下订单 - 商品分类',
'curd' => ['index', 'create', 'store', 'edit', 'update', 'destroy'],
'children' => [],
],
]; ];
// try { // try {
// DB::begintransaction(); // DB::begintransaction();

View File

@ -0,0 +1,15 @@
<?php
return [
'labels' => [
'OfflineProductCategory' => '商品分类',
'offline-product-categories' => '商品分类',
],
'fields' => [
'name' => '名称',
'enabled' => '启用',
'sort' => '排序',
],
'options' => [
],
];