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
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 [];
|
|
}
|
|
|
|
}
|