* * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ declare(strict_types=1); namespace App\Controller; use App\Amqp\Producer\UserImportProducer; use App\Constants\UserTypeConst; use App\Context\UserContext; use App\JsonRpc\UserAuthServiceInterface; use App\Request\UserRequest; use Exception; use Hyperf\Amqp\Producer; use Hyperf\Di\Annotation\Inject; use Hyperf\HttpMessage\Server\Response; use Hyperf\Validation\Annotation\Scene; class UserController extends AbstractController { #[Inject] protected UserAuthServiceInterface $userAuthService; #[Inject] protected Producer $producer; /** * 用户登录. * @param UserRequest $request * @return Response * @throws Exception */ #[Scene(scene: 'userLogin', argument: 'request')] public function userLogin(UserRequest $request): Response { $rpcUser = $this->userAuthService->userLogin([ 'login_name' => $request->input('login_name'), 'password' => $request->input('password'), ]); $user = $rpcUser['result'] ?? []; if (empty($user)) { return $this->apiResponse->error('用户名不存在'); } // 设置用户信息上下文 UserContext::setCurrentUser($user['user']); $this->opLogs('[用户登录]登录名 ' . $request->input('login_name')); return $this->apiResponse->success($user); } /** * 添加用户. * @param UserRequest $request * @return Response */ #[Scene(scene: 'addUser', argument: 'request')] public function addUser(UserRequest $request): Response { $data = $request->all(); $data['token'] = $this->token(); $data['user_type'] = UserTypeConst::SYSTEM_USER; $data['companyInfo'] = $this->company(); $data['role_ids'] = $request->input('role_ids', []); // 角色ID列表 $this->userAuthService->addUser($data); return $this->apiResponse->success(); } /** * 获取用户列表. * @param UserRequest $request * @return Response */ #[Scene(scene: 'getUserList', argument: 'request')] public function getUserList(UserRequest $request): Response { $data = [ 'companyInfo' => $this->company(), 'userInfo' => UserContext::getCurrentUser(), 'getPage' => $this->getPage(), 'params' => $request->all() ]; $rpcResult = $this->userAuthService->userList($data); return $this->apiResponse->success($rpcResult['result']); } public function importUser(): Response { $data = []; $this->producer->produce(new UserImportProducer($data)); return $this->apiResponse->success(); } }