Browse Source

Merge branch 'coupon_1016'

# Conflicts:
#	app/Admin/Forms/v3/GoodsImageForm.php
master
liangyuyan 5 years ago
parent
commit
0d004fd6dc
  1. 6
      app/Admin/Actions/Grid/v3/CouponForbidden.php
  2. 2
      app/Admin/Actions/Grid/v3/CouponPublish.php
  3. 51
      app/Admin/Actions/Grid/v3/CouponTime.php
  4. 44
      app/Admin/Controllers/v3/CouponController.php
  5. 2
      app/Admin/Forms/v3/CategoryTieForm.php
  6. 60
      app/Admin/Forms/v3/CouponPublishForm.php
  7. 125
      app/Admin/Forms/v3/CouponTimeForm.php
  8. 2
      app/Admin/Forms/v3/GoodsActivityCopyForm.php
  9. 1
      app/Admin/Forms/v3/GoodsImageForm.php
  10. 2
      app/Admin/Forms/v3/GoodsSpecForm.php
  11. 1
      app/Admin/Forms/v3/StoreUserPasswordForm.php
  12. 8
      app/Models/v3/Coupon.php
  13. 11
      app/Models/v3/CouponUse.php
  14. 2
      app/Models/v3/SystemConfig.php

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

@ -18,16 +18,16 @@ class CouponForbidden extends RowAction
$id = $this->getKey(); $id = $this->getKey();
$coupon = CouponModel::getInfo($id); $coupon = CouponModel::getInfo($id);
if(empty($coupon)){ if(empty($coupon)){
return $this->response()->success('找不到优惠券!');
return $this->response()->error('找不到优惠券!');
}else if($coupon->status == 1){ }else if($coupon->status == 1){
$coupon->status = 3; $coupon->status = 3;
if($coupon->save()){ if($coupon->save()){
return $this->response()->success('禁用成功!','/coupon');
return $this->response()->redirect('/coupon');
} }
}else if($coupon->status == 3){ }else if($coupon->status == 3){
return $this->response()->error('优惠券已禁用!'); return $this->response()->error('优惠券已禁用!');
} }
return $this->response()->success('禁用失败!');
return $this->response()->error('禁用失败!');
} }
// 确认弹窗信息 // 确认弹窗信息

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

@ -20,7 +20,7 @@ class CouponPublish extends RowAction
$modal = Modal::make() $modal = Modal::make()
->xl() ->xl()
->title($this->title) ->title($this->title)
->body(CouponPublishForm::make()->setKey($id))
->body(CouponPublishForm::make()->setKey($id)->payload(['id'=>$this->row->id,'status'=>$this->row->status,'title'=>$this->row->title]))
->button($this->title); ->button($this->title);
return $modal; return $modal;

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

@ -0,0 +1,51 @@
<?php
namespace App\Admin\Actions\Grid\v3;
use Dcat\Admin\Grid\RowAction;
use Dcat\Admin\Widgets\Modal;
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,
'inventory'=>$this->row->inventory,
'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 [
];
}
}

44
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;
@ -15,6 +16,7 @@ use App\Models\v3\Coupon as CouponModel;
use App\Models\v3\Market as MarketModel; use App\Models\v3\Market as MarketModel;
use App\Models\v3\Category as CategoryModel; use App\Models\v3\Category as CategoryModel;
use Dcat\Admin\Form\NestedForm; use Dcat\Admin\Form\NestedForm;
use App\Models\v3\CouponUse as UseModel;
class CouponController extends AdminController class CouponController extends AdminController
{ {
@ -38,7 +40,12 @@ class CouponController extends AdminController
$grid->inventory; $grid->inventory;
$grid->inventory_use; $grid->inventory_use;
$grid->use_number;
$grid->use_number->display(function($use){
$id = $this->id;
$number = UseModel::getUseCount([['coupon_id','=',$id]])->toArray();
$item = isset($number[0]['total']) ? $number[0]['total'] : 0;
return $item;
});
$grid->active_type_text; $grid->active_type_text;
$grid->status $grid->status
->using( ->using(
@ -53,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();
} }
@ -61,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());
} }
} }
}); });
@ -75,6 +84,9 @@ class CouponController extends AdminController
$filter->in('status')->multipleSelect($status); $filter->in('status')->multipleSelect($status);
}); });
$grid->model()->orderBy('id', 'desc');
// 每页10条
$grid->paginate(10);
$grid->disableBatchDelete(); $grid->disableBatchDelete();
// $grid->disableCreateButton(); // $grid->disableCreateButton();
$grid->disableDeleteButton(); $grid->disableDeleteButton();
@ -128,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 ;
@ -224,13 +236,33 @@ class CouponController extends AdminController
// $form->text('usable_number')->width(2)->default(1)->disable(); // $form->text('usable_number')->width(2)->default(1)->disable();
$form->saving(function (Form $form){ $form->saving(function (Form $form){
$tags = $form->input('tags');
$activityAvailable = $form->input('activity_available');
if( $form->discount_type == 2 && ($form->discounts <= 0 || $form->discounts >= 10)){ if( $form->discount_type == 2 && ($form->discounts <= 0 || $form->discounts >= 10)){
return $form->error('优惠金额请输入1~10之间的数字'); return $form->error('优惠金额请输入1~10之间的数字');
} }
$form->activity_available = empty($form->input('activity_available'))? [] : $form->input('activity_available');
$form->tags = empty($form->input('tags'))? [] : $form->input('tags');
$form->tags = empty($form->input('tags'))? [] : $form->input('tags');
$tagsArr = [];
if(!empty($tags)){
foreach($tags as $kt => $tag){
if(empty($tag)){
unset($tags[$kt]);
continue;
}
$tagsArr[] = $tag;
}
};
$form->tags = json_encode($tagsArr);
$availableArr = [];
if(!empty($activityAvailable)){
foreach($activityAvailable as $ka => $available){
if(empty($available)){
unset($activityAvailable[$ka]);
continue;
}
$availableArr[] = $available;
}
};
$form->activity_available = json_encode($availableArr);
$form->remark = empty($form->input('remark')) ? '' : $form->input('remark'); $form->remark = empty($form->input('remark')) ? '' : $form->input('remark');
}); });

