from update_lottery import LotteryUpdater from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from ...core.database import get_db from ...models.lottery import SSQLotteryBetRecord, DLTLotteryBetRecord import sys import os sys.path.append(os.path.dirname(os.path.dirname( os.path.dirname(os.path.abspath(__file__))))) router = APIRouter() @router.get("/{lottery_type}") def get_bet_history( lottery_type: str, page: int = 1, size: int = 20, db: Session = Depends(get_db) ): """获取投注历史记录""" if lottery_type not in ['ssq', 'dlt']: raise HTTPException(status_code=400, detail="Invalid lottery type") # 选择对应的模型 BetModel = SSQLotteryBetRecord if lottery_type == 'ssq' else DLTLotteryBetRecord # 计算偏移量 offset = (page - 1) * size # 查询记录 records = db.query(BetModel).order_by( BetModel.created_at.desc() ).offset(offset).limit(size).all() # 查询总数 total = db.query(BetModel).count() # 格式化返回数据 formatted_records = [] for record in records: formatted_records.append({ 'id': record.id, 'batch_id': record.batch_id, 'issue': record.issue, 'numbers': record.numbers, 'recommend_type': record.recommend_type, 'created_at': record.created_at.isoformat() if record.created_at else None, 'is_winner': record.is_winner, 'win_level': record.win_level, 'win_amount': record.win_amount }) return { 'success': True, 'records': formatted_records, 'total': total, 'page': page, 'size': size, 'pages': (total + size - 1) // size } @router.post("/check-win/{lottery_type}") def check_win(lottery_type: str, db: Session = Depends(get_db)): """手动触发比对并更新中奖信息""" if lottery_type not in ['ssq', 'dlt']: raise HTTPException(status_code=400, detail="Invalid lottery type") updater = LotteryUpdater() updater.check_and_update_bet_wins(lottery_type, db) return {"success": True, "message": f"{lottery_type}投注中奖比对已完成"}