链街Dcat后台
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.
 
 
 
 

99 lines
3.0 KiB

<?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;
class CouponPublishForm extends Form
{
/**
* 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('活动时间已经接近,请重新设置!');
}
$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 [];
}
}