2
app/Admin/Forms/v3/CategoryTieForm.php

@ -6,7 +6,6 @@ use Dcat\Admin\Widgets\Form;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use App\Libs\SsdbClient; use App\Libs\SsdbClient;
use App\Models\v3\Category as CategoryModel; use App\Models\v3\Category as CategoryModel;
use Illuminate\Support\Facades\DB;
class CategoryTieForm extends Form class CategoryTieForm extends Form
{ {
@ -59,6 +58,7 @@ class CategoryTieForm extends Form
$parentList = CategoryModel::where('parent_id',0)->pluck('title','id')->toArray(); $parentList = CategoryModel::where('parent_id',0)->pluck('title','id')->toArray();
$this->multipleSelect('category_ids','选择分类')->required()->options($parentList)->value($select)->default($select); $this->multipleSelect('category_ids','选择分类')->required()->options($parentList)->value($select)->default($select);
$this->disableResetButton();
} }
/** /**

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

@ -2,16 +2,17 @@
namespace App\Admin\Forms\v3; namespace App\Admin\Forms\v3;
use App\Models\v3\GoodsBanners;
use Dcat\Admin\Widgets\Form; use Dcat\Admin\Widgets\Form;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use App\Models\v3\CouponReceiveType as ReceiveTypeModel; use App\Models\v3\CouponReceiveType as ReceiveTypeModel;
use App\Models\v3\CouponSetting as SettingModel; use App\Models\v3\CouponSetting as SettingModel;
use App\Models\v3\Coupon as CouponModel; use App\Models\v3\Coupon as CouponModel;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
class CouponPublishForm extends Form
class CouponPublishForm extends Form implements LazyRenderable
{ {
use LazyWidget;
/** /**
* Handle the form request. * Handle the form request.
* *
@ -39,24 +40,26 @@ class CouponPublishForm extends Form
return $this->error('活动时间已经接近,请重新设置!'); return $this->error('活动时间已经接近,请重新设置!');
} }
$coupon->status = 1;
if(!$coupon->save()){
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('发布失败!');
}
} }
// 删除领取方式
$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()){
$coupon->status = 1;
if($coupon->save()){
return $this->success('发布成功','/coupon'); return $this->success('发布成功','/coupon');
} }
break; break;
@ -78,12 +81,21 @@ class CouponPublishForm extends Form
*/ */
public function form() public function form()
{ {
$id = $this->getKey();
$receiveTypeInfo = ReceiveTypeModel::getReceiveTypeInfo($id,'receive_type');
$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(); $list = SettingModel::getSettingArray();
$receiveType = empty($receiveTypeInfo->receive_type)? 0 :$receiveTypeInfo->receive_type; $receiveType = empty($receiveTypeInfo->receive_type)? 0 :$receiveTypeInfo->receive_type;
$this->hidden('id')->value($id);
$this->select('receive_type','领取方式')->required()->options($list)->value($receiveType);
if($status == 0){
$this->select('receive_type','领取方式')->required()->options($list)->value($receiveType);
}else{
$this->select('receive_type','领取方式')->options($list)->value($receiveType)->disable();
}
$this->disableResetButton();
} }
/** /**

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

@ -0,0 +1,125 @@
<?php
namespace App\Admin\Forms\v3;
use Dcat\Admin\Widgets\Form;
use Symfony\Component\HttpFoundation\Response;
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'];
$inventory = $input['inventory'] ?? 0;
$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:
if(!empty($inventory)){
$coupon->inventory = $inventory;
}
if(!empty($inventory)){
$coupon->start_time = $start_time;
}
if(!empty($inventory)){
$coupon->end_time = $end_time;
}
if(!empty($inventory)){
$coupon->usable_start_time = $usable_start_time;
}
if(!empty($inventory)){
$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'] ?? '';
$inventory = $this->payload['inventory'] ?? 0;
$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->number('inventory','发放数量')->required()->type('number')->attribute('min', 1)->value($inventory)->default(1);
$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' => '只能选择活动结束之后的时间'
]);
$this->disableResetButton();
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [];
}
}

2
app/Admin/Forms/v3/GoodsActivityCopyForm.php

@ -4,7 +4,6 @@
*/ */
namespace App\Admin\Forms\v3; namespace App\Admin\Forms\v3;
use Dcat\Admin\Models\Administrator;
use Dcat\Admin\Traits\LazyWidget; use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form; use Dcat\Admin\Widgets\Form;
use Dcat\Admin\Contracts\LazyRenderable; use Dcat\Admin\Contracts\LazyRenderable;
@ -121,6 +120,7 @@ class GoodsActivityCopyForm extends Form implements LazyRenderable
$this->number('time_limit_num','限制购买数量')->default(1)->help('A时间段内限购的数量'); $this->number('time_limit_num','限制购买数量')->default(1)->help('A时间段内限购的数量');
$this->switch('can_use_coupon','可同时使用优惠券')->default(0); $this->switch('can_use_coupon','可同时使用优惠券')->default(0);
$this->select('type','活动类型')->options(GoodsModel::$_TYPE)->default('flash_sale'); $this->select('type','活动类型')->options(GoodsModel::$_TYPE)->default('flash_sale');
$this->disableResetButton();
} }
/** /**

1
app/Admin/Forms/v3/GoodsImageForm.php

@ -78,6 +78,7 @@ class GoodsImageForm extends Form implements LazyRenderable
$banners = GoodsBanners::where('goods_id',$id)->pluck('path')->toArray(); $banners = GoodsBanners::where('goods_id',$id)->pluck('path')->toArray();
return empty($banners) ? [] : $banners; return empty($banners) ? [] : $banners;
})->autoUpload(); })->autoUpload();
$this->disableResetButton();
} }
/** /**

2
app/Admin/Forms/v3/GoodsSpecForm.php

@ -2,11 +2,9 @@
namespace App\Admin\Forms\v3; namespace App\Admin\Forms\v3;
use App\Models\v3\GoodsBanners;
use Dcat\Admin\Widgets\Form; use Dcat\Admin\Widgets\Form;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use App\Models\v3\Goods as GoodsModel; use App\Models\v3\Goods as GoodsModel;
use App\Models\v3\GoodsBanners as GoodsBannerModel;
use Dcat\Admin\Form\NestedForm; use Dcat\Admin\Form\NestedForm;
class GoodsSpecForm extends Form class GoodsSpecForm extends Form

1
app/Admin/Forms/v3/StoreUserPasswordForm.php

@ -2,7 +2,6 @@
namespace App\Admin\Forms\v3; namespace App\Admin\Forms\v3;
use App\Models\v3\GoodsBanners;
use Dcat\Admin\Widgets\Form; use Dcat\Admin\Widgets\Form;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use App\Models\v3\StoreUser as StoreUserModel; use App\Models\v3\StoreUser as StoreUserModel;

8
app/Models/v3/Coupon.php

@ -47,8 +47,8 @@ class Coupon extends Model
protected $casts = [ protected $casts = [
'market_ids'=>'array', 'market_ids'=>'array',
'category_ids'=>'array', 'category_ids'=>'array',
'tags'=>'array',
'activity_available'=>'array'
// 'tags'=>'json',
// 'activity_available'=>'array'
]; ];
public function getStatusTextAttribute() public function getStatusTextAttribute()
@ -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()

11
app/Models/v3/CouponUse.php

@ -3,12 +3,21 @@
namespace App\Models\v3; namespace App\Models\v3;
use Dcat\Admin\Traits\HasDateTimeFormatter; use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class CouponUse extends Model class CouponUse extends Model
{ {
use HasDateTimeFormatter; use HasDateTimeFormatter;
protected $table = 'lanzu_coupon_use'; protected $table = 'lanzu_coupon_use';
/**
* 根据条件 获取使用数量
*/
public static function getUseCount($where)
{
$data = self::select(DB::raw(' COUNT(id) as total,coupon_id'))->where($where)->groupBy('coupon_id')->get();
return $data;
}
} }

2
app/Models/v3/SystemConfig.php

@ -17,7 +17,7 @@ class SystemConfig extends Model
/* 查询记录数 limit */ /* 查询记录数 limit */
protected $perPage = 10; protected $perPage = 10;
public static $_CATEGORY= [1=>'奖励类',2=>'店铺设置类',3=>'市场管理后台配置',4=>'订单相关设置'];
public static $_CATEGORY= [1=>'奖励类',2=>'店铺设置类',3=>'市场管理后台配置',4=>'订单相关设置',5=>'提现设置'];
public static $_STATUS = ['禁用','启用']; public static $_STATUS = ['禁用','启用'];
protected $appends = [ protected $appends = [

Loading…
Cancel
Save