Appearance
賽事詳情
最後更新:2026-04-09
功能說明
賽事詳情頁是體育模組的核心頁面,讓使用者查看單一賽事的完整資訊,包含即時比分、所有盤口賠率、比賽統計數據、直播影片/動畫、聊天互動、賽事方案等功能。
使用者流程
- 從賽事列表點擊任意賽事 → 進入
STEventDetailViewController - 頂部 Header 顯示:隊名、即時比分、賽事時間、比賽階段
- 影片/動畫區域(依是否有直播/動畫)
- Tab 切換:
- 投注:顯示所有盤口賠率
- 統計:足球/籃球數據統計
- 聊天:賽事聊天室(主播消息/表情/禮物)
- 方案:付費專家方案
- 點擊賠率 → 加入投注,彈出投注面板
- 長按賠率 → 顯示更多玩法或賠率說明
頁面跳轉
- 賽事列表點擊賽事 →
STEventDetailViewController - 點擊賠率 →
BetViewController(投注面板,底部 Modal) - 點擊方案 Tab →
EventDetailPlanWebViewController(H5 方案列表) - 方案付費確認 →
EventDetailPayPlanViewController
技術視角(開發看這裡)
相關檔案
主頁面
| 類型 | 檔案路徑 |
|---|---|
| ViewController(主) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/EventDetail/STEventDetailViewController.swift |
| VC Extension(Action) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/EventDetail/STEventDetailViewController+Action.swift |
| VC Extension(TableView) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/EventDetail/STEventDetailViewController+TableView.swift |
| VC Extension(BallView) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/EventDetail/STEventDetailViewController+BallView.swift |
| VC Extension(Gesture) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/EventDetail/STEventDetailViewController+Gesture.swift |
| VC Extension(League) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/EventDetail/STEventDetailViewController+League.swift |
| VC Extension(MoreLive) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/EventDetail/STEventDetailViewController+MoreLive.swift |
| ViewModel(主) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/EventDetail/VM/STEventDetailViewModel.swift |
| ViewModel(RxSwift) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/EventDetail/VM/STEventDetailViewModel+RxSwift.swift |
盤口 BetList
| 類型 | 檔案路徑 |
|---|---|
| ViewModel(盤口列表) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/VM/BetList/BetListViewModel.swift |
| Protocol(盤口資料源) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/VM/BetList/DataSource/BetGroupDataSource.swift |
| DataSource(一般賽事) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/VM/BetList/DataSource/General/EventBetGroupDataSource.swift |
| DataSource(包賠投注) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/VM/BetList/DataSource/RiskFree/RiskFreeBetGroupDataSource.swift |
| UseCase(包賠邏輯) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/VM/BetList/DataSource/RiskFree/RiskFreeBetUseCase.swift |
| Cell(1 欄賠率) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Cell/OneColumnDetailCell.swift |
| Cell(2 欄賠率) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Cell/TwoColumnDetailCell.swift |
| Cell(3 欄賠率) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Cell/ThreeColumnDetailCell.swift |
直播 / 影片 / 動畫
| 類型 | 檔案路徑 |
|---|---|
| BaseView | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/VideoAndStream/BaseVideoView.swift |
| BaseViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/VideoAndStream/BaseVideoViewModel.swift |
| 直播 View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/VideoAndStream/Stream/EventDetailLiveView.swift |
| 直播更多主播(橫屏內嵌) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/VideoAndStream/Stream/More/MoreLiveView.swift |
| 主播資訊 VC | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/VideoAndStream/Stream/More/HostInfoViewController.swift |
| 影片 View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/VideoAndStream/Video/EventDetailVideoView.swift |
| 影片 Model | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/VideoAndStream/Video/M/EventDetailVideoModel.swift |
| 影片線路下拉選單 | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/VideoAndStream/Video/DropdownList/EventDetailLiveDropDownView.swift |
| 動畫 View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/VideoAndStream/Animation/EventDetailAnimationView.swift |
| 即時數據覆蓋層 | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/VideoAndStream/RealTimeData/EventDetailRealTimeDataView.swift |
| 全螢幕賽事資訊 | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/VideoAndStream/RealTimeData/FullScreenEventInfoView.swift |
| AirPlay 提示 | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/VideoAndStream/AirPlay/AirPlayAlertView.swift |
| AirPlay 浮窗 | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/VideoAndStream/AirPlay/AirPlayFloatingView.swift |
| 直播資訊 Model | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/VideoAndStream/Models/LiveInfoModel.swift |
| 直播訊息 Model | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/VideoAndStream/Models/LiveInfoMessageModel.swift |
更多主播(豎屏 MoreStreamer)
| 類型 | 檔案路徑 |
|---|---|
| Model | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/M/EventDetailMoreLiveModel.swift |
| 主 View(豎屏) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/NewNormalMoreLiveView.swift |
| 主 View(全螢幕) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/NewFullScreenMoreLiveView.swift |
| Data View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/NewMoreLiveDataView.swift |
| Header View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/NewMoreLiveHeaderView.swift |
| Component | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/NewMoreLiveComponent.swift |
| Cell Plugin | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/NewMoreLiveCellPlugin.swift |
| 當前主播 Cell | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/NewMoreLiveCurrentCell.swift |
| 當前主播 SubCell | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/NewMoreLiveCurrentSubCell.swift |
| 更多主播 Cell | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/NewMoreLiveMoreCell.swift |
| 更多主播按鈕 | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/NewMoreLiveButton.swift |
| 舊版 View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/EventDetailMoreLiveView.swift |
| 舊版 Cell | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/EventDetailMoreLiveCell.swift |
| 舊版 SubCell | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/EventDetailMoreLiveSubCell.swift |
| 舊版 Header | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/MoreLiveHeaderView.swift |
| 正在直播圖層 | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/MoreLivingLayerView.swift |
| Collection SubView | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/MoreStreamer/V/MoreLiveCollectionSubView.swift |
統計模組
| 類型 | 檔案路徑 |
|---|---|
| SegmentedViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/StatisticsSegmentedViewModel.swift |
| SegmentedView | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/StatisticsSegmentedView.swift |
| Protocol - Provider | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Protocol/StatisticsProvider.swift |
| Protocol - ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Protocol/StatisticsViewModel.swift |
| Protocol - View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Protocol/StatisticsView.swift |
| SegmentedControl(共用) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/StatisticsSegmentedControl.swift |
| 指數 Provider | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Exponent/ExponentStatisticsProvider.swift |
| 指數 ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Exponent/ExponentViewModel.swift |
| 指數 View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Exponent/ExponentView.swift |
| 情報 View(共用) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Intelligence/IntelligenceView.swift |
| 分析 VS View(共用) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Analyze/AnalyzeContentBaseView.swift |
| 分析 VS View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Analyze/AnalyzeVSView.swift |
| 分析歷史 View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Analyze/AnalyzeHistoryView.swift |
| 分析賽事 Cell | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Analyze/AnalyzeEventCell.swift |
| 籃球陣容 Model(共用) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Model/BasketballLineUpModel.swift |
足球統計
| 類型 | 檔案路徑 |
|---|---|
| Providers 定義 | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Football/FootballStatisticsProviders.swift |
| 文字直播 ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Football/TextStream/FootballTextStreamViewModel.swift |
| 文字直播 View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Football/TextStream/FootballTextStreamView.swift |
| 陣容 ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Football/Squad/FootballSquadViewModel.swift |
| 陣容 View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Football/Squad/FootballSquadView.swift |
| 技術統計 ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Football/Technic/FootballTechnicViewModel.swift |
| 分析 ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Football/Analyze/FootballAnalyzeViewModel.swift |
| 分析 View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Football/Analyze/FootballAnalyzeView.swift |
| 情報 ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Football/Intelligence/FootballIntelligenceViewModel.swift |
籃球統計
| 類型 | 檔案路徑 |
|---|---|
| Providers 定義 | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/BasketballStatisticsProviders.swift |
| 文字直播 ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/TextStream/BasketballTextStreamViewModel.swift |
| 文字直播 View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/TextStream/BasketballTextStreamView.swift |
| 技術統計 ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/Technic/BasketballTechnicViewModel.swift |
| 陣容 View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/Squad/BasketballSquadView.swift |
| 陣容 Cell | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/Squad/BasketballSquadTableViewCell.swift |
| 分析 ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/Analyze/BasketballAnalyzeViewModel.swift |
| 分析 View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/Analyze/BasketballAnalyzeView.swift |
| 球員技術統計 View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/Analyze/SubView/BasketballPlayerTechniqueStatisticsView.swift |
| 球員技術統計 ItemView | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/Analyze/SubView/BasketballPlayerTechniqueStatisticsItemView.swift |
| 未來賽事 View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/Analyze/SubView/FutureMatchView.swift |
| 即時籃球 Header | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/TextStream/SubView/RealTimeBasketballHeaderView.swift |
| 技術統計 View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/TextStream/SubView/SportTechniqueStatisticsView.swift |
| 技術統計 ItemView | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/TextStream/SubView/SportTechniqueStatisticsItemView.swift |
| 情報 ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/Intelligence/BasketballIntelligenceViewModel.swift |
其他球類統計
| 類型 | 檔案路徑 |
|---|---|
| Provider | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/OtherSport/OtherSportStatisticsProvider.swift |
| ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/OtherSport/OtherSportStatisticsViewModel.swift |
| View | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/OtherSport/OtherSportStatisticsView.swift |
其他子模組
| 類型 | 檔案路徑 |
|---|---|
| VC(方案 Web) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/EventDetailPlan/EventDetailPlanWebViewController.swift |
| VC(競猜) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatVote/ChatVoteViewController.swift |
| 熱門滾球排名 | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/VM/HotInPlayRank/(目錄) |
| 推送賽事詳情 Service | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Service/PushMatchDetailService.swift |
| 常數定義 | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Adapter/DetailConstants.swift |
| 工具 / Helper | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Adapter/DetailHelper.swift |
| Timer 工具 | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Adapter/TimerBox.swift |
| Modal 擴展 | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Adapter/UIViewController+Modal.swift |
| ViewModel(熱門滾球排名) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/VM/HotInPlayRank/STHotInPlayRankViewModel.swift |
| View(活動中獎列表) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ActivityWinResult/ActivityWinListView.swift |
| View(活動中獎結果) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ActivityWinResult/ActivityWinResultView.swift |
| Cell(盤口基底) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Cell/EventDetailBaseCell.swift |
| View(盤口分組) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Cell/EventDetailGroupView.swift |
| View(聊天審核) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Approval/ChatApprovalView.swift |
| Model(聊天審核) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Approval/Model/ChatApprovalModel.swift |
| View(注單分享狀態) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Cell/ChatOrderShareStatusView.swift |
| View(客服) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatCustomService/EventDetailCustomServiceView.swift |
| View(聊天活動入口) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatEventView/ChatEventEntryView.swift |
| View(聊天活動圖片彈窗) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatEventView/ChatEventImagePopupView.swift |
| Cell(聊天活動列表) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatEventView/ChatEventListTableViewCell.swift |
| View(聊天活動列表) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatEventView/ChatEventListView.swift |
| Adapter(聊天活動) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatEventView/EventDetailEventAdapter.swift |
| View(聊天活動列表詳情) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatEventView/EventDetailEventListView.swift |
| View(聊天活動單一事件) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatEventView/EventDetailSingleEventView.swift |
| View(禁用高亮按鈕) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatEventView/HighlightDisableButton.swift |
| Model(競猜) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatVote/Model/ChatVoteModel.swift |
| View(競猜倒數) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatVote/View/ChatVoteCountdownLabel.swift |
| View(競猜倒數視圖) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatVote/View/ChatVoteCountdownView.swift |
| View(競猜選項) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatVote/View/ChatVoteOptionView.swift |
| View(競猜球類項目) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatVote/View/STChatVoteBallItemView.swift |
| ViewModel(競猜) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/ChatVote/ViewModel/ChatVoteViewModel.swift |
| Layout(分頁 Collection) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/CollectionLayout/PageCollectionViewFlowLayout.swift |
| View(聊天入口) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Entrance/ChatEntranceView.swift |
| Model(聊天入口) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Entrance/Model/ChatEntranceModel.swift |
| View(聊天回饋) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/FeedBack/EventDetailChatFeedback.swift |
| View(禮物頻道動畫) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Gift/Animation/GiftChannelView.swift |
| View(禮物容器) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Gift/Animation/GiftContainerView.swift |
| View(禮物數字標籤) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Gift/Animation/GiftDigitLabel.swift |
| View(禮物全螢幕) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Gift/Animation/GiftFullScreenView.swift |
| View(聊天 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Header/EventDetailChatHeaderView.swift |
| View(聊天直播) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Header/EventDetailChatLiveView.swift |
| View(直播 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Header/EventLiveHeaderView.swift |
| Cell(自訂表情) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Keyboards/Cell/CustomEmojiCell.swift |
| Cell(表情列表) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Keyboards/Cell/EmojiListCellCollectionViewCell.swift |
| View(選單輸入框) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Keyboards/MenuTextField.swift |
| Model(投票資訊) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Manager/Model/VoteInfo.swift |
| Model(聊天訊息) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Models/ChatMessageModel.swift |
| Model(表情) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Models/EmojiModel.swift |
| Model(禮物) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Models/GiftModel.swift |
| Model(禮物排名) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Models/GiftRankTopModel.swift |
| Model(紅包資訊) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Models/RedInfoModel.swift |
| View(注單分享 Tab) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/OrderShare/EventDetailOrderShareTabView.swift |
| Cell(注單分享) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/OrderShare/EventDetailOrderShareTableViewCell.swift |
| View(注單分享按鈕) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/OrderShare/EventDetailOrderShareTitleButton.swift |
| View(注單分享) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/OrderShare/EventDetailOrderShareView.swift |
| Model(注單分享描述) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/OrderShare/Model/EventDetailOrderShareDescModel.swift |
| Model(大單分享) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/OrderShare/Model/LargeOrderShareModel.swift |
| Helper(注單分享) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/OrderShare/OrderShareHelper.swift |
| View(紅包) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/RedPacket/EventRedPacketView.swift |
| View(紅包球類項目) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/RedPacket/RedPacketBallItemView.swift |
| View(聊天回覆提示) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/Reply/EventDetailChatViewReplyTipView.swift |
| View(主播推單) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/StreamerPush/LivePushOrderView.swift |
| View(小轉盤) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/TurnTable/SmallTurnTableView.swift |
| View(轉盤倒數) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/TurnTable/TurnTableCountdownView.swift |
| View(轉盤遊戲) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/TurnTable/TurnTableGameView.swift |
| VC Extension(轉盤 Socket) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/TurnTable/TurnTableGameViewController+SocketMessage.swift |
| ViewController(轉盤遊戲) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/TurnTable/TurnTableGameViewController.swift |
| Plugin(轉盤遊戲) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/TurnTable/TurnTableGameViewControllerPlugin.swift |
| ViewModel(轉盤遊戲) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/TurnTable/TurnTableGameViewModel.swift |
| View(轉盤需求) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/TurnTable/TurnTableRquirementsView.swift |
| View(轉盤) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ChatView/TurnTable/TurnTableView.swift |
| View(盤口搜尋空狀態) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/EmptyView/MarketSearchEmptyView.swift |
| Cell(方案列表) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/EventDetailPlan/Cell/EventDetailPlanTableViewCell.swift |
| ViewController(方案付費) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/EventDetailPlan/EventDetailPayPlanViewController.swift |
| ViewController(方案) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/EventDetailPlan/EventDetailPlanViewController.swift |
| Model(方案) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/EventDetailPlan/M/EventPlanModel.swift |
| ViewModel(方案) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/EventDetailPlan/VM/EventDetailPlanViewModel.swift |
| View(專家方案投注項) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ExpertPlan/ExpertPlanBetItemView.swift |
| View(專家方案詳情) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ExpertPlan/ExpertPlanDetailView.swift |
| View(專家方案容器) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ExpertPlan/ExpertPlanItemContainerView.swift |
| Model(專家方案主題) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ExpertPlan/ExpertPlanThemeType.swift |
| View(金幣文件) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/ExpertPlan/GoldDocumentView.swift |
| View(彈幕) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Header/BBChatBarrageView.swift |
| View(Header 卡片) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Header/EventDetailHeaderCardView.swift |
| View(Header 選單) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Header/EventDetailHeaderMenuView.swift |
| View(Header 比分區塊) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Header/EventDetailHeaderScoreBlock.swift |
| View(Header 比分) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Header/EventDetailHeaderScoreView.swift |
| View(Header 主視圖) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Header/EventDetailHeaderView.swift |
| ViewModel(Header) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Header/EventDetailHeaderViewModel.swift |
| View(Header 提示) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Header/EventDetailTipsView.swift |
| View(直播選單按鈕) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Header/LiveMenuButton.swift |
| View(圓形視圖) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Header/Views/CircleView.swift |
| View(計分板資訊) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Header/Views/EventDetailScoreboardInfoView.swift |
| View(進度條) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Header/Views/EventProgressBar.swift |
| View(滾動標籤) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Header/Views/EventScrollLabel.swift |
| View(圖片標籤) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Header/Views/STImageLabel.swift |
| View(滾球排名球類項目) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/InPlayRank/InPlayRankBallItemView.swift |
| View Extension(聯賽 Action) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/League/BBLeagueView+Action.swift |
| View(聯賽) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/League/BBLeagueView.swift |
| View(充電投注類型) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/League/ChargeBetTypeView.swift |
| View(抽獎球類項目) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/LuckyDraw/LuckyDrawBallItemView.swift |
| Manager(抽獎) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/LuckyDraw/LuckyDrawManager.swift |
| View(抽獎) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/LuckyDraw/LuckyDrawView.swift |
| View(計分板基底) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailBaseView.swift |
| View(計分板美式足球+Data) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardAmericanFootball+Data.swift |
| View(計分板美式足球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardAmericanFootball.swift |
| View(計分板羽毛球+Data) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardBadminton+Data.swift |
| View(計分板羽毛球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardBadminton.swift |
| View(計分板籃球+Data) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardBasketball+Data.swift |
| View(計分板籃球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardBasketball.swift |
| View(計分板沙灘排球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardBechVolleyBall.swift |
| View(計分板足球+Data) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardFootball+Data.swift |
| View(計分板足球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardFootball.swift |
| View(計分板冰球+Data) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardIcehockeyBall+Data.swift |
| View(計分板冰球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardIcehockeyBall.swift |
| View(計分板乒乓球+Data) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardTableTennis+Data.swift |
| View(計分板乒乓球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardTableTennis.swift |
| View(計分板網球+Data) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardTennisball+Data.swift |
| View(計分板網球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardTennisball.swift |
| View(計分板排球+Data) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardVolleyball+Data.swift |
| View(計分板排球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Scoreboard/EventDetailScoreboardVolleyball.swift |
| Protocol(情報可更新) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Protocol/IntelligenceUpdatable.swift |
| Protocol(技術統計 VM) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Protocol/TechnicViewModel.swift |
| View(足球分析進球) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Football/Analyze/SubView/FootballAnalyzeGoalView.swift |
| View(足球分析排名) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Football/Analyze/SubView/FootballAnalyzeRankingView.swift |
| View(足球陣容通用 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Football/Squad/SubView/FootballSquadCommonHeadView.swift |
| View(足球陣容 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Football/Squad/SubView/FootballSquadHeadView.swift |
| Cell(足球陣容) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Football/Squad/SubView/FootballSquadTableViewCell.swift |
| Cell(足球文字直播) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Football/TextStream/SubView/RealTimeTableViewCell.swift |
| Cell(籃球即時數據) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/TextStream/SubView/BasketballRealTimeTableViewCell.swift |
| View(籃球即時 Footer) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/TextStream/SubView/RealTimeBasketballFooterView.swift |
| Model(籃球即時數據) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/TextStream/SubView/RealTimeBasketballModel.swift |
| View(即時標題) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Basketball/TextStream/SubView/RealTimeTitleView.swift |
| View(分析估值指數) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Intelligence/AnalyzeEstimationIndexView.swift |
| Model(估值預測) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Intelligence/EstimationPredictModel.swift |
| View(情報虛線) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Intelligence/IntelligenceDashView.swift |
| View(情報空狀態) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Intelligence/IntelligenceEmptyView.swift |
| View(情報 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Intelligence/IntelligenceHeaderView.swift |
| Model(情報) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Intelligence/IntelligenceModel.swift |
| Cell(情報) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Statistics/Shared/Intelligence/IntelligenceTableViewCell.swift |
| View(Tab 切換) | /Users/user/Work/bbsport-new/BBSport/Tab/体育/Sport/EventDetail/Views/Tab/EventDetailTabView.swift |
| API(雷速基底) | /Users/user/Work/bbsport-new/BBSport/API/LeisuSportAPI/LeisuSportAPI.swift |
| API(雷速分析) | /Users/user/Work/bbsport-new/BBSport/API/LeisuSportAPI/LeisuSportAPI+AnalyzeRequest.swift |
| API(雷速籃球情報) | /Users/user/Work/bbsport-new/BBSport/API/LeisuSportAPI/Basketball/LeisuSportAPI+BasketballIntelligenceRequest.swift |
| API(雷速籃球陣容) | /Users/user/Work/bbsport-new/BBSport/API/LeisuSportAPI/Basketball/LeisuSportAPI+BasketballLineupRequest.swift |
| API(雷速籃球技術統計) | /Users/user/Work/bbsport-new/BBSport/API/LeisuSportAPI/Basketball/LeisuSportAPI+BasketballTeahnicRequest.swift |
| API(雷速籃球文字直播) | /Users/user/Work/bbsport-new/BBSport/API/LeisuSportAPI/Basketball/LeisuSportAPI+BasketballTextLiveRequest.swift |
| API(雷速足球情報) | /Users/user/Work/bbsport-new/BBSport/API/LeisuSportAPI/Football/LeisuSportAPI+FootballIntelligenceRequest.swift |
| API(雷速足球陣容) | /Users/user/Work/bbsport-new/BBSport/API/LeisuSportAPI/Football/LeisuSportAPI+FootballLineupRequest.swift |
| API(雷速足球賽事資訊) | /Users/user/Work/bbsport-new/BBSport/API/LeisuSportAPI/Football/LeisuSportAPI+FootballMatchInfoRequest.swift |
| API(雷速足球文字直播) | /Users/user/Work/bbsport-new/BBSport/API/LeisuSportAPI/Football/LeisuSportAPI+FootballTextLiveRequest.swift |
| API(雷速 Request 基底) | /Users/user/Work/bbsport-new/BBSport/API/LeisuSportAPI/LeisuSportAPIRequest/LeisuSportAPIRequest.swift |
| API(雷速 JSON Decision) | /Users/user/Work/bbsport-new/BBSport/API/LeisuSportAPI/LeisuSportAPIRequest/Decision/LeisuSportParseJSONStringDecision.swift |
| API(雷速 Result Decision) | /Users/user/Work/bbsport-new/BBSport/API/LeisuSportAPI/LeisuSportAPIRequest/Decision/LeisuSportParseResultDecision.swift |
| API(FB 賽事詳情) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/FBSportAPI+MatchDetailRequest.swift |
| API(FB 主播詳情) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/FBSportAPI+MerchantDetailRequest.swift |
| API(UP 賽事詳情) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/UPSportAPI+MatchDetailRequest.swift |
| API(UP 主播詳情) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/UPSportAPI+MerchantDetailRequest.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+DBEventInfoRequest.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/Bet/DBSportAPI+LatestMarketInfoRequest.swift |
API
FB 平台(FBSportAPI)
| 功能說明 | 檔案 | Endpoint | Method | 主要參數 |
|---|---|---|---|---|
| 賽事詳情 | FBSportAPI+MatchDetailRequest.swift | v1/match/getMatchDetail | POST | matchId, languageType |
| 賽事詳情(JSON String) | 同上 MatchDetailJsonStringRequest | v1/match/getMatchDetail | POST | matchId, languageType |
| 主播詳情 | FBSportAPI+MerchantDetailRequest.swift | v1/merchant/detail | - | - |
UP 平台(UPSportAPI)
| 功能說明 | 檔案 | Endpoint | Method | 主要參數 |
|---|---|---|---|---|
| 賽事詳情 | UPSportAPI+MatchDetailRequest.swift | v1/match/getMatchDetail | POST | matchId, languageType |
| 賽事詳情(JSON String) | 同上 MatchDetailJsonStringRequest | v1/match/getMatchDetail | POST | matchId, languageType |
| 主播詳情 | UPSportAPI+MerchantDetailRequest.swift | v1/merchant/detail | - | - |
DB 平台(DBSportAPI)
| 功能說明 | 檔案 | Endpoint | Method | 主要參數 |
|---|---|---|---|---|
| 賽事詳情(PB) | DBSportAPI+EventDetailRequest.swift | yewu11/v1/w/matchDetail/getMatchDetailPB | GET | mid |
| 賽事資訊 | DBSportAPI+DBEventInfoRequest.swift | api/forehead/gamebetob/getEventInfo | POST | eventId, language |
| 最新盤口資料 | DBSportAPI+LatestMarketInfoRequest.swift | yewu13/v1/betOrder/client/queryLatestMarketInfo | POST | body dict |
共用平台(STAPI)
| 功能說明 | 檔案 | Endpoint | Method |
|---|---|---|---|
| 購買方案計數 | STAPI+PlanBuyCountRequest.swift | api/forehead/live/sports/message/v2/buy/count | POST |
| 金幣商城餘額 | STAPI+GoldMallBalanceRequest.swift | api/forehead/activity/goldmall/balance | POST |
| 熱門滾球排名 | STAPI+InPlayMatchRank.swift | api/forehead/data/betting/inPlayMatchRank | POST |
| 包賠配置 | STAPI+RiskFreeBetConfigurationRequest.swift | api/forehead/activity/compensation/info | POST |
| 包賠確認 | STAPI+RiskFreeBetBetConfirmationRequest.swift | api/forehead/activity/act/get | POST |
資料模型
STEventDetailViewModel 關鍵屬性
| 屬性 | 說明 |
|---|---|
eventId | 賽事 ID(字串) |
gameType | 體育平台類型(GameType:.fbSport / .dbSport / .upSport) |
sportId | 體育 ID(Int) |
sportType | CommonSportType(由 sportId 推導) |
hostId | 當前主播 ID |
isInPlay | 是否滾球(影響輪詢頻率) |
isOpenLive | 是否開啟播放器 |
isFromFloatView | 是否從小窗跳轉回來 |
betListViewModel | 盤口 ViewModel |
liveBetGameViewModel | 主播競猜遊戲 ViewModel |
liveViewModel | 直播 BaseVideoViewModel |
videoViewModel | 影片 BaseVideoViewModel |
animationViewModel | 動畫 BaseVideoViewModel |
headerViewModel | Header ViewModel |
BetGroupDataSource 架構
protocol BetGroupDataSource
├── groupSections: [EventBetSection] // Cell model
├── originalSectionOrder: [String] // 後端原始盤口排序(置頂回復用)
├── getHeaderView(by:) -> UIView? // table header(預設 nil)
├── filterGroups(_:sportId:) async -> [EventBetGroup] // 過濾盤口
├── buildDataSource(groupTitle:searchText:sportId:groups:) async // 建立 Cell Model + 過濾 + 置頂
└── pinAction(title:) async // 置頂行為
final class EventBetGroupDataSource: BetGroupDataSource
→ 一般賽事,不額外過濾
final class RiskFreeBetGroupDataSource: BetGroupDataSource
→ 包賠投注,透過 RiskFreeBetUseCase 過濾可用盤口
→ 有 bannerView(包賠 Banner)
→ onRiskFreeBetAvailable 回調是否有包賠統計模組架構
StatisticsSegmentedViewModel
├── providers: [StatisticsProvider]
├── setupProviders() → 依 sportType 建立不同 provider 組合
├── setupTechnicViewModelIfNeeded() → 足球/籃球各自的 TechnicViewModel
└── requestData() → 請求數據
protocol StatisticsProvider
├── title: String
├── buildView() -> StatisticsView
└── requestForDetailStatisticsIfNeeded(by:)
protocol StatisticsViewModel
├── initData(by:)
└── requestData(by:)各球類 Provider 組合:
| 球類 | Providers |
|---|---|
| 足球 | TextStream(文字直播)、Squad(陣容)、Exponent(指數)、Analyze(分析)、Intelligence(情報) |
| 籃球 / 電競籃球 | TextStream(文字直播)、Exponent(指數)、Analyze(分析)、Intelligence(情報) |
| 其他球類 | OtherSportStatisticsProvider(僅比分版) |
三平台功能差異對照
| 功能 | FB(fbSport) | UP(upSport) | DB(dbSport) |
|---|---|---|---|
| 賽事詳情 API | v1/match/getMatchDetail(POST) | v1/match/getMatchDetail(POST) | yewu11/.../getMatchDetailPB(GET)+ getEventInfo(POST) |
| Response Model | STEventModel | STEventModel | OBEventModel / OBEventInfoModel |
| 直播 | 有 | 有 | 有 |
| 動畫 | 有 | 有 | 有 |
| 影片(視頻線路) | 有 | 有 | 有 |
| 投注方式 | DetailHelper.fbBetActionHandler | DetailHelper.upBetActionHandler | DBBetCommonDatas(串關購物車模式) |
| 盤口最新資料 | 透過 Socket 推送 | 透過 Socket 推送 | LatestMarketInfoRequest 輪詢 |
| 包賠投注 | 有(RiskFreeBetGroupDataSource) | 有 | 有 |
| 統計數據 | 完整(足球/籃球/其他) | 小眾球類不需要數據 tab | 完整 |
| 聊天/主播 | 有 | 有 | 有 |
| 主播詳情 API | v1/merchant/detail | v1/merchant/detail | 無(透過 getEventInfo 取得) |
| 串關購物車 | 無 | 無 | 有(DBBetCommonDatas.shoppingCartItems) |
投注處理差異
- FB / UP:點擊賠率 →
DetailHelper.fbBetActionHandler/upBetActionHandler→ 彈出投注面板 - DB:點擊賠率 →
DBBetCommonDatas管理串關購物車 → 支援addSeriesPass/deleteSeriesPass/startBet;頁面底部顯示購物車cartView
統計數據平台差異
- FB / DB:完整支援所有球類統計
- UP:小眾球類(非足球/籃球)不顯示數據 Tab(
OtherSportStatisticsProvider中plat != .upSport才發通知)
實作重點
輪詢策略:
isInPlay == true每 5 秒輪詢;isInPlay == false每 20 秒輪詢;使用SwiftTimer避免 RunLoop 問題多平台盤口處理:
BetListViewModel整合 FB/DB/UP 三平台盤口資料;EventBetGroupDataSource(一般賽事)、RiskFreeBetGroupDataSource(包賠投注)主播切換:
currentStreamer改變時更新chatViewModel和liveBetGameViewModel;切換時重置活動(紅包/轉盤/抽獎)、彈幕、禁言狀態直播/影片/動畫三種播放模式:
EventDetailLiveView:主播直播,支援更多主播切換、橫屏全螢幕、彈幕EventDetailVideoView:賽事影片,支援多線路切換(線路一 ~ 四)EventDetailAnimationView:賽事動畫,自動隱藏計時器- 三者皆繼承
BaseVideoView,共用 ViewModelBaseVideoViewModel
統計數據分離:各球類有獨立的 Provider 和 ViewModel;共用
StatisticsSegmentedViewModel管理 Tab 切換;足球/籃球各自有TechnicViewModel處理技術統計,數據透過 closure 回傳給外部(Header、直播層等)聊天模組整合:詳情頁內嵌聊天區 →
STChatManager管理連線;支援競猜(Vote)、轉盤(TurnTable)、紅包等互動更多主播:豎屏用
NewNormalMoreLiveView,橫屏用MoreLiveView(內嵌於EventDetailLiveView);實作NewMoreLiveDataViewDelegate處理主播切換邏輯
API 呼叫流程
進入賽事詳情頁 (STEventDetailViewController)
viewDidLoad → STEventDetailViewModel.init → requestData()
│
├─ FB 平台:
│ └─ [API] POST v1/match/getMatchDetail
│ {languageType:"CMN", matchId:"{eventId}"}
│ → 回傳: 賽事資訊 + 盤口賠率 + 直播 URL (一次取得)
│ → 快取: SportDataManager.shared.queryEvent()
│
├─ DB 平台 (循序):
│ ├─ [API 1] GET yewu11/v1/w/matchDetail/getMatchDetailPB {mid:"{eventId}"}
│ ├─ [API 2] GET yewu11/v1/w/category/getCategoryList {sportId, mid}
│ └─ [API 3, 並行] GET yewu11/v1/m/matchDetail/getMatchOddsInfoPB
│ {mid, mcid:"{categoryId}", cuid} × N 個分類
│ → 並行佇列: com.ob.detail.group
│
└─ UP 平台:
└─ [API] POST v1/match/getMatchDetail (同 FB 結構,不同 Host)直播/動畫載入
賽事詳情回應中包含:
├─ video_url → 直播影片
└─ animation_url → 動畫重播
額外請求 (如需):
└─ [API] GET match/video/app (Host: pxdd/seo)
→ 回傳 VideoSourceList盤口 Tab 切換
用戶切換盤口分類
├─ FB/UP: 不發請求,從快取過濾
└─ DB: 若該分類未載入
└─ [API] GET yewu11/v1/m/matchDetail/getMatchOddsInfoPB
{mid, mcid:新分類ID}即時更新 (WebSocket)
詳情頁開啟後訂閱 Socket
└─ DetailHelper.subscribeSocketWith(channel:"105", event_id)
→ 接收: 足球半場比分、技術統計、賠率變動
→ 處理: STNotify.receivedFootballTechnic 等通知
定時輪詢 (備援):
└─ initTimer() → 滾球每 5 秒 / 早盤每 20 秒 → requestData()
離開頁面:
└─ DetailHelper.unsubscribeSocketWith(channel:"105", event_id)