Appearance
體育賽事列表
最後更新:2026-04-09
功能說明
體育賽事列表是 App 的核心功能(預設 Tab),讓使用者瀏覽各類體育賽事並進行下注。支援三個體育數據平台(FB 極速體育、DB OB體育、UP 雷速體育),提供滾球(InPlay)、今日賽事、早盤、收藏賽事、冠軍賽五種賽事類型切換。
使用者流程
- 進入「體育」Tab → 預設顯示 FB 極速體育的滾球賽事
- 頂部 Banner 區域顯示公告/廣告
- 球類切換欄(
SportIconScrollBar)可左右滑動選擇:足球/籃球/網球/棒球等 - 賽事列表依聯賽分組顯示(
MatchListHeaderCell+MatchListBodyCell) - 每場賽事顯示:隊名、即時比分(滾球)、主要賠率
- 點擊賠率 → 加入投注購物車,彈出
BetViewController投注面板 - 長按賠率 → 依平台展開更多玩法
- 點擊賽事行 → 進入
STEventDetailViewController賽事詳情頁 - 右上角篩選按鈕 →
DropDownMenuViewController或LeagueChooseCell聯賽篩選 - 支援下拉刷新、上拉載入更多(分頁)
- 依球類切換時自動輪詢最新賠率
頁面跳轉
- 點擊「體育」Tab →
SportSegmentedController(賽事列表主頁) - 點擊賽事行 →
STEventDetailViewController(賽事詳情) - 點擊賠率 →
BetViewController(投注面板,底部彈出) - 篩選按鈕 →
DropDownMenuViewController(聯賽篩選)
技術視角(開發看這裡)
相關檔案
| 類型 | 檔案路徑 |
|---|---|
| ViewController | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/SportSegmentedController.swift |
| ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/SportSegmentedViewModel.swift |
| UseCase(球類選單) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/UseCase/Menu/SportMenusUseCase.swift |
| UseCase(賽事請求) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/UseCase/Match/SportMatchUseCase.swift |
| UseCase(玩法切換) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/UseCase/PlayMethod/SportPlayMethodUseCase.swift |
| UseCase(熱門聯賽) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/UseCase/LeagueFilter/SportMatchLeagueFilterUseCase.swift |
| UseCase(日期篩選) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/UseCase/Calendar/SportCalendarUseCase.swift |
| UseCase(完賽篩選) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/UseCase/FinishMatch/SportFinishMatchUseCase.swift |
| Service(FB 滾球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/FB/FBSportInPlayMatchService.swift |
| Service(FB 今日) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/FB/FBSportTodayMatchService.swift |
| Service(FB 早盤) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/FB/FBSportEarlyMatchService.swift |
| Service(FB 收藏) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/FB/FBSportFavoriteMatchService.swift |
| Service(DB 滾球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/DB/DBSportInPlayMatchService.swift |
| Service(DB 今日) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/DB/DBSportTodayMatchService.swift |
| Service(DB 早盤) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/DB/DBSportEarlyMatchService.swift |
| Service(DB 冠軍) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/DB/DBSportChampionMatchService.swift |
| Service(UP 滾球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/UP/UPSportInPlayMatchService.swift |
| Service(UP 今日) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/UP/UPSportTodayMatchService.swift |
| Service(UP 早盤) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/UP/UPSportEarlyMatchService.swift |
| Service(UP 收藏) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/UP/UPSportFavoriteMatchService.swift |
| Service(UP 冠軍) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/UP/UPSportChampionMatchService.swift |
| Service(UP 賽果) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/UP/UPSportMatchResultService.swift |
| Service(UP 串關賠率) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/UP/UPSportSeriesOddsService.swift |
| Repository(FB 收藏) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Repository/Favorite/FBSportFavoriteRepository.swift |
| Repository(DB 收藏) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Repository/Favorite/DBSportFavoriteRepository.swift |
| Cell(賽事列表) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/List/Body/MatchListBodyCell.swift |
| Cell(賽事 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/List/Head/MatchListHeaderCell.swift |
| Cell(冠軍) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/Champion/ChampionListBodyDetailCell.swift |
| Adapter(列表) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Adapter/ |
| View(球類圖示列) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/TitleView/SportIconScrollBar.swift |
| View(時間軸) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/TitleView/SportTimeScrollBar.swift |
| View(得分區域) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/SectionView/MatchSectionScoreView.swift |
| Protocol(登入提示) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/Protocol/BBSportLoginAlertViewProtocol.swift |
| View(投注選擇) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/BetView/SportSelectBetView.swift |
| Cell(冠軍 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/Champion/ChampionListBodyHeadCell.swift |
| View(冠軍 Header 其他) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/Champion/ChampionListHeadOtherView.swift |
| Cell(聯賽選擇) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/LeagueChoose/LeagueChooseCell.swift |
| Cell(索引) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/LeagueChoose/SectionIndexViewCell.swift |
| Cell Extension(ColorCard) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/List/Body/MatchListBodyCell+ColorCard.swift |
| Cell Extension(DB) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/List/Body/MatchListBodyCell+DB.swift |
| Cell Extension(FB) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/List/Body/MatchListBodyCell+FB.swift |
| Cell Extension(完賽) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/List/Body/MatchListBodyCell+FinishGame.swift |
| Cell Extension(賠率) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/List/Body/MatchListBodyCell+Odd.swift |
| Cell Extension(隊伍資訊) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/List/Body/MatchListBodyCell+TeamInfo.swift |
| Cell Extension(UP) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/List/Body/MatchListBodyCell+UP.swift |
| View(籃球列表) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/List/Body/View/MatchListBasketBallView.swift |
| View(電競底部) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/List/Body/View/MatchListBottomESportsView.swift |
| View(賽事底部) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Cell/List/Body/View/MatchListBottomEventView.swift |
| View(冠軍盤口 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Champion/ChampionBetListSectionHeaderView.swift |
| View(冠軍盤口固定 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Champion/FixedChampionBetListSectionHeader.swift |
| ViewController(下拉選單) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/DropView/DropDownMenuViewController.swift |
| Manager(玩法類型) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/DropView/STSportPlayTypeManager.swift |
| View(無網路佔位) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/NetWorkView/NoNetworkPlaceholderView.swift |
| View(列表 Footer 刷新) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/RefreshView/EventListFooterRefresh.swift |
| View(列表 Header 刷新) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/RefreshView/EventListHeaderRefreshView.swift |
| View(得分-美式足球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/SectionView/MatchSectionScoreView+AmericanFootball.swift |
| View(得分-羽毛球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/SectionView/MatchSectionScoreView+Badmintion.swift |
| View(得分-籃球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/SectionView/MatchSectionScoreView+BasketBall.swift |
| View(得分-電競籃球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/SectionView/MatchSectionScoreView+EBasketball.swift |
| View(得分-電競) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/SectionView/MatchSectionScoreView+ESports.swift |
| View(得分-冰球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/SectionView/MatchSectionScoreView+IceHockey.swift |
| View(得分-乒乓球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/SectionView/MatchSectionScoreView+TableTennis.swift |
| View(得分-網球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/SectionView/MatchSectionScoreView+Tennis.swift |
| View(得分-排球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/SectionView/MatchSectionScoreView+VolleyBall.swift |
| View(日曆覆蓋層) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/TitleView/CalendarCoverView.swift |
| View(首頁標題樣式) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/TitleView/HomePageTitleStyle.swift |
| View(首頁標題) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/TitleView/HomePageTitleView.swift |
| View(玩法按鈕) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/TitleView/PlayMethodButton.swift |
| View(玩法切換) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/TitleView/PlayMethodSwitch.swift |
| View(時間/聯賽排序) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/TitleView/SortByTimeOrLeagueComponent.swift |
| Cell(球類圖示) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/TitleView/SportIconScrollBarCell.swift |
| Cell(時間軸) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/TitleView/SportTimeScrollBarCell.swift |
| View(主播語言提示) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/Base/V/Video/AnchorLanguageTipView.swift |
| CellConfig(完賽賽程) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Adapter/CellConfiguration/Fixture/FinishedFixtureEventListCellConfiguration.swift |
| CellConfig(賽程) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Adapter/CellConfiguration/Fixture/FixtureEventListCellConfiguration.swift |
| CellConfig(可折疊) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Adapter/CellConfiguration/FoldableSportEventListCellConfiguration.swift |
| CellConfig(冠軍) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Adapter/CellConfiguration/Outright/OutrightEventListCellConfiguration.swift |
| CellConfig(基底) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Adapter/CellConfiguration/SportEventListCellConfiguration.swift |
| Delegator(賽程) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Adapter/Delegator/FixtureEventListDelegator.swift |
| Delegator(冠軍) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Adapter/Delegator/OutrightEventListDelegator.swift |
| Delegator(基底) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Adapter/Delegator/SportEventListDelegator.swift |
| Adapter(玩法處理) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Adapter/PlayMethod/SportEventPlayMethodHandler.swift |
| Adapter(列表主) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Adapter/SportEventListAdapter.swift |
| Repository(收藏 Protocol) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Repository/Favorite/SportFavoriteRepository.swift |
| Repository(UP 收藏) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Repository/Favorite/UPSportFavoriteRepository.swift |
| Service(BB 滾球排名) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/BB/InPlayRankMatchService.swift |
| Service(DB 收藏) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/DB/DBSportFavoriteMatchService.swift |
| Service(DB 賽果) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/DB/DBSportMatchResultService.swift |
| Service(FB 冠軍) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/FB/FBSportChampionMatchService.swift |
| Service(FB 賽果) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/FB/FBSportMatchResultService.swift |
| Service(FB 串關賠率) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/FB/FBSportSeriesOddsService.swift |
| Service(輪詢基底) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/PollingSportMatchService.swift |
| Model(賽事請求參數) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/SportMatchRequestParameter.swift |
| Model(賽事回應) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/SportMatchResponse.swift |
| Service(賽事 Protocol) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Match/SportMatchService.swift |
| Service(DB 選單) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Menu/DB/DBSportMenusService.swift |
| Service(DB 選單s) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Menu/DB/DBSportMenusServices.swift |
| Service(FB 選單) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Menu/FB/FBSportMenusService.swift |
| Service(FB 選單s) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Menu/FB/FBSportMenusServices.swift |
| Service(收藏選單) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Menu/SportFavoriteMenusService.swift |
| Service(選單 Protocol) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Menu/SportMenusService.swift |
| Service(UP 選單) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Menu/UP/UPSportMenusService.swift |
| Service(UP 選單s) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/Service/Menu/UP/UPSportMenusServices.swift |
| UseCase(日曆格式 DB) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/UseCase/Calendar/Formatter/DB/DBSportCalendarFormatter.swift |
| UseCase(日曆格式 FB) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/UseCase/Calendar/Formatter/FB/FBSportCalendarFormatter.swift |
| UseCase(日曆格式 Protocol) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/UseCase/Calendar/Formatter/SportCalendarFormatter.swift |
| UseCase(日曆格式 UP) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/UseCase/Calendar/Formatter/UP/UPSportCalendarFormatter.swift |
| UseCase(完賽篩選建構器) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/UseCase/FinishMatch/SportFinishMatchFilterControllerBuilder.swift |
| UseCase(折疊) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/UseCase/Fold/SportMatchFoldUseCase.swift |
| UseCase(熱門聯賽 Protocol) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/UseCase/HotLeague/HotLeagueUseCase.swift |
| UseCase(熱門聯賽實作) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/UseCase/HotLeague/SportHotLeagueUseCase.swift |
| UseCase(聯賽首字母) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventList/SportSegmented/UseCase/LeagueFilter/SportLeagueFirstLetterUseCase.swift |
| ViewController(體育首頁) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/HomePage/SportHomeViewController.swift |
| Adapter(Banner) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/HomePage/Adapter/SportBannerAdapter.swift |
| Adapter(投注購物車) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/HomePage/Adapter/SportBetCartAdapter.swift |
| Adapter(浮球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/HomePage/Adapter/SportFloatingBallViewAdapter.swift |
| Adapter(維護) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/HomePage/Adapter/SportMaintenanceAdapter.swift |
| Adapter(導航列) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/HomePage/Adapter/SportNavViewAdapter.swift |
| Adapter(分段控制) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/HomePage/Adapter/SportSegmentAdapter.swift |
| Adapter(滑動) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/HomePage/Adapter/SportSlideAdapter.swift |
| Extension(GameType+SportPage) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/HomePage/Shared/GameType+SportPage.swift |
| View(滑動視圖) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/HomePage/Shared/SlideView/SlideView.swift |
| Protocol(滑動 DataSource) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/HomePage/Shared/SlideView/SlideViewDataSource.swift |
| Protocol(滑動 Delegate) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/HomePage/Shared/SlideView/SlideViewDelegate.swift |
| View(滾動包裝) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/HomePage/Shared/SportScrollWrapper/SportScrollWrapper.swift |
| Model(首頁聊天) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/Model/BBHomeChatModel.swift |
| Model(首頁 Banner) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/Model/SportHomeBannerModel.swift |
| Service(Banner) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/SportHomeBannerService.swift |
| View(公告) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/AnnouncementView.swift |
| View(複合視圖) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/BBComplexView.swift |
| Cell(自訂 Banner) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/BBCustomBannerCell.swift |
| View(賽事資訊) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/BBMatchInfoView.swift |
| View(首頁導航) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/HomeNavView.swift |
| View(Banner 輪播) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/IFBannerView.swift |
| View(FSPageViewLayout) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/Sources/FSPageViewLayout.swift |
| View(FSPageViewTransformer) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/Sources/FSPageViewTransformer.swift |
| View(FSPagerCollectionView) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/Sources/FSPagerCollectionView.swift |
| View(FSPagerView) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/Sources/FSPagerView.swift |
| Cell(FSPagerViewCell) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/Sources/FSPagerViewCell.swift |
| Model(FSPagerViewLayoutAttributes) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/Sources/FSPagerViewLayoutAttributes.swift |
| ObjC Header(FSPagerView) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/Sources/FSPagerViewObjcCompat.h |
| ObjC Impl(FSPagerView) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/Sources/FSPagerViewObjcCompat.m |
| View(分段控制) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/SportHomeSegmentedControl/SportHomeSegmentedControl.swift |
| ViewModel(分段控制) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Banner/V/SportHomeSegmentedControl/SportHomeSegmentedControlViewModel.swift |
| Model(聯賽選擇 VO) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/General/Models/LeagueChooseVO.swift |
| ViewModel(聯賽比較) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/General/ViewModels/CompsLeagueViewModel.swift |
| ViewController Extension(聯賽篩選 Action) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/STLeagueFiltering/C/STLeagueChooseViewController+Action.swift |
| ViewController Extension(聯賽篩選 Data) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/STLeagueFiltering/C/STLeagueChooseViewController+Data.swift |
| ViewController(聯賽篩選) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/STLeagueFiltering/C/STLeagueChooseViewController.swift |
| ViewController(聯賽過濾) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/STLeagueFiltering/C/STLeagueFilteringController.swift |
| Model(聯賽篩選) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/STLeagueFiltering/Models/STLeagueFilterModel.swift |
| Model Extension(聯賽 VM) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/STLeagueFiltering/Models/STLeagueModel+VM.swift |
| View(聯賽選擇底部) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/STLeagueFiltering/V/STLeagueChooseBottomView.swift |
| Cell(聯賽選擇) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/STLeagueFiltering/V/STLeagueChooseCell.swift |
| View(聯賽選擇列表) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/STLeagueFiltering/V/STLeagueChooseListView.swift |
| Model(聯賽選擇快取) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/SearchAndLeagueFiltering/M/LeagueChooseCache.swift |
| View(自訂搜尋列) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/SearchAndLeagueFiltering/V/CustomBar.swift |
| View(聯賽選擇 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/SearchAndLeagueFiltering/V/LeagueChooseHeadView.swift |
| View(聯賽索引) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/SearchAndLeagueFiltering/V/LeagueSectionIndexView.swift |
| Cell(新聯賽選擇) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/SearchAndLeagueFiltering/V/NewLeagueChooseCell.swift |
| View(搜尋聯賽內容) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/SearchAndLeagueFiltering/V/SearchLeagueContentView.swift |
| View(搜尋聯賽標題樣式) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/SearchAndLeagueFiltering/V/SearchLeagueTitleStyle.swift |
| View(搜尋聯賽標題) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/LeagueScreening_Search/Features/SearchAndLeagueFiltering/V/SearchLeagueTitleView.swift |
| Service(選單資料邏輯) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/GetMenu/MenuDataLogic.swift |
| Service(平台服務) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/GetMenu/PlatformService.swift |
| Model(投注項) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Model/BetItemModel.swift |
| Enum(投注結果類型) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Model/Enum/BetResultType.swift |
| Enum(賠率變動狀態) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Model/Enum/OddChangeStatus.swift |
| Handler(賠率變動) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Model/OddChangeHandler.swift |
| Protocol(聯賽 Model) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Model/Protocol/ILeagueModel.swift |
| Protocol(體育 Model) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Model/Protocol/ISportModel.swift |
| Protocol(轉換) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Model/Protocol/ITransformable.swift |
| View(浮球輪播) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/View/AssistiveTouch/AssistiveCarouselView/AssistiveCarouselView.swift |
| View(單一浮球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/View/AssistiveTouch/AssistiveCarouselView/AssistiveTouchForOne.swift |
| View(輪播視圖) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/View/AssistiveTouch/AssistiveCarouselView/CarouselView.swift |
| View(堆疊浮球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/View/AssistiveTouch/AssistiveTouchForStack.swift |
| Model(浮球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/View/AssistiveTouch/AssistiveTouchModel.swift |
| ViewModel(浮球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/View/AssistiveTouch/AssistiveTouchViewModel.swift |
| View(金額標籤) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/View/BBMonyLabel.swift |
| API(FB 統計) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/Sport/FBSportAPI+StatisticalRequest.swift |
| API(FB 賽事列表) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/FBSportAPI+MatchListRequest.swift |
| API(FB 在售聯賽) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/FBSportAPI+OnSaleLeaguesRequest.swift |
| API(FB 公告列表) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/FBSportAPI+BulletinListPageRequest.swift |
| API(FB 語言) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/FBSportAPI+FetchLanguageRequest.swift |
| API(FB 基底) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/FBSportAPI.swift |
| API(FB Domain 檢測) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/Domain/FBSportAPI+DomainCheckRequest.swift |
| API(FB 最快域名) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/Repository/FBSportFastestDomainRepository.swift |
| API(FB Request 基底) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/FBSportAPIRequest/FBSportAPIRequest.swift |
| API(FB Auth Adapter) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/FBSportAPIRequest/Adapter/FBSportRequestAuthorizationAdapter.swift |
| API(FB Error Decision) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/FBSportAPIRequest/Decision/FBSportErrorDecision.swift |
| API(FB JSON Decision) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/FBSportAPIRequest/Decision/FBSportParseJSONStringDecision.swift |
| API(FB Result Decision) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/FBSportAPIRequest/Decision/FBSportParseResultDecision.swift |
| API(UP 統計) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/Sport/UPSportAPI+StatisticalRequest.swift |
| API(UP 賽事列表) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/UPSportAPI+MatchListRequest.swift |
| API(UP 在售聯賽) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/UPSportAPI+OnSaleLeaguesRequest.swift |
| API(UP 公告列表) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/UPSportAPI+BulletinListPageRequest.swift |
| API(UP 語言) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/UPSportAPI+FetchLanguageRequest.swift |
| API(UP 基底) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/UPSportAPI.swift |
| API(UP Domain 檢測) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/Domain/UPSportAPI+DomainCheckRequest.swift |
| API(UP 最快域名) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/Repository/UPSportFastestDomainRepository.swift |
| API(UP Request 基底) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/UPSportAPIRequest/UPSportAPIRequest.swift |
| API(UP Auth Adapter) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/UPSportAPIRequest/Adapter/UPSportRequestAuthorizationAdapter.swift |
| API(UP Error Decision) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/UPSportAPIRequest/Decision/UPSportErrorDecision.swift |
| API(UP JSON Decision) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/UPSportAPIRequest/Decision/UPSportParseJSONStringDecision.swift |
| API(UP Result Decision) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/UPSportAPIRequest/Decision/UPSportParseResultDecision.swift |
| API(DB 基底) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/DBSportAPI.swift |
| API(DB Host) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/DBSportAPI+Host.swift |
| API(DB 分類列表) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/Sport/DBSportAPI+CategoryListRequest.swift |
| API(DB 冠軍聯賽列表) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/Sport/DBSportAPI+ChampionLeagueListRequest.swift |
| API(DB 冠軍賽果) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/Sport/DBSportAPI+ChampionMatchResultRequest.swift |
| API(DB 賽事資訊) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/Sport/DBSportAPI+DBEventInfoRequest.swift |
| API(DB 賽事詳情) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/Sport/DBSportAPI+EventDetailRequest.swift |
| API(DB 收藏賽事) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/Sport/DBSportAPI+FavoriteEventsRequest.swift |
| API(DB 聯賽數量) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/Sport/DBSportAPI+LeagueCountRequest.swift |
| API(DB 盤口賠率) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/Sport/DBSportAPI+MatchOddsInfoRequest.swift |
| API(DB 賽果) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/Sport/DBSportAPI+MatcheResultRequest.swift |
| API(DB 體育選單) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/Sport/DBSportAPI+SportMenuRequest.swift |
| API(DB 公告列表) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/Notice/DBSportAPI+BulletinListPageRequest.swift |
| API(DB 使用者資訊) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/User/DBSportAPI+UserInfoRequest.swift |
| API(DB Request 基底) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/DBSportAPIRequest/DBSportAPIRequest.swift |
| API(DB 語言 Adapter) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/DBSportAPIRequest/Adapter/DBSportLangueAdapter.swift |
| API(DB RequestID Adapter) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/DBSportAPIRequest/Adapter/DBSportRequestIDAdapter.swift |
| API(DB Decode Decision) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/DBSportAPIRequest/Decision/DBSportDecodeDecision.swift |
| API(DB Error Decision) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/DBSportAPIRequest/Decision/DBSportErrorDecision.swift |
| API(DB JSON Decision) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/DBSportAPIRequest/Decision/DBSportParseJSONStringDecision.swift |
| API(DB Result Decision) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/DBSportAPIRequest/Decision/DBSportParseResultDecision.swift |
| Enum(共用球類類型) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Common/CommonSportType.swift |
| Config(體育常數) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Common/SportComponentConst.swift |
| Config(OB 體育設定) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Common/SportConfiguration/OBSportsConfig.swift |
| Config(ST 體育設定) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Common/SportConfiguration/STSportsConfig.swift |
| Config(體育設定 Protocol) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Common/SportConfiguration/SportConfig.swift |
| Utility(WeakDelegate) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/Common/WeakDelegate.swift |
| API(首頁 Banner) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/Sport/HomeBanner/STAPI+HomeBannerRequest.swift |
| API(方案列表) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/Sport/STAPI+AllPlanListsRequest.swift |
| API(滾球排名) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/Sport/STAPI+InPlayMatchRank.swift |
| API(賽事是否有陣容) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/Sport/STAPI+IsMatchHasSquadRequest.swift |
| API(聯賽權重) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/Sport/STAPI+LeagueWeightsRequest.swift |
| API(球類選單順序) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/Sport/STAPI+MenuSequenceRequest.swift |
| API(方案購買數) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/Sport/STAPI+PlanBuyCountRequest.swift |
| API(方案列表查詢) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/Sport/STAPI+PlanListRequest.swift |
API
| 功能說明 | Namespace | Endpoint | Method | 主要參數 |
|---|---|---|---|---|
| 賽事列表(滾球/今日/早盤) | FBSportAPI | v1/match/getList | POST json | sportId, currentPage, leagueIds, beginTime, endTime |
| 賽事列表(滾球/今日/早盤) | UPSportAPI | v1/match/getList | POST json | sportId, currentPage, leagueIds, beginTime, endTime |
| 賽事列表(DB 滾球/今日/早盤) | DBSportAPI | api/forehead/gamebetob/getEventInfo | POST urlForm | sportIds, sort, market(1=滾球/2=即將/3=今日/4=早盤), pageNumber, pageSize, competitionIds, language |
| 冠軍聯賽列表 | DBSportAPI | yewu11/v1/m/matchesPB | POST json | euid(menuId), cuid(userId), type=100, sort |
| 收藏賽事 | DBSportAPI | yewu11/v1/m/getMatchBaseInfoByMidsPB | POST json | mids(賽事 ID 陣列) |
| 聯賽數量 | DBSportAPI | api/forehead/gamebetob/getLeagueCount | POST urlForm | sportId, type, eventBeginTime, eventEndTime, language |
| 熱門球類排行 | STAPI | api/forehead/data/betting/inPlayMatchRank | POST urlForm | isInPlay=true, sportIds, marketTypes |
| 球類選單順序 | STAPI | api/forehead/gamebet/config/gameHomeTabSort | POST json | 無 |
| 全局熱搜 | STAPI | api/forehead/data/user/global/search/hotLeague | POST urlForm | 無 |
資料模型
STLeagueModel(聯賽)
| 欄位 | 類型 | 說明 |
|---|---|---|
id | Int | 聯賽 ID |
na | String | 聯賽名稱 |
lurl | String | 聯賽 Logo URL |
sportId | Int | 球類 ID |
events | [STEventModel] | 賽事列表 |
STEventModel(賽事)
| 欄位 | 類型 | 說明 |
|---|---|---|
id | Int | 賽事 ID |
sid | Int | 球類 ID |
lg | STLeagueModel | 聯賽資料 |
ts | [STLeagueModel] | 球隊陣列(ts[0]=主隊、ts[1]=客隊,取 .na 為隊名) |
mg | [STMarketGroupModel] | 盤口(賠率)集合 |
mgs | [STMarketGroupModel] | 賽果 API 盤口 |
nmg | [STMarketGroupModel] | 列表過濾後的盤口 |
tms | Int | 盤口統計數量 |
sg | [STEventResultModel] | 比分資訊(含時段 pe、事件 tyg、分數 sc) |
nsg | [STEventResultModel] | 比分資訊(備用) |
result | EventScoreboardModel | 比分看板 |
mc | STTimeModel | 比賽時鐘(s=秒數、pe=時段 ID、r=是否跑表) |
bt | Double | 開賽時間(時間戳) |
beginTime | String | 開賽時間(字串) |
nm | String | 冠軍賽事名稱 |
ms | MatchStatus | 賽事狀態(0=已結束、1=推遲、2=中斷、3=取消、4=未開賽、5=進行中) |
fid | Int | 賽制 |
ne | Int | 中立場(1=中立場、0=非中立場) |
vs | VsParameterModel? | 動畫/直播串流資訊(flvSD、m3u8SD、web、have) |
ssi | Int | 發球方 |
isInplay | Bool | 是否滾球(由 ms 推導:live 或 interrupted) |
isFinish | Bool | 賽事是否結束(由 ms 推導:ended 或 cancelled) |
pt | STPlayType | 賽事類型(1=今日、2=早盤、4=滾球) |
lsdata | FootBallTechnicModel? | 雷速數據(足球技術統計) |
OBEventModel(DB 體育賽事)
| 欄位 | 說明 |
|---|---|
mid | 賽事 ID |
mhn / man | 主隊/客隊名稱 |
csid / csna | 球類 ID/名稱 |
tid / tn | 聯賽 ID/名稱 |
mcg | 欄目類型(1=滾球, 2=即將, 3=今日, 4=早盤) |
hps | 玩法集合([OBOddInfoModel]) |
msc | 比分集合(格式:S1|1:0) |
mhs | 盤口狀態(0=開, 1=封, 2=關, 11=鎖) |
實作重點
UseCase 依賴注入:
SportSegmentedViewModel透過建構子注入各 UseCase,不同平台/玩法對應不同組合,ViewModel 本身不判斷平台輪詢機制:滾球每 5 秒、今日每 30 秒、早盤每 60 秒,透過
STStartPolling啟動;切換球類或賽事類型時停止舊輪詢、啟動新輪詢Fold 展開/收合:
STDataManager.dealFold()處理賽事列表展開狀態,保持重新請求後 UI 收合狀態一致熱門聯賽過濾:FB InPlay 足球/籃球有熱門聯賽標記(
SportHotLeagueUseCase),影響列表排序與 Header 展示聯賽篩選:
SportMatchLeagueFilterUseCase管理已選篩選聯賽 ID 列表,適用 InPlay/Today/Early日期篩選(Early):
SportCalendarUseCase+SportCalendarFormatter(各平台格式不同),傳給 API 的 beginTime/endTime 格式需依平台轉換多平台 Cell 差異:
MatchListBodyCell+FB.swift、MatchListBodyCell+DB.swift、MatchListBodyCell+UP.swift各自處理不同平台的賠率格式與 UI 差異已知限制:DB 冠軍賽(Champion)不支援串關,且 DB/UP 的早盤預約投注功能與 FB 不同
API 呼叫流程
進入體育 Tab
SportHomeViewController.viewWillAppear
├─ [並行] 載入選單 (Sport Menu)
│ ├─ FB: POST v1/match/statistical {languageType:"CMN"}
│ │ → 回傳各球種的滾球/今日/早盤數量
│ ├─ DB: POST api/forehead/gamebetob/getObSportMenu {language:"chs"}
│ │ → menuId: 200=滾球, 202=今日, 203=早盤
│ └─ UP: POST v1/match/statistical (同 FB 結構)
│
└─ [接續] 載入賽事列表 (Event List)
├─ FB/UP: POST v1/match/getList
│ {sportId:"1", type:1, languageType:"CMN", current:1, orderBy:0}
│ type: 1=滾球, 3=今日, 4=早盤
│
└─ DB: POST api/forehead/gamebetob/getEventInfo
{sportIds:"1", market:1, pageNumber:1, pageSize:50, sort:1}
market: 1=滾球, 3=今日, 4=早盤切換球種 / 時間篩選
用戶點擊球種或滾球/今日/早盤
└─ SportSegmentedViewModel.fetchSportMatches(at:)
├─ 重置 currentPage = 1
└─ matchUseCase.requestMatch(force: true)
└─ [API] 同上 MatchListRequest / DBEventInfoRequest
└─ 更新 eventListAdapter.datasource → tableView.reloadData聯賽篩選
用戶點擊「選擇聯賽」
├─ [API] FB/UP: POST v1/match/getOnSaleLeagues
│ {languageType:"CMN", sportId:1, type:1}
│
└─ [API] DB: 從 getEventInfo 回應中取得聯賽
選擇聯賽後 → 帶入 leagueIds 參數重新請求列表下拉刷新 / 上拉載入更多
下拉刷新 → currentPage = 1 → 重新請求
上拉載入 → currentPage += 1 → 追加資料
└─ isLastPage → endRefreshingWithNoMoreData()