Skip to content

賽果查詢(開發文檔)

最後更新:2026-04-10

📖 功能說明請參考 賽果查詢


架構

相關檔案

ViewController / ViewModel(5 個)
檔案說明
.../New/NewMatchResultViewController.swift賽果列表 VC
.../New/NewMatchResultView.swift賽果列表 View
.../New/NewMatchResultViewModel.swift賽果列表 VM
.../Detail/MatchResultDetailViewController.swift詳情 VC
.../Detail/MatchResultDetailViewModel.swift詳情 VM

基礎路徑:BBSport/Tab/我的/Mine/SportMenu/EventResult/

Model(12 個)
檔案說明
.../Detail/Model/MatchDetailModel+FootBall.swift足球詳情 Model
.../Detail/Model/MatchDetailModel+BasketBall.swift籃球詳情 Model
.../Detail/Model/MatchDetailModel+Tennis.swift網球詳情 Model
.../Detail/Model/MatchDetailModel+VolleyBall.swift排球詳情 Model
.../Detail/Model/MatchDetailModel+IceHockey.swift冰球詳情 Model
.../Detail/Model/MatchDetailModel+BaseBall.swift棒球詳情 Model
.../Detail/Model/MatchDetailModel+AmericanFootBall.swift美式足球詳情 Model
.../Detail/Model/MatchDetailModel+MMA.swiftMMA 詳情 Model
.../Detail/Model/MatchDetailModel+Snooker.swift斯諾克詳情 Model
.../Detail/Model/MatchDetailModel+Rugby.swift橄欖球詳情 Model
.../Detail/Model/MatchDetailModel+Convert.swiftModel 轉換工具

基礎路徑:BBSport/Tab/我的/Mine/SportMenu/EventResult/

聯賽篩選(1 個)
檔案說明
.../LeagueFilter/LeagueFilterViewController.swift聯賽篩選 VC

基礎路徑:BBSport/Tab/我的/Mine/SportMenu/EventResult/

DB 本地快取(4 個)
檔案說明
.../DB/MatchResultDB.swiftDB 基底類
.../DB/FBMatchResultDB.swiftFB 快取
.../DB/UPMatchResultDB.swiftUP 快取
.../DB/DBMatchResultDB.swiftDB 快取

基礎路徑:BBSport/Tab/我的/Mine/SportMenu/EventResult/

API Request(6 個)
檔案說明
BBSport/API/FBSportAPI/MatchResult/FBSportAPI+MatchResultListRequest.swiftFB 賽果列表
BBSport/API/FBSportAPI/MatchResult/FBSportAPI+MatchResultDetailRequest.swiftFB 賽果詳情
BBSport/API/UPSportAPI/MatchResult/UPSportAPI+MatchResultListRequest.swiftUP 賽果列表
BBSport/API/UPSportAPI/MatchResult/UPSportAPI+MatchResultDetailRequest.swiftUP 賽果詳情
BBSport/API/DBSportAPI/Sport/DBSportAPI+MatcheResultRequest.swiftDB 賽果
BBSport/API/DBSportAPI/Sport/DBSportAPI+ChampionMatchResultRequest.swiftDB 冠軍賽果

API

賽果列表


FB/UP 賽果列表

POST v1/match/matchResultPage — JSON — 來源:FBSportAPI / UPSportAPI

TIP

FB 與 UP endpoint 相同,差異在 Request struct 分屬不同 namespace。

Request:

參數型別必填說明
sportIdint球類 ID(與 leagueIds 二擇一)
leagueIds[int]聯賽 ID 陣列(有值時取代 sportId)
beginTimedouble篩選開始時間(時間戳)
endTimedouble篩選結束時間
languageTypestring固定 "CMN"
currentint頁碼,從 1 開始
sizeint每頁數量,預設 20
matchTypeint1=冠軍、2=常規賽事

Response:success=truedata,型別 MatchResultListRequest.Response

