调整活动
This commit is contained in:
@@ -5,67 +5,17 @@ namespace App\Admin\Controllers\Activity;
|
|||||||
use App\Models\Activity;
|
use App\Models\Activity;
|
||||||
use App\Models\ActivityRule;
|
use App\Models\ActivityRule;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Encore\Admin\Controllers\HasResourceActions;
|
use Encore\Admin\Controllers\AdminController;
|
||||||
use Encore\Admin\Form;
|
use Encore\Admin\Form;
|
||||||
use Encore\Admin\Grid;
|
use Encore\Admin\Grid;
|
||||||
use Encore\Admin\Layout\Content;
|
|
||||||
use Illuminate\Support\MessageBag;
|
use Illuminate\Support\MessageBag;
|
||||||
use Illuminate\Routing\Controller as AdminController;
|
|
||||||
|
|
||||||
class IndexController extends AdminController
|
class IndexController extends AdminController
|
||||||
{
|
{
|
||||||
|
|
||||||
use HasResourceActions;
|
|
||||||
|
|
||||||
protected $title = '活动管理';
|
protected $title = '活动管理';
|
||||||
|
|
||||||
/**
|
protected function grid(): Grid
|
||||||
* Get content title.
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
protected function title()
|
|
||||||
{
|
|
||||||
return $this->title;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Index interface.
|
|
||||||
* @param Content $content
|
|
||||||
* @return Content
|
|
||||||
*/
|
|
||||||
public function index(Content $content)
|
|
||||||
{
|
|
||||||
return $content->title($this->title())
|
|
||||||
->description($this->description['index'] ?? trans('admin.list'))
|
|
||||||
->body($this->grid());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Edit interface.
|
|
||||||
* @param mixed $id
|
|
||||||
* @param Content $content
|
|
||||||
* @return Content
|
|
||||||
*/
|
|
||||||
public function edit($id, Content $content)
|
|
||||||
{
|
|
||||||
return $content->title($this->title())
|
|
||||||
->description($this->description['edit'] ?? trans('admin.edit'))
|
|
||||||
->body($this->form($id)->edit($id));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create interface.
|
|
||||||
* @param Content $content
|
|
||||||
* @return Content
|
|
||||||
*/
|
|
||||||
public function create(Content $content)
|
|
||||||
{
|
|
||||||
return $content->title($this->title())
|
|
||||||
->description($this->description['create'] ?? trans('admin.create'))
|
|
||||||
->body($this->form());
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function grid()
|
|
||||||
{
|
{
|
||||||
$grid = new Grid(new Activity);
|
$grid = new Grid(new Activity);
|
||||||
$grid->model()->withCount('coupons');
|
$grid->model()->withCount('coupons');
|
||||||
@@ -146,7 +96,7 @@ class IndexController extends AdminController
|
|||||||
* Make a form builder.
|
* Make a form builder.
|
||||||
* @return Form
|
* @return Form
|
||||||
*/
|
*/
|
||||||
protected function form($id = '')
|
protected function form(): Form
|
||||||
{
|
{
|
||||||
$form = new Form(new Activity);
|
$form = new Form(new Activity);
|
||||||
|
|
||||||
@@ -185,26 +135,62 @@ class IndexController extends AdminController
|
|||||||
->default(1)
|
->default(1)
|
||||||
->help('同一订单,多次核销时校验,订单每满100元可核销一笔。');
|
->help('同一订单,多次核销时校验,订单每满100元可核销一笔。');
|
||||||
|
|
||||||
$grantdef = $verificationsdef = '';
|
$users = User::query()
|
||||||
if ($id) {
|
->with('info')
|
||||||
$grantdef = Activity::find($id)->grants()->pluck('user_id')->toArray();
|
->whereHas('identity', function ($q) {
|
||||||
$verificationsdef = Activity::find($id)->verifications()->pluck('user_id')->toArray();
|
$q->where('identity_id', 1);
|
||||||
}
|
})
|
||||||
|
->orderBy('id', 'desc')
|
||||||
$users = User::with('info')->whereHas('identity', function ($q) {
|
->get()
|
||||||
$q->where('identity_id', 1);
|
->pluck('nickname', 'id');
|
||||||
})->orderBy('id', 'desc')->get()->pluck('nickname', 'id');
|
|
||||||
|
|
||||||
$form->listbox('grants.user_id', '可发券渠道')
|
$form->listbox('grants.user_id', '可发券渠道')
|
||||||
->options($users)
|
->options($users)
|
||||||
->default($grantdef)
|
->default(function ($form) {
|
||||||
|
if ($form->isEditing()) {
|
||||||
|
return $form->model()->grants()->pluck('user_id')->toArray();
|
||||||
|
} else {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
})
|
||||||
->required();
|
->required();
|
||||||
|
|
||||||
$form->listbox('verifications.user_id', '可核券渠道')
|
$form->listbox('verifications.user_id', '可核券渠道')
|
||||||
->options($users)
|
->options($users)
|
||||||
->default($verificationsdef)
|
->default(function ($form) {
|
||||||
|
if ($form->isEditing()) {
|
||||||
|
return $form->model()->verifications()->pluck('user_id')->toArray();
|
||||||
|
} else {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
})
|
||||||
->required();
|
->required();
|
||||||
|
|
||||||
|
$form->radio('verify_shop', '网点校验')
|
||||||
|
->options(Activity::VERIFY_SHOPS)
|
||||||
|
->default(Activity::VERIFY_SHOP_NO)
|
||||||
|
->when(Activity::VERIFY_SHOP_YES, function (Form $form) use ($users) {
|
||||||
|
$form->listbox('shops.user_id', '可核券渠道')
|
||||||
|
->options(function () {
|
||||||
|
return User::query()
|
||||||
|
->with('info')
|
||||||
|
->whereHas('identity', function ($q) {
|
||||||
|
$q->where('identity_id', 2);
|
||||||
|
})
|
||||||
|
->where('status', 1)
|
||||||
|
->orderBy('id', 'desc')
|
||||||
|
->get()
|
||||||
|
->pluck('nickname', 'id');
|
||||||
|
})
|
||||||
|
->default(function ($form) {
|
||||||
|
if ($form->isEditing()) {
|
||||||
|
return $form->model()->shops()->pluck('user_id')->toArray();
|
||||||
|
} else {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
$form->saving(function (Form $form) {
|
$form->saving(function (Form $form) {
|
||||||
$request = request();
|
$request = request();
|
||||||
|
|
||||||
@@ -243,9 +229,22 @@ class IndexController extends AdminController
|
|||||||
$form->end_at = $form->end_at . ' 23:59:59';
|
$form->end_at = $form->end_at . ' 23:59:59';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$shops = isset(request()->shops) ? array_filter(request()->shops['user_id']) : [];
|
||||||
|
|
||||||
|
if (request()->verify_shop == Activity::VERIFY_SHOP_YES && empty($shops)) {
|
||||||
|
$error = new MessageBag([
|
||||||
|
'title' => '错误',
|
||||||
|
'message' => '必须设置可核销的网点',
|
||||||
|
]);
|
||||||
|
|
||||||
|
return back()->withInput()->with(compact('error'));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$form->saved(function (Form $form) {
|
$form->saved(function (Form $form) {
|
||||||
|
//设置发券渠道
|
||||||
$users = [];
|
$users = [];
|
||||||
foreach ($form->grants['user_id'] as $key => $user_id) {
|
foreach ($form->grants['user_id'] as $key => $user_id) {
|
||||||
if ($user_id) {
|
if ($user_id) {
|
||||||
@@ -258,6 +257,8 @@ class IndexController extends AdminController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$form->model()->grants()->whereNotIn('user_id', $users)->delete();
|
$form->model()->grants()->whereNotIn('user_id', $users)->delete();
|
||||||
|
|
||||||
|
//设置核销渠道
|
||||||
$users = [];
|
$users = [];
|
||||||
foreach ($form->verifications['user_id'] as $key => $user_id) {
|
foreach ($form->verifications['user_id'] as $key => $user_id) {
|
||||||
if ($user_id) {
|
if ($user_id) {
|
||||||
@@ -270,6 +271,20 @@ class IndexController extends AdminController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$form->model()->verifications()->whereNotIn('user_id', $users)->delete();
|
$form->model()->verifications()->whereNotIn('user_id', $users)->delete();
|
||||||
|
|
||||||
|
//设置核销网点
|
||||||
|
$users = [];
|
||||||
|
foreach ($form->shops['user_id'] as $key => $user_id) {
|
||||||
|
if ($user_id) {
|
||||||
|
$form->model()
|
||||||
|
->shops()
|
||||||
|
->updateOrCreate([
|
||||||
|
'user_id' => $user_id,
|
||||||
|
]);
|
||||||
|
$users[] = $user_id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$form->model()->shops()->whereNotIn('user_id', $users)->delete();
|
||||||
});
|
});
|
||||||
|
|
||||||
return $form;
|
return $form;
|
||||||
|
|||||||
@@ -3,16 +3,10 @@
|
|||||||
namespace App\Admin\Controllers\Activity;
|
namespace App\Admin\Controllers\Activity;
|
||||||
|
|
||||||
use App\Admin\Renderable\Activity\Grants;
|
use App\Admin\Renderable\Activity\Grants;
|
||||||
use App\Models\Activity;
|
|
||||||
use App\Models\ActivityCouponLog;
|
use App\Models\ActivityCouponLog;
|
||||||
use App\Models\ActivityGrant;
|
|
||||||
use App\Models\ActivityRule;
|
|
||||||
use App\Models\User;
|
|
||||||
use Encore\Admin\Controllers\HasResourceActions;
|
use Encore\Admin\Controllers\HasResourceActions;
|
||||||
use Encore\Admin\Form;
|
|
||||||
use Encore\Admin\Grid;
|
use Encore\Admin\Grid;
|
||||||
use Encore\Admin\Layout\Content;
|
use Encore\Admin\Layout\Content;
|
||||||
use Illuminate\Support\MessageBag;
|
|
||||||
use Illuminate\Routing\Controller as AdminController;
|
use Illuminate\Routing\Controller as AdminController;
|
||||||
|
|
||||||
class LogController extends AdminController
|
class LogController extends AdminController
|
||||||
@@ -33,7 +27,7 @@ class LogController extends AdminController
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Index interface.
|
* Index interface.
|
||||||
* @param Content $content
|
* @param Content $content
|
||||||
* @return Content
|
* @return Content
|
||||||
*/
|
*/
|
||||||
public function index(Content $content)
|
public function index(Content $content)
|
||||||
@@ -69,20 +63,20 @@ class LogController extends AdminController
|
|||||||
$grid->column('id', '#ID#');
|
$grid->column('id', '#ID#');
|
||||||
$grid->column('code', '卡券编号');
|
$grid->column('code', '卡券编号');
|
||||||
$grid->column('type', '分类')
|
$grid->column('type', '分类')
|
||||||
->using(ActivityCouponLog::TYPES)
|
->using(ActivityCouponLog::TYPES)
|
||||||
->label([
|
->label([
|
||||||
1 => 'default',
|
1 => 'default',
|
||||||
2 => 'warning',
|
2 => 'warning',
|
||||||
3 => 'info',
|
3 => 'info',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$grid->column('status', '状态')
|
$grid->column('status', '状态')
|
||||||
->using(ActivityCouponLog::STATUS)
|
->using(ActivityCouponLog::STATUS)
|
||||||
->label([
|
->label([
|
||||||
1 => 'default',
|
1 => 'default',
|
||||||
2 => 'warning',
|
2 => 'warning',
|
||||||
3 => 'info',
|
3 => 'info',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$grid->column('remark', '处理结果');
|
$grid->column('remark', '处理结果');
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,9 @@
|
|||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use App\Models\Traits\BelongsToUser;
|
use App\Models\Traits\BelongsToUser;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class Activity extends Model
|
class Activity extends Model
|
||||||
@@ -36,6 +39,13 @@ class Activity extends Model
|
|||||||
self::CHANNEL_UNION => '银联',
|
self::CHANNEL_UNION => '银联',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const VERIFY_SHOP_YES = 1;
|
||||||
|
const VERIFY_SHOP_NO = 0;
|
||||||
|
const VERIFY_SHOPS = [
|
||||||
|
self::VERIFY_SHOP_YES => '是',
|
||||||
|
self::VERIFY_SHOP_NO => '否',
|
||||||
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 默认加载的关联
|
* 默认加载的关联
|
||||||
* @var array
|
* @var array
|
||||||
@@ -52,7 +62,7 @@ class Activity extends Model
|
|||||||
}
|
}
|
||||||
|
|
||||||
//活动类型 固定期限 延期
|
//活动类型 固定期限 延期
|
||||||
public function getTypeTextAttribute()
|
public function getTypeTextAttribute(): string
|
||||||
{
|
{
|
||||||
return self::TYPES[$this->type] ?? '未知';
|
return self::TYPES[$this->type] ?? '未知';
|
||||||
}
|
}
|
||||||
@@ -64,26 +74,46 @@ class Activity extends Model
|
|||||||
}
|
}
|
||||||
|
|
||||||
//关联卡券规则 ysd-full100-10
|
//关联卡券规则 ysd-full100-10
|
||||||
public function rule()
|
public function rule(): BelongsTo
|
||||||
{
|
{
|
||||||
return $this->belongsTo(ActivityRule::class, 'activity_rule_id');
|
return $this->belongsTo(ActivityRule::class, 'activity_rule_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
//关联券表
|
//关联券表
|
||||||
public function coupons()
|
public function coupons(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(ActivityCoupon::class);
|
return $this->hasMany(ActivityCoupon::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notes: 关联可发券渠道
|
* Notes: 关联可发券渠道中间表
|
||||||
* @Author: 玄尘
|
* @Author: 玄尘
|
||||||
* @Date : 2020/8/21 11:09
|
* @Date : 2020/8/21 11:09
|
||||||
*/
|
*/
|
||||||
public function grants()
|
public function grants(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(ActivityGrant::class);
|
return $this->hasMany(ActivityGrant::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notes: 可发券的渠道
|
||||||
|
* @Author: 玄尘
|
||||||
|
* @Date : 2021/4/25 11:36
|
||||||
|
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
|
||||||
|
*/
|
||||||
|
public function grant_users(): BelongsToMany
|
||||||
|
{
|
||||||
|
return $this->belongsToMany(User::class, 'activity_grants')->using(ActivityGrant::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notes: 关联可核券网点中间表
|
||||||
|
* @Author: 玄尘
|
||||||
|
* @Date : 2020/8/21 11:09
|
||||||
|
*/
|
||||||
|
public function shops(): HasMany
|
||||||
|
{
|
||||||
|
return $this->hasMany(ActivityShop::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -91,10 +121,19 @@ class Activity extends Model
|
|||||||
* @Author: 玄尘
|
* @Author: 玄尘
|
||||||
* @Date : 2020/8/21 11:09
|
* @Date : 2020/8/21 11:09
|
||||||
*/
|
*/
|
||||||
public function verifications()
|
public function verifications(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(ActivityVerification::class);
|
return $this->hasMany(ActivityVerification::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notes: 可核销的渠道
|
||||||
|
* @Author: 玄尘
|
||||||
|
* @Date : 2021/4/25 11:37
|
||||||
|
*/
|
||||||
|
public function verify_users(): BelongsToMany
|
||||||
|
{
|
||||||
|
return $this->belongsToMany(User::class, 'activity_verifications')->using(ActivityVerification::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -4,9 +4,12 @@ namespace App\Models;
|
|||||||
|
|
||||||
use App\Models\Traits\BelongsToActivity;
|
use App\Models\Traits\BelongsToActivity;
|
||||||
use App\Models\Traits\BelongsToUser;
|
use App\Models\Traits\BelongsToUser;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\Pivot;
|
||||||
|
|
||||||
class ActivityGrant extends Model
|
class ActivityGrant extends Pivot
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public $table = 'activity_grants';
|
||||||
|
|
||||||
use BelongsToActivity, BelongsToUser;
|
use BelongsToActivity, BelongsToUser;
|
||||||
}
|
}
|
||||||
|
|||||||
16
app/Models/ActivityShop.php
Normal file
16
app/Models/ActivityShop.php
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use App\Models\Traits\BelongsToActivity;
|
||||||
|
use App\Models\Traits\BelongsToUser;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\Pivot;
|
||||||
|
|
||||||
|
class ActivityShop extends Pivot
|
||||||
|
{
|
||||||
|
|
||||||
|
public $table = 'activity_shops';
|
||||||
|
|
||||||
|
use BelongsToUser,
|
||||||
|
BelongsToActivity;
|
||||||
|
}
|
||||||
@@ -4,9 +4,12 @@ namespace App\Models;
|
|||||||
|
|
||||||
use App\Models\Traits\BelongsToActivity;
|
use App\Models\Traits\BelongsToActivity;
|
||||||
use App\Models\Traits\BelongsToUser;
|
use App\Models\Traits\BelongsToUser;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\Pivot;
|
||||||
|
|
||||||
class ActivityVerification extends Model
|
class ActivityVerification extends Pivot
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public $table = 'activity_verifications';
|
||||||
|
|
||||||
use BelongsToActivity, BelongsToUser;
|
use BelongsToActivity, BelongsToUser;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user