* @Date : 2019/9/18 14:50 * @return Grid */ protected function grid(): Grid { $user = Auth::guard('admin')->user(); $grid = new Grid(new User); $grid->model()->with(['parent']); $grid->actions(function ($actions) use ($user) { $actions->disableDelete(); $actions->disableView(); if ($actions->row->identity_id == 1) { $actions->add(new RefD3Key); $actions->add(new ReCode); $actions->add(new Callback); } if ($actions->row->identity_id == 1 && $user->id == 1) { $actions->add(new Profit); } }); $grid->tools(function (Grid\Tools $tools) { // $tools->append(new UserImport); }); $grid->model()->orderBy('id', 'desc'); // $grid->fixColumns(2, -1); $grid->quickSearch('username')->placeholder('登录账户'); $grid->filter(function ($filter) { $filter->column(1 / 2, function ($filter) { $filter->like('username', '登录账户'); $filter->like('server_id', '渠道编号'); $filter->like('outlet_id', '网点编号'); $filter->like('PaOutletId', '平安网点id'); $filter->like('shop_id', '门店号'); $filter->between('created_at', '注册时间')->datetime(); }); $filter->column(1 / 2, function ($filter) { $filter->like('info.nickname', '渠道/网点'); $filter->like('server_key', '服务秘钥'); $filter->equal('identity.identity_id', '用户身份')->select([ ' ' => '全部', '1' => '渠道商', '2' => '网点', ]); $filter->equal('type', '所属项目')->select([ ' ' => '全部', 'pingan' => '平安券', 'wo' => '沃支付', ]); }); }); $grid->column('id', '#ID#'); $grid->column('username', '登录账户'); $grid->column('渠道编号')->display(function () { return $this->server_id; }); $grid->column('网点编号')->display(function () { return $this->outlet_id ?? '---'; }); $grid->column('平安网点id')->display(function () { return $this->PaOutletId ?? '---'; }); $grid->column('门店号') ->display(function () { return $this->shop_id ?? '---'; }) ->help('银联pos机配置的门店号'); $grid->column('下级网点数') ->display(function () { return "{$this->children->count()}"; }); $grid->column('所属项目')->display(function () { return $this->type_text; }); $grid->column('回调地址')->display(function ($title, $column) { return '点击查看'; })->modal(function ($model) { $data = [ [ $this->callback, ], ]; return new Table(['url'], $data); }); $grid->column('密钥')->display(function ($title, $column) { return '点击查看'; })->modal(ServerKey::class); $grid->column('nickname', '渠道/网点'); $grid->column('用户身份') ->display(function () { if ($this->identity_id == 1) { return "

" . $this->identity_text . "

"; } else { return $this->identity_text; } }); $grid->column('隶属渠道')->display(function () { return $this->parent ? $this->parent->nickname : '---'; }); $grid->column('分润规则')->display(function ($title, $column) { return '点击展开'; })->modal(Rule::class); $grid->column('created_at', '注册时间'); $grid->disableExport(false); $grid->export(function ($export) { $export->except(['密钥', '分润规则', '回调地址']); $export->column('用户身份', function ($value, $original) { return strip_tags($value); }); $export->column('渠道编号', function ($value, $original) { return $value . "\t"; }); $export->column('网点编号', function ($value, $original) { return $value . "\t"; }); $export->column('门店号', function ($value, $original) { return $value . "\t"; }); $export->filename($this->title . date("YmdHis")); }); return $grid; } /** * Notes: * @Author: * @Date : 2019/9/18 14:50 * @return Form */ protected function form() { $province = Area::where('parent_id', 1)->pluck('name', 'code'); $form = new Form(new User); $identity = Identity::find(1); $form->text('username', '登录账户') ->creationRules(['required', "unique:users", 'max:11'], ['max' => '小于11个字符']) ->updateRules(['required', "unique:users,username,{{id}}"])->required(); $form->password('password', '登录密码') ->creationRules('required|min:6', [ 'required' => '必填', 'min' => '密码不能少于6个字符', ]); $form->text('PaOutletId', '平安网点id'); $form->text('shop_id', '门店号')->help('银联pos里的门店号'); $form->select('type', '项目') ->options(['pingan' => '平安券和自有券', 'wo' => '沃支付']) ->load('parent_id', '/admin/user/parent') ->required(); $form->select('parent_id', '隶属渠道') ->options(function ($option, $info) { $user = $this; if (!$option || ($user && $user->identity_id == 2)) { return User::with('info')->whereHas('identity', function ($q) { $q->where('identity_id', 1); })->when(isset($user->id), function ($q) use ($user) { $q->where('type', $user->type); })->orderBy('id', 'desc')->get()->pluck('nickname', 'id'); } else { return [0 => '没有隶属渠道']; } }) ->default(function ($info) { if ($info->model() && $info->model()->parent) { return $info->model()->parent_id; } else { return 0; } }) ->help('未选择隶属渠道创建渠道账号,选择隶属渠道创建网点账号'); $form->select('province_id', '行政省份') ->options($province) ->load('city_id', '/admin/ajax/areas/children') ->required(); $form->select('city_id', '行政城市')->options(function ($option, $info) { if ($option) { return Area::whereHas('parent', function ($q) use ($info) { $q->where('code', $this->province_id); })->pluck('name', 'code'); } })->load('district_id', '/admin/ajax/areas/children')->required(); $form->select('district_id', '行政区域')->options(function ($option, $info) { if ($option) { return Area::whereHas('parent', function ($q) use ($info) { $q->where('code', $this->city_id); })->pluck('name', 'code'); } })->required(); $form->divider('用户资料'); $form->text('info.nickname', '渠道/网点')->placeholder('请输入渠道/网点名称')->required(); $form->saved(function (Form $form) { $user_id = $form->model()->id; $user = User::find($user_id); if ($user->identity_id == 1 && $user->code()->count() === 0) { $userCodes = Identity::find(1)->codes->map(function ($code) { return $code->only(['name', 'code', 'profit']); }); $user->code()->createMany($userCodes); } if ($user->parent_id) { if ($user->server_id != $user->parent->server_id) { $user->server_id = $user->parent->server_id; $user->save(); } } }); return $form; } /** * 获取隶属 * @author 玄尘 2020-03-12 * @param Request $request [description] * @return [type] [description] */ public function getParent(Request $request) { $type = $request->get('q'); $users = User::whereHas('identity', function ($query) { $query->where('identity_id', 1); })->get(); $userRet = $users->map(function ($code) { return [ 'id' => $code->id, 'text' => $code->info->nickname, ]; }); $userRet->prepend(['id' => '', 'text' => '']); return $userRet; } }