AI实验室后端
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user