You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
<?php
namespace App\Admin\Forms\v3;
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 CouponPublishForm extends Form implements LazyRenderable{ use LazyWidget; /** * Handle the form request. * * @param array $input * * @return Response */ public function handle(array $input) { // 获取外部传递参数
$id = $input['id']; $receiveType = $input['receive_type'];
$coupon = CouponModel::find($id); if(!$coupon){ return $this->error('优惠券不存在或已删除!'); } switch($coupon->status){ case 0: case 3: $time = time(); // 判断活动时间
if($coupon->end_time <= $time + SettingModel::$publishTime){ return $this->error('活动时间已经接近,请重新设置!'); }
if($coupon->status == 0){ // 删除领取方式
$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->error('发布失败!'); } } $coupon->status = 1; if($coupon->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->payload['id'] ?? 0; $title = $this->payload['title'] ?? ''; $status = $this->payload['status'] ?? -1;
$this->hidden('id')->value($id); $this->display('title','标题')->value($title); $receiveTypeInfo = ReceiveTypeModel::getReceiveTypeOne([['coupon_id','=',$id]],'receive_type'); $list = SettingModel::getSettingArray(); $receiveType = empty($receiveTypeInfo->receive_type)? 0 :$receiveTypeInfo->receive_type; if($status == 0){ $this->select('receive_type','领取方式')->required()->options($list)->value($receiveType); }else{ $this->select('receive_type','领取方式')->options($list)->value($receiveType)->disable(); } $this->disableResetButton(); }
/** * The data of the form. * * @return array */ public function default() { return []; }
}
|