diff --git a/app/Admin/Actions/Grid/v3/GoodsActivityCopy.php b/app/Admin/Actions/Grid/v3/GoodsActivityCopy.php new file mode 100644 index 0000000..d5097c4 --- /dev/null +++ b/app/Admin/Actions/Grid/v3/GoodsActivityCopy.php @@ -0,0 +1,38 @@ +payload(['id'=>$this->row->id,'name'=>$this->row->name]); + + $modal = Modal::make() + ->xl() + ->title($this->title) + ->body($form) + ->button($this->title); + + return $modal; + } + + public function parameters() + { + + return [ + 'id' => $this->row->id, + 'name' => $this->row->name + ]; + } +} diff --git a/app/Admin/Controllers/v3/GoodsActivityController.php b/app/Admin/Controllers/v3/GoodsActivityController.php index 395a34b..505e24b 100644 --- a/app/Admin/Controllers/v3/GoodsActivityController.php +++ b/app/Admin/Controllers/v3/GoodsActivityController.php @@ -2,6 +2,7 @@ namespace App\Admin\Controllers\v3; +use App\Admin\Actions\Grid\v3\GoodsActivityCopy; use App\Admin\Actions\Grid\v3\GoodsActivitySetting; use App\Admin\Repositories\v3\GoodsActivity; use Dcat\Admin\Form; @@ -50,6 +51,7 @@ class GoodsActivityController extends AdminController $grid->column('cover_img')->image('',50); $grid->column('name')->editable(); $grid->column('price')->editable(); + $grid->column('goods_unit')->editable(); $grid->column('type_text'); $grid->column('inventory')->editable(); $grid->column('market_id')->display(function($marketId){ @@ -88,8 +90,8 @@ class GoodsActivityController extends AdminController }); // 每页10条 $grid->paginate(10); - - // $grid->tools([new GoodsActivitySetting()]); + // $grid->actions([new GoodsActivityCopy()]); + $grid->tools([new GoodsActivitySetting()]); }); } @@ -179,7 +181,7 @@ class GoodsActivityController extends AdminController $form->text('name')->required()->maxLength(20); $form->image('cover_img')->autoUpload()->required(); $form->select('type')->options(GoodsActivityModel::$_TYPE)->default('flash_sale'); - $form->datetime('expire_time')->required()->format('YYYY-MM-DD HH:mm:ss')->help($form->model()->expire_time_text); + $form->datetime('expire_time')->required()->format('YYYY-MM-DD HH:mm:ss')->rules('after:now',['after'=>'活动结束时间必须大于当前时间!'])->help($form->model()->expire_time_text); }); $form->column(6, function (Form $form) { $form->currency('price')->required()->floatTwo()->symbol('¥'); @@ -226,12 +228,21 @@ class GoodsActivityController extends AdminController })->default(1); $form->saving(function (Form $form){ $storeId = $form->input('store_id'); - $marketIds = $form->input('market_ids'); + // $marketIds = $form->input('market_ids'); $tags = $form->input('tags'); $spec = $form->input('spec'); $detailsImgs = $form->input('details_imgs'); $goodsCategoryId = $form->input('goods_category_id'); + $onSale = $form->input('on_sale'); + $expireTime = $form->model()->expire_time; + $OldInventory = $form->model()->inventory; + if(!empty($onSale) && $onSale == 1 && $expireTime <= time()){ + return $form->error('活动结束时间必须大于当前时间,请修改后再上架!'); + }else if(!empty($onSale) && $onSale == 1 && $OldInventory <= 0){ + return $form->error('库存必须为大于0的数字'); + } + $inventory = $form->input('inventory'); // 规格 if(!empty($inventory)){ @@ -247,17 +258,17 @@ class GoodsActivityController extends AdminController $form->market_ids = ["$info->market_id"]; } - $marketIdsArr = []; - if(!empty($marketIds)){ - foreach($marketIds as $km => $marketId){ - if(empty($marketId)){ - unset($marketIds[$km]); - continue; - } - $marketIdsArr[] = $marketId; - } - } - $form->marketIds = json_encode($marketIdsArr); + // $marketIdsArr = []; + // if(!empty($marketIds)){ + // foreach($marketIds as $km => $marketId){ + // if(empty($marketId)){ + // unset($marketIds[$km]); + // continue; + // } + // $marketIdsArr[] = $marketId; + // } + // } + // $form->marketIds = json_encode($marketIdsArr); $tagsArr = []; if(!empty($tags)){ diff --git a/app/Admin/Forms/v3/GoodsActivityCopyForm.php b/app/Admin/Forms/v3/GoodsActivityCopyForm.php new file mode 100644 index 0000000..cd839a6 --- /dev/null +++ b/app/Admin/Forms/v3/GoodsActivityCopyForm.php @@ -0,0 +1,135 @@ +error('活动结束时间必须大于当前时间!'); + } + + $goods = GoodsModel::find($goodsId); + $goodsBanners = GoodsBannerModel::where('goods_id',$goodsId)->get(); + $markets = StoreModel::whereIn('id',$storeIds)->pluck('market_id','id'); + foreach($storeIds as $key =>$storeId){ + + $marketId = $markets[$storeId]??0; + $model = new GoodsModel(); + + $model->expire_time = $expireTime; + $model->time_limit_days = $timeLimitDays; + $model->time_limit_num = $timeLimitNum; + $model->can_use_coupon = $canUseCoupon; + $model->type = $type; + $model->inventory = $inventory; + + $model->store_id = $storeId; + $model->market_id = $marketId; + $model->market_ids = json_encode(["$marketId"]); + $model->category_id = $goods->category_id; + + $model->name = $goods->name; + $model->cover_img = $goods->cover_img; + $model->goods_unit = $goods->goods_unit; + + $model->tags = $goods->tags; + $model->spec = $goods->spec; + $model->details_imgs = $goods->details_imgs; + $model->content = $goods->content; + $model->details = $goods->details; + + $model->price = $goods->price; + $model->original_price = $goods->original_price; + $model->vip_price = $goods->vip_price; + + $model->start_num = $goods->start_num; + $model->restrict_num = $goods->restrict_num; + $model->is_infinite = $goods->is_infinite; + + $model->on_sale = 0; + $model->sort = $goods->sort; + $model->remark = $goods->remark; + + if($model->save() && !empty($goodsBanners)){ + $goodsId = $model->getKey(); + $banners = []; + foreach($goodsBanners as $kb => $vb){ + $banners[] = [ + 'goods_id' => $goodsId, + 'type' => $vb->type, + 'path' => $vb->path, + 'sort' => $vb->sort, + 'created_at' => time(), + 'updated_at' => time(), + ]; + GoodsBannerModel::insert($banners); + } + }; + } + + return $this->success('复制成功', '/goods_activity'); + } + + /** + * Build a form here. + */ + public function form() + { + $id = $this->payload['id'] ?? 0; + $name = $this->payload['name'] ?? ''; + + $this->hidden('id')->value($id); + $this->display('name')->value($name)->help('复制的活动商品默认下架状态,请核对信息后手动上架!'); + $stores = StoreModel::getStoreArray(); + $this->multipleSelect('store_ids','选择店铺')->required()->options($stores)->help('选择店铺,将当前商品复制到所选店铺。注意选择重复店铺问题!!!'); + $this->number('inventory','库存')->required()->attribute('min', 1)->default(1); + $this->datetime('expire_time','活动结束时间')->required()->format('YYYY-MM-DD HH:mm:ss')->rules('after:now',['after'=>'活动结束时间必须大于当前时间!']); + $this->number('time_limit_days','限制的天数')->default(1)->help('A时间段内限购'); + $this->number('time_limit_num','限制购买数量')->default(1)->help('A时间段内限购的数量'); + $this->switch('can_use_coupon','可同时使用优惠券')->default(0); + $this->select('type','活动类型')->options(GoodsModel::$_TYPE)->default('flash_sale'); + } + + /** + * The data of the form. + * + * @return array + */ + public function default() + { + return []; + } + +} diff --git a/app/Admin/Forms/v3/GoodsCopyForm.php b/app/Admin/Forms/v3/GoodsCopyForm.php index 2232de7..fcaed64 100644 --- a/app/Admin/Forms/v3/GoodsCopyForm.php +++ b/app/Admin/Forms/v3/GoodsCopyForm.php @@ -76,7 +76,7 @@ class GoodsCopyForm extends Form }; } - return $this->success('修改成功', '/goods'); + return $this->success('复制成功', '/goods'); } /**