欄位型別說明
records[STEventModel]賽果列表
currentInt當前頁碼
sizeInt每頁數量
totalInt總筆數
isLastPageBool是否最後一頁(計算:current >= ceil(total/size)

FB/UP 賽果詳情

POST v1/match/matchResultInfo — JSON — 來源:FBSportAPI / UPSportAPI

參數型別必填說明
matchIdstring賽事 ID
languageTypestring固定 "CMN"

Response:success=truedata,型別 STEventModel

欄位型別說明
idInt賽事 ID
sidInt球類 ID
lgSTLeagueModel聯賽資料
ts[STLeagueModel]球隊陣列(ts[0]=主隊、ts[1]=客隊)
mg[STMarketGroupModel]盤口集合
mgs[STMarketGroupModel]賽果 API 盤口
sg[STEventResultModel]比分資訊
btDouble開賽時間
msMatchStatus賽事狀態
resultEventScoreboardModel比分看板
...及其他 15+ 個欄位

DB 賽果列表

POST yewu11/v1/m/matcheResultPB — JSON — 來源:DBSportAPI

Request:

參數型別必填說明
euidstring運動 ID
typeint固定 28(賽果類型)
sortint固定 1(按聯賽排序)
mdstring日期篩選(時間戳字串),預設當天

Response:code="0000000"data,型別 [OBEventModel]

OBEventModel 賽果欄位
欄位型別說明
midString賽事 ID
tidString聯賽 ID
tnString聯賽名稱
csidString球類 ID
csnaString球類名稱
mhnString主隊名稱
mhidString主隊 ID
manString客隊名稱
maidString客隊 ID
msc[String]比分集合(格式:S1|1:0
msInt?賽事狀態(3=結束)
mgtString開賽時間(毫秒時間戳)
mgt_strString格式化開賽時間
mcgInt欄目類型
mmpString比賽階段
mhsInt盤口狀態(0=開、1=封、2=關、11=鎖)
mhlu[String]主隊 Logo URL
malu[String]客隊 Logo URL
moInt比賽是否結束

DB 冠軍賽果

POST yewu11/api/result/championMatchResultPB — JSON — 來源:DBSportAPI

參數型別必填說明
startTimestring篩選開始時間
endTimestring篩選結束時間

Response: JSON String,由 DBSportParseJSONStringDecision 處理。


ViewModel 關鍵屬性

屬性說明
sourceType當前平台(STBindingVariable<GameType>
filterLeagueIds已選聯賽 ID(0 筆=全選)
isRenew是否強制刷新
delayUpdate防連續呼叫的延遲更新

實作重點

  • 平台切換supportSourceTypesGameStatusManager 動態決定;切換時重置篩選條件
  • 防抖更新filterLeagueIds 改變 → delayUpdate.call() 延遲執行,避免多次請求
  • 多球類 Model 擴展:詳情頁各球類以 Swift Extension 分離,共 10 種球類
  • 本地快取MatchResultDB<T> 泛型機制,以 (sportType, dateText) 為 key 儲存,使用 CurrentValueSubject 驅動 UI。快取過期策略:今日資料 5 分鐘(300 秒)後過期自動重新請求,非今日資料不過期。reqeust(renew:)true 可強制刷新。
  • 聯賽篩選:以首字母分組,使用 SectionIndexView 快速跳轉

關鍵數字

  • FB/UP 每頁數量:20 條
  • 支援球類數量:10 種(足球/籃球/網球/排球/冰球/棒球/美式足球/MMA/斯諾克/橄欖球)
  • 快取過期時間:今日資料 5 分鐘,非今日資料不過期

查無賽果情境

  • FB/UP:API 回傳 success=truerecords 為空陣列,total=0,UI 顯示空狀態
  • DB:API 回傳 code="0000000"data 為空陣列,UI 顯示空狀態
  • API 請求失敗時,MatchResultDB 狀態保持 updating,UI 繼續顯示快取資料(如有);DB 失敗錯誤會 printLog 記錄