Files
bet/data_model.py
2025-10-25 13:23:43 +08:00

121 lines
5.4 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 datetime import datetime
from typing import Optional, Union, List, Dict
from pydantic import BaseModel, Field, Json
class MysqlConfig(BaseModel):
host: str
port: int
db_name: str
user: str
password: str
class OddsjamOrderStatus:
def __init__(self, data):
if data.get("home_edge_percent") is not None:
self.home_away = "home"
else:
self.home_away = "away"
self.sportsbooks = data.get(self.home_away + "_sportsbooks")
self.bet_name = data.get(self.home_away + "_bet_name")
self.market = data.get("market")
self.price = data.get(self.home_away + "_price")
self.stake = 1
self.event_name = f'{data.get("home_team")} vs {data.get("away_team")}'
self.sport = data.get("sport")
self.league = data.get("league")
self.game_id = data.get("game_id")
self.bet_type = 'Positive EV'
self.bet_id = data.get("bet_id")
self.create_time = data.get("create_time")
self.start_timestamp = data.get("start_timestamp")
def to_dict(self):
return {
"home_away": self.home_away,
"sportsbooks": self.sportsbooks,
"bet_name": self.bet_name,
"market": self.market,
"price": self.price,
"stake": self.stake,
"event_name": self.event_name,
"sport": self.sport,
"league": self.league,
"game_id": self.game_id,
"bet_type": self.bet_type,
"bet_id": self.bet_id,
"start_timestamp": self.start_timestamp,
"create_time": self.create_time
}
class OddsJamOrder(BaseModel):
id: str = Field(..., description="主键自增ID")
bet_id: Optional[str] = Field(None, description="投注ID")
game_id: Optional[str] = Field(None, description="比赛ID")
away_bet_name: Optional[str] = Field(None, description="客队投注名称")
home_bet_name: Optional[str] = Field(None, description="主队投注名称")
away_no_vig_price: Optional[float] = Field(None, description="客队无佣金价格")
home_no_vig_price: Optional[float] = Field(None, description="主队无佣金价格")
away_price: Optional[float] = Field(None, description="客队价格")
home_price: Optional[float] = Field(None, description="主队价格")
away_sportsbooks: Optional[Json[List[str]]] = Field(
None, description="客队的体育书籍JSON格式")
home_sportsbooks: Optional[Json[List[str]]] = Field(
None, description="主队的体育书籍JSON格式")
is_live: Optional[bool] = Field(None, description="是否为直播")
in_game_status: Optional[str] = Field(None, description="比赛状态")
period: Optional[str] = Field(None, description="比赛时段")
clock: Optional[str] = Field(None, description="比赛时钟")
last_play: Optional[str] = Field(None, description="最后一次比赛")
home_score: Optional[int] = Field(None, description="主队得分")
away_score: Optional[int] = Field(None, description="客队得分")
sport: Optional[str] = Field(None, description="运动类型")
league: Optional[str] = Field(None, description="联赛")
market: Optional[str] = Field(None, description="市场")
market_width: Optional[float] = Field(None, description="市场宽度")
percentage: Optional[float] = Field(None, description="百分比")
start_date: Optional[datetime] = Field(None, description="比赛开始日期时间")
home_team: Optional[str] = Field(None, description="主队")
away_team: Optional[str] = Field(None, description="客队")
timestamp: Optional[float] = Field(None, description="时间戳")
away_deep_link_map: Optional[str] = Field(
None, description="客队深度链接映射JSON格式")
home_deep_link_map: Optional[str] = Field(
None, description="主队深度链接映射JSON格式")
status: Optional[str] = Field(None, description="状态")
away_edge_percent: Optional[float] = Field(None, description="客队边缘百分比")
bet_placed: Optional[bool] = Field(None, description="是否下注")
same_market_bet_placed: Optional[bool] = Field(
None, description="是否在同一市场下注")
same_game_bet_placed: Optional[bool] = Field(None, description="是否在同一比赛下注")
away_rec_size: Optional[int] = Field(None, description="客队推荐大小")
rec_size: Optional[int] = Field(None, description="推荐大小")
home_edge_percent: Optional[float] = Field(None, description="主队边缘百分比")
order_status: int = Field(0, description="订单状态")
amount: Optional[int] = Field(None, description="下单金额,整数")
create_time: Optional[str] = Field(None, description="创建时间")
sportsbook_orderid: Optional[str] = Field(None, description="博彩公司订单ID")
home_or_away: Optional[str] = Field(None, description="主队或客队")
start_timestamp: Optional[int] = Field(None, description="开始时间戳")
selected_sportsbook: Optional[str] = Field(None, description="选定的博彩公司")
bet_status: Optional[str] = Field(None, description="投注状态")
class OddsjamBet(BaseModel):
Sportsbook: str
BetName: str
MarketName: str
Odds: int
Stake: int
EventName: str
Sport: str
League: str
GameID: str
GameStartDate: str
BetType: str
Notes: str