diff --git a/app/Admin/Controllers/v3/CategoryController.php b/app/Admin/Controllers/v3/CategoryController.php index 150f774..d25c101 100644 --- a/app/Admin/Controllers/v3/CategoryController.php +++ b/app/Admin/Controllers/v3/CategoryController.php @@ -49,7 +49,7 @@ class CategoryController extends AdminController return Form::make(new Category(),function (Form $form){ // 只查一级 - $parentList = Category::getCategoryArray([['parent_id','=',0]],[0=>'顶级']); + $parentList = Category::getArray([['parent_id','=',0]],[0=>'顶级']); $form->select('parent_id')->default(0)->options($parentList); $form->text('title')->required(); @@ -64,7 +64,7 @@ class CategoryController extends AdminController }); } - public function CategoryTieForms(Content $content) + public function categoryTieForms(Content $content) { return $content ->title('绑定分类到首页') diff --git a/app/Admin/Controllers/v3/CouponController.php b/app/Admin/Controllers/v3/CouponController.php index e981846..3097e0e 100644 --- a/app/Admin/Controllers/v3/CouponController.php +++ b/app/Admin/Controllers/v3/CouponController.php @@ -60,6 +60,8 @@ class CouponController extends AdminController unset($status[-1]);/* 去掉删除状态 */ $filter->in('status')->multipleSelect($status); }); + + $grid->disableBatchDelete(); }); } @@ -183,7 +185,7 @@ class CouponController extends AdminController $marketList = MarketModel::getMarketArray(); $form->multipleSelect('market_ids')->options($marketList)->help('不选默认所有市场可用'); /* 目前默认全平台的分类 */ - $categoryList = CategoryModel::getCategoryArray(); + $categoryList = CategoryModel::getArray(); $form->multipleSelect('category_ids')->options($categoryList)->help('不选默认所有类型可用'); }); diff --git a/app/Admin/Controllers/v3/GoodsActivityController.php b/app/Admin/Controllers/v3/GoodsActivityController.php index 2f508d2..6556428 100644 --- a/app/Admin/Controllers/v3/GoodsActivityController.php +++ b/app/Admin/Controllers/v3/GoodsActivityController.php @@ -38,7 +38,7 @@ class GoodsActivityController extends AdminController return empty($item) ? '' : $item->name; }); $grid->column('category_id')->display(function($categoryId){ - $item = CategoryModel::getCategoryInfo($categoryId,'title'); + $item = CategoryModel::getInfo($categoryId,'title'); return empty($item) ? '' : $item->title; }); @@ -124,7 +124,7 @@ class GoodsActivityController extends AdminController $form->hidden('id'); // 二级分类 - $categoryList = CategoryModel::getCategoryArray([['parent_id','>',0]]); + $categoryList = CategoryModel::getArray([['parent_id','>',0]]); // 店铺 $storeList = StoreModel::getStoreArray(); //市场 diff --git a/app/Admin/Controllers/v3/GoodsCategoryController.php b/app/Admin/Controllers/v3/GoodsCategoryController.php new file mode 100644 index 0000000..cc1dc9c --- /dev/null +++ b/app/Admin/Controllers/v3/GoodsCategoryController.php @@ -0,0 +1,97 @@ +column('id')->sortable(); + $grid->column('category_id')->display(function($categoryId){ + $item = CategoryModel::getInfo($categoryId,'title'); + return empty($item) ? '' : $item->title; + }); + $grid->column('title'); + $grid->column('cover_img')->image('',50); + $grid->column('sort'); + + $grid->model()->orderBy('id','desc'); + + $grid->filter(function (Grid\Filter $filter) { + $filter->equal('id'); + + }); + $grid->disableBatchDelete(); + }); + } + + /** + * Make a show builder. + * + * @param mixed $id + * + * @return Show + */ + protected function detail($id) + { + return Show::make($id, new GoodsCategory(), function (Show $show) { + $show->field('id'); + $show->field('category_id')->as(function($categoryId){ + $item = CategoryModel::getInfo($categoryId,'title'); + return empty($item) ? '' : $item->title; + }); + $show->field('title'); + $show->field('cover_img')->image('',50); + $show->field('sort'); + $show->field('created_at'); + $show->field('updated_at'); + }); + } + + /** + * Make a form builder. + * + * @return Form + */ + protected function form() + { + return Form::make(new GoodsCategory(), function (Form $form) { + $form->hidden('id'); + $category = CategoryModel::getArray([['parent_id','>',0]]); + $form->select('category_id')->width(4)->required()->options($category); + $form->text('title')->width(4)->required(); + $form->image('cover_img')->width(2); + $form->number('sort'); + + $form->disableResetButton(); + $form->disableViewCheck(); + $form->disableEditingCheck(); + $form->disableCreatingCheck(); + }); + } + + /** + * 获取商品类目列表 + */ + public function getList(Request $request) + { + $categoryId = $request->get('q'); + $list = GoodsCategoryModel::where('category_id',$categoryId)->get(['id',DB::raw('title as text')]); + return $list; + } +} diff --git a/app/Admin/Controllers/v3/GoodsController.php b/app/Admin/Controllers/v3/GoodsController.php index 062fe07..aa5d515 100644 --- a/app/Admin/Controllers/v3/GoodsController.php +++ b/app/Admin/Controllers/v3/GoodsController.php @@ -14,7 +14,7 @@ use Dcat\Admin\Form\NestedForm; use App\Models\v3\Goods as GoodsModel; use App\Models\v3\Market as MarketModel; use Dcat\Admin\Grid\Displayers\Actions; -use Dcat\Admin\Layout\Content; +use App\Models\v3\GoodsCategory as GoodsCategoryModel; class GoodsController extends AdminController { @@ -29,15 +29,19 @@ class GoodsController extends AdminController $grid->id->sortable(); $grid->cover_img_url->image('',50); $grid->name; - $grid->category_id->display(function ($categoryId){ - $category = CategoryModel::getCategoryInfo($categoryId,'title'); - return empty($category) ? '' : $category->title; - }); + $grid->store_id->display(function ($storeId){ $store = StoreModel::getStoreInfo($storeId,'name'); return empty($store) ? '' : $store->name; }); - + $grid->category_id->display(function ($categoryId){ + $item = CategoryModel::getInfo($categoryId,'title'); + return empty($item) ? '' : $item->title; + }); + $grid->goods_category_id->display(function ($goodsCategoryId){ + $item = GoodsCategoryModel::getInfo($goodsCategoryId,'title'); + return empty($item) ? '' : $item->title; + }); $grid->price; $grid->sort->sortable(); @@ -70,11 +74,15 @@ class GoodsController extends AdminController $show->width(6)->field('id'); $show->width(6)->field('name'); $show->width(6)->category_id->as(function ($categoryId){ - $item = CategoryModel::getCategoryInfo($categoryId,'title'); + $item = CategoryModel::getInfo($categoryId,'title'); return empty($item) ? '' : $item->title; }); $show->width(6)->store_id->as(function ($storeId){ - $item = StoreModel::getStoreInfo($storeId,'name'); + $item = GoodsCategoryModel::getInfo($storeId,'name'); + return empty($item) ? '' : $item->name; + }); + $show->width(6)->store_id->as(function ($goodsCategoryId){ + $item = StoreModel::getStoreInfo($goodsCategoryId,'name'); return empty($item) ? '' : $item->name; }); $show->width(6)->cover_img->image(); @@ -138,20 +146,21 @@ class GoodsController extends AdminController $form->hidden('id'); // 二级分类 - $categoryList = CategoryModel::getCategoryArray([['parent_id','>',0]]); + $categoryList = CategoryModel::getArray([['parent_id','>',0]]); + // 商品类目 + $goodsCategoryList = GoodsCategoryModel::getArray(); // 店铺 $storeList = StoreModel::getStoreArray(); //市场 // $marketList = MarketModel::getMarketArray(); - $form->column(6, function (Form $form) use($storeList,$categoryList ){ + $form->column(6, function (Form $form) use($storeList,$categoryList,$goodsCategoryList ){ // $form->select('market_id')->required()->options($marketList); - $form->select('category_id')->required()->options($categoryList); + $form->select('category_id')->required()->options($categoryList)->load('goods_category_id', '/api/goods_category_list'); + $form->select('goods_category_id')->required()->options($goodsCategoryList); $form->select('store_id')->required()->options($storeList); - /* 多选店铺 */ - $form->multipleSelect('store_ids','多选店铺')->options($storeList)->help('选择店铺后商品会同时添加到选择的店铺,注意重复店铺'); $form->text('name')->required()->maxLength(20); - $form->image('cover_img')->required(); + $form->image('cover_img')->required()->disk('image'); $form->number('sort'); }); $form->column(6, function (Form $form) { @@ -200,14 +209,13 @@ class GoodsController extends AdminController $form->disableEditingCheck(); $form->disableCreatingCheck(); }); - - $form->saving(function (Form $form){ + $form->saved(function (Form $form){ $storeId = $form->input('store_id'); + // 商品所属市场,根据店铺查询市场 $info = StoreModel::getStoreInfo($storeId,'market_id'); $form->market_id = $info->market_id; }); - }); } diff --git a/app/Admin/Controllers/v3/StoreController.php b/app/Admin/Controllers/v3/StoreController.php index 7640afb..3127d8d 100644 --- a/app/Admin/Controllers/v3/StoreController.php +++ b/app/Admin/Controllers/v3/StoreController.php @@ -79,7 +79,7 @@ class StoreController extends AdminController return empty($item) ? '' : $item->name; }); $show->width(6)->category_id->as(function ($categoryId){ - $item = CategoryModel::getCategoryInfo($categoryId,'title'); + $item = CategoryModel::getInfo($categoryId,'title'); return empty($item) ? '' : $item->title; }); $show->width(6)->name; @@ -135,7 +135,7 @@ class StoreController extends AdminController // 查询市场 $marketList = MarketModel::getMarketArray(); // 查询一级分类 - $categoryList = CategoryModel::getCategoryArray([['parent_id','=',0]]); + $categoryList = CategoryModel::getArray([['parent_id','=',0]]); // 用户 $userList = UserModel::getUserArray(); // 绑定了店铺的用户 diff --git a/app/Admin/Repositories/v3/GoodsCategory.php b/app/Admin/Repositories/v3/GoodsCategory.php new file mode 100644 index 0000000..2c848f1 --- /dev/null +++ b/app/Admin/Repositories/v3/GoodsCategory.php @@ -0,0 +1,16 @@ +resource('/category', 'v3\CategoryController'); - $router->get('/categoryTie', 'v3\CategoryController@CategoryTieForms'); + $router->get('/categoryTie', 'v3\CategoryController@categoryTieForms'); + $router->resource('/goods_category', 'v3\GoodsCategoryController'); + $router->get('/api/goods_category_list', 'v3\GoodsCategoryController@getList'); // 店铺 $router->resource('/store', 'v3\StoreController'); diff --git a/app/Models/v3/Category.php b/app/Models/v3/Category.php index c6e44af..6b89145 100644 --- a/app/Models/v3/Category.php +++ b/app/Models/v3/Category.php @@ -38,7 +38,7 @@ class Category extends Model * @param string $field * @return string */ - public static function getCategoryInfo($id,$field = '*') + public static function getInfo($id,$field = '*') { return self::select($field)->find($id); } @@ -48,7 +48,7 @@ class Category extends Model * id为键,title为值 * @return array */ - public static function getCategoryArray($where = [],$options = []) + public static function getArray($where = [],$options = []) { $model = self::where('status',1) ->whereNull('deleted_at'); diff --git a/app/Models/v3/GoodsCategory.php b/app/Models/v3/GoodsCategory.php new file mode 100644 index 0000000..cb3fad2 --- /dev/null +++ b/app/Models/v3/GoodsCategory.php @@ -0,0 +1,51 @@ +find($id); + } + + /** + * 获取二级分类数组 + * id为键,title为值 + * @return array + */ + public static function getArray($where = [],$options = []) + { + $model = self::where('status',1) + ->whereNull('deleted_at'); + + if(count($where) > 0){ + $model->where($where); + } + $list = $model->pluck('title','id')->toArray(); + if(!empty($options)){ + return array_merge($options,$list); + }else{ + return $list; + } + } + +} diff --git a/database/migrations/2020_09_08_145454_create_lanzu_goods_category_table.php b/database/migrations/2020_09_08_145454_create_lanzu_goods_category_table.php new file mode 100644 index 0000000..18b44f3 --- /dev/null +++ b/database/migrations/2020_09_08_145454_create_lanzu_goods_category_table.php @@ -0,0 +1,36 @@ +increments('id'); + $table->integer('category_id')->default('0')->nullable()->comment('分类'); + $table->string('title')->default('')->comment('分类名称'); + $table->string('cover_img')->nullable()->comment('封面图'); + $table->integer('sort')->default('0')->nullable()->comment('排序'); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('lanzu_goods_category'); + } +} diff --git a/resources/lang/zh-CN/goods-category.php b/resources/lang/zh-CN/goods-category.php new file mode 100644 index 0000000..d44ea24 --- /dev/null +++ b/resources/lang/zh-CN/goods-category.php @@ -0,0 +1,16 @@ + [ + 'GoodsCategory' => '商品类目', + 'goodsCategory' => '商品类目', + 'goods_category' => '商品类目', + ], + 'fields' => [ + 'category_id' => '分类', + 'title' => '名称', + 'cover_img' => '封面图', + 'sort' => '排序', + ], + 'options' => [ + ], +]; diff --git a/resources/lang/zh-CN/goods.php b/resources/lang/zh-CN/goods.php index c9a8537..f2d7df5 100644 --- a/resources/lang/zh-CN/goods.php +++ b/resources/lang/zh-CN/goods.php @@ -6,7 +6,8 @@ return [ ], 'fields' => [ 'name' => '商品名称', - 'category_id' => '商品所属分类', + 'category_id' => '所属分类', + 'goods_category_id' => '商品类目', 'store_id' => '所属商家', 'cover_img' => '封面图', 'cover_img_url' => '封面图',