123 lines
3.3 KiB
Python
123 lines
3.3 KiB
Python
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)
|