129 lines
3.4 KiB
PHP
129 lines
3.4 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: 'userLogout', argument: 'request')]
|
|
public function userLogout(UserRequest $request): Response
|
|
{
|
|
$user = $this->user();
|
|
$token = $this->token();
|
|
|
|
$this->userAuthService->userLogout([
|
|
'token' => $token,
|
|
'refresh_token' => $request->input('refresh_token')
|
|
]);
|
|
|
|
$this->opLogs('[PC端用户退出]' . $user['name']);
|
|
return $this->apiResponse->success();
|
|
}
|
|
|
|
/**
|
|
* 添加用户.
|
|
* @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 = [
|
|
'token' => $this->token(),
|
|
'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();
|
|
}
|
|
} |