Appearance
注單與結算
最後更新:2026-04-09
功能說明
注單(投注記錄)Tab 讓已登入使用者查看所有體育投注記錄,包含「未結算」(待定)、「已結算」(確定)、「提前結算」(CashOut)三種狀態,同時支援遊戲注單(BBGame)。使用者可在未結算注單中申請提前結算換取保底金額。
使用者流程
- 點擊「注單」Tab → 若未登入彈出登入提示,登入後進入
- 頁面頂部有「體育」/「遊戲」切換
- 體育注單:
- 頂部時間篩選(今天/昨天/7天/30天)
- 三個子 Tab:「未結算」/ 「已結算」/ 「提前結算」
- 每筆注單顯示:賽事、玩法、賠率、投注額、結算狀態
- 遊戲注單(
BBNoteViewController):各遊戲渠道的投注記錄 - 未結算注單操作:
- 點擊「提前結算」→ 取得可結算金額
- 彈出確認視窗(
STCashOutSettlementAlert) - 確認後呼叫結算 API
頁面跳轉
- 點擊「注單」Tab → 注單首頁(需登入)
- 注單 → 遊戲注單詳情 →
BBNoteDetailViewController - 點擊注單中的賽事 →
STEventDetailViewController(賽事詳情)
技術視角(開發看這裡)
相關檔案
| 類型 | 檔案路徑 |
|---|---|
| Base Content VC | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/ContainControllers/Base/BetSettleContentController.swift |
| FB 未結算 | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/UnSettle/FBUnSettleViewController.swift |
| FB 已結算 | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/Settled/FBSettledViewController.swift |
| FB 提前結算 | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/ABSettle/FBABSettleViewController.swift |
| UP 未結算 | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/UnSettle/UPUnSettleViewController.swift |
| UP 已結算 | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/Settled/UPSettledViewController.swift |
| UP 提前結算 | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/ABSettle/UPABSettleViewController.swift |
| DB 未結算 | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/UnSettle/DBUnSettleViewController.swift |
| DB 已結算 | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/Settled/DBSettledViewController.swift |
| DB 已結算 Content | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/Settled/DBSettledContentViewController.swift |
| DB Contain | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/ContainControllers/ContainController/DBSettleContentViewController.swift |
| LiveGame 未結算 | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/UnSettle/LiveGameUnSettleViewController.swift |
| LiveGame 已結算 | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/Settled/LiveGameSettledViewController.swift |
| LiveGame 已結算 Content | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/Settled/LiveGameSettledContentViewController.swift |
| LiveGame Contain | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/ContainControllers/ContainController/LiveGameSettleContentViewController.swift |
| 遊戲注單 VC | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/BBGame/C/BBNoteViewController.swift |
| 遊戲注單詳情 | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/BBGame/C/BBNoteDetailViewController.swift |
| TableView Adapter | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/TableViewAdapter/SettleTableViewAdapter.swift |
| 提前結算警告框 | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/EarlySettlementAlert/ST/STCashOutSettlementAlert.swift |
| Model(FB 結算) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Model/ST/FBSettleModel.swift |
| Service(快取) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/Service/BetSettleDataCacheManager.swift |
| Service(日誌) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/Service/BetSettleLogManager.swift |
| ViewController(側邊欄) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/ContainControllers/Base/BetSettleSideViewController.swift |
| ViewController(FB Contain) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/ContainControllers/ContainController/FBSettleContentViewController.swift |
| ViewController(UP Contain) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/ContainControllers/ContainController/UPSettleContentViewController.swift |
| ViewController(FB 提前結算 Content) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/ABSettle/FBABSettledContentViewController.swift |
| ViewController(UP 提前結算 Content) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/ABSettle/UPABSettledContentViewController.swift |
| ViewController(FB 已結算 Content) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/Settled/FBSettledContentViewController.swift |
| ViewController(UP 已結算 Content) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Settle Controllers/Settled/UPSettledContentViewController.swift |
| Model(注單狀態) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Model/BetSettleStatus.swift |
| Model(DB 結算) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Model/DB/DBSettleModel.swift |
| Model(FB 提前結算狀態) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Model/ST/FBABSettleStatus.swift |
| Model(FB CashOut 狀態) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Model/ST/FBCashOutStatus.swift |
| Model(FB CashOut 設定) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Model/ST/FBCashoutConfig.swift |
| Model(FB CashOut 列表) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Model/ST/FBSettleCashOutListModel.swift |
| Model(結算統計) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/Model/ST/SettleTotalModel.swift |
| View(提前結算操作) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/BetSettleEarlyActionView.swift |
| View(注單 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/BetSettleHeaderView.swift |
| View(預約中操作) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/BetSettleReservingActionView.swift |
| View(容器 Header 內容) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/ContainerHeader/HomeSettledContentView.swift |
| View(容器 Header 標題樣式) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/ContainerHeader/HomeSettledTitleStyle.swift |
| View(容器 Header 標題) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/ContainerHeader/HomeSettledTitleView.swift |
| View(雙層按鈕) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/DoubleLayerButton.swift |
| View(DB 提前結算彈窗) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/EarlySettlementAlert/DB/DBEarlySettlementAlert.swift |
| View(結算鍵盤) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/EarlySettlementAlert/ST/STBetSettleKeyboardView.swift |
| View(CashOut 確認彈窗) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/EarlySettlementAlert/ST/STCashOutSettlementConfrimAlert.swift |
| ViewController(提前結算彈窗) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/EarlySettlementAlert/ST/STEarlySettlementAlertCtrl.swift |
| ViewController(提前結算確認彈窗) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/EarlySettlementAlert/ST/STEarlySettlementConfirmAlertCtrl.swift |
| View(提前結算詳情彈窗) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/EarlySettlementAlert/ST/STEarlySettlementDetailAlert.swift |
| View(串關 CashOut 結算彈窗) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/EarlySettlementAlert/ST/STSeriesCashOutSettlementAlert.swift |
| View(滑桿) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/EarlySettlementAlert/ST/STSliderView.swift |
| View(結算金額輸入框) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/EarlySettlementAlert/ST/SettleAmoutTextField.swift |
| View(Header 選單) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/HeaderView/BetHeaderMenuView.swift |
| View(日期篩選) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/HeaderView/BetSettleSportDateView.swift |
| Cell(串關注單) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/SeriesBetCell/SettleComboBetCell.swift |
| View(串關 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/SeriesBetCell/SettleSeriesPassHeaderView.swift |
| View(分享) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/ShareView.swift |
| View(單關 Footer) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/SingleBetCell/SettleFooterView.swift |
| View(單關 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/SingleBetCell/SettleHeaderView.swift |
| Cell(單關注單) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/SingleBetCell/SettleSingleBetCell.swift |
| Adapter Extension(DB) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/TableViewAdapter/SettleTableViewAdapter+DB.swift |
| Adapter Extension(FB) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/TableViewAdapter/SettleTableViewAdapter+FB.swift |
| Adapter Extension(LiveGame) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/TableViewAdapter/SettleTableViewAdapter+LiveGame.swift |
| Adapter Extension(UP) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/General/View/TableViewAdapter/SettleTableViewAdapter+UP.swift |
| View(注單通知列表) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/Notice/View/BetSettleNoticeListView.swift |
| ViewModel(注單通知) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/Sport/Notice/ViewModel/BetNoticeViewModel.swift |
| Model(遊戲渠道投注) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/BBGame/M/BBBetByChannelModel.swift |
| Model(遊戲投注列表) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/BBGame/M/BBBetGameListModel.swift |
| Model(遊戲項目資訊) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/BBGame/M/BBGameItemInformation.swift |
| View(日期選擇) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/BBGame/V/BBDataSelectView.swift |
| View(遊戲注單內容) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/BBGame/V/BBGameNoteContentView.swift |
| Cell(遊戲注單) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/BBGame/V/BBNoteCell.swift |
| Cell(遊戲注單詳情) | /Users/user/Work/bbsport-new/BBSport/Tab/注单/BetHistory/BBGame/V/BBNoteDetailCell.swift |
| API(FB 提前結算詢價) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/Settle/FBSportAPI+AskAmountDataRequest.swift |
| API(FB 取消預約提前結算) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/Settle/FBSportAPI+CancelReserveCashOutRequest.swift |
| API(FB 提前結算狀態列表) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/Settle/FBSportAPI+EarlySettlementStutasListRequest.swift |
| API(FB 預約投注列表) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/Settle/FBSportAPI+ReserveBetListRequest.swift |
| API(FB 預約提前結算) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/Settle/FBSportAPI+ReserveCashOutRequest.swift |
| API(FB 注單列表) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/Settle/FBSportAPI+SettleListRequest.swift |
| API(FB 提交提前結算) | /Users/user/Work/bbsport-new/BBSport/API/FBSportAPI/Settle/FBSportAPI+SubmitCashOutRequest.swift |
| API(UP 提前結算詢價) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/Settle/UPSportAPI+AskAmountDataRequest.swift |
| API(UP 取消預約提前結算) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/Settle/UPSportAPI+CancelReserveCashOutRequest.swift |
| API(UP 提前結算狀態列表) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/Settle/UPSportAPI+EarlySettlementStutasListRequest.swift |
| API(UP 預約投注列表) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/Settle/UPSportAPI+ReserveBetListRequest.swift |
| API(UP 預約提前結算) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/Settle/UPSportAPI+ReserveCashOutRequest.swift |
| API(UP 注單列表) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/Settle/UPSportAPI+SettleListRequest.swift |
| API(UP 提交提前結算) | /Users/user/Work/bbsport-new/BBSport/API/UPSportAPI/Settle/UPSportAPI+SubmitCashOutRequest.swift |
| API(DB 提前結算詳情) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/Settlement/DBSportAPI+EarlySettleDetailRequest.swift |
| API(DB 提前結算狀態列表) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/Settlement/DBSportAPI+EarlySettlementStutasListRequest.swift |
| API(DB 提前結算) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/Settlement/DBSportAPI+PreSettleRequest.swift |
| API(DB 注單列表) | /Users/user/Work/bbsport-new/BBSport/API/DBSportAPI/Settlement/DBSportAPI+SettlementListRequest.swift |
| Manager(體育資料中心) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/SportDataManager.swift |
| Manager Extension(DB) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/SportDataManager+DB.swift |
| Model(注單日期樣式) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/BetSettleDateStyle.swift |
| Model(冠軍列表) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/Champion/ChampionListModel.swift |
| Model(DB 提前結算詳情) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/DBEarlySettleDetailModel.swift |
| Service Extension(DB 結算請求) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/DBSettleService+request.swift |
| Service(DB 結算) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/DBSettleService.swift |
| Model(OB 分類) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/OBCategoryModel.swift |
| Decoder(OB 資料) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/OBDataDecoder.swift |
| Manager Extension(OB 詳情) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/OBDataManager+Detail.swift |
| Manager Extension(OB 比分) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/OBDataManager+ScoreHandler.swift |
| Manager Extension(OB 使用者) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/OBDataManager+User.swift |
| Manager(OB 資料) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/OBDataManager.swift |
| Manager Extension(OB 列表) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/OBDataManger+List.swift |
| Model(OB Domain) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/OBDomainModel.swift |
| Enum(OB 列舉) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/OBEnum.swift |
| Model(OB 賽事) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/OBEventModel.swift |
| Model(OB 聯賽日期回應) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/OBLeagueResponsDateModel.swift |
| Model(OB 賠率資訊) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/OBOddInfoModel.swift |
| Model(OB 回應) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/DB/OBResponseModel.swift |
| Model(賽事詳情 Models) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/EventDetailModels.swift |
| Service Extension(FB 結算請求) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/FB/FBSettleService+request.swift |
| Service(FB 結算) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/FB/FBSettleService.swift |
| Manager Extension(ST 詳情) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/FB/STDataManager+Detail.swift |
| Manager Extension(ST 列表) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/FB/STDataManager+List.swift |
| Manager(ST 資料) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/FB/STDataManager.swift |
| Model(ST 賽事詳情) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/FB/STEventDetailModel.swift |
| Model(ST 賽事) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/FB/STEventModel.swift |
| Manager(ST 語言) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/FB/STLanguageManager.swift |
| Enum(ST 體育列舉) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/FB/STSportEnum.swift |
| Manager(LS 雷速資料) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/LS/LSDataManager.swift |
| Model(LS 球類技術統計) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/LS/M/LSBallTechniqueModel.swift |
| Model(LS 情報設定) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/LS/M/LSIntelligenceConfigModel.swift |
| Model(LS 陣容資料) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/LS/M/LSLineupDataModel.swift |
| Model(LS 即時資料) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/LS/M/LSRealTimeDataModel.swift |
| Service(LiveGame 結算) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/LiveGameSettle/LiveGameSettleService.swift |
| Model(專家方案投注區塊) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/Node/ExpertPlanBetSectionModel.swift |
| Model(金幣商城餘額) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/Node/GlodmallBalanceModel.swift |
| Manager(Node 資料) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/Node/NodeDataManager.swift |
| Model(推送訂單) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/Node/PushOrdersModel.swift |
| Manager(PXDD 資料) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/PXDD/PXDDDataManager.swift |
| Model(注單結算) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/SettleModel/BetSettleModel.swift |
| Model(注單結算選項) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/SettleModel/BetSettleSelectionsModel.swift |
| Model(注單結算類型) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/SettleModel/BetSettleType.swift |
| Model(注單已結算狀態) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/SettleModel/BetSettledStatus.swift |
| Model(注單結算進度狀態) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/SettleModel/BetSettlementStatus.swift |
| Model(體育選單) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/SportMenuModel.swift |
| Manager Extension(UP 詳情) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/UP/UPDataManager+Detail.swift |
| Manager Extension(UP 列表) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/UP/UPDataManager+List.swift |
| Manager(UP 資料) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/UP/UPDataManager.swift |
| Service Extension(UP 結算請求) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/UP/UPSettleService+request.swift |
| Service(UP 結算) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportDataManager/UP/UPSettleService.swift |
| Manager Extension(網路-詳情) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportNetworkManager/SportNetworkManager+Detail.swift |
| Manager Extension(網路-Host) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportNetworkManager/SportNetworkManager+Host.swift |
| Manager(體育網路) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STSportCoreDataCenter/SportNetworkManager/SportNetworkManager.swift |
路徑前綴皆為
/Users/user/Work/bbsport-new/BBSport
API
FB 極速體育(FBSportAPI)
| 功能說明 | Endpoint | Method |
|---|---|---|
| 注單列表(未結算/已結算) | v1/order/new/bet/list | POST |
| 提前結算詢價 | v1/order/cashOut/price | POST |
| 提交提前結算 | v1/order/cashOut/bet | POST |
| 提前結算狀態查詢 | v1/order/getCashOutsByIds | POST |
| 預約提前結算 | v1/order/cashOutReserve/bet | POST |
| 取消預約提前結算 | v1/order/cashOutReserve/cancel | POST |
| 預約投注列表 | v1/order/new/reserve/betList | POST |
UP 雷速體育(UPSportAPI)
| 功能說明 | Endpoint | Method |
|---|---|---|
| 注單列表(未結算/已結算) | v1/order/new/bet/list | POST |
| 提前結算詢價 | v1/order/cashOut/price | POST |
| 提交提前結算 | v1/order/cashOut/bet | POST |
| 提前結算狀態查詢 | v1/order/getCashOutsByIds | POST |
| 預約提前結算 | v1/order/cashOutReserve/bet | POST |
| 取消預約提前結算 | v1/order/cashOutReserve/cancel | POST |
| 預約投注列表 | v1/order/new/reserve/betList | POST |
FB 與 UP 的 API path 完全相同,差別在於 base URL 不同(分別走
FBSportAPIRequest與UPSportAPIRequest)。
DB OB體育(DBSportAPI)
| 功能說明 | Endpoint | Method |
|---|---|---|
| 注單列表 | yewu13/v1/betOrder/client/getOrderListV3 | POST |
| 提前結算(預結算) | yewu13/v1/betOrder/orderPreSettle | POST |
| 提前結算狀態查詢 | yewu13/v1/betOrder/queryOrderPreSettleConfirm | GET |
| 提前結算詳情 | yewu13/v1/betOrder/client/getPreSettleOrderDetail | GET |
DB 平台無預約提前結算相關 API(無 ReserveCashOut / ReserveBetList)。
LiveGame 骰寶
LiveGame 無獨立 API 目錄,注單資料複用 FB 或 DB 的 API 介面。
資料模型
FBSettleModel(注單記錄)
| 欄位 | 型別 | 說明 |
|---|---|---|
id | String | 訂單 ID |
sert | Int | 投注類型(0=單投, 1=串關) |
bt | String | 投注類型描述(例: 3x1*3) |
bn | Int | 總 bet 數 |
al | Int | 總關數 |
sv | Int | 串幾關 |
sat | Decimal | 投注本金 |
sa | Decimal | 結算金額 |
cops | Decimal | 提前結算返還金額 |
mwa | Decimal | 最大可贏額(不含本金) |
lwa | Decimal | 剩餘可贏額 |
mla | Decimal | 未結算可贏額(含本金) |
st | Int | 注單狀態(0:建立 1:確認中 2:已確認 3:已拒絕 4:取消 5:已結算) |
rst | STSettleReserveType | 預約狀態(0:預約中 1:成功 2:失敗 3:取消) |
ab | Bool | 是否為預約投注 |
stm | Double | 結算時間 |
cte | Double | 接單時間 |
coc | Int | 已提前結算次數 |
isCanCashout | Bool | 是否可提前結算(依商戶設定計算) |
isCanAppointmentCashout | Bool | 是否可預約提前結算(依商戶設定計算) |
isHasEarlySettleHistory | Bool | 是否有提前結算歷史 |
earlySettleReturn | Decimal | 部分提前結算返還額 |
earlySettleTotalStake | Decimal | 部分提前結算本金 |
ops | [OPS] | 投注選項集合 |
crl | [Crl] | 提前結算歷史記錄 |
rcool | [Rcool] | 預約提前結算歷史記錄 |
OPS(投注選項)
| 欄位 | 型別 | 說明 |
|---|---|---|
te | [TE] | 球隊資訊(TE.na=名稱, TE.id=ID) |
sid | Int | 運動 ID |
mid | Int | 比賽 ID |
mn | String | 比賽名稱 |
ln | String | 聯賽名稱 |
bt | Double | 開賽時間 |
rs | String | 賽果比分 |
od | Decimal | 歐盤賠率 |
bo | String | 下注時賠率 |
of | OddsType | 賠率類型(1:歐盤 2:香港盤 3:馬來盤 4:印尼盤) |
sr | Int | 注單狀態 |
mty | Int | 盤口類型 |
mgn | String | 玩法名稱 |
onm | String | 投注玩法 |
on | String | 選項類型名稱 |
li | String | 玩法對應的具體值 |
ip | Bool | 是否滾球(0=非滾球, 1=滾球) |
cr | String | 取消原因 |
re | String | 備註 |
ty | Int | 下注類型 |
mrid | Int | Market ID |
mtp | Int | Market type |
bsc | String | 比分(經 finalScoreText 解析) |
Crl(提前結算記錄)
| 欄位 | 型別 | 說明 |
|---|---|---|
id | String | 提前結算 ID |
oid | String | 訂單 ID |
ct | Double | 提前結算時間 |
cst | Decimal | 提前結算本金 |
cops | Decimal | 提前結算派獎金額 |
st | Int | 狀態(0:建立 1:確認中 2:已確認 3:已拒絕 4:取消 5:已結算) |
Rcool(預約 CashOut 記錄)
| 欄位 | 型別 | 說明 |
|---|---|---|
id | String | 預約 ID |
ct | Double | 時間 |
cst | Decimal | CashOut 本金 |
cops | Decimal | CashOut 結算返還 |
unps | Decimal | 單筆提前結算返還 |
st | Int | 狀態(同 Crl.st) |
Sts(多幣種統計)
| 欄位 | 型別 | 說明 |
|---|---|---|
cid | Int | 幣種 ID |
ct | Int | 訂單數 |
sa | Decimal | 投注金額 |
pa | Decimal | 返還額 |
cwl | Decimal | 輸贏 |
各平台子 Tab 組成
| 平台 | 未結算 VC | 已結算 VC | 提前結算 VC |
|---|---|---|---|
| FB 極速體育 | FBUnSettleViewController | FBSettledViewController | FBABSettleViewController |
| DB OB體育 | DBUnSettleViewController | DBSettledViewController | - |
| UP 雷速體育 | UPUnSettleViewController | UPSettledViewController | UPABSettleViewController |
| LiveGame 骰寶 | LiveGameUnSettleViewController | LiveGameSettledViewController | - |
各平台功能差異對照表
| 功能 | FB 極速體育 | UP 雷速體育 | DB OB體育 | LiveGame 骰寶 |
|---|---|---|---|---|
| 未結算注單 | ✓ | ✓ | ✓ | ✓ |
| 已結算注單 | ✓ | ✓ | ✓ | ✓ |
| 提前結算(CashOut) | ✓ | ✓ | ✓(PreSettle) | - |
| 提前結算 Tab(ABSettle) | ✓ | ✓ | - | - |
| 預約提前結算 | ✓ | ✓ | - | - |
| 預約投注列表 | ✓ | ✓ | - | - |
| 取消預約提前結算 | ✓ | ✓ | - | - |
| 獨立 API 體系 | ✓(v1/order/...) | ✓(v1/order/...) | ✓(yewu13/v1/betOrder/...) | -(複用其他平台) |
備註:FB 與 UP 的 API 路徑完全一致,僅 base URL 不同。DB 使用完全不同的 API 路徑體系(yewu13 前綴),且不支援預約提前結算。LiveGame 無獨立結算 API,也無提前結算功能。
實作重點
分頁載入:
FBSettledViewController使用 MJRefresh 下拉刷新 + 上拉載入更多;currentPage刷新時重置為 1注單重新載入觸發:監聽
STNotify.fbRefreshSettlementBetList→reloadTableView();viewDidAppear時也會自動重新請求提前結算流程:點擊「提前結算」→ 先詢價(
AskAmountDataRequest)→ 顯示可結算金額 → 使用者確認 → 呼叫結算 API → 成功後刷新列表TableView Adapter 模式:
SettleTableViewAdapter作為基底,各平台透過 Extension 擴展(+FB,+DB,+UP,+LiveGame)快取管理(BetSettleDataCacheManager):快取上次請求的注單資料,切換平台 Tab 時優先顯示快取,背景更新
提前結算可用性判斷:
FBSettleModel.init(from:)中根據商戶設定(merchantDetailModel)動態計算isCanCashout和isCanAppointmentCashout,區分單投/串關各有不同開關(co/bocvspco/pbc),並檢查已結算次數coc是否達上限
API 呼叫流程
未結算頁面 (FBUnSettleViewController / UPUnSettleViewController)
viewDidAppear → reloadTableView()
└─ fetchSettleList(type: .unSettlement)
├─ [並行 1] POST v1/order/new/bet/list
│ {isSettled: false, size: 200, languageType: "CMN"}
│
└─ [並行 2] POST v1/order/cashOut/price
{orderIds: [上一步的訂單ID]}
→ 回傳 pr[]{oid, amt, st} + mxc (最大兌現次數)
└─ 兩者完成後合併 → fbUnSettlements.accept() / upUnSettlements.accept()未結算頁面 (DBUnSettleViewController)
viewDidAppear → reloadTableView()
└─ POST yewu13/v1/betOrder/client/getOrderListV3
{orderStatus: 0, page: 1, size: 200, timeType: 4}
→ dbUnSettlements.accept()
(DB 不額外請求兌現價格)已結算頁面 (FBSettledViewController / UPSettledViewController)
viewDidAppear → reloadTableView()
└─ POST v1/order/new/bet/list
{isSettled: true, startTime: "...", endTime: "...", current: 1, size: 50}
→ 依日期篩選: today / yesterday / week已結算頁面 (DBSettledViewController)
viewDidAppear → reloadTableView()
└─ POST yewu13/v1/betOrder/client/getOrderListV3
{orderStatus: 1, page: 1, size: 200, timeType: 1}
timeType: 1=今天, 2=昨天, 3=本週
(失敗 code "0401038"/"503" → 最多重試 2 次,間隔 0.5s)提前兌現 (Cash Out)
用戶點擊「提前結算」
├─ FB/UP 即時兌現:
│ └─ [API 1] POST v1/order/cashOut/bet
│ {orderId, cashOutTime, cashOutStake, unitCashOutPayoutStake, parlay}
│ └─ 成功 → 每 5 秒輪詢結果
│ └─ [API 2] POST v1/order/getCashOutsByIds {ids: [...]}
│ └─ orderStatus=settled → 成功 toast
│ └─ orderStatus=cancelled/failed → 失敗 toast
│
├─ FB/UP 預約兌現:
│ └─ [API] POST v1/order/cashOutReserve/bet
│ {orderId, cashOutStake, cashOutPayoutStake, parlay}
│
└─ DB 即時兌現:
└─ [API 1] POST yewu13/v1/betOrder/orderPreSettle
{orderNo, settleAmount, deviceType:4, frontSettleAmount}
└─ 每 5 秒輪詢
└─ [API 2] GET yewu13/v1/betOrder/queryOrderPreSettleConfirmDB 注單詳情 (提前結算記錄)
用戶查看提前結算歷史
└─ GET yewu13/v1/betOrder/client/getPreSettleOrderDetail
{orderNo: "..."}
→ 計算各筆 settleAmount 總和