Files
wh-api/app/Controller/UserController.php
ykxiao 0b2299c427
Some checks failed
Build Docker / build (push) Has been cancelled
协程版仓库后端项目
2025-07-08 14:59:47 +08:00

110 lines
2.9 KiB
PHP

<?php
/**
* Author: ykxiao
* Date: 2025/6/3
* Time: 下午8:20
* Description:
*
* (c) ykxiao <yk_9001@hotmail.com>
*
* 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();
}
}