Browse Source

添加商品类目,在商品添加时选择类目

master
liangyuyan 5 years ago
parent
commit
5d1a2453c8
  1. 4
      app/Admin/Controllers/v3/CategoryController.php
  2. 4
      app/Admin/Controllers/v3/CouponController.php
  3. 4
      app/Admin/Controllers/v3/GoodsActivityController.php
  4. 97
      app/Admin/Controllers/v3/GoodsCategoryController.php
  5. 42
      app/Admin/Controllers/v3/GoodsController.php
  6. 4
      app/Admin/Controllers/v3/StoreController.php
  7. 16
      app/Admin/Repositories/v3/GoodsCategory.php
  8. 4
      app/Admin/routes.php
  9. 4
      app/Models/v3/Category.php
  10. 51
      app/Models/v3/GoodsCategory.php
  11. 36
      database/migrations/2020_09_08_145454_create_lanzu_goods_category_table.php
  12. 16
      resources/lang/zh-CN/goods-category.php
  13. 3
      resources/lang/zh-CN/goods.php

4
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('绑定分类到首页')

4
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('不选默认所有类型可用');
});

4
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();
//市场

97
app/Admin/Controllers/v3/GoodsCategoryController.php

@ -0,0 +1,97 @@
<?php
namespace App\Admin\Controllers\v3;
use App\Admin\Repositories\v3\GoodsCategory;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Controllers\AdminController;
use App\Models\v3\Category as CategoryModel;
use Symfony\Component\HttpFoundation\Request;
use Illuminate\Support\Facades\DB;
use App\Models\v3\GoodsCategory as GoodsCategoryModel;
class GoodsCategoryController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new GoodsCategory(), function (Grid $grid) {
$grid->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;
}
}

42
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;
});
});
}

4
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();
// 绑定了店铺的用户

16
app/Admin/Repositories/v3/GoodsCategory.php

@ -0,0 +1,16 @@
<?php
namespace App\Admin\Repositories\v3;
use App\Models\v3\GoodsCategory as Model;
use Dcat\Admin\Repositories\EloquentRepository;
class GoodsCategory extends EloquentRepository
{
/**
* Model.
*
* @var string
*/
protected $eloquentClass = Model::class;
}

4
app/Admin/routes.php

@ -46,7 +46,9 @@ Route::group([
// 分类
$router->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');

4
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');

51
app/Models/v3/GoodsCategory.php

@ -0,0 +1,51 @@
<?php
namespace App\Models\v3;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Model;
class GoodsCategory extends Model
{
use HasDateTimeFormatter;
use SoftDeletes;
protected $table = 'lanzu_goods_category';
protected $dateFormat = 'U';
/* 查询记录数 limit */
protected $perPage = 10;
/**
* 获取单个信息
* @param int $id
* @param string $field
* @return string
*/
public static function getInfo($id,$field = '*')
{
return self::select($field)->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;
}
}
}

36
database/migrations/2020_09_08_145454_create_lanzu_goods_category_table.php

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

16
resources/lang/zh-CN/goods-category.php

@ -0,0 +1,16 @@
<?php
return [
'labels' => [
'GoodsCategory' => '商品类目',
'goodsCategory' => '商品类目',
'goods_category' => '商品类目',
],
'fields' => [
'category_id' => '分类',
'title' => '名称',
'cover_img' => '封面图',
'sort' => '排序',
],
'options' => [
],
];

3
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' => '封面图',

Loading…
Cancel
Save