From f429d45f6b5cd1c2033e4c2d4e7b65b29b87ee8e Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Thu, 17 Sep 2020 20:19:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=92=8C=E7=A6=81=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Actions/Grid/v3/CouponForbidden.php | 39 ++++++++ app/Admin/Actions/Grid/v3/CouponPublish.php | 42 ++++++++ app/Admin/Controllers/v3/CouponController.php | 71 ++++---------- app/Admin/Forms/v3/CouponPublishForm.php | 95 +++++++++++++++++++ app/Models/v3/Coupon.php | 8 ++ app/Models/v3/CouponReceiveType.php | 22 +++++ 6 files changed, 225 insertions(+), 52 deletions(-) create mode 100644 app/Admin/Actions/Grid/v3/CouponForbidden.php create mode 100644 app/Admin/Actions/Grid/v3/CouponPublish.php create mode 100644 app/Admin/Forms/v3/CouponPublishForm.php diff --git a/app/Admin/Actions/Grid/v3/CouponForbidden.php b/app/Admin/Actions/Grid/v3/CouponForbidden.php new file mode 100644 index 0000000..df8e597 --- /dev/null +++ b/app/Admin/Actions/Grid/v3/CouponForbidden.php @@ -0,0 +1,39 @@ +getKey(); + $coupon = CouponModel::getInfo($id); + if(!empty($coupon)){ + $coupon->status = 3; + if($coupon->save()){ + return $this->response()->success('禁用成功!','/coupon'); + } + } + return $this->response()->success('禁用失败!'); + } + + // 确认弹窗信息 + public function confirm() + { + return '您确定要禁用吗?'; + } + + public function parameters() + { + return ['status'=>3]; + } +} diff --git a/app/Admin/Actions/Grid/v3/CouponPublish.php b/app/Admin/Actions/Grid/v3/CouponPublish.php new file mode 100644 index 0000000..885ee38 --- /dev/null +++ b/app/Admin/Actions/Grid/v3/CouponPublish.php @@ -0,0 +1,42 @@ +getKey(); + + $modal = Modal::make() + ->xl() + ->title($this->title) + ->body(CouponPublishForm::make()->setKey($id)) + ->button($this->title); + + return $modal; + } + + // 确认弹窗信息 + public function confirm() + { + return '您确定要发布吗?'; + } + + public function parameters() + { + + return [ + + ]; + } +} diff --git a/app/Admin/Controllers/v3/CouponController.php b/app/Admin/Controllers/v3/CouponController.php index 85230a0..7e50398 100644 --- a/app/Admin/Controllers/v3/CouponController.php +++ b/app/Admin/Controllers/v3/CouponController.php @@ -2,6 +2,8 @@ namespace App\Admin\Controllers\v3; +use App\Admin\Actions\Grid\v3\CouponForbidden; +use App\Admin\Actions\Grid\v3\CouponPublish; use App\Admin\Repositories\v3\Coupon; use Dcat\Admin\Form; use Dcat\Admin\Grid; @@ -52,6 +54,18 @@ class CouponController extends AdminController ); $grid->model()->orderBy('id','desc'); + + $grid->actions(function (Grid\Displayers\Actions $actions) use($grid){ + if(in_array($this->status,[0,3])){ + $actions->append(new CouponPublish()); + }else if(in_array($this->status,[1,2])){ + $actions->disableDelete(); + $actions->disableEdit(); + if($this->status == 1){ + $actions->append(new CouponForbidden()); + } + } + }); $grid->filter(function (Grid\Filter $filter) { $filter->like('title','标题'); $filter->equal('discount_type')->select(config('coupon.discount_type')); @@ -62,6 +76,9 @@ class CouponController extends AdminController }); $grid->disableBatchDelete(); + $grid->disableCreateButton(); + $grid->disableDeleteButton(); + $grid->disableEditButton(); }); } @@ -129,19 +146,6 @@ class CouponController extends AdminController { $builder = CouponModel::with('receiveType'); return Form::make($builder, function (Form $form) { - $receiveTypeId = 0; - - if($form->isEditing()){ - $id = $form->getKey(); - // 查询已选择的领取方式 - $receiveType = ReceiveTypeModel::getReceiveTypeOne([['coupon_id','=',$id]],'receive_type'); - $receiveTypeId = $receiveType && !empty($receiveType->receive_type) ? $receiveType->receive_type : 0; - // $startTime = date('Y-m-d H:i:s',$form->model()->start_time); - // $endTime = date('Y-m-d H:i:s',$form->model()->end_time); - // $usableStartTime = date('Y-m-d H:i:s',$form->model()->usable_start_time); - // $usableEndTime = date('YmdHis',$form->model()->usable_end_time); - // dd($usableEndTime); - } $form->column(6,function(Form $form){ $form->text('title')->required()->maxLength(255,'最多只能输入500个字'); @@ -152,21 +156,11 @@ class CouponController extends AdminController $form->number('inventory')->required()->type('number')->attribute('min', 1)->default(1); $form->number('weigh')->type('number')->attribute('min', 0)->default(0); $form->hidden('is_new_user')->options(CouponModel::$_ISNEWUSER)->default(2); - }); - $form->column(6,function(Form $form) use($receiveTypeId){ + $form->column(6,function(Form $form) { $form->select('active_type')->required()->options(CouponModel::$_ACTIVETYPE)->default(1); - /* 领取方式 */ - $receives = SettingModel::getSettingArray([['category','=',1]]); - $form->select('receive_type.receive_type','领取方式')->required()->options($receives)->value($receiveTypeId)->default($receiveTypeId); - // $form->hasMany('receive_type',function(NestedForm $form){ - // $form->select('receive_type')->options($receives); - // }); - // $receive = SettingModel::select('id','name')->where('category',1)->get()->keyBy('id')->toArray(); - // $receive = $this->keyToValue($receive,'id','name'); - // $form->select('receive_type')->options($receive)->value($receiveTypeId > 0? $receiveTypeId : 2); - + $form->datetimeRange('start_time','end_time','活动时间')->required(); // ->rules('after:now',[ // 'after' => '只能选择今天和之后的时间' @@ -183,7 +177,6 @@ class CouponController extends AdminController /* 目前默认全平台的分类 */ $categoryList = CategoryModel::getArray(); $form->multipleSelect('category_ids')->options($categoryList)->help('不选默认所有类型可用'); - }); $form->column(12,function(Form $form){ @@ -212,32 +205,6 @@ class CouponController extends AdminController $form->tags = empty($form->input('tags'))? [] : $form->input('tags'); $form->remark = empty($form->input('remark')) ? '' : $form->input('remark'); }); - $form->saved(function (Form $form, $result){ - - $id = $form->getKey(); - $receiveTypeId = $form->input('receive_type'); - // 判断是否是新增操作 - if ($form->isCreating()) { - $id = $result; - - if (! $result) { - return $form->error('数据保存失败'); - } - } - if($form->isEditing()){ - // 删除领取方式 - ReceiveTypeModel::where('coupon_id',$id)->delete(); - } - - // 添加领取方式 - $receiveModel = new ReceiveTypeModel(); - $receiveModel->coupon_id = $id; - $receiveModel->receive_type = $receiveTypeId; - // 获取一次可领取数量 - $receiveNumber = SettingModel::getSettingInfo($receiveTypeId,'value'); - $receiveModel->one_receive_number = empty($receiveNumber) ? 1 : $receiveNumber->value; - $receiveModel->save(); - }); }); } diff --git a/app/Admin/Forms/v3/CouponPublishForm.php b/app/Admin/Forms/v3/CouponPublishForm.php new file mode 100644 index 0000000..e069cfd --- /dev/null +++ b/app/Admin/Forms/v3/CouponPublishForm.php @@ -0,0 +1,95 @@ +error('优惠券不存在或已删除!'); + } + + switch($coupon->status){ + case 0: + case 3: + // 判断活动时间 还未判断 + + $coupon->status = 1; + if(!$coupon->save()){ + return $this->error('发布失败!'); + } + // 删除领取方式 + $delRes = ReceiveTypeModel::where('coupon_id',$id)->delete(); + if($delRes === false){ + return $this->error('发布失败!'); + } + // 添加领取方式 + $receiveModel = new ReceiveTypeModel(); + $receiveModel->coupon_id = $id; + $receiveModel->receive_type = $receiveType; + // 获取一次可领取数量 + $receiveNumber = SettingModel::getSettingInfo($receiveType,'value'); + $receiveModel->one_receive_number = empty($receiveNumber) ? 1 : $receiveNumber->value; + + if($receiveModel->save()){ + return $this->success('发布成功','/coupon'); + } + break; + case 1: + return $this->error('优惠券已发布!'); + break; + case 2: + return $this->error('优惠券已领完!'); + break; + case -1: + return $this->error('优惠券已删除!'); + break; + } + return $this->error('发布失败!'); + } + + /** + * Build a form here. + */ + public function form() + { + $id = $this->getKey(); + $receiveTypeInfo = ReceiveTypeModel::getReceiveTypeInfo($id,'receive_type'); + $list = SettingModel::getSettingArray(); + $receiveType = empty($receiveTypeInfo->receive_type)? 0 :$receiveTypeInfo->receive_type; + $this->hidden('id')->value($id); + $this->select('receive_type','领取方式')->required()->options($list)->value($receiveType); + } + + /** + * The data of the form. + * + * @return array + */ + public function default() + { + return []; + } + +} diff --git a/app/Models/v3/Coupon.php b/app/Models/v3/Coupon.php index 690a3bd..bd2d58a 100644 --- a/app/Models/v3/Coupon.php +++ b/app/Models/v3/Coupon.php @@ -155,4 +155,12 @@ class Coupon extends Model { $this->attributes['usable_end_time'] = strtotime($value); } + + /** + * 根据id获取单条数据 + */ + public static function getInfo($id,$field = '*') + { + return self::select($field)->find($id); + } } diff --git a/app/Models/v3/CouponReceiveType.php b/app/Models/v3/CouponReceiveType.php index 6b9d3b4..7ea118a 100644 --- a/app/Models/v3/CouponReceiveType.php +++ b/app/Models/v3/CouponReceiveType.php @@ -32,4 +32,26 @@ class CouponReceiveType extends Model { return self::select($field)->find($id); } + + /** + * 获取二级分类数组 + * id为键 + * @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('id','name')->toArray(); + if(!empty($options)){ + $new = array_merge($options,$list); + return array_flip($new); + }else{ + return array_flip($list); + } + } }