mottery/backend/app/api/v1/lottery.py

113 lines
3.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from fastapi import APIRouter, Depends, Query
from sqlalchemy.orm import Session
from typing import List, Optional
from datetime import date
from app.core.database import get_db
from app.services.lottery import LotteryService
from app.schemas.lottery import SSQLottery, DLTLottery, LotteryQuery
import random
router = APIRouter()
@router.get("/ssq/latest", response_model=SSQLottery)
def get_latest_ssq(db: Session = Depends(get_db)):
"""获取最新一期双色球开奖记录"""
return LotteryService.get_latest_ssq(db)
@router.get("/dlt/latest", response_model=DLTLottery)
def get_latest_dlt(db: Session = Depends(get_db)):
"""获取最新一期大乐透开奖记录"""
return LotteryService.get_latest_dlt(db)
@router.get("/ssq/", response_model=List[SSQLottery])
def get_ssq_lotteries(
db: Session = Depends(get_db),
issue: Optional[str] = Query(None, description="期号"),
start_date: Optional[str] = Query(None, description="开始日期 (YYYY-MM-DD)"),
end_date: Optional[str] = Query(None, description="结束日期 (YYYY-MM-DD)"),
page: int = Query(1, ge=1, description="页码"),
page_size: int = Query(20, ge=1, le=100, description="每页记录数")
):
"""获取双色球开奖记录列表"""
query = LotteryQuery(
issue=issue,
start_date=start_date,
end_date=end_date,
page=page,
page_size=page_size
)
lotteries, _ = LotteryService.get_ssq_lotteries(db, query)
return lotteries
@router.get("/dlt/", response_model=List[DLTLottery])
def get_dlt_lotteries(
db: Session = Depends(get_db),
issue: Optional[str] = Query(None, description="期号"),
start_date: Optional[str] = Query(None, description="开始日期 (YYYY-MM-DD)"),
end_date: Optional[str] = Query(None, description="结束日期 (YYYY-MM-DD)"),
page: int = Query(1, ge=1, description="页码"),
page_size: int = Query(20, ge=1, le=100, description="每页记录数")
):
"""获取大乐透开奖记录列表"""
query = LotteryQuery(
issue=issue,
start_date=start_date,
end_date=end_date,
page=page,
page_size=page_size
)
lotteries, _ = 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.get("/ssq/generate")
def generate_ssq_numbers(strategy: str = Query("random"), count: int = Query(1)):
"""
智能生成双色球号码
- strategy: 选号策略(目前仅支持 random
- count: 生成注数
"""
results = []
for _ in range(count):
red_balls = sorted(random.sample(range(1, 34), 6))
blue_ball = random.randint(1, 16)
results.append({
"red_balls": red_balls,
"blue_ball": blue_ball
})
return {"results": results}
@router.get("/dlt/generate")
def generate_dlt_numbers(strategy: str = Query("random"), count: int = Query(1)):
"""
智能生成大乐透号码
- strategy: 选号策略(目前仅支持 random
- count: 生成注数
"""
results = []
for _ in range(count):
front_balls = sorted(random.sample(range(1, 36), 5))
back_balls = sorted(random.sample(range(1, 13), 2))
results.append({
"front_balls": front_balls,
"back_balls": back_balls
})
return {"results": results}