diff --git a/app/Admin/Actions/Grid/v3/StoreChangeMarket.php b/app/Admin/Actions/Grid/v3/StoreChangeMarket.php new file mode 100644 index 0000000..6c20205 --- /dev/null +++ b/app/Admin/Actions/Grid/v3/StoreChangeMarket.php @@ -0,0 +1,40 @@ +getKey(); + + $modal = Modal::make() + ->xl() + ->title($this->title) + ->body(StoreChangeMarketForm::make()->setKey($id)->payload([ + 'id'=>$this->row->id, + 'name'=>$this->row->name, + 'market_id'=>$this->row->market_id + ])) + ->button($this->title); + + return $modal; + } + + public function parameters() + { + + return [ + + ]; + } +} diff --git a/app/Admin/Controllers/v3/GoodsActivityController.php b/app/Admin/Controllers/v3/GoodsActivityController.php index 3c62395..8dd9914 100644 --- a/app/Admin/Controllers/v3/GoodsActivityController.php +++ b/app/Admin/Controllers/v3/GoodsActivityController.php @@ -196,9 +196,9 @@ class GoodsActivityController extends AdminController $form->select('store_id')->required()->options($storeList); $form->text('name')->required()->maxLength(20); if($form->isCreating()){ - $form->image('cover_img')->autoUpload()->retainable()->required(); + $form->image('cover_img')->uniqueName()->autoUpload()->retainable()->required(); }else{ - $form->image('cover_img')->autoUpload()->required(); + $form->image('cover_img')->uniqueName()->autoUpload()->required(); } $form->select('type')->options(GoodsActivityModel::$_TYPE)->default('flash_sale'); $form->datetime('expire_time')->required()->format('YYYY-MM-DD HH:mm:ss')->rules('after:now',['after'=>'活动结束时间必须大于当前时间!'])->customFormat(function ($v) { @@ -220,13 +220,13 @@ class GoodsActivityController extends AdminController }); $form->column(12, function (Form $form) { $form->hasMany('image_banners', function (Form\NestedForm $form) { - $form->image('path')->autoUpload()->width(2); + $form->image('path')->uniqueName()->autoUpload()->width(2); $form->number('sort')->width(2)->default(0); $form->hidden('type')->value(1)->default(1); })->required(); $form->divider(); $form->hasMany('video_banners', function (Form\NestedForm $form) { - $form->file('path')->autoUpload()->width(2); + $form->file('path')->uniqueName()->autoUpload()->width(2); $form->number('sort')->width(2)->default(0); $form->hidden('type')->value(2)->default(2); }); diff --git a/app/Admin/Controllers/v3/GoodsController.php b/app/Admin/Controllers/v3/GoodsController.php index 9b11b19..ace4190 100644 --- a/app/Admin/Controllers/v3/GoodsController.php +++ b/app/Admin/Controllers/v3/GoodsController.php @@ -220,9 +220,9 @@ class GoodsController extends AdminController $form->select('store_id')->required()->options($storeList); $form->text('name')->required()->maxLength(20); if($form->isCreating()){ - $form->image('cover_img')->autoUpload()->retainable()->required(); + $form->image('cover_img')->uniqueName()->autoUpload()->retainable()->required(); }else{ - $form->image('cover_img')->autoUpload()->required(); + $form->image('cover_img')->uniqueName()->autoUpload()->required(); } $form->number('sort'); }); @@ -238,13 +238,13 @@ class GoodsController extends AdminController }); $form->column(12, function (Form $form) { $form->hasMany('image_banners', function (Form\NestedForm $form) { - $form->image('path')->autoUpload()->required()->width(2); + $form->image('path')->uniqueName()->autoUpload()->required()->width(2); $form->number('sort')->width(2)->default(0); $form->hidden('type')->value(1)->default(1); })->required(); $form->divider(); $form->hasMany('video_banners', function (Form\NestedForm $form) { - $form->file('path')->autoUpload()->width(2); + $form->file('path')->uniqueName()->autoUpload()->width(2); $form->number('sort')->width(2)->default(0); $form->hidden('type')->value(2)->default(2); }); diff --git a/app/Admin/Controllers/v3/StoreController.php b/app/Admin/Controllers/v3/StoreController.php index de95853..cf6eb29 100644 --- a/app/Admin/Controllers/v3/StoreController.php +++ b/app/Admin/Controllers/v3/StoreController.php @@ -2,6 +2,7 @@ namespace App\Admin\Controllers\v3; +use App\Admin\Actions\Grid\v3\StoreChangeMarket; use App\Admin\Common\Auth; use App\Admin\Repositories\v3\Store; use App\Models\LanzuMmInfo; @@ -97,7 +98,13 @@ class StoreController extends AdminController $grid->is_operation->switch(); $grid->is_open->switch(); - $grid->actions([new StoreSetTime()]); + $actions = [ + new StoreSetTime() + ]; + if($this->storeChangeMarketCan()){ + $actions[] = new StoreChangeMarket(); + } + $grid->actions($actions); // 搜索 $grid->filter(function (Grid\Filter $filter) use($marketList){ $filter->equal('id'); @@ -422,4 +429,13 @@ class StoreController extends AdminController $user = Admin::user(); return $user->can('store_balance'); } + + /** + * @return bool + */ + protected function storeChangeMarketCan(): bool + { + $user = Admin::user(); + return $user->can('store_change_market'); + } } diff --git a/app/Admin/Forms/v3/GoodsActivityCopyForm.php b/app/Admin/Forms/v3/GoodsActivityCopyForm.php index 0f360d7..d4a24dc 100644 --- a/app/Admin/Forms/v3/GoodsActivityCopyForm.php +++ b/app/Admin/Forms/v3/GoodsActivityCopyForm.php @@ -84,9 +84,8 @@ class GoodsActivityCopyForm extends Form implements LazyRenderable if($model->save() && !empty($goodsBanners)){ $goodsId = $model->getKey(); - $banners = []; foreach($goodsBanners as $kb => $vb){ - $banners[] = [ + $banners = [ 'goods_id' => $goodsId, 'type' => $vb->type, 'path' => $vb->path, diff --git a/app/Admin/Forms/v3/GoodsCopyForm.php b/app/Admin/Forms/v3/GoodsCopyForm.php index fcaed64..aac8d66 100644 --- a/app/Admin/Forms/v3/GoodsCopyForm.php +++ b/app/Admin/Forms/v3/GoodsCopyForm.php @@ -24,7 +24,7 @@ class GoodsCopyForm extends Form // 获取外部传递参数 $goodsId = $input['goods_id']; $storeIds= $input['store_ids']; - + $goods = GoodsModel::find($goodsId); $goodsBanners = GoodsBannerModel::where('goods_id',$goodsId)->get(); $markets = StoreModel::whereIn('id',$storeIds)->pluck('market_id','id'); @@ -61,9 +61,8 @@ class GoodsCopyForm extends Form if($model->save() && !empty($goodsBanners)){ $goodsId = $model->getKey(); - $banners = []; foreach($goodsBanners as $kb => $vb){ - $banners[] = [ + $banners = [ 'goods_id' => $goodsId, 'type' => $vb->type, 'path' => $vb->path, diff --git a/app/Admin/Forms/v3/GoodsImageForm.php b/app/Admin/Forms/v3/GoodsImageForm.php index d4b420b..263dfcd 100644 --- a/app/Admin/Forms/v3/GoodsImageForm.php +++ b/app/Admin/Forms/v3/GoodsImageForm.php @@ -31,6 +31,13 @@ class GoodsImageForm extends Form implements LazyRenderable $bannerImg= $input['img_banner']; if($goodsId > 0 && !empty($coverImg)){ + $lastLen = strrpos($coverImg,','); + if($lastLen != false){ + $coverImg = substr($coverImg,$lastLen+1); + } + if(strlen($coverImg) > 200){ + return $this->error('上传图片名称过长'); + } $data = ['cover_img' => $coverImg]; $res1 = GoodsModel::where('id',$goodsId)->update($data); } @@ -63,15 +70,13 @@ class GoodsImageForm extends Form implements LazyRenderable $goodName = $this->payload['name'] ?? ''; $coverImg = $this->payload['cover_img'] ?? ''; $this->search = $this->payload['search'] ?? ''; - // $goods = GoodsModel::select('name','cover_img')->find($id); - // $goodName = empty($goods->name)?'':$goods->name; - // $coverImg = empty($goods->cover_img) ? '':$goods->cover_img; + $this->hidden('goods_id')->value($id); $this->display('name','商品名称')->value($goodName); - $this->image('cover_img','封面图')->customFormat(function($cover_img) use($coverImg){ + $this->image('cover_img','封面图')->uniqueName()->retainable()->customFormat(function() use($coverImg){ return [$coverImg]; })->autoUpload(); - $this->multipleImage('img_banner','轮播图')->customFormat(function($img_banner) use($id){ + $this->multipleImage('img_banner','轮播图')->uniqueName()->customFormat(function() use($id){ if(!$id){ return ; } diff --git a/app/Admin/Forms/v3/StoreChangeMarketForm.php b/app/Admin/Forms/v3/StoreChangeMarketForm.php new file mode 100644 index 0000000..cfa1ad5 --- /dev/null +++ b/app/Admin/Forms/v3/StoreChangeMarketForm.php @@ -0,0 +1,76 @@ +error('店铺不存在!'); + } + + $goods = GoodsModel::select('id')->where('store_id',$id)->first(); + if($goods){ + return $this->error('店铺存在商品,不可更换市场!'); + } + if(!empty($marketId)){ + $store->market_id = $marketId; + } + if($store->save()){ + return $this->success('修改成功!'); + } + + return $this->error('未做任何修改或者修改失败!'); + } + + /** + * Build a form here. + */ + public function form() + { + $id = $this->payload['id'] ?? 0; + $name = $this->payload['name'] ?? ''; + $marketId = $this->payload['market_id'] ?? 0; + + $marketList = MarketModel::getMarketArray(); + unset($marketList[$marketId]); + + $this->hidden('id')->value($id); + $this->display('name','店铺')->value($name); + + $this->select('market_id','所属市场')->options($marketList)->required(); + } + + /** + * The data of the form. + * + * @return array + */ + public function default() + { + return []; + } + +}