优化活动列表
This commit is contained in:
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
namespace App\Admin\Controllers\Activity;
|
namespace App\Admin\Controllers\Activity;
|
||||||
|
|
||||||
|
use App\Admin\Renderable\Activity\Grants;
|
||||||
|
use App\Admin\Renderable\Activity\Verifications;
|
||||||
use App\Models\Activity;
|
use App\Models\Activity;
|
||||||
use App\Models\ActivityRule;
|
use App\Models\ActivityRule;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
@@ -18,7 +20,7 @@ class IndexController extends AdminController
|
|||||||
protected function grid(): Grid
|
protected function grid(): Grid
|
||||||
{
|
{
|
||||||
$grid = new Grid(new Activity);
|
$grid = new Grid(new Activity);
|
||||||
$grid->model()->withCount('coupons');
|
$grid->model()->with(['rule', 'grants', 'verifications'])->withCount('coupons');
|
||||||
|
|
||||||
$grid->actions(function ($actions) {
|
$grid->actions(function ($actions) {
|
||||||
$actions->disableView();
|
$actions->disableView();
|
||||||
@@ -50,30 +52,24 @@ class IndexController extends AdminController
|
|||||||
});
|
});
|
||||||
|
|
||||||
$grid->column('channel', '核销途径')
|
$grid->column('channel', '核销途径')
|
||||||
->using(Activity::CHANNELS)
|
->using(Activity::CHANNELS)
|
||||||
->label([
|
->label([
|
||||||
Activity::CHANNEL_YSD => 'info',
|
Activity::CHANNEL_YSD => 'info',
|
||||||
Activity::CHANNEL_UNION => 'success',
|
Activity::CHANNEL_UNION => 'success',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$grid->column('days', '延期(天)');
|
$grid->column('days', '延期(天)');
|
||||||
$grid->column('rule.full', '满足金额');
|
$grid->column('rule.full', '满足金额');
|
||||||
$grid->column('rule.take', '扣除金额');
|
$grid->column('rule.take', '扣除金额');
|
||||||
$grid->column('发券渠道')
|
|
||||||
->display(function () {
|
|
||||||
return $this->grants->pluck('user_nickname');
|
|
||||||
})
|
|
||||||
->label()
|
|
||||||
->width(350)
|
|
||||||
->hide();
|
|
||||||
|
|
||||||
$grid->column('核券渠道')
|
$grid->column('发券渠道')->display(function ($title, $column) {
|
||||||
->display(function () {
|
return '查看';
|
||||||
return $this->verifications->pluck('user_nickname');
|
})->modal(Grants::class);
|
||||||
})
|
|
||||||
->label()
|
$grid->column('核券渠道')->display(function ($title, $column) {
|
||||||
->width(350)
|
return '查看';
|
||||||
->hide();
|
})->modal(Verifications::class);
|
||||||
|
|
||||||
|
|
||||||
$grid->column('开始时间')->display(function () {
|
$grid->column('开始时间')->display(function () {
|
||||||
return $this->type == Activity::TYPE_SCOPE ? $this->start_at->format('Y-m-d') : '---';
|
return $this->type == Activity::TYPE_SCOPE ? $this->start_at->format('Y-m-d') : '---';
|
||||||
@@ -94,6 +90,7 @@ class IndexController extends AdminController
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Make a form builder.
|
* Make a form builder.
|
||||||
|
*
|
||||||
* @return Form
|
* @return Form
|
||||||
*/
|
*/
|
||||||
protected function form(): Form
|
protected function form(): Form
|
||||||
@@ -104,92 +101,92 @@ class IndexController extends AdminController
|
|||||||
$form->textarea('description', '活动说明')->required();
|
$form->textarea('description', '活动说明')->required();
|
||||||
|
|
||||||
$form->select('activity_rule_id', '所属规则')
|
$form->select('activity_rule_id', '所属规则')
|
||||||
->options(function ($option, $info) {
|
->options(function ($option, $info) {
|
||||||
return ActivityRule::where('status', 1)->pluck('title', 'id');
|
return ActivityRule::where('status', 1)->pluck('title', 'id');
|
||||||
})
|
})
|
||||||
->required();
|
->required();
|
||||||
|
|
||||||
$form->number('total', '总数')
|
$form->number('total', '总数')
|
||||||
->help('可发券总数,0为不限制')
|
->help('可发券总数,0为不限制')
|
||||||
->default(10000)
|
->default(10000)
|
||||||
->required();
|
->required();
|
||||||
|
|
||||||
$form->radio('type', '类型')
|
$form->radio('type', '类型')
|
||||||
->options(Activity::TYPES)
|
->options(Activity::TYPES)
|
||||||
->when(Activity::TYPE_EXTEND, function (Form $form) {
|
->when(Activity::TYPE_EXTEND, function (Form $form) {
|
||||||
$form->number('days', '延期天数')->default(60)->help('到期日期=发券日期+延期天数');
|
$form->number('days', '延期天数')->default(60)->help('到期日期=发券日期+延期天数');
|
||||||
})
|
})
|
||||||
->when(Activity::TYPE_SCOPE, function (Form $form) {
|
->when(Activity::TYPE_SCOPE, function (Form $form) {
|
||||||
$form->dateRange('start_at', 'end_at', '有效时间');
|
$form->dateRange('start_at', 'end_at', '有效时间');
|
||||||
})
|
})
|
||||||
->required();
|
->required();
|
||||||
|
|
||||||
$form->radio('channel', '核销途径')
|
$form->radio('channel', '核销途径')
|
||||||
->options(Activity::CHANNELS)
|
->options(Activity::CHANNELS)
|
||||||
->default(Activity::CHANNEL_YSD)
|
->default(Activity::CHANNEL_YSD)
|
||||||
->help('券码核销的途径:亿时代是自己核销,银联是银联pos核销')
|
->help('券码核销的途径:亿时代是自己核销,银联是银联pos核销')
|
||||||
->required();
|
->required();
|
||||||
|
|
||||||
$form->switch('status', '状态')->default(1);
|
$form->switch('status', '状态')->default(1);
|
||||||
$form->switch('need_check', '多次校验')
|
$form->switch('need_check', '多次校验')
|
||||||
->default(1)
|
->default(1)
|
||||||
->help('同一订单,多次核销时校验,订单每满100元可核销一笔。');
|
->help('同一订单,多次核销时校验,订单每满100元可核销一笔。');
|
||||||
|
|
||||||
$users = User::query()
|
$users = User::query()
|
||||||
->with('info')
|
->with('info')
|
||||||
->whereHas('identity', function ($q) {
|
->whereHas('identity', function ($q) {
|
||||||
$q->where('identity_id', 1);
|
$q->where('identity_id', 1);
|
||||||
})
|
})
|
||||||
->orderBy('id', 'desc')
|
->orderBy('id', 'desc')
|
||||||
->get()
|
->get()
|
||||||
->pluck('nickname', 'id');
|
->pluck('nickname', 'id');
|
||||||
|
|
||||||
$form->listbox('grants.user_id', '可发券渠道')
|
$form->listbox('grants.user_id', '可发券渠道')
|
||||||
->options($users)
|
->options($users)
|
||||||
->default(function ($form) {
|
->default(function ($form) {
|
||||||
if ($form->isEditing()) {
|
if ($form->isEditing()) {
|
||||||
return $form->model()->grants()->pluck('user_id')->toArray();
|
return $form->model()->grants()->pluck('user_id')->toArray();
|
||||||
} else {
|
} else {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
->required();
|
->required();
|
||||||
|
|
||||||
$form->listbox('verifications.user_id', '可核券渠道')
|
$form->listbox('verifications.user_id', '可核券渠道')
|
||||||
->options($users)
|
->options($users)
|
||||||
->default(function ($form) {
|
->default(function ($form) {
|
||||||
if ($form->isEditing()) {
|
if ($form->isEditing()) {
|
||||||
return $form->model()->verifications()->pluck('user_id')->toArray();
|
return $form->model()->verifications()->pluck('user_id')->toArray();
|
||||||
} else {
|
} else {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
->required();
|
->required();
|
||||||
|
|
||||||
$form->radio('verify_shop', '网点校验')
|
$form->radio('verify_shop', '网点校验')
|
||||||
->options(Activity::VERIFY_SHOPS)
|
->options(Activity::VERIFY_SHOPS)
|
||||||
->default(Activity::VERIFY_SHOP_NO)
|
->default(Activity::VERIFY_SHOP_NO)
|
||||||
->when(Activity::VERIFY_SHOP_YES, function (Form $form) use ($users) {
|
->when(Activity::VERIFY_SHOP_YES, function (Form $form) use ($users) {
|
||||||
$form->listbox('shops.user_id', '可核券渠道')
|
$form->listbox('shops.user_id', '可核券渠道')
|
||||||
->options(function () {
|
->options(function () {
|
||||||
return User::query()
|
return User::query()
|
||||||
->with('info')
|
->with('info')
|
||||||
->whereHas('identity', function ($q) {
|
->whereHas('identity', function ($q) {
|
||||||
$q->where('identity_id', 2);
|
$q->where('identity_id', 2);
|
||||||
})
|
})
|
||||||
->where('status', 1)
|
->where('status', 1)
|
||||||
->orderBy('id', 'desc')
|
->orderBy('id', 'desc')
|
||||||
->get()
|
->get()
|
||||||
->pluck('nickname', 'id');
|
->pluck('nickname', 'id');
|
||||||
})
|
})
|
||||||
->default(function ($form) {
|
->default(function ($form) {
|
||||||
if ($form->isEditing()) {
|
if ($form->isEditing()) {
|
||||||
return $form->model()->shops()->pluck('user_id')->toArray();
|
return $form->model()->shops()->pluck('user_id')->toArray();
|
||||||
} else {
|
} else {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
$form->saving(function (Form $form) {
|
$form->saving(function (Form $form) {
|
||||||
$request = request();
|
$request = request();
|
||||||
@@ -222,11 +219,11 @@ class IndexController extends AdminController
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (request()->start) {
|
if (request()->start) {
|
||||||
$form->start_at = $form->start_at . ' 00:00:01';
|
$form->start_at = $form->start_at.' 00:00:01';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request()->end_at) {
|
if (request()->end_at) {
|
||||||
$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']) : [];
|
$shops = isset(request()->shops) ? array_filter(request()->shops['user_id']) : [];
|
||||||
@@ -249,10 +246,10 @@ class IndexController extends AdminController
|
|||||||
foreach ($form->grants['user_id'] as $key => $user_id) {
|
foreach ($form->grants['user_id'] as $key => $user_id) {
|
||||||
if ($user_id) {
|
if ($user_id) {
|
||||||
$form->model()
|
$form->model()
|
||||||
->grants()
|
->grants()
|
||||||
->updateOrCreate([
|
->updateOrCreate([
|
||||||
'user_id' => $user_id,
|
'user_id' => $user_id,
|
||||||
]);
|
]);
|
||||||
$users[] = $user_id;
|
$users[] = $user_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -263,10 +260,10 @@ class IndexController extends AdminController
|
|||||||
foreach ($form->verifications['user_id'] as $key => $user_id) {
|
foreach ($form->verifications['user_id'] as $key => $user_id) {
|
||||||
if ($user_id) {
|
if ($user_id) {
|
||||||
$form->model()
|
$form->model()
|
||||||
->verifications()
|
->verifications()
|
||||||
->updateOrCreate([
|
->updateOrCreate([
|
||||||
'user_id' => $user_id,
|
'user_id' => $user_id,
|
||||||
]);
|
]);
|
||||||
$users[] = $user_id;
|
$users[] = $user_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -274,16 +271,16 @@ class IndexController extends AdminController
|
|||||||
|
|
||||||
$shops = isset(request()->shops) ? array_filter(request()->shops['user_id']) : [];
|
$shops = isset(request()->shops) ? array_filter(request()->shops['user_id']) : [];
|
||||||
|
|
||||||
if (!empty($shops)) {
|
if (! empty($shops)) {
|
||||||
//设置核销网点
|
//设置核销网点
|
||||||
$users = [];
|
$users = [];
|
||||||
foreach ($form->shops['user_id'] as $key => $user_id) {
|
foreach ($form->shops['user_id'] as $key => $user_id) {
|
||||||
if ($user_id) {
|
if ($user_id) {
|
||||||
$form->model()
|
$form->model()
|
||||||
->shops()
|
->shops()
|
||||||
->updateOrCreate([
|
->updateOrCreate([
|
||||||
'user_id' => $user_id,
|
'user_id' => $user_id,
|
||||||
]);
|
]);
|
||||||
$users[] = $user_id;
|
$users[] = $user_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,11 @@ class Grants implements Renderable
|
|||||||
'nickname' => $info->user_nickname,
|
'nickname' => $info->user_nickname,
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
dd($items->toArray());
|
|
||||||
|
|
||||||
return new Table(['Id', '渠道'], $items->toArray());
|
$table = new Table(['Id', '渠道'], $items->toArray());
|
||||||
|
|
||||||
|
return $table->render();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
28
app/Admin/Renderable/Activity/Verifications.php
Normal file
28
app/Admin/Renderable/Activity/Verifications.php
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Admin\Renderable\Activity;
|
||||||
|
|
||||||
|
use App\Models\Activity;
|
||||||
|
use Encore\Admin\Widgets\Table;
|
||||||
|
use Illuminate\Contracts\Support\Renderable;
|
||||||
|
|
||||||
|
class Verifications implements Renderable
|
||||||
|
{
|
||||||
|
|
||||||
|
public function render($key = null)
|
||||||
|
{
|
||||||
|
$activity = Activity::find($key);
|
||||||
|
$items = $activity->verifications->map(function ($info) {
|
||||||
|
return [
|
||||||
|
'id' => $info->id,
|
||||||
|
'nickname' => $info->user_nickname,
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
$table = new Table(['Id', '渠道'], $items->toArray());
|
||||||
|
|
||||||
|
return $table->render();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user