From 6731579785a398481b87f377017e3021311b673d Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Wed, 2 Sep 2020 19:42:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E6=B7=BB=E5=8A=A0=E5=AE=8C?= =?UTF-8?q?=E6=88=90=EF=BC=8Cbanner=E6=8E=92=E5=BA=8F=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=B2=A1=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Controllers/GoodsController.php | 94 ++++++++++++++--------- app/Models/Goods.php | 22 +++++- app/Models/GoodsBanners.php | 18 +++++ app/Models/LanzuMmInfo.php | 2 +- app/Models/Store.php | 4 +- resources/lang/zh-CN/goods.php | 11 ++- 6 files changed, 108 insertions(+), 43 deletions(-) create mode 100644 app/Models/GoodsBanners.php diff --git a/app/Admin/Controllers/GoodsController.php b/app/Admin/Controllers/GoodsController.php index d29b8cc..7fa896e 100644 --- a/app/Admin/Controllers/GoodsController.php +++ b/app/Admin/Controllers/GoodsController.php @@ -3,7 +3,6 @@ namespace App\Admin\Controllers; use App\Admin\Repositories\Goods; -use App\Models\Store; use Dcat\Admin\Form; use Dcat\Admin\Grid; use Dcat\Admin\Show; @@ -11,6 +10,8 @@ use Dcat\Admin\Controllers\AdminController; use App\Models\GoodsType as GoodsTypeModel; use App\Models\Store as StoreModel; use Dcat\Admin\Form\NestedForm; +use App\Models\Goods as goodsModel; +use App\Models\ImsCjdcMarket as MarketModel; class GoodsController extends AdminController { @@ -37,13 +38,17 @@ class GoodsController extends AdminController $grid->price; $grid->sort->sortable(); - $grid->on_sale->switch(); - + // $grid->on_sale->switch(); + $grid->on_sale->switch() + + ->saving(function ($v) { + return $v == 1 ? '在售' : '下架'; + }); $grid->filter(function (Grid\Filter $filter) { $filter->equal('id'); - }); + $grid->model()->orderBy('id', 'desc'); // 每页10条 $grid->paginate(10); }); @@ -90,46 +95,59 @@ class GoodsController extends AdminController */ protected function form() { - return Form::make(new Goods(), function (Form $form) { + $builder = goodsModel::with(['ImageBanners','VideoBanners']); + + return Form::make($builder, function (Form $form) { $form->hidden('id'); // 二级分类(商品分类) $goodsTypeList = GoodsTypeModel::getGoodsTypeArray(); // 店铺 - $store = StoreModel::getStoreArray(); - - $form->select('goods_type_id')->width(4)->required()->options($goodsTypeList); - $form->select('store_id')->width(4)->required()->options($store); - - $form->text('name')->width(4)->required()->maxLength(20); - $form->image('cover_img')->width(2)->required(); - - $form->currency('price')->width(4)->required()->floatTwo()->symbol('¥'); - $form->currency('original_price')->width(4)->required()->floatTwo()->symbol('¥'); - $form->currency('vip_price')->width(4)->required()->floatTwo()->symbol('¥'); - - $form->text('good_unit')->width(4)->help('如:斤,个,盒,500克,1000克,1500克等')->saveAsJson(); - - $form->switch('is_infinite'); - $form->number('inventory')->width(2)->required()->attribute('min', 1)->default(1); - $form->number('restrict_num')->width(2)->attribute('min', 0)->default(0)->help('0表示不限购'); - $form->number('start_num')->width(2)->attribute('min', 1)->default(1); - - $form->multipleImage('details_imgs'); - $form->textarea('content'); - $form->number('sort')->width(2); - - $form->tags('tags')->options(['新品','热销','新鲜'])->saveAsJson(); - $form->table('spec', function (NestedForm $table) { - $table->text('规格名称')->help('如:净含量:500克,包装:12个/盒,保质期:120天等'); - $table->text('值'); + $storeList = StoreModel::getStoreArray(); + //市场 + $marketList = MarketModel::getMarket(); + + $form->column(6, function (Form $form) use($marketList,$storeList,$goodsTypeList ){ + $form->select('market_id')->required()->options($marketList); + $form->select('goods_type_id')->required()->options($goodsTypeList); + $form->select('store_id')->required()->options($storeList); + $form->text('name')->required()->maxLength(20); + $form->image('cover_img'); + $form->number('sort'); }); - - $form->saving(function (Form $form){ - $tage = $form->input('tags'); - var_dump($tage); - $data = $form->input('spec'); - dd($data); + $form->column(6, function (Form $form) { + $form->currency('price')->required()->floatTwo()->symbol('¥'); + $form->currency('original_price')->required()->floatTwo()->symbol('¥'); + $form->currency('vip_price')->required()->floatTwo()->symbol('¥'); + $form->text('good_unit')->help('如:斤,个,盒,500克,1000克,1500克等'); + $form->radio('is_infinite')->options([1=>'开启',2=>'关闭'])->default(1); + $form->number('inventory')->required()->attribute('min', 1)->default(1); + $form->number('restrict_num')->attribute('min', 0)->default(0)->help('0表示不限购'); + $form->number('start_num')->attribute('min', 1)->default(1); + }); + $form->column(12, function (Form $form) { + $form->hasMany('image_banners', function (Form\NestedForm $form) { + $form->image('path')->width(2); + $form->number('sort')->width(2)->default(0); + $form->hidden('type')->value(1)->default(1); + }); + $form->divider(); + $form->hasMany('video_banners', function (Form\NestedForm $form) { + $form->file('path')->width(2); + $form->number('sort')->width(2)->default(0); + $form->hidden('type')->value(2)->default(2); + }); + $form->divider(); + + $form->multipleImage('details_imgs')->help('按图片顺序上传'); + $form->text('content')->maxLength(50); + $form->text('remark')->maxLength(50); + + $form->tags('tags','标签')->options(['新品','热销','新鲜']); + $form->table('spec', function (NestedForm $table) { + $table->text('spec_key')->help('如:净含量:500克,保质期:120天,包装:12个/盒等'); + $table->text('spec_value'); + }); }); }); } diff --git a/app/Models/Goods.php b/app/Models/Goods.php index 227aadf..95b4151 100644 --- a/app/Models/Goods.php +++ b/app/Models/Goods.php @@ -5,6 +5,7 @@ namespace App\Models; use Dcat\Admin\Traits\HasDateTimeFormatter; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Model; +use App\Models\Store as StoreModel; class Goods extends Model { @@ -16,13 +17,32 @@ class Goods extends Model protected $appends = [ 'cover_img_url', ]; + protected $casts = [ + 'details_imgs'=>'array', + 'tags'=>'array', + 'spec'=>'array', + ]; public function getCoverImgUrlAttribute($value) { $value = $value ? $value : $this->cover_img; return $this->imageUrl($value); } - // 处理图片 + + public function ImageBanners(){ + return $this->hasMany('\App\Models\GoodsBanners','goods_id','id')->where('type',1); + } + + public function VideoBanners(){ + return $this->hasMany('\App\Models\GoodsBanners','goods_id','id')->where('type',2); + + } + + /** + * 处理旧图片 + * @param $value + * @return string + */ public function imageUrl($value) { if(strripos($value,"http") === false){ diff --git a/app/Models/GoodsBanners.php b/app/Models/GoodsBanners.php new file mode 100644 index 0000000..8afe7fd --- /dev/null +++ b/app/Models/GoodsBanners.php @@ -0,0 +1,18 @@ +where('is_del',0) ->where('status',1) + ->whereNull('deleted_at') ->get(); $array = []; if(count($list) > 0){ diff --git a/app/Models/Store.php b/app/Models/Store.php index 6662ddb..776770e 100644 --- a/app/Models/Store.php +++ b/app/Models/Store.php @@ -34,7 +34,7 @@ class Store extends Model */ public function getEnvironmentAttribute($value) { - $value = $value ? $value : ''; + $value = $value ? $value : $this->environmant; return $value ? explode(',',$value) : []; } public function setEnvironmentAttribute($value) @@ -52,7 +52,7 @@ class Store extends Model } public function setIsOpenAttribute($value) { - $this->attributes['IsOpen'] = 1; + $this->attributes['is_open'] = 1; } /** diff --git a/resources/lang/zh-CN/goods.php b/resources/lang/zh-CN/goods.php index 8b871be..62d80a4 100644 --- a/resources/lang/zh-CN/goods.php +++ b/resources/lang/zh-CN/goods.php @@ -10,6 +10,9 @@ return [ 'store_id' => '所属商家', 'cover_img' => '封面图', 'cover_img_url' => '封面图', + 'banners' => '轮播图', + 'banner_imgs' => '轮播图', + 'banner_video' => '轮播图中的短视频', 'price' => '售价', 'original_price' => '原价', 'vip_price' => '会员价', @@ -24,7 +27,13 @@ return [ 'tags' => '标签', 'details_imgs' => '详情图片', 'spec' => '规格', - 'unit_number' => '单位前的数' + 'unit_number' => '单位前的数', + 'remark' => '备注', + 'spec_key' =>'规格名称', + 'spec_value' => '规格参数', + 'market_id' => '市场', + 'image_banners' => '轮播图片', + 'video_banners' => '轮播视频' ], 'options' => [ ],