调整活动
This commit is contained in:
@@ -5,67 +5,17 @@ namespace App\Admin\Controllers\Activity;
|
||||
use App\Models\Activity;
|
||||
use App\Models\ActivityRule;
|
||||
use App\Models\User;
|
||||
use Encore\Admin\Controllers\HasResourceActions;
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Encore\Admin\Layout\Content;
|
||||
use Illuminate\Support\MessageBag;
|
||||
use Illuminate\Routing\Controller as AdminController;
|
||||
|
||||
class IndexController extends AdminController
|
||||
{
|
||||
|
||||
use HasResourceActions;
|
||||
|
||||
protected $title = '活动管理';
|
||||
|
||||
/**
|
||||
* 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()
|
||||
protected function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Activity);
|
||||
$grid->model()->withCount('coupons');
|
||||
@@ -146,7 +96,7 @@ class IndexController extends AdminController
|
||||
* Make a form builder.
|
||||
* @return Form
|
||||
*/
|
||||
protected function form($id = '')
|
||||
protected function form(): Form
|
||||
{
|
||||
$form = new Form(new Activity);
|
||||
|
||||
@@ -185,26 +135,62 @@ class IndexController extends AdminController
|
||||
->default(1)
|
||||
->help('同一订单,多次核销时校验,订单每满100元可核销一笔。');
|
||||
|
||||
$grantdef = $verificationsdef = '';
|
||||
if ($id) {
|
||||
$grantdef = Activity::find($id)->grants()->pluck('user_id')->toArray();
|
||||
$verificationsdef = Activity::find($id)->verifications()->pluck('user_id')->toArray();
|
||||
}
|
||||
|
||||
$users = User::with('info')->whereHas('identity', function ($q) {
|
||||
$q->where('identity_id', 1);
|
||||
})->orderBy('id', 'desc')->get()->pluck('nickname', 'id');
|
||||
$users = User::query()
|
||||
->with('info')
|
||||
->whereHas('identity', function ($q) {
|
||||
$q->where('identity_id', 1);
|
||||
})
|
||||
->orderBy('id', 'desc')
|
||||
->get()
|
||||
->pluck('nickname', 'id');
|
||||
|
||||
$form->listbox('grants.user_id', '可发券渠道')
|
||||
->options($users)
|
||||
->default($grantdef)
|
||||
->default(function ($form) {
|
||||
if ($form->isEditing()) {
|
||||
return $form->model()->grants()->pluck('user_id')->toArray();
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
})
|
||||
->required();
|
||||
|
||||
$form->listbox('verifications.user_id', '可核券渠道')
|
||||
->options($users)
|
||||
->default($verificationsdef)
|
||||
->default(function ($form) {
|
||||
if ($form->isEditing()) {
|
||||
return $form->model()->verifications()->pluck('user_id')->toArray();
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
})
|
||||
->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) {
|
||||
$request = request();
|
||||
|
||||
@@ -243,9 +229,22 @@ class IndexController extends AdminController
|
||||
$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) {
|
||||
//设置发券渠道
|
||||
$users = [];
|
||||
foreach ($form->grants['user_id'] as $key => $user_id) {
|
||||
if ($user_id) {
|
||||
@@ -258,6 +257,8 @@ class IndexController extends AdminController
|
||||
}
|
||||
}
|
||||
$form->model()->grants()->whereNotIn('user_id', $users)->delete();
|
||||
|
||||
//设置核销渠道
|
||||
$users = [];
|
||||
foreach ($form->verifications['user_id'] as $key => $user_id) {
|
||||
if ($user_id) {
|
||||
@@ -270,6 +271,20 @@ class IndexController extends AdminController
|
||||
}
|
||||
}
|
||||
$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;
|
||||
|
||||
Reference in New Issue
Block a user