ajax()) { return view('admin/system/user', [ 'roles' => Role::all() ]); } $keyword = $request->input('keyword'); if ($roleId = $request->input('role_id')) { $filter[] = ['role_id', '=', $roleId]; } $select = ['id', 'username', 'email', 'created_at', 'role_id', 'status', 'is_super', 'nickname', 'profile_img']; $roles = User::query()->with('role')->select($select) ->where($filter ?? [])->where(function (Builder $builder) use ($keyword) { if ($keyword) { $builder->where('username', 'like', '%' . $keyword . '%') ->orWhere('nickname', 'like', '%' . $keyword . '%'); } })->orderByDesc('id') ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE); $items = $roles->items(); array_walk($items, function ($item) { $item->role_name = $item->is_super ? ($item->role->name ?? '' . '【超级管理员】') : $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(); } $permissions = Permission::query()->whereIn('id', RoleLogic::Customer_Permissions)->select(['title as name', 'id', 'parent_id', 'type'])->get()->toArray(); array_walk($permissions, function (&$item) use ($selects) { $item['open'] = true; $item['name'] = $item['name'] . ($item['type'] == 1 ? '【菜单】' : '【功能】'); if (in_array($item['id'], $selects)) { $item['checked'] = true; } }); $trees = list_to_tree($permissions, 'id', 'parent_id', 'children'); return view('admin/system/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(StoreUserRequest $request) { $validated = $request->validated(); $validated['password'] = bcrypt($validated['password']); $validated['profile_img'] = asset('img/social_round_github_64px_1196568_easyicon.net.png'); $siteIds = $validated['site_ids'] ?? null; unset($validated['site_ids']); $user = User::query()->create($validated); /**@var \App\Http\Models\User $user * */ if ($siteIds) { $user->sites()->sync($siteIds); } if ($validated['role_id'] == Role::TYPE_CUSTOMER) { $user->permissions()->sync(RoleLogic::Customer_Permissions); } return response()->json(['message' => '操作成功']); } public function update(UpdateUserRequest $request, $id) { $user = User::query()->with('sites')->where(['id' => $id])->first(); /**@var \App\Http\Models\User $user * */ if (!$user) return response()->json(['message' => '数据不存在']); $validated = $request->validated(); $siteIds = $validated['site_ids'] ?? []; unset($validated['site_ids']); if (!empty($validated['password'])) { $validated['password'] = bcrypt($validated['password']); } else { unset($validated['password']); } $user->update($validated); $user->sites()->sync($siteIds); return response()->json(['message' => '操作成功']); } public function show($id) { if ($id > 0) { $user = User::query()->with('sites')->where(['id' => $id])->first(); if (!empty($user->entry_time)) { $user->entry_time = substr($user->entry_time, 0, 10); } $hasSiteIds = $user->sites->pluck('id')->toArray(); //用户所关联的站点 } return view('admin/system/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/system/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' => '操作成功']); } }