108 lines
2.9 KiB
Python

from fastapi import APIRouter, Depends, HTTPException, UploadFile, File
from sqlalchemy.orm import Session
from typing import List
import os
from ...core.database import get_db
from ...schemas.lottery import (
SSQLottery, SSQLotteryCreate,
DLTLottery, DLTLotteryCreate,
LotteryQuery
)
from ...services.lottery import LotteryService
router = APIRouter()
@router.post("/ssq/", response_model=SSQLottery)
def create_ssq_lottery(
lottery: SSQLotteryCreate,
db: Session = Depends(get_db)
):
return LotteryService.create_ssq_lottery(db, lottery)
@router.post("/dlt/", response_model=DLTLottery)
def create_dlt_lottery(
lottery: DLTLotteryCreate,
db: Session = Depends(get_db)
):
return LotteryService.create_dlt_lottery(db, lottery)
@router.get("/ssq/", response_model=List[SSQLottery])
def get_ssq_lotteries(
query: LotteryQuery = Depends(),
db: Session = Depends(get_db)
):
lotteries, total = LotteryService.get_ssq_lotteries(db, query)
return lotteries
@router.get("/dlt/", response_model=List[DLTLottery])
def get_dlt_lotteries(
query: LotteryQuery = Depends(),
db: Session = Depends(get_db)
):
lotteries, total = LotteryService.get_dlt_lotteries(db, query)
return lotteries
@router.get("/ssq/statistics")
def get_ssq_statistics(db: Session = Depends(get_db)):
return LotteryService.get_ssq_statistics(db)
@router.get("/dlt/statistics")
def get_dlt_statistics(db: Session = Depends(get_db)):
return LotteryService.get_dlt_statistics(db)
@router.post("/ssq/import")
async def import_ssq_data(
file: UploadFile = File(...),
db: Session = Depends(get_db)
):
if not file.filename.endswith('.json'):
raise HTTPException(
status_code=400, detail="Only JSON files are allowed")
# 保存上传的文件
file_path = f"temp_{file.filename}"
try:
with open(file_path, "wb") as buffer:
content = await file.read()
buffer.write(content)
# 导入数据
count = LotteryService.import_ssq_data(db, file_path)
return {"message": f"Successfully imported {count} records"}
finally:
# 清理临时文件
if os.path.exists(file_path):
os.remove(file_path)
@router.post("/dlt/import")
async def import_dlt_data(
file: UploadFile = File(...),
db: Session = Depends(get_db)
):
if not file.filename.endswith('.json'):
raise HTTPException(
status_code=400, detail="Only JSON files are allowed")
# 保存上传的文件
file_path = f"temp_{file.filename}"
try:
with open(file_path, "wb") as buffer:
content = await file.read()
buffer.write(content)
# 导入数据
count = LotteryService.import_dlt_data(db, file_path)
return {"message": f"Successfully imported {count} records"}
finally:
# 清理临时文件
if os.path.exists(file_path):
os.remove(file_path)