diff --git a/app/Admin/Controllers/CouponController.php b/app/Admin/Controllers/CouponController.php index 025163b..0e39024 100644 --- a/app/Admin/Controllers/CouponController.php +++ b/app/Admin/Controllers/CouponController.php @@ -7,8 +7,11 @@ use Dcat\Admin\Form; use Dcat\Admin\Grid; use Dcat\Admin\Show; use Dcat\Admin\Controllers\AdminController; -use App\Models\Coupon as couponModel; -use App\Models\CouponSetting as couponSettingModel; +use App\Models\CouponReceiveType as ReceiveTypeModel; +use App\Models\CouponSetting as SettingModel; +use App\Models\Coupon as CouponModel; +use App\Models\ImsCjdcMarket as marketModel; +use App\Models\StoreType as storeTypeModel; class CouponController extends AdminController { @@ -63,31 +66,49 @@ class CouponController extends AdminController */ protected function detail($id) { - return Show::make($id, new Coupon(), function (Show $show) { - $show->id; + return Show::make($id, new Coupon(), function (Show $show) use($id){ + // $show->id; $show->title; $show->introduce; - $show->start_time; - $show->end_time; $show->full_amount; $show->discounts; - $show->is_new_user; + $show->discount_type_text; $show->inventory; $show->inventory_use; - $show->type; - $show->market_id; - $show->storetype_id; - $show->category; - $show->active_type; - $show->status; - $show->remark; - $show->weigh; + + $show->start_time_text; + $show->end_time_text; + $show->usable_start_time_text; + $show->usable_end_time_text; + + $show->active_type_text; + $show->receive_type_text; + $show->type_text; + $show->category_text; + $show->market_id->as(function($marketId){ + $text = '全部市场'; + if($marketId > 0){ + $market = marketModel::select('name')->find($marketId)->toArray(); + $text = $market ? $market['name'] : $text ; + } + return $text; + }); + $show->storetype_id->as(function($storeTypeId){ + $text = '全部店铺类型'; + if($storeTypeId > 0){ + $storeType = storeTypeModel::select('type_name')->find($storeTypeId)->toArray(); + $text = $storeType ? $storeType['type_name'] : $text ; + } + return $text; + }); + $show->is_new_user_text; + $show->usable_number; - $show->usable_start_time; - $show->usable_end_time; - $show->discount_type; - $show->created_at; - $show->updated_at; + $show->weigh; + $show->remark; + $show->status_text; + $show->created_at_text; + $show->updated_at_text; }); } @@ -99,7 +120,24 @@ class CouponController extends AdminController protected function form() { return Form::make(new Coupon(), function (Form $form) { - $form->display('id'); + $receiveTypeId = 0; + $startTime = null; + if($form->isEditing()){ + $id = $form->getKey(); + // 查询已选择的领取方式 + $receiveType = ReceiveTypeModel::where('system_coupon_user_id',$id)->first('receive_type'); + $receiveTypeId = $receiveType ? $receiveType->receive_type : $receiveTypeId ; + // $startTime = date('Y-m-d H:i:s',$form->model()->start_time); + } + + /* 页面按钮 */ + $form->disableResetButton(); + /* 不显示字段 */ + $form->hidden('id'); + $form->hidden('created_at'); + $form->hidden('updated_at'); + + /* 编辑字段 */ $form->text('title')->required()->maxLength(255,'最多只能输入500个字'); $form->textarea('introduce')->required(); @@ -108,17 +146,19 @@ class CouponController extends AdminController $form->radio('discount_type')->options(config('coupon.discount_type'))->default(1)->required(); $form->text('inventory')->width(2)->required()->type('number')->attribute('min', 1)->default(1); - $form->datetime('start_time')->width(3)->required(); + $form->datetime('start_time')->width(3)->required() + ->format('YYYY-MM-DD HH:mm:ss') + ->value('2020-08-21 20:20:20') + ; $form->datetime('end_time')->width(3)->required(); $form->datetime('usable_start_time')->width(3)->required(); $form->datetime('usable_end_time')->width(3)->required(); $form->select('active_type')->width(3)->options(config('coupon.active_type'))->default(1); /* 领取方式 */ - $receive = couponSettingModel::select('id','name')->where('category',1)->get()->keyBy('id')->toArray(); + $receive = SettingModel::select('id','name')->where('category',1)->get()->keyBy('id')->toArray(); $receive = $this->keyToValue($receive,'id','name'); - $form->select('receive_type')->width(3)->options($receive)->default(2); - + $form->select('receive_type')->width(3)->options($receive)->value($receiveTypeId > 0? $receiveTypeId : 2); $form->select('type')->width(3)->options(config('coupon.type'))->default(1)->disable(); $form->select('category')->width(3)->options(config('coupon.category'))->default(1)->disable(); @@ -132,13 +172,69 @@ class CouponController extends AdminController // $form->text('usable_number')->width(2)->default(1)->disable(); $form->text('weigh')->width(2)->type('number')->attribute('min', 0)->default(0); $form->text('remark')->maxLength(500,'最多只能输入500个字'); - - $form->display('created_at'); - $form->display('updated_at'); + $form->saved(function (Form $form, $result) { + + $id = $form->getKey(); + $receiveType = $form->model()->receive_type; + + // 判断是否是新增操作 + if ($form->isCreating()) { + $id = $result; + + if (! $result) { + return $form->error('数据保存失败'); + } + } + if($form->isEditing()){ + // 删除领取方式 + $receiveTypeModel = ReceiveTypeModel::where('system_coupon_user_id',$id)->get(); + $receiveTypeModel->delete(); + } + + // 添加领取方式 + $receiveModel = new ReceiveTypeModel(); + $receiveModel->system_coupon_user_id = $id; + $receiveModel->receive_type = $receiveType; + // 获取一次可领取数量 + $receiveNumber = SettingModel::select('value')->find($receiveType); + $receiveModel->one_receive_number = $receiveNumber ? $receiveNumber['value'] :1; + $receiveModel->save(); + }); + $form->deleting(function (Form $form) { + // 获取待删除行数据,这里获取的是一个二维数组 + $data = $form->model()->toArray(); + $model = couponModel::find($data[0]['id']); + // 修改优惠券状态 + $model->status = -1; + $model->save(); + }); + + /* 忽略字段 */ + $form->ignore(['receive_type']); }); } + /** + * Handle the form request. + * + * @param array $input + * + * @return Response + */ + public function handle(array $input) + { + dd($input); + $data = $input; + + $coupon = 1; + if($coupon === false){ + return $this->error('数据保存失败'); + } + + return $this->success('数据保存成功', '/coupon'); + } + /** * 组装新数组 */ diff --git a/app/Admin/Controllers/CouponTieController.php b/app/Admin/Controllers/CouponTieController.php index fe53cc6..2fa436e 100644 --- a/app/Admin/Controllers/CouponTieController.php +++ b/app/Admin/Controllers/CouponTieController.php @@ -80,12 +80,4 @@ class CouponTieController extends AdminController ->body(new Card(new CouponTieForm())); } - // /** - // * 服务商信息 - // * @return \Illuminate\Http\JsonResponse - // */ - // protected function getMpInfo() - // { - - // } } diff --git a/app/Models/Coupon.php b/app/Models/Coupon.php index ce52e50..31ff472 100644 --- a/app/Models/Coupon.php +++ b/app/Models/Coupon.php @@ -5,14 +5,19 @@ namespace App\Models; use Dcat\Admin\Traits\HasDateTimeFormatter; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Model; +use App\Models\CouponSetting as SettingModel; class Coupon extends Model { use HasDateTimeFormatter; use SoftDeletes; - + + protected $dateFormat = 'U'; + protected $table = 'ims_system_coupon_user'; + /* 查询记录数 limit */ protected $perPage = 10; + /* 添加转换字段 */ protected $appends = [ 'status_text', 'type_text', @@ -23,7 +28,10 @@ class Coupon extends Model 'start_time_text', 'end_time_text', 'usable_start_time_text', - 'usable_end_time_text' + 'usable_end_time_text', + 'receive_type_text', + 'created_at_text', + 'updated_at_text' ]; public function getStatusTextAttribute() @@ -62,7 +70,7 @@ class Coupon extends Model return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; } - public function getEndTimeTextAttribute($value) + public function getEndTimeTextAttribute() { $value = $this->usable_start_time; return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; @@ -72,36 +80,58 @@ class Coupon extends Model $value = $this->start_time; return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; } - public function getUsableEndTimeTextAttribute($value) + public function getUsableEndTimeTextAttribute() { $value = $this->usable_end_time; return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; } + public function getCreatedAtTextAttribute() + { + $value = $this->created_at; + return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; + } + public function getUpdatedAtTextAttribute() + { + $value = $this->updated_at; + return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; + } + public function getReceiveTypeTextAttribute() + { + $id = $this->getKey(); + $receive = SettingModel::where('receive_type.system_coupon_user_id',$id) + ->join('ims_system_coupon_user_receivetype as receive_type','receive_type.receive_type','ims_system_coupon_setting.id','inner') + ->first('name'); + + return $receive ? $receive['name'] : ''; + } // 设置 protected function setStartTimeAttribute($value) { - return $value === '' ? null : strtotime($value); + $this->attributes['start_time'] = strtotime($value); } protected function setEndTimeAttribute($value) { - return $value === '' ? null : strtotime($value); + $this->attributes['end_time'] = strtotime($value); } protected function setUsableStarttimeAttribute($value) { - return $value === '' ? null : strtotime($value); + $this->attributes['usable_start_time'] = strtotime($value); } protected function setUsableEndTimeAttribute($value) { - return $value === '' ? null : strtotime($value); + $this->attributes['usable_end_time'] = strtotime($value); } protected function setAddtimeAttribute($value) { - return $value === '' ? null : strtotime($value); + $this->attributes['addtime'] = time(); + } + protected function setUpdatetimeAttribute($value) + { + $this->attributes['updatetime'] = time(); } - } diff --git a/app/Models/CouponReceiveType.php b/app/Models/CouponReceiveType.php index 6bb33cf..e924904 100644 --- a/app/Models/CouponReceiveType.php +++ b/app/Models/CouponReceiveType.php @@ -3,12 +3,15 @@ namespace App\Models; use Dcat\Admin\Traits\HasDateTimeFormatter; - +use App\Models\CouponSetting as SettingModel; use Illuminate\Database\Eloquent\Model; class CouponReceiveType extends Model { use HasDateTimeFormatter; - protected $table = 'ims_system_coupon_receivetype'; + protected $table = 'ims_system_coupon_user_receivetype'; + public function setting(){ + return $this->belongsTo(SettingModel::class,'receive_type','id','inner'); + } } diff --git a/app/Models/CouponSetting.php b/app/Models/CouponSetting.php index cf3889c..1a5c9ae 100644 --- a/app/Models/CouponSetting.php +++ b/app/Models/CouponSetting.php @@ -3,14 +3,11 @@ namespace App\Models; use Dcat\Admin\Traits\HasDateTimeFormatter; -use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Model; class CouponSetting extends Model { use HasDateTimeFormatter; - // use SoftDeletes; - protected $table = 'ims_system_coupon_setting'; } diff --git a/app/Models/StoreType.php b/app/Models/StoreType.php new file mode 100644 index 0000000..3c7b8ad --- /dev/null +++ b/app/Models/StoreType.php @@ -0,0 +1,14 @@ + '可用开始时间', 'usable_end_time_text' => '可用结束时间', 'discount_type_text' => '优惠类型', + 'receive_type' => '领取方式', + 'receive_type_text' => '领取方式', + 'created_at_text' => '创建时间', + 'updated_at_text' => '更新时间' ], 'options' => [ ],