Browse Source

Merge branch 'hotfix-phoenix' of http://120.24.33.109:11081/hyzjshwo/mp_lanzu_cat into hotfix-phoenix

master
lanzu_qinsheng 5 years ago
parent
commit
d85e705392
  1. 39
      app/Admin/Actions/Grid/v3/CouponForbidden.php
  2. 42
      app/Admin/Actions/Grid/v3/CouponPublish.php
  3. 71
      app/Admin/Controllers/v3/CouponController.php
  4. 95
      app/Admin/Forms/v3/CouponPublishForm.php
  5. 8
      app/Models/v3/Coupon.php
  6. 22
      app/Models/v3/CouponReceiveType.php

39
app/Admin/Actions/Grid/v3/CouponForbidden.php

@ -0,0 +1,39 @@
<?php
namespace App\Admin\Actions\Grid\v3;
use Dcat\Admin\Grid\RowAction;
use App\Models\v3\Coupon as CouponModel;
class CouponForbidden extends RowAction
{
/**
* @return string
*/
protected $title = '禁用';
public function handle()
{
$id = $this->getKey();
$coupon = CouponModel::getInfo($id);
if(!empty($coupon)){
$coupon->status = 3;
if($coupon->save()){
return $this->response()->success('禁用成功!','/coupon');
}
}
return $this->response()->success('禁用失败!');
}
// 确认弹窗信息
public function confirm()
{
return '您确定要禁用吗?';
}
public function parameters()
{
return ['status'=>3];
}
}

42
app/Admin/Actions/Grid/v3/CouponPublish.php

@ -0,0 +1,42 @@
<?php
namespace App\Admin\Actions\Grid\v3;
use Dcat\Admin\Grid\RowAction;
use Dcat\Admin\Widgets\Modal;
use App\Admin\Forms\v3\CouponPublishForm;
class CouponPublish extends RowAction
{
/**
* @return string
*/
protected $title = '发布';
public function render()
{
$id = $this->getKey();
$modal = Modal::make()
->xl()
->title($this->title)
->body(CouponPublishForm::make()->setKey($id))
->button($this->title);
return $modal;
}
// 确认弹窗信息
public function confirm()
{
return '您确定要发布吗?';
}
public function parameters()
{
return [
];
}
}

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

