Browse Source

优惠券--添加快捷修改活动时间

master
liangyuyan 5 years ago
parent
commit
1f6dcf7af7
  1. 52
      app/Admin/Actions/Grid/v3/CouponTime.php
  2. 5
      app/Admin/Controllers/v3/CouponController.php
  3. 113
      app/Admin/Forms/v3/CouponTimeForm.php
  4. 4
      app/Models/v3/Coupon.php

52
app/Admin/Actions/Grid/v3/CouponTime.php

@ -0,0 +1,52 @@
<?php
namespace App\Admin\Actions\Grid\v3;
use Dcat\Admin\Grid\RowAction;
use Dcat\Admin\Widgets\Modal;
use App\Admin\Forms\v3\CouponPublishForm;
use App\Admin\Forms\v3\CouponTimeForm;
class CouponTime extends RowAction
{
/**
* 修改优惠券活动时间
* @return string
*/
protected $title = ' 时间 ';
public function render()
{
$id = $this->getKey();
$modal = Modal::make()
->xl()
->title($this->title)
->body(CouponTimeForm::make()->setKey($id)->payload([
'id'=>$this->row->id,
'status'=>$this->row->status,
'title'=>$this->row->title,
'start_time'=>$this->row->start_time,
'end_time'=>$this->row->end_time,
'usable_start_time'=>$this->row->usable_start_time,
'usable_end_time'=>$this->row->usable_end_time,
]))
->button($this->title);
return $modal;
}
// 确认弹窗信息
public function confirm()
{
return '您确定要修改时间吗?';
}
public function parameters()
{
return [
];
}
}

5
app/Admin/Controllers/v3/CouponController.php

@ -4,6 +4,7 @@ namespace App\Admin\Controllers\v3;
use App\Admin\Actions\Grid\v3\CouponForbidden; use App\Admin\Actions\Grid\v3\CouponForbidden;
use App\Admin\Actions\Grid\v3\CouponPublish; use App\Admin\Actions\Grid\v3\CouponPublish;
use App\Admin\Actions\Grid\v3\CouponTime;
use App\Admin\Repositories\v3\Coupon; use App\Admin\Repositories\v3\Coupon;
use Dcat\Admin\Form; use Dcat\Admin\Form;
use Dcat\Admin\Grid; use Dcat\Admin\Grid;
@ -59,6 +60,7 @@ class CouponController extends AdminController
$grid->actions(function (Grid\Displayers\Actions $actions) use($grid){ $grid->actions(function (Grid\Displayers\Actions $actions) use($grid){
if(in_array($this->status,[0,3])){ if(in_array($this->status,[0,3])){
$actions->append(new CouponPublish()); $actions->append(new CouponPublish());
$actions->append(new CouponTime());
if($this->status == 3){ if($this->status == 3){
$actions->disableEdit(); $actions->disableEdit();
} }
@ -67,6 +69,7 @@ class CouponController extends AdminController
$actions->disableEdit(); $actions->disableEdit();
if($this->status == 1){ if($this->status == 1){
$actions->append(new CouponForbidden()); $actions->append(new CouponForbidden());
$actions->append(new CouponTime());
} }
} }
}); });
@ -137,7 +140,7 @@ class CouponController extends AdminController
return $text; return $text;
}); });
// $show->category_ids->as(function($storeTypeId){ // $show->category_ids->as(function($storeTypeId){
// $text = '全部店铺类型';
// $text = '全部类型';
// if($storeTypeId > 0){ // if($storeTypeId > 0){
// $storeType = storeTypeModel::select('type_name')->find($storeTypeId)->toArray(); // $storeType = storeTypeModel::select('type_name')->find($storeTypeId)->toArray();
// $text = $storeType ? $storeType['type_name'] : $text ; // $text = $storeType ? $storeType['type_name'] : $text ;

113
app/Admin/Forms/v3/CouponTimeForm.php

@ -0,0 +1,113 @@
<?php
namespace App\Admin\Forms\v3;
use App\Models\v3\GoodsBanners;
use Dcat\Admin\Widgets\Form;
use Symfony\Component\HttpFoundation\Response;
use App\Models\v3\CouponReceiveType as ReceiveTypeModel;
use App\Models\v3\CouponSetting as SettingModel;
use App\Models\v3\Coupon as CouponModel;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
class CouponTimeForm extends Form implements LazyRenderable
{
use LazyWidget;
/**
* Handle the form request.
*
* @param array $input
*
* @return Response
*/
public function handle(array $input)
{
// 获取外部传递参数
$id = $input['id'];
$start_time = $input['start_time'] ?? '';
$end_time = $input['end_time'] ?? '';
$usable_start_time = $input['usable_start_time'] ?? '';
$usable_end_time = $input['usable_end_time'] ?? '';
$coupon = CouponModel::find($id);
if(!$coupon){
return $this->error('优惠券不存在或已删除!');
}
switch($coupon->status){
case 0:
case 1:
case 3:
$coupon->start_time = $start_time;
$coupon->end_time = $end_time;
$coupon->usable_start_time = $usable_start_time;
$coupon->usable_end_time = $usable_end_time;
if($coupon->save()){
return $this->success('修改成功','/coupon');
}
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->payload['id'] ?? 0;
$title = $this->payload['title'] ?? '';
$status = $this->payload['status'] ?? -1;
$start_time = $this->payload['start_time'] ?? '';
$end_time = $this->payload['end_time'] ?? '';
$usable_start_time = $this->payload['usable_start_time'] ?? '';
$usable_end_time = $this->payload['usable_end_time'] ?? '';
$this->hidden('id')->value($id);
$this->display('title','标题')->value($title);
$this->datetime('start_time','活动开始时间')->required()
->customFormat(function () use($start_time){
return date('Y-m-d H:i:s',$start_time);
});
$this->datetime('end_time','活动结束时间')->required()
->customFormat(function () use($end_time){
return date('Y-m-d H:i:s',$end_time);
})
->rules('after:start_time',[
'after' => '只能选择活动开始之后的时间'
]);
$this->datetime('usable_start_time','可用开始时间')->required()
->customFormat(function () use($usable_start_time){
return date('Y-m-d H:i:s',$usable_start_time);
});
$this->datetime('usable_end_time','可用结束时间')->required()
->customFormat(function () use($usable_end_time){
return date('Y-m-d H:i:s',$usable_end_time);
})
->rules('after:end_time',[
'after' => '只能选择活动结束之后的时间'
]);
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [];
}
}

4
app/Models/v3/Coupon.php

@ -95,12 +95,12 @@ class Coupon extends Model
public function getEndTimeTextAttribute() public function getEndTimeTextAttribute()
{ {
$value = $this->usable_start_time;
$value = $this->end_time;
return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
} }
public function getUsableStartTimeTextAttribute() public function getUsableStartTimeTextAttribute()
{ {
$value = $this->start_time;
$value = $this->usable_start_time;
return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
} }
public function getUsableEndTimeTextAttribute() public function getUsableEndTimeTextAttribute()

Loading…
Cancel
Save