Skip to content

BBSport-New 資料 Model 知識庫

最後更新:2026-04-09


概覽

BBSport 的 Model 層主要分為:

  1. API Response Model — 對應 API 回應結構
  2. Sport Data Model — 賽事核心資料(DB/FB/LS 三個供應商)
  3. Bet / Settle Model — 投注與結算相關
  4. UI Model — 介面展示用資料

所有 Model 基本上符合 CodableDecodable,並使用 SEEKTOP 自研的 @AutoDecode property wrapper 設定預設值。


體育賽事 Model

OBEventModel(DB體育賽事)

位置:STUIKit/STSportCoreDataCenter/SportDataManager/DB/OBEventModel.swift

swift
class OBEventModel: Codable {
    var csna: String   // 賽種名稱
    var csid: String   // 賽種 ID
    var tid: String    // 聯賽 ID
    var tn: String     // 聯賽名稱
    var mid: String    // 賽事 ID
    var mhid: String   // 主隊 ID
    var mhn: String    // 主隊名稱
    var maid: String   // 客隊 ID
    var man: String    // 客隊名稱
    var mgt: String    // 賽事開始時間(毫秒 timestamp)
    var mgt_str: String // 格式化時間
    var ms: Int?       // 賽事狀態
    var mcg: Int       // 欄目類型(1=滾球, 2=即將, 3=今日, 4=早盤)
    var mmp: String    // 比賽階段
    var mms: Int       // 視頻狀態(-1無, 0已配置但不可用, 1可用, 2播放中)
    var mvs: Int       // 動畫狀態
    var mc: Int        // 玩法數量
    var hps: [OBOddInfoModel]  // 玩法集合
    var msc: [String]  // 比分集合(格式:S1|1:0)
    var mhs: Int       // 盤口狀態(0=開, 1=封, 2=關, 11=鎖)
    var mo: Int        // 比賽是否結束
    var isInplay: Bool // 是否滾球(自訂)
    var isFinish: Bool // 是否完場(自訂)
    var sportType: CommonSportType // 體育類型(自訂)
    var lsdata: FootBallTechnicModel? // 雷速數據(足球專用)
    var obliveInfo: LiveInfoModel? // 直播/動畫/視頻資訊
    var result: EventScoreboardModel // 小比分資訊
}

GameStatus 枚舉:

說明
0賽事未開始
1滾球階段
2暫停
3結束
4關閉
5取消
6放棄
7延遲
8未知
9延期
10中斷
110即將開賽
111滾球(數據商自定義)

OBLeagueModel(DB體育聯賽)

swift
class OBLeagueModel: Codable {
    var tn: String              // 聯賽名稱
    var tid: String             // 聯賽 ID
    var lurl: String            // 聯賽圖標
    var events: [OBEventModel]  // 賽事列表
    var csid: String            // 運動 ID
    var csna: String            // 運動名稱
    var tlev: String            // 聯賽等級
    var isFold: Bool            // 是否折疊(自訂)
    var eventsCount: String     // 賽事數量
    var pages: String           // 總頁數
}

OBChampionModel(冠軍賽事)

swift
class OBChampionModel: Codable {
    var picUrl: String          // 展示 logo
    var tournamentId: String    // 聯賽 ID
    var playName: String        // 冠軍玩法名稱
    var tournamentName: String  // 聯賽名稱
    var scoreResult: String     // 贏隊名稱
    var sportName: String       // 賽種名稱
    var sportId: String         // 賽種 ID
    var matchId: String         // 冠軍賽事 ID
    var marketId: String        // 冠軍盤口 ID
    var matchTime: String       // 比賽時間
    var time: String            // 轉換後比賽時間
}

STDataModel / STEventModel(FB體育賽事)

位置:STUIKit/STSportCoreDataCenter/SportDataManager/FB/STEventModel.swift

swift
class STDataModel: Codable {
    var records: [STEventModel]  // 賽事列表
    var pageTotal: Int           // 總頁數
    var current: Int             // 當前頁
    var size: Int                // 每頁大小
    var total: Int               // 總數
}

class STLeagueModel: Codable {
    var na: String              // 聯賽名稱
    var id: Int                 // 聯賽 ID
    var lurl: String            // 聯賽圖標
    var sportId: Int            // 運動 ID
    var events: [STEventModel]  // 賽事列表
    var isFold: Bool            // 是否折疊
    var sportType: CommonSportType
}

SportMenuModel(體育菜單)

位置:STUIKit/STSportCoreDataCenter/SportDataManager/SportMenuModel.swift

swift
class SportMenuModel: Decodable {
    var sportName: String  // 運動名稱
    var sportCount: Int    // 賽事數量
    var sportId: Int       // 球類 ID
    var menuId: Int        // 體育菜單 ID(DB體育)
    var liveTag: Bool      // 直播標記
}