@ -2,6 +2,8 @@
namespace App\Admin\Controllers\v3;
use App\Admin\Actions\Grid\v3\CouponForbidden;
use App\Admin\Actions\Grid\v3\CouponPublish;
use App\Admin\Repositories\v3\Coupon;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
@ -52,6 +54,18 @@ class CouponController extends AdminController
);
$grid->model()->orderBy('id','desc');
$grid->actions(function (Grid\Displayers\Actions $actions) use($grid){
if(in_array($this->status,[0,3])){
$actions->append(new CouponPublish());
}else if(in_array($this->status,[1,2])){
$actions->disableDelete();
$actions->disableEdit();
if($this->status == 1){
$actions->append(new CouponForbidden());
}
}
});
$grid->filter(function (Grid\Filter $filter) {
$filter->like('title','标题');
$filter->equal('discount_type')->select(config('coupon.discount_type'));
@ -62,6 +76,9 @@ class CouponController extends AdminController
});
$grid->disableBatchDelete();
$grid->disableCreateButton();
$grid->disableDeleteButton();
$grid->disableEditButton();
});
}
@ -129,19 +146,6 @@ class CouponController extends AdminController
{
$builder = CouponModel::with('receiveType');
return Form::make($builder, function (Form $form) {
$receiveTypeId = 0;
if($form->isEditing()){
$id = $form->getKey();
// 查询已选择的领取方式
$receiveType = ReceiveTypeModel::getReceiveTypeOne([['coupon_id','=',$id]],'receive_type');
$receiveTypeId = $receiveType && !empty($receiveType->receive_type) ? $receiveType->receive_type : 0;
// $startTime = date('Y-m-d H:i:s',$form->model()->start_time);
// $endTime = date('Y-m-d H:i:s',$form->model()->end_time);
// $usableStartTime = date('Y-m-d H:i:s',$form->model()->usable_start_time);
// $usableEndTime = date('YmdHis',$form->model()->usable_end_time);
// dd($usableEndTime);
}
$form->column(6,function(Form $form){
$form->text('title')->required()->maxLength(255,'最多只能输入500个字');
@ -152,21 +156,11 @@ class CouponController extends AdminController
$form->number('inventory')->required()->type('number')->attribute('min', 1)->default(1);
$form->number('weigh')->type('number')->attribute('min', 0)->default(0);
$form->hidden('is_new_user')->options(CouponModel::$_ISNEWUSER)->default(2);
});
$form->column(6,function(Form $form) use($receiveTypeId){
$form->column(6,function(Form $form) {
$form->select('active_type')->required()->options(CouponModel::$_ACTIVETYPE)->default(1);
/* 领取方式 */
$receives = SettingModel::getSettingArray([['category','=',1]]);
$form->select('receive_type.receive_type','领取方式')->required()->options($receives)->value($receiveTypeId)->default($receiveTypeId);
// $form->hasMany('receive_type',function(NestedForm $form){
// $form->select('receive_type')->options($receives);
// });
// $receive = SettingModel::select('id','name')->where('category',1)->get()->keyBy('id')->toArray();
// $receive = $this->keyToValue($receive,'id','name');
// $form->select('receive_type')->options($receive)->value($receiveTypeId > 0? $receiveTypeId : 2);
$form->datetimeRange('start_time','end_time','活动时间')->required();
// ->rules('after:now',[
// 'after' => '只能选择今天和之后的时间'
@ -183,7 +177,6 @@ class CouponController extends AdminController
/* 目前默认全平台的分类 */
$categoryList = CategoryModel::getArray();
$form->multipleSelect('category_ids')->options($categoryList)->help('不选默认所有类型可用');
});
$form->column(12,function(Form $form){
@ -212,32 +205,6 @@ class CouponController extends AdminController
$form->tags = empty($form->input('tags'))? [] : $form->input('tags');
$form->remark = empty($form->input('remark')) ? '' : $form->input('remark');
});
$form->saved(function (Form $form, $result){
$id = $form->getKey();
$receiveTypeId = $form->input('receive_type');
// 判断是否是新增操作
if ($form->isCreating()) {
$id = $result;
if (! $result) {
return $form->error('数据保存失败');
}
}
if($form->isEditing()){
// 删除领取方式
ReceiveTypeModel::where('coupon_id',$id)->delete();
}
// 添加领取方式
$receiveModel = new ReceiveTypeModel();
$receiveModel->coupon_id = $id;
$receiveModel->receive_type = $receiveTypeId;
// 获取一次可领取数量
$receiveNumber = SettingModel::getSettingInfo($receiveTypeId,'value');
$receiveModel->one_receive_number = empty($receiveNumber) ? 1 : $receiveNumber->value;
$receiveModel->save();
});
});
}

95
app/Admin/Forms/v3/CouponPublishForm.php

@ -0,0 +1,95 @@
<?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:
// 判断活动时间 还未判断
$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 [];
}
}

8
app/Models/v3/Coupon.php

@ -155,4 +155,12 @@ class Coupon extends Model
{
$this->attributes['usable_end_time'] = strtotime($value);
}
/**
* 根据id获取单条数据
*/
public static function getInfo($id,$field = '*')
{
return self::select($field)->find($id);
}
}

22
app/Models/v3/CouponReceiveType.php

@ -32,4 +32,26 @@ class CouponReceiveType extends Model
{
return self::select($field)->find($id);
}
/**
* 获取二级分类数组
* id为键
* @return array
*/
public static function getArray($where = [],$options = [])
{
$model = self::where('status',1)
->whereNull('deleted_at');
if(count($where) > 0){
$model->where($where);
}
$list = $model->pluck('id','name')->toArray();
if(!empty($options)){
$new = array_merge($options,$list);
return array_flip($new);
}else{
return array_flip($list);
}
}
}
Loading…
Cancel
Save