manageUserService = $manageUserService; } /** * 公司列表(不带分页) * * 权限:仅超管和管理员 * * @return mixed */ public function companyList() { return $this->success([ 'list' => $this->manageUserService->getCompanyList(), ]); } /** * 角色可选项 * * 权限:仅超管和管理员 * - superadmin:admin(管理员)、user(组员) * - admin:仅 user(组员) * * @return mixed */ public function roleOptions() { return $this->success([ 'list' => $this->manageUserService->getRoleOptions(), ]); } /** * 添加账号 * * 权限:仅超管和管理员 * - superadmin:选择公司ID(cpid),角色可添加 admin/user * - admin:cpid 默认本公司,角色仅可添加 user * * @param Request $request * @return mixed */ public function add(Request $request) { $data = $request->all(); $validator = Validator::make($data, [ 'account' => 'required|string|max:32', 'nickname' => 'required|string|max:100', 'pwd' => 'required|string|min:6|max:32', 'is_enabled' => 'required|integer|in:0,1', 'role' => 'nullable|string|in:admin,user', 'cpid' => 'nullable|integer|min:1', ], [ 'account.required' => '请传入账号', 'account.max' => '账号不能超过32个字符', 'nickname.required' => '请传入昵称', 'nickname.max' => '昵称不能超过100个字符', 'pwd.required' => '请传入密码', 'pwd.min' => '密码长度不能少于6位', 'pwd.max' => '密码长度不能超过32位', 'is_enabled.required' => '请传入是否启用', 'is_enabled.in' => 'is_enabled仅支持0或1', 'role.in' => '角色仅支持admin(公司1管理员)或user(组员)', 'role.string' => '角色参数不合法', 'cpid.integer' => 'cpid必须为整数', 'cpid.min' => 'cpid不能小于1', ]); if ($validator->fails()) { Utils::throwError('1002:' . $validator->errors()->first()); } $result = $this->manageUserService->addUser($data); return $this->success($result); } /** * 用户列表 * * 权限:仅超管和管理员 * - superadmin:全部用户(id 倒序) * - admin:自己置顶 + 同公司组员(id 倒序) * * @param Request $request * @return mixed */ public function list(Request $request) { $data = $request->all(); $validator = Validator::make($data, [ 'page' => 'nullable|integer|min:1', 'per_page' => 'nullable|integer|min:1|max:100', 'keyword' => 'nullable|string|max:100', 'nickname' => 'nullable|string|max:100', 'is_enabled' => 'nullable|integer|in:0,1', 'company_name' => 'nullable|string|max:100', ], [ 'page.integer' => 'page必须为整数', 'page.min' => 'page不能小于1', 'per_page.integer' => 'per_page必须为整数', 'per_page.min' => 'per_page不能小于1', 'per_page.max' => 'per_page不能超过100', 'keyword.max' => 'keyword不能超过100个字符', 'nickname.max' => 'nickname不能超过100个字符', 'is_enabled.in' => 'is_enabled仅支持0或1', 'company_name.max' => 'company_name不能超过100个字符', ]); if ($validator->fails()) { Utils::throwError('1002:' . $validator->errors()->first()); } $result = $this->manageUserService->getUserList($data); return $this->success([ 'meta' => getMeta($result), 'list' => (new ManageUserTransformer())->newEachUser($result), ]); } /** * 修改用户 * * 权限:仅超管和管理员 * - superadmin:任意用户,可改昵称/密码/是否启用/角色 * - admin:仅同公司组员,可改昵称/密码/是否启用 * * @param Request $request * @return mixed */ public function edit(Request $request) { $data = $request->all(); $validator = Validator::make($data, [ 'uid' => 'required|integer|min:1', 'nickname' => 'nullable|string|max:100', 'pwd' => 'nullable|string|min:6|max:32', 'is_enabled' => 'nullable|integer|in:0,1', 'role' => 'nullable|string|in:superadmin,admin,user', ], [ 'uid.required' => '请传入目标用户uid', 'uid.integer' => 'uid必须为整数', 'uid.min' => 'uid不能小于1', 'nickname.max' => '昵称不能超过100个字符', 'pwd.min' => '密码长度不能少于6位', 'pwd.max' => '密码长度不能超过32位', 'is_enabled.in' => 'is_enabled仅支持0或1', 'role.in' => '角色仅支持superadmin、admin或user', ]); if ($validator->fails()) { Utils::throwError('1002:' . $validator->errors()->first()); } $hasAny = array_key_exists('nickname', $data) || array_key_exists('pwd', $data) || array_key_exists('is_enabled', $data) || array_key_exists('role', $data); if (!$hasAny) { Utils::throwError('1002:请至少传入昵称、密码、是否启用或角色之一'); } $result = $this->manageUserService->updateUser($data); return $this->success($result); } /** * 删除用户 * * 权限:仅超管和管理员 * - superadmin:可删除 admin/user,不允许删除超管 * - admin:仅可删除同公司组员 * * @param Request $request * @return mixed */ public function delete(Request $request) { $data = $request->all(); $validator = Validator::make($data, [ 'uid' => 'required|integer|min:1', ], [ 'uid.required' => '请传入目标用户uid', 'uid.integer' => 'uid必须为整数', 'uid.min' => 'uid不能小于1', ]); if ($validator->fails()) { Utils::throwError('1002:' . $validator->errors()->first()); } $result = $this->manageUserService->deleteUser($data); return $this->success(['success' => $result ? 1 : 0]); } }