装备栏、技能栏

This commit is contained in:
2025-03-15 11:13:34 +08:00
parent 5d5dc59526
commit 8be0aa2a5a
83 changed files with 353 additions and 60 deletions
+2 -1
View File
@@ -9,12 +9,13 @@ from api.core.exception import ResponseException
class AlterState:
def __init__(self, alter: str, token: str, charcater: Character, equVersion: str):
def __init__(self, alter: str, token: str, charcater: Character, equVersion: str,time: int):
self.alter = alter
self.token = token
self.origin = alter.split('.')[-1]
self.character = charcater
self.equVersion = equVersion
self.time = time
def to_dict(self):
return self.__dict__
+32 -10
View File
@@ -1,26 +1,48 @@
import time
from typing import Annotated, Optional
from redis import Redis
from sqlalchemy.orm import Session
from fastapi import Depends, Header
from api.core.exception import ResponseException
from database.connect import get_db,get_redis
from api.core.Auth import AlterState, deleteToken, readToken
from database.connect import get_db, get_redis
from api.core.Auth import AlterState
import base64
import json
SessionDep = Annotated[Session, Depends(get_db)]
RedisDep = Annotated[Redis, Depends(get_redis)]
def authorize(redis:RedisDep, access_token: Optional[str] = Header(None)):
if access_token is not None:
info = readToken(access_token, redis)
return info
def alterToken(alter_token: Optional[str] = Header(None)):
if alter_token is not None:
try:
decoded_bytes = base64.b64decode(alter_token)
decoded_str = decoded_bytes.decode('utf-8')
alter = json.loads(decoded_str)
# 时间判断 后面再加
if (int(time.time() * 1000) - alter['time']) / (60 * 60 * 1000) > 6:
raise ResponseException('登录过期或无效Token,请刷新后重试')
return AlterState(alter['alter'], alter_token, {}, alter['equVersion'], alter['time'])
except (base64.binascii.Error, json.JSONDecodeError):
raise ResponseException('登录过期或无效Token,请刷新后重试')
else:
raise ResponseException('登录过期或无效Token,请刷新后重试')
pass
def unauthorize(redis:RedisDep, access_token: Optional[str] = Header(None)):
if access_token is not None:
return deleteToken(access_token, redis)
AltersDep = Annotated[AlterState, Depends(alterToken)]
AltersDep = Annotated[AlterState, Depends(authorize)]
# def authorize(redis:RedisDep, access_token: Optional[str] = Header(None)):
# if access_token is not None:
# info = readToken(access_token, redis)
# return info
# else:
# raise ResponseException('登录过期或无效Token,请刷新后重试')
# def unauthorize(redis:RedisDep, access_token: Optional[str] = Header(None)):
# if access_token is not None:
# return deleteToken(access_token, redis)
# TokenDep = Annotated[AlterState, Depends(authorize)]
+4 -3
View File
@@ -33,8 +33,9 @@ async def get_character_info(
request: Request, state: AltersDep ,redis:RedisDep
):
character = createCharacter(state.alter, state.equVersion)
def get_character():
return character.getInfo()
info = get_redis_info(redis, f"dcalc:character:{state.alter}", get_character)
# def get_character():
# return character.getInfo()
# info = get_redis_info(redis, f"dcalc:character:{state.alter}", get_character)
info = character.getInfo()
return response(data=info)