filter($request->all())->where('id', '>', 1); $list = $query->paginate(Paginator::resolvePerPage('per_page', 20, 50)); return $this->json(AdminUserResource::collection($list)); } public function store(AdminUserRequest $request) { $baseIds = $request->input('base_ids', []); if (AdminUser::where('username', $request->input('username'))->exists()) { return $this->error('该登录名已存在'); } try { DB::beginTransaction(); //添加管理员信息 $input = $request->input(); // 是否可查看所有基地 if ($viewAllBases = (bool) $request->input('view_all_bases', false)) { $input['view_all_bases'] = $viewAllBases; } $input['password'] = bcrypt($request->input('password')); $user = AdminUser::create($input); if (! $user->view_all_bases) { // 添加管理员查看基地的数据权限; $user->bases()->sync($baseIds); } //添加管理员角色关联; $user->roles()->sync($request->input('role_id')); DB::commit(); } catch(\Throwable $th) { DB::rollBack(); report($th); return $this->error('添加失败,请稍后再试'); } (new OperationLogService())->inLog(OperationType::Create, '', $user, $request->input()); return $this->success('添加成功'); } public function show(AdminUser $adminUser) { $adminUser->load(['bases', 'roles']); return $this->json(AdminUserResource::make($adminUser)); } public function update(AdminUser $adminUser, AdminUserUpdateRequest $request) { $baseIds = $request->input('base_ids', []); if (AdminUser::where('username', $request->input('username'))->where('id', '<>', $adminUser->id)->exists()) { return $this->error('该登录名已存在'); } try { DB::beginTransaction(); $input = $request->input(); if ($viewAllBases = (bool) $request->input('view_all_bases', false)) { $input['view_all_bases'] = $viewAllBases; } //添加管理员信息 $adminUser->update($input); if (! $adminUser->view_all_bases) { // 添加管理员查看基地的数据权限; $adminUser->bases()->sync($baseIds); } //添加管理员角色关联; $adminUser->roles()->sync($request->input('role_id')); DB::commit(); } catch(\Throwable $th) { DB::rollBack(); report($th); return $this->error('修改失败,请稍后再试'); } (new OperationLogService())->inLog(OperationType::Update, '', $adminUser, $request->input()); return $this->success('修改成功!'); } public function destroy(AdminUser $adminUser) { if ($adminUser->id == 1) { return $this->error('删除失败,请稍后再试'); } try { DB::beginTransaction(); $adminUser->bases()->sync([]); $adminUser->roles()->sync([]); $adminUser->delete(); DB::commit(); } catch(\Throwable $th) { DB::rollBack(); report($th); return $this->error('删除失败,请稍后再试'); } (new OperationLogService())->inLog(OperationType::Delete, '', $adminUser); return $this->success('删除成功!'); } /** * 启用/禁用 * * @param AdminUser $adminUser * @return void */ public function endable(AdminUser $adminUser) { if ($adminUser->id == 1) { return $this->error('操作失败,请稍后再试'); } $adminUser->update([ 'is_enable' => (int) ! $adminUser->is_enable, ]); $statusMsg = $adminUser->is_enable ? '禁用':'启用'; (new OperationLogService())->inLog(OperationType::Update, $statusMsg.'-用户【'.$adminUser->name.'】'); return $this->success('操作成功!'); } public function editPassword(AdminUser $adminUser, RestPasswordRequest $request) { if ($adminUser->id == 1) { return $this->error('操作失败,请稍后再试'); } $adminUser->update([ 'password' => bcrypt($request->input('password')), ]); $statusMsg = '修改密码'; (new OperationLogService())->inLog(OperationType::Update, $statusMsg.'-用户【'.$adminUser->name.'】'); return $this->success('修改成功!'); } public function unban(AdminUser $adminUser, Request $request) { if (! $request->user()->isAdministrator()) { return $this->error('无操作权限'); } if ($adminUser->banned_at) { $adminUser->update([ 'banned_reason' => '', 'banned_at' => null, ]); (new OperationLogService())->inLog(OperationType::Update, '解封-用户【'.$adminUser->name.'】'); } return $this->success('操作成功!'); } }