V2.0.0-alpha1

This commit is contained in:
2025-04-22 03:22:17 +08:00
parent 2a217c4b8c
commit 39bbc94d07
53 changed files with 5019 additions and 1203 deletions

51
routes/object.py Normal file
View File

@@ -0,0 +1,51 @@
import random
from fastapi import APIRouter, Request
from fastapi.responses import JSONResponse
from model.database import Database
from model.response import DefaultResponse, ObjectData
import asyncio
Router = APIRouter(prefix='/api/object', tags=['物品 Object'])
@Router.get(
path='/{item_key}',
summary="获取物品信息",
description="根据物品键获取物品信息",
response_model=DefaultResponse,
response_description="物品信息"
)
async def get_object(item_key: str, request: Request):
"""
获取物品信息 / Get object information
"""
db = Database()
await db.init_db()
object_data = await db.get_object(key=item_key)
if object_data:
if object_data[4] == 'lost':
# 物品已标记为丢失更新IP地址
await db.update_object(id=object_data[0], find_ip=str(request.client.host))
# 添加一些随机延迟类似JWT身份验证时根据延迟爆破引发的问题
await asyncio.sleep(random.uniform(0.10, 0.30))
else:
await asyncio.sleep(random.uniform(0.10, 0.30))
return DefaultResponse(data=ObjectData(
id=object_data[0],
key=object_data[1],
name=object_data[2],
icon=object_data[3],
status=object_data[4],
phone=object_data[5],
context=object_data[6]
).model_dump())
else: return JSONResponse(
status_code=404,
content=DefaultResponse(
code=404,
msg='物品不存在或出现异常'
).model_dump()
)