2026-03-03 09:26:07 +08:00
|
|
|
|
from models.request import GetTokenRequest
|
|
|
|
|
|
from utils.response_builder import ResponseBuilder
|
|
|
|
|
|
from config.settings import settings
|
2026-03-03 13:40:56 +08:00
|
|
|
|
from typing import Dict, Union
|
2026-03-03 09:26:07 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TokenService:
|
|
|
|
|
|
"""Token管理服务"""
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
|
|
self.project_counter = settings.INITIAL_PROJECT_ID
|
|
|
|
|
|
self.tokens = {} # projectId -> token_data
|
|
|
|
|
|
|
2026-03-03 13:40:56 +08:00
|
|
|
|
def create_token(self, request: Union[GetTokenRequest, Dict]) -> Dict:
|
2026-03-03 09:26:07 +08:00
|
|
|
|
"""创建Token
|
|
|
|
|
|
|
|
|
|
|
|
Args:
|
2026-03-03 13:40:56 +08:00
|
|
|
|
request: 获取Token请求(可以是 GetTokenRequest 对象或字典)
|
2026-03-03 09:26:07 +08:00
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
Token响应字典
|
|
|
|
|
|
"""
|
2026-03-03 13:40:56 +08:00
|
|
|
|
# 支持 dict 或 GetTokenRequest 对象
|
|
|
|
|
|
if isinstance(request, dict):
|
|
|
|
|
|
project_no = request.get("projectNo")
|
|
|
|
|
|
entity_name = request.get("entityName")
|
|
|
|
|
|
else:
|
|
|
|
|
|
project_no = request.projectNo
|
|
|
|
|
|
entity_name = request.entityName
|
|
|
|
|
|
|
2026-03-03 09:26:07 +08:00
|
|
|
|
# 生成唯一项目ID
|
|
|
|
|
|
self.project_counter += 1
|
|
|
|
|
|
project_id = self.project_counter
|
|
|
|
|
|
|
|
|
|
|
|
# 构建响应
|
|
|
|
|
|
response = ResponseBuilder.build_success_response(
|
|
|
|
|
|
"token",
|
|
|
|
|
|
project_id=project_id,
|
2026-03-03 13:40:56 +08:00
|
|
|
|
project_no=project_no,
|
|
|
|
|
|
entity_name=entity_name
|
2026-03-03 09:26:07 +08:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
# 存储token信息
|
|
|
|
|
|
self.tokens[project_id] = response.get("data")
|
|
|
|
|
|
|
|
|
|
|
|
return response
|
|
|
|
|
|
|
|
|
|
|
|
def get_project(self, project_id: int) -> Dict:
|
|
|
|
|
|
"""获取项目信息
|
|
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
|
project_id: 项目ID
|
|
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
项目信息字典
|
|
|
|
|
|
"""
|
|
|
|
|
|
return self.tokens.get(project_id)
|