dev
This commit is contained in:
+31
-29
@@ -2,11 +2,11 @@ import re
|
||||
from api.core.Auth import createToken
|
||||
from api.core.Gzip import register_gzip_request
|
||||
import json
|
||||
from fastapi import APIRouter,Request, Depends, Body
|
||||
from fastapi import APIRouter, Request, Depends, Body
|
||||
from typing import Annotated
|
||||
from api.core.Response import Return, response
|
||||
from api.core.Redis import get_redis_info
|
||||
from api.dp import RedisDep,AltersDep
|
||||
from api.dp import RedisDep, AltersDep
|
||||
from core.character.adventure import get_adv_list
|
||||
from core.basic.character import createCharacter
|
||||
from core.open.helper import get_user_info_by_id
|
||||
@@ -17,6 +17,7 @@ router = APIRouter()
|
||||
|
||||
register_gzip_request(router)
|
||||
|
||||
|
||||
def replace_placeholders(template):
|
||||
# 匹配 <int>、<float>、<float1>、<float2> 等
|
||||
pattern = re.compile(r'<(int|float\d*)>')
|
||||
@@ -30,44 +31,43 @@ def replace_placeholders(template):
|
||||
return pattern.sub(repl, template)
|
||||
|
||||
|
||||
|
||||
@router.get('/adventure')
|
||||
async def get_adventure_info(request: Request,redis:RedisDep):
|
||||
async def get_adventure_info(request: Request, redis: RedisDep):
|
||||
adventure_info = get_redis_info(redis, 'dcalc:adventure', get_adv_list)
|
||||
|
||||
return response(data=adventure_info)
|
||||
|
||||
@router.get("/token/get/{alter}")
|
||||
async def getToken(redis:RedisDep,
|
||||
alter: str, request: Request, version: str = None, equVersion: str = "0"
|
||||
):
|
||||
|
||||
@router.get('/token/get/{alter}')
|
||||
async def getToken(redis: RedisDep, alter: str, request: Request, version: str = None, equVersion: str = '0'):
|
||||
token = createToken(alter, equVersion, redis)
|
||||
return response(data=token)
|
||||
|
||||
@router.get("/character")
|
||||
async def get_character_info(
|
||||
request: Request, state: AltersDep ,redis:RedisDep
|
||||
):
|
||||
|
||||
@router.get('/character')
|
||||
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}:{state.equVersion}", get_character)
|
||||
|
||||
info = get_redis_info(redis, f'dcalc:character:{state.alter}:{state.equVersion}', get_character)
|
||||
# info = character.getInfo()
|
||||
return response(data=info)
|
||||
|
||||
@router.get("/skill/{skillId}/{level}")
|
||||
async def get_skill_info(
|
||||
state: AltersDep, skillId: str, level: int, redis: RedisDep
|
||||
):
|
||||
|
||||
@router.get('/skill/{skillId}/{level}')
|
||||
async def get_skill_info(state: AltersDep, skillId: str, level: int, redis: RedisDep):
|
||||
"""
|
||||
获取技能信息
|
||||
"""
|
||||
alter = state.alter
|
||||
jobId = alter.split(".")[1]
|
||||
jobGrowId = alter.split(".")[2]
|
||||
jobId = alter.split('.')[1]
|
||||
jobGrowId = alter.split('.')[2]
|
||||
skill_info = {}
|
||||
key = f'openapi:{jobId}:{jobGrowId}:{skillId}'
|
||||
try:
|
||||
|
||||
def get_skill_info():
|
||||
# This function should retrieve the skill info based on job and jobGrow
|
||||
# For now, we return a placeholder dictionary
|
||||
@@ -97,25 +97,27 @@ async def get_skill_info(
|
||||
return response(data=skill_info)
|
||||
|
||||
|
||||
@router.get("/dnfhelper/{uid}/")
|
||||
@router.get('/dnfhelper/{uid}/')
|
||||
async def get_info_by_dnfhelper(uid: str, state: AltersDep, redis: RedisDep):
|
||||
try:
|
||||
result = await get_user_info_by_id(uid,state)
|
||||
result = await get_user_info_by_id(uid, state)
|
||||
return response(data=result)
|
||||
except Exception as e:
|
||||
if isinstance(e, ResponseException):
|
||||
return response(code=500, message=str(e), data=None)
|
||||
return response(code=500, message="Failed to fetch DNFHelper info", data=None)
|
||||
print(e)
|
||||
return response(code=500, message='Failed to fetch DNFHelper info', data=None)
|
||||
|
||||
@router.post("/skillTree/")
|
||||
async def get_skill_by_code(state: AltersDep, code = Body(None)):
|
||||
|
||||
@router.post('/skillTree/')
|
||||
async def get_skill_by_code(state: AltersDep, code=Body(None)):
|
||||
try:
|
||||
skills = get_skill_tree_info(code.get("code", ""))
|
||||
if skills.get("job",{}).get("class","") != state.alter:
|
||||
return response(code=500, message="技能加点代码职业与登录职业不匹配", data=None)
|
||||
skills = get_skill_tree_info(code.get('code', ''))
|
||||
if skills.get('job', {}).get('class', '') != state.alter:
|
||||
return response(code=500, message='技能加点代码职业与登录职业不匹配', data=None)
|
||||
return response(data=skills)
|
||||
except Exception as e:
|
||||
print(f"Error fetching skill tree info: {e}")
|
||||
print(f'Error fetching skill tree info: {e}')
|
||||
if isinstance(e, ResponseException):
|
||||
return response(code=500, message=str(e), data=None)
|
||||
return response(code=500, message="解析技能加点失败", data=None)
|
||||
return response(code=500, message='解析技能加点失败', data=None)
|
||||
|
||||
@@ -101,7 +101,7 @@ class CalcEquipMixin(CharacterBase):
|
||||
max_point_oath_suit = max((suit for suit in oathSuitInfo if oathSuitInfo[suit]['point'] > 0), key=lambda suit: oathSuitInfo[suit]['point'], default=None)
|
||||
zero_point_suits = [suit for suit in suitInfo if suitInfo[suit]['point'] == 0]
|
||||
# 套装没有到太初的时候,优先把誓约套装的点数加到装备套装上,以达到更高的套装等级
|
||||
if 0 < suitInfo[max_point_suit]['point'] < 2550 and oathSuitInfo.get('max_point_oath_suit', None) is not None:
|
||||
if suitInfo is not None and 0 < suitInfo[max_point_suit]['point'] < 2550 and oathSuitInfo.get('max_point_oath_suit', None) is not None:
|
||||
suitInfo[max_point_suit]['point'] += min(2550 - suitInfo[max_point_suit]['point'], oathSuitInfo[max_point_oath_suit]['point'])
|
||||
oathSuitInfo[max_point_oath_suit]['point'] -= min(2550 - suitInfo[max_point_suit]['point'], oathSuitInfo[max_point_oath_suit]['point'])
|
||||
pass
|
||||
|
||||
+15
-12
@@ -79,12 +79,12 @@ job_mapping = {
|
||||
|
||||
async def get_user_info_by_id(user_id: str, alter: AltersDep):
|
||||
if alter is None:
|
||||
raise ResponseException("登录过期或无效Token,请刷新后重试")
|
||||
raise ResponseException('登录过期或无效Token,请刷新后重试')
|
||||
name = next((k for k, v in job_mapping.items() if v == alter.origin), '')
|
||||
# 通过OCR助手获取用户信息
|
||||
helper_info = await get_main_user_info_by_id(user_id, name)
|
||||
if helper_info is None:
|
||||
raise ResponseException("当前助手ID不存在或已隐藏,请确认后重试")
|
||||
raise ResponseException('当前助手ID不存在或已隐藏,请确认后重试')
|
||||
else:
|
||||
return trans_to_dcalc_set(helper_info, alter)
|
||||
pass
|
||||
@@ -93,7 +93,7 @@ async def get_user_info_by_id(user_id: str, alter: AltersDep):
|
||||
def trans_to_dcalc_set(detail, alter: AltersDep):
|
||||
job = job_mapping.get(detail.get('job', ''), '')
|
||||
if job != alter.origin:
|
||||
raise ResponseException("未能匹配到当前职业对应的角色信息,请确认后重试")
|
||||
raise ResponseException('未能匹配到当前职业对应的角色信息,请确认后重试')
|
||||
basic = get_equipment('0')
|
||||
basicAvatars = basic.funs.get_dress_list([])
|
||||
equs = detail.get('equs', [])
|
||||
@@ -126,9 +126,9 @@ def trans_to_dcalc_set(detail, alter: AltersDep):
|
||||
# 贴膜
|
||||
if dcalcEqu:
|
||||
info['id'] = dcalcEqu.id
|
||||
dcalcEquFusion = next((item for item in basic.stones if item.name == equ.get('upgrade', '')), None)
|
||||
if dcalcEquFusion:
|
||||
info['fusion'] = dcalcEquFusion.id
|
||||
# dcalcEquFusion = next((item for item in basic.stones if item.name == equ.get('upgrade', '')), None)
|
||||
# if dcalcEquFusion:
|
||||
# info['fusion'] = dcalcEquFusion.id
|
||||
info['enchant'] = getEnchatIdByName(equ.get('enchant', ''), equ.get('posName', ''), basic.enchants)
|
||||
emblems = [getEmblemIdByName(i.get('detail', ''), i.get('categorize', ''), i.get('rarity', ''), basic.emblems) for i in equ.get('emblems', [])]
|
||||
info['emblem_0'] = emblems[0] if len(emblems) > 0 else 0
|
||||
@@ -167,7 +167,7 @@ def trans_to_dcalc_set(detail, alter: AltersDep):
|
||||
if item.get('posName', '') == '皮肤':
|
||||
match = re.search(r'\[(\d+)级\]', item.get('name', ''))
|
||||
lv = int(match.group(1)) if match else None
|
||||
if lv :
|
||||
if lv:
|
||||
item['enchant'] = f'Lv{lv}主动+1|全属强(12)|四维(55)'
|
||||
if item.get('posName', '') == '光环':
|
||||
# 先默认这个了 不管了
|
||||
@@ -182,11 +182,14 @@ def trans_to_dcalc_set(detail, alter: AltersDep):
|
||||
'equips': equips,
|
||||
'avatars': avatar,
|
||||
'avatarLink': detail.get('avatarLink', ''),
|
||||
'dressInfo': [{
|
||||
'dress': i.get('name', ''),
|
||||
'clone': i.get('clone', ''),
|
||||
'part': i.get('posName', ''),
|
||||
} for i in detail.get('avatars', [])]
|
||||
'dressInfo': [
|
||||
{
|
||||
'dress': i.get('name', ''),
|
||||
'clone': i.get('clone', ''),
|
||||
'part': i.get('posName', ''),
|
||||
}
|
||||
for i in detail.get('avatars', [])
|
||||
],
|
||||
}
|
||||
# 处理装备
|
||||
# 处理时装
|
||||
|
||||
Binary file not shown.
+1
-1
Submodule backend/openapi updated: 03f3bbf037...680ed85d6e
Reference in New Issue
Block a user