72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
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}投注中奖比对已完成"}
|