AI实验室后端

This commit is contained in:
BBIT-Kai
2026-02-04 13:58:18 +08:00
parent f9536dd0b4
commit 646e312a4c
24 changed files with 962 additions and 86 deletions
+122
View File
@@ -0,0 +1,122 @@
import pathlib
import uuid
from uuid import UUID
from fastapi import Depends, APIRouter
import db.postgres as pg
from config.minIO import get_upload_token
from config.security import get_user_id_from_token
from models.BaseResponse import BaseResponse
from models.LotteryCreateReq import LotteryCreateReq
from models.LotteryUpdateReq import LotteryUpdateReq
amRouter = APIRouter()
@amRouter.get("/ExGetList")
def AmExGetList(user_id: UUID = Depends(get_user_id_from_token)):
if not user_id:
return {"error": "userId is required"}
data = pg.get_all_exchange_records()
return BaseResponse(data=data)
@amRouter.get("/ExReset")
def AMExReset(user_id: UUID = Depends(get_user_id_from_token)):
if not user_id:
return {"error": "userId is required"}
data = pg.reset_all_exchange_status()
return BaseResponse(data=data, message="已重新打乱顺序")
@amRouter.put("/ExResetTargetStatus")
def AMExResetTargetStatus(
target_user_id: str, user_id: UUID = Depends(get_user_id_from_token)
):
if not user_id:
return {"error": "userId is required"}
data = pg.reset_user_status(target_user_id)
return BaseResponse(data=data)
@amRouter.get("/Lottery/getUploadUrl")
def getUploadUrl(
filename: str | None = None,
user_id: UUID = Depends(get_user_id_from_token),
):
if not user_id:
return {"error": "userId is required"}
# 生成唯一文件名,避免覆盖
ext = pathlib.Path(filename).suffix if filename else "" # 获取文件后缀
object_name = f"{uuid.uuid4()}{ext}" # 拼接到 UUID 后面
return BaseResponse(
data={
"uploadUrl": get_upload_token("image-annual-lottery", object_name),
"id": object_name,
}
)
@amRouter.get("/Lottery/List")
def AMGetLotteryList(user_id: UUID = Depends(get_user_id_from_token)):
if not user_id:
return {"error": "userId is required"}
data = pg.get_all_lottery()
return BaseResponse(data=data)
@amRouter.post("/Lottery/Add")
def AMAddLottery(
data: LotteryCreateReq,
user_id: UUID = Depends(get_user_id_from_token),
):
if not user_id:
return {"error": "userId is required"}
new_data = pg.add_lottery(
name=data.name,
sort=data.sort,
oss=data.oss,
is_opened=data.is_opened,
remark=data.remark,
)
return BaseResponse(data=new_data)
@amRouter.put("/Lottery/Update")
def AMUpdateLottery(
data: LotteryUpdateReq,
user_id: UUID = Depends(get_user_id_from_token),
):
if not user_id:
return {"error": "userId is required"}
updated = pg.update_lottery(
id=data.id,
name=data.name,
sort=data.sort,
oss=data.oss,
is_opened=data.is_opened,
remark=data.remark,
)
return BaseResponse(data=updated)
@amRouter.delete("/Lottery/Delete")
def AMDeleteLottery(id: str, user_id: UUID = Depends(get_user_id_from_token)):
if not user_id:
return {"error": "userId is required"}
data = pg.delete_lottery(id)
return BaseResponse(data=data)
@amRouter.patch("/Lottery/open/{item_id}")
def open_lottery_item(item_id: UUID):
updated = pg.reset_lottery_item(item_id)
return BaseResponse(data=updated)
@amRouter.patch("/Lottery/resetAll")
def reset_all_lottery():
count = pg.reset_all_lottery_db()
return BaseResponse(data=count)