226 lines
7.7 KiB
PHP
226 lines
7.7 KiB
PHP
<?php
|
|
|
|
namespace Modules\User\Http\Controllers\Admin;
|
|
|
|
use App\Admin\Traits\WithUploads;
|
|
use Encore\Admin\Controllers\AdminController;
|
|
use Encore\Admin\Form;
|
|
use Encore\Admin\Form\NestedForm;
|
|
use Encore\Admin\Grid;
|
|
use Modules\User\Models\Identity;
|
|
|
|
class IdentitiesController extends AdminController
|
|
{
|
|
|
|
use WithUploads;
|
|
|
|
protected $title = '用户身份';
|
|
|
|
public function grid(): Grid
|
|
{
|
|
|
|
$grid = new Grid(new Identity());
|
|
$grid->model()->oldest('id')->oldest('order');
|
|
$grid->filter(function (Grid\Filter $filter) {
|
|
$filter->scope('trashed', '回收站')->onlyTrashed();
|
|
|
|
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
|
$filter->like('name', '身份名称');
|
|
});
|
|
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
|
$filter->equal('status', '状态')->select([
|
|
0 => '禁用',
|
|
1 => '正常',
|
|
]);
|
|
});
|
|
});
|
|
|
|
$grid->model()->oldest()->withCount('users');
|
|
|
|
$grid->column('id', '#ID#');
|
|
$grid->column('cover', '展示图片')->image('', 40);
|
|
$grid->column('name', '身份名称');
|
|
$grid->column('order', '排序');
|
|
$grid->column('status', '状态')->bool();
|
|
$grid->column('serial_open', '是否开启编号')->bool();
|
|
$grid->column('serial_places', '编号长度');
|
|
$grid->column('serial_prefix', '编号前缀');
|
|
$grid->column('years', '有效期(月)')
|
|
->display(function () {
|
|
return $this->years > 0 ? $this->years : '永久';
|
|
});
|
|
$grid->column('stock', '送水(箱)');
|
|
$grid->column('users_count', '组内用户');
|
|
$grid->column('job', '身份')->using(Identity::JOBS)->label();
|
|
// $grid->column('total', '可开通总数');
|
|
$grid->column('channel', '缴费渠道')
|
|
->using(Identity::CHANNELS)
|
|
->label([
|
|
Identity::CHANNEL_ONLINE => 'primary',
|
|
Identity::CHANNEL_OFFLINE => 'success',
|
|
]);
|
|
foreach (config('identity.conditions') as $key => $title) {
|
|
$grid->column($title)->display(function () use ($key) {
|
|
return $this->getCondition($key, '无');
|
|
});
|
|
}
|
|
foreach (config('identity.rules') as $key => $title) {
|
|
$grid->column($title)->display(function () use ($key) {
|
|
return $this->getRule($key, '无');
|
|
});
|
|
}
|
|
|
|
$states = [
|
|
'on' => ['value' => 1, 'text' => '是', 'color' => 'primary'],
|
|
'off' => ['value' => 0, 'text' => '否', 'color' => 'default'],
|
|
];
|
|
$grid->column('default', '默认身份')->switch($states);
|
|
$grid->column('can_buy', '前台开通')->switch($states);
|
|
|
|
$grid->column('created_at', '创建时间');
|
|
|
|
return $grid;
|
|
}
|
|
|
|
public function form(): Form
|
|
{
|
|
$form = new Form(new Identity());
|
|
$form->text('name', '身份名称')
|
|
->required()
|
|
->rules([
|
|
'unique:Modules\User\Models\Identity,name,{{id}}',
|
|
], [
|
|
'unique' => '身份名称已经存在',
|
|
]);
|
|
$this->cover($form, 'cover', '展示图片');
|
|
$form->number('order', '排序')
|
|
->required()
|
|
->default(0);
|
|
$form->textarea('description', '身份简介')
|
|
->rules(['max:255'], [
|
|
'max' => '简介内容最大不能超过:max个字符',
|
|
]);
|
|
$form->switch('default', '默认身份')
|
|
->default(0);
|
|
$form->switch('can_buy', '前台开通')
|
|
->help('是否可以在前台开通身份')
|
|
->default(0);
|
|
$form->number('stock', '库存')
|
|
->help('开通身份送多少水')
|
|
->default(0);
|
|
|
|
$form->number('years', '有效期(月)')
|
|
->help('0未长期有效')
|
|
->default(0);
|
|
|
|
$form->switch('status', '状态')
|
|
->required()
|
|
->default(1);
|
|
$form->select('serial_open', '是否开启编号')
|
|
->options([
|
|
false => '关闭',
|
|
true => '开启',
|
|
])
|
|
->required();
|
|
$form->number('serial_places', '编号长度')
|
|
->rules([
|
|
'exclude_if:serial_open,true',
|
|
'required',
|
|
], [
|
|
'required' => '编号开启必填',
|
|
]);
|
|
$form->text('serial_prefix', '编号前缀');
|
|
$form->text('protocol_url', '协议地址')->help('显示开通身份签署的协议');
|
|
$form->radioButton('channel', '缴费渠道')
|
|
->options(Identity::CHANNELS)
|
|
->default(1);
|
|
$form->radioButton('job', '身份')
|
|
->options(Identity::JOBS)
|
|
->default(0)
|
|
->when(Identity::JOB_TY, function (Form $form) {
|
|
$form->number('total', '可开通总数')->default(100);
|
|
$form->date('end_at', '结束日期');
|
|
});
|
|
$form->divider();
|
|
|
|
$form->table('conditions', '升级条件', function (NestedForm $form) {
|
|
$form->select('name', '条件')
|
|
->required()
|
|
->options(config('identity.conditions'))
|
|
->rules('required');
|
|
$form->select('compare', '规则')
|
|
->options([
|
|
'>' => '大于',
|
|
'>=' => '大于等于',
|
|
'=' => '等于',
|
|
'<' => '小于',
|
|
'<=' => '小于等于',
|
|
])
|
|
->required()
|
|
->rules('required');
|
|
$form->text('value', '值')
|
|
->required()
|
|
->rules('required');
|
|
});
|
|
//
|
|
$form->table('rules', '身份权益', function (NestedForm $form) {
|
|
$form->select('name', '权益')
|
|
->required()
|
|
->options(config('identity.rules'))
|
|
->rules('required');
|
|
$form->select('compare', '规则')
|
|
->options([
|
|
'>' => '大于',
|
|
'>=' => '大于等于',
|
|
'=' => '等于',
|
|
'<' => '小于',
|
|
'<=' => '小于等于',
|
|
])
|
|
->required()
|
|
->rules('required');
|
|
$form->text('value', '值')
|
|
->required()
|
|
->rules('required');
|
|
});
|
|
$form->table('ruleshows', '身份权益(前台展示)', function (NestedForm $form) {
|
|
$form->image('icon', '权益图片');
|
|
$form->select('name', '权益')
|
|
->options(config('identity.show_rules'))
|
|
->required()
|
|
->rules('required');
|
|
$form->text('value', '值')
|
|
->required()
|
|
->rules('required');
|
|
});
|
|
//
|
|
$form->table('rights', '可享受权益', function (NestedForm $form) {
|
|
$form->text('name', '名称')
|
|
->required()
|
|
->rules('required');
|
|
$form->image('cover', '权益图片');
|
|
$form->text('remark', '备注')
|
|
->required()
|
|
->rules('required');
|
|
$form->number('order', '排序');
|
|
});
|
|
|
|
// $form->saving(function ($form) {
|
|
//// dd(request()->all());
|
|
// });
|
|
|
|
|
|
$form->saved(function ($form) {
|
|
$model = $form->model();
|
|
if ($model->default == 1) {
|
|
Identity::where('id', '!=', $model->id)
|
|
->where('default', 1)
|
|
->update([
|
|
'default' => 0,
|
|
]);
|
|
}
|
|
});
|
|
|
|
return $form;
|
|
}
|
|
|
|
} |