113 lines
3.6 KiB
Python
113 lines
3.6 KiB
Python
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}
|