hasUserOneSite(); if (!$request->ajax()) { return view('admin/customer_user/user', [ 'roles' => Role::all() ]); } if ($keyword = $request->input('keyword')) { $filter[] = ['username', 'like', '%' . $keyword . '%']; } $filter[] = ['role_id', '=', Role::TYPE_TYPE_CUSTOMER_STAFF]; $select = ['id', 'username', 'email', 'created_at', 'role_id', 'status', 'is_super', 'nickname']; $roles = User::query()->with('role')->select($select) ->where($filter ?? [])->whereHas('sites', function (Builder $builder) use ($oneSite) { $builder->where('id', $oneSite->id); })->orderByDesc('id') ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE); $items = $roles->items(); array_walk($items, function ($item) { $item->role_name = '客户雇员'; $item->status_title = $item->status_with_css; unset($item->role); }); return response()->json([ 'rows' => $items, 'total' => $roles->total() ]); } //用户权限 public function userPermission(Request $request) { $userIds = $request->input('userIds'); if (!$request->ajax()) { $selects = []; if (count($userIds) == 1) { $user = User::query()->where(['id' => $userIds[0]])->first(); if (!$user) { return response()->json(['message' => '参数错误'], 400); } $selects = $user->permissions->pluck('id')->toArray(); } /* $nowUser = auth()->user(); $permissions = $nowUser->permissions() ->select(['title as name', 'id', 'parent_id', 'type'])->get()->toArray();*/ $permissionsIds = DB::table('role_has_permissions')->where('role_id', Role::TYPE_CUSTOMER)->pluck('permission_id'); $permissions = Permission::query()->whereIn('id', $permissionsIds)->get()->toArray(); array_walk($permissions, function (&$item) use ($selects) { $item['open'] = true; $item['name'] = $item['title'] . ($item['type'] == 1 ? '【菜单】' : '【功能】'); if (in_array($item['id'], $selects)) { $item['checked'] = true; } }); $trees = list_to_tree($permissions, 'id', 'parent_id', 'children'); return view('admin/customer_user/user_permission', [ 'trees' => $trees, 'userIds' => $userIds ]); } $permissionIds = $request->input('permissionIds'); $records = User::query()->whereIn('id', $userIds)->get(); foreach ($records as $record) { $record->permissions()->sync($permissionIds); } return response()->json(['message' => '操作成功']); } //保存 public function store(CustomerUserSaveRequest $request) { $validated = $request->validated(); $validated['password'] = bcrypt($validated['password']); $validated['profile_img'] = asset('img/social_round_github_64px_1196568_easyicon.net.png'); $validated['role_id'] = Role::TYPE_TYPE_CUSTOMER_STAFF;//公司雇员 $user = User::query()->create($validated); /**@var \App\Http\Models\User $user * */ $oneSite = $this->hasUserOneSite(); if (!$oneSite) { return response()->json(['message' => '当前用户未分配站点'], 400); } $user->sites()->sync([$oneSite->id]); $nowUserPermissions = auth()->user()->permissions->pluck('id')->toArray(); //剔除用户管理的权限 $searchIndex = array_search(39, $nowUserPermissions); if ($searchIndex !== false) { unset($nowUserPermissions[$searchIndex]); } $user->permissions()->sync(array_values($nowUserPermissions)); return response()->json(['message' => '操作成功']); } //修改 public function update(CustomerUserSaveRequest $request, $id) { $user = User::query()->where(['id' => $id])->first(); /**@var \App\Http\Models\User $user * */ if (!$user) return response()->json(['message' => '数据不存在']); $validated = $request->validated(); $user->update($validated); return response()->json(['message' => '操作成功']); } public function show($id) { if ($id > 0) { $user = User::query()->with('sites')->where(['id' => $id])->first(); $hasSiteIds = $user->sites->pluck('id')->toArray(); //用户所关联的站点 } return view('admin/customer_user/user_show', [ 'user' => $user ?? null, 'roles' => Role::query()->select(['id', 'name'])->get(), 'sites' => Site::all(), 'hasSiteIds' => $hasSiteIds ?? [] ]); } public function detail($id) { $user = User::query()->select()->find($id); return view('/admin/customer_user/user_detail', [ 'user' => $user ]); } public function destroy($id) { User::destroy($id); return response()->json(['message' => '操作成功']); } public function batchDestroy(Request $request) { $ids = $request->input('ids'); User::destroy($ids); return response()->json(['message' => '操作成功']); } //用户状态切换 启用 public function on(Request $request) { $ids = $request->input('ids'); User::query()->whereIn('id', $ids)->update(['status' => 1]); return response()->json(['message' => '操作成功']); } //用户状态切换 禁用 public function off(Request $request) { $ids = $request->input('ids'); User::query()->whereIn('id', $ids)->update(['status' => 0]); return response()->json(['message' => '操作成功']); } }