class MenuDataModel: Decodable {
    var id: String
    var entityType: Int
    var name: String
    var fixturesTotalCount: Int     // 賽事總數
    var liveFixturesTotalCount: Int // 直播賽事數
    var outrightsTotalCount: Int    // 冠軍賽事數
    var todayCount: Int             // 今日賽事數
}

STPlayType 枚舉:

說明
0今日
1早盤
2串關
3收藏
4滾球
5冠軍
6未知

投注 / 結算 Model

BetSettleModel(投注結算)

位置:STUIKit/STSportCoreDataCenter/SportDataManager/SettleModel/BetSettleModel.swift

swift
struct BetSettleModel: Decodable {
    var gameType: GameType         // 遊戲類型
    var status: BetSettledStatus   // 訂單狀態(未結算/已結算/預約)
    var orderID: String            // 訂單號
    var betTime: String            // 投注時間
    var settlementTime: String     // 結算時間
    var selections: [BetSettleSelectionsModel] // 投注賽事清單
    var totalStake: String         // 投注金額
    var returns: String            // 返還金額(已結算)
    var winAmount: String          // 最大可贏額
    var settlementStatus: BetSettlementStatus // 輸/贏/和
    var betType: BetSettleType     // 單關/串關
    var isEarlySettlement: Bool    // 可提前結算
    var earlySettlementAmount: String // 提前結算返還額
    var cashOutStatus: FBCashOutStatus // 預約提前結算狀態
    var isHasEarlySettleHistory: Bool // 是否有提前結算歷史
    var ab: Bool                   // 是否預約投注(auto bet)
    var reserveType: FBABSettleStatus // 預約列表狀態
    var rst: STSettleReserveType   // 預約結算類型
}

EarlySettlementButtonStatus 枚舉:

說明
0按鈕不顯示
1啟用狀態
2未啟用
3等待中

OrderShareStatus 枚舉(聊天室晒單):

說明
0審核中
1確認中
2已確認
3投注失敗
4取消
5
6輸半
7
8贏半
9
10兌現
-99其他

EventDetailModel(賽事詳情類型)

位置:STUIKit/STBusiness/Services/Detail/EventDetailModel.swift

swift
enum Typeset: Int, Codable {
    case unknow = 0
    case one = 1
    case two = 2
    case three = 3
}

enum TypeTitle: Int, Codable {
    case hta = 8  // 主和客
    case ha = 5   // 主客
    case ht = 4   // 主和
    case ta = 7   // 和客
    case none = 0 // 無 title
}

API Response Model(部分)

STAPI.RiskFreeBetConfigurationRequest.Response(包賠配置)

swift
struct Response: STAutoCodable {
    var actName: String       // 活動名稱
    var actId: Int            // 活動 ID
    var actStartDate: TimeInterval
    var actEndDate: TimeInterval
    var content: String
    var gameRuleConfig: [GameRuleConfig]  // 盤口設置
    var introduction: [String]            // 活動說明
    var amountSettingConfig: [AmountSettingConfig] // 條件設定
    var status: Int           // 是否有包賠
    var template: String      // 活動模板
}

struct GameRuleConfig: STAutoCodable {
    var cornerKick: Int  // 是否有角球
    var oddEven: Int     // 是否有單雙
    var overUnder: Int   // 是否有大小
    var pointSpread: Int // 是否有讓分
    var single: Int      // 是否有獨贏
    var type: Int        // 球類(1=足球, 2=籃球)
}

STAPI.UsernameLoginRequest.Body(帳密登入)

swift
struct Body: Encodable {
    let username: String
    let password: String
    let lotNumber: String       // 行為驗證
    let captchaOutput: String   // 行為驗證
    let passToken: String       // 行為驗證
    let genTime: String         // 行為驗證
}

其他 Model

CryptoAddressInfo(加密貨幣地址)

位置:API/STAPI/User/Address/Model/CryptoAddressInfo.swift


LiveBetGameModel(直播投注遊戲)

位置:API/STAPI/Chat/Model/LiveBetGame/LiveBetGameModel.swift


LiveGameBetInfoModel(直播遊戲投注資訊)

位置:API/STAPI/Bet/Model/LiveGameBetInfoModel.swift


SportMenuModel 相關枚舉

swift
enum AnyCodable {
    case string(value: String)
    case int(value: Int)
    case data(value: Data)
    case double(value: Double)
}

用於處理 API 回應中型別不固定的欄位。


雷速體育(LS)Model

Model說明
LSBallTechniqueModel球技術統計
LSLineupDataModel陣容資料
LSRealTimeDataModel即時資料
LSIntelligenceConfigModel情報設定

彩票 Model

Model說明
MLBetModel投注資料
MLBetHistoryModel投注記錄
MLChaseModel智能追號
MLLotteryGroupModel彩票群組
MLLotteryPlayingMethodModel玩法
MLPCDDLocalModelPC蛋蛋本地資料
MLPlayMultiColorModel六合彩多色
MLPlayMultiModel六合彩多選
MLChartDataModel圖表資料