Appearance
注單與結算(開發文檔)
最後更新:2026-04-10
📖 功能說明請參考 注單與結算
架構
相關檔案
ViewController — 體育注單(18 個)
| 檔案 | 說明 |
|---|---|
.../Base/BetSettleContentController.swift | Base Content VC |
.../Base/BetSettleSideViewController.swift | 側邊欄 VC |
.../UnSettle/FBUnSettleViewController.swift | FB 未結算 |
.../Settled/FBSettledViewController.swift | FB 已結算 |
.../ABSettle/FBABSettleViewController.swift | FB 提前結算 |
.../ABSettle/FBABSettledContentViewController.swift | FB 提前結算 Content |
.../Settled/FBSettledContentViewController.swift | FB 已結算 Content |
.../ContainController/FBSettleContentViewController.swift | FB Contain |
.../UnSettle/UPUnSettleViewController.swift | UP 未結算 |
.../Settled/UPSettledViewController.swift | UP 已結算 |
.../ABSettle/UPABSettleViewController.swift | UP 提前結算 |
.../ABSettle/UPABSettledContentViewController.swift | UP 提前結算 Content |
.../Settled/UPSettledContentViewController.swift | UP 已結算 Content |
.../ContainController/UPSettleContentViewController.swift | UP Contain |
.../UnSettle/DBUnSettleViewController.swift | DB 未結算 |
.../Settled/DBSettledViewController.swift | DB 已結算 |
.../Settled/DBSettledContentViewController.swift | DB 已結算 Content |
.../ContainController/DBSettleContentViewController.swift | DB Contain |
基礎路徑:
BBSport/Tab/注单/BetHistory/Sport/General/
ViewController — LiveGame / 遊戲注單(6 個)
| 檔案 | 說明 |
|---|---|
.../UnSettle/LiveGameUnSettleViewController.swift | LiveGame 未結算 |
.../Settled/LiveGameSettledViewController.swift | LiveGame 已結算 |
.../Settled/LiveGameSettledContentViewController.swift | LiveGame Content |
.../ContainController/LiveGameSettleContentViewController.swift | LiveGame Contain |
.../BBGame/C/BBNoteViewController.swift | 遊戲注單 VC |
.../BBGame/C/BBNoteDetailViewController.swift | 遊戲注單詳情 |
基礎路徑:
BBSport/Tab/注单/BetHistory/
View(30 個)
| 檔案 | 說明 |
|---|---|
.../View/TableViewAdapter/SettleTableViewAdapter.swift | TableView Adapter |
.../View/TableViewAdapter/SettleTableViewAdapter+FB.swift | FB 擴展 |
.../View/TableViewAdapter/SettleTableViewAdapter+DB.swift | DB 擴展 |
.../View/TableViewAdapter/SettleTableViewAdapter+UP.swift | UP 擴展 |
.../View/TableViewAdapter/SettleTableViewAdapter+LiveGame.swift | LiveGame 擴展 |
.../View/EarlySettlementAlert/ST/STCashOutSettlementAlert.swift | 提前結算彈窗 |
.../View/EarlySettlementAlert/ST/STCashOutSettlementConfrimAlert.swift | CashOut 確認 |
.../View/EarlySettlementAlert/ST/STEarlySettlementAlertCtrl.swift | 提前結算 Alert VC |
.../View/EarlySettlementAlert/ST/STEarlySettlementConfirmAlertCtrl.swift | 確認 Alert VC |
.../View/EarlySettlementAlert/ST/STEarlySettlementDetailAlert.swift | 詳情彈窗 |
.../View/EarlySettlementAlert/ST/STSeriesCashOutSettlementAlert.swift | 串關 CashOut |
.../View/EarlySettlementAlert/ST/STSliderView.swift | 滑桿 |
.../View/EarlySettlementAlert/ST/SettleAmoutTextField.swift | 結算金額輸入框 |
.../View/EarlySettlementAlert/ST/STBetSettleKeyboardView.swift | 結算鍵盤 |
.../View/EarlySettlementAlert/DB/DBEarlySettlementAlert.swift | DB 提前結算 |
.../View/BetSettleEarlyActionView.swift | 提前結算操作 |
.../View/BetSettleHeaderView.swift | 注單 Header |
.../View/BetSettleReservingActionView.swift | 預約中操作 |
.../View/DoubleLayerButton.swift | 雙層按鈕 |
.../View/ShareView.swift | 分享 |
.../View/SingleBetCell/SettleSingleBetCell.swift | 單關注單 Cell |
.../View/SingleBetCell/SettleHeaderView.swift | 單關 Header |
.../View/SingleBetCell/SettleFooterView.swift | 單關 Footer |
.../View/SeriesBetCell/SettleComboBetCell.swift | 串關注單 Cell |
.../View/SeriesBetCell/SettleSeriesPassHeaderView.swift | 串關 Header |
.../View/ContainerHeader/HomeSettledContentView.swift | 容器 Header 內容 |
.../View/ContainerHeader/HomeSettledTitleStyle.swift | 容器 Header 樣式 |
.../View/ContainerHeader/HomeSettledTitleView.swift | 容器 Header 標題 |
.../View/HeaderView/BetHeaderMenuView.swift | Header 選單 |
.../View/HeaderView/BetSettleSportDateView.swift | 日期篩選 |
基礎路徑:
BBSport/Tab/注单/BetHistory/Sport/General/
Model(14 個)
| 檔案 | 說明 |
|---|---|
.../Model/BetSettleStatus.swift | 注單狀態 |
.../Model/ST/FBSettleModel.swift | FB 結算 Model |
.../Model/ST/FBABSettleStatus.swift | FB 提前結算狀態 |
.../Model/ST/FBCashOutStatus.swift | FB CashOut 狀態 |
.../Model/ST/FBCashoutConfig.swift | FB CashOut 設定 |
.../Model/ST/FBSettleCashOutListModel.swift | FB CashOut 列表 |
.../Model/ST/SettleTotalModel.swift | 結算統計 |
.../Model/DB/DBSettleModel.swift | DB 結算 Model |
.../Notice/ViewModel/BetNoticeViewModel.swift | 注單通知 VM |
.../Notice/View/BetSettleNoticeListView.swift | 通知列表 View |
.../BBGame/M/BBBetByChannelModel.swift | 遊戲渠道投注 |
.../BBGame/M/BBBetGameListModel.swift | 遊戲投注列表 |
.../BBGame/M/BBGameItemInformation.swift | 遊戲項目資訊 |
基礎路徑:
BBSport/Tab/注单/BetHistory/Sport/General/(除 BBGame)
Service / Cache(2 個)
| 檔案 | 說明 |
|---|---|
.../Sport/Service/BetSettleDataCacheManager.swift | 快取管理 |
.../Sport/Service/BetSettleLogManager.swift | 日誌管理 |
基礎路徑:
BBSport/Tab/注单/BetHistory/
API Request(18 個)
| 檔案 | 說明 |
|---|---|
BBSport/API/FBSportAPI/Settle/FBSportAPI+SettleListRequest.swift | FB 注單列表 |
BBSport/API/FBSportAPI/Settle/FBSportAPI+AskAmountDataRequest.swift | FB 提前結算詢價 |
BBSport/API/FBSportAPI/Settle/FBSportAPI+SubmitCashOutRequest.swift | FB 提交提前結算 |
BBSport/API/FBSportAPI/Settle/FBSportAPI+EarlySettlementStutasListRequest.swift | FB 提前結算狀態 |
BBSport/API/FBSportAPI/Settle/FBSportAPI+ReserveCashOutRequest.swift | FB 預約提前結算 |
BBSport/API/FBSportAPI/Settle/FBSportAPI+CancelReserveCashOutRequest.swift | FB 取消預約結算 |
BBSport/API/FBSportAPI/Settle/FBSportAPI+ReserveBetListRequest.swift | FB 預約投注列表 |
BBSport/API/UPSportAPI/Settle/UPSportAPI+SettleListRequest.swift | UP 注單列表 |
BBSport/API/UPSportAPI/Settle/UPSportAPI+AskAmountDataRequest.swift | UP 提前結算詢價 |
BBSport/API/UPSportAPI/Settle/UPSportAPI+SubmitCashOutRequest.swift | UP 提交提前結算 |
BBSport/API/UPSportAPI/Settle/UPSportAPI+EarlySettlementStutasListRequest.swift | UP 提前結算狀態 |
BBSport/API/UPSportAPI/Settle/UPSportAPI+ReserveCashOutRequest.swift | UP 預約提前結算 |
BBSport/API/UPSportAPI/Settle/UPSportAPI+CancelReserveCashOutRequest.swift | UP 取消預約結算 |
BBSport/API/UPSportAPI/Settle/UPSportAPI+ReserveBetListRequest.swift | UP 預約投注列表 |
BBSport/API/DBSportAPI/Settlement/DBSportAPI+SettlementListRequest.swift | DB 注單列表 |
BBSport/API/DBSportAPI/Settlement/DBSportAPI+PreSettleRequest.swift | DB 提前結算 |
BBSport/API/DBSportAPI/Settlement/DBSportAPI+EarlySettlementStutasListRequest.swift | DB 提前結算狀態 |
BBSport/API/DBSportAPI/Settlement/DBSportAPI+EarlySettleDetailRequest.swift | DB 提前結算詳情 |
SportDataManager 相關(40+ 個)
| 檔案 | 說明 |
|---|---|
.../SportDataManager/SportDataManager.swift | 體育資料中心 |
.../SportDataManager/SportDataManager+DB.swift | DB 擴展 |
.../SportDataManager/BetSettleDateStyle.swift | 注單日期樣式 |
.../SportDataManager/FB/FBSettleService.swift | FB 結算 Service |
.../SportDataManager/FB/FBSettleService+request.swift | FB 結算請求 |
.../SportDataManager/DB/DBSettleService.swift | DB 結算 Service |
.../SportDataManager/DB/DBSettleService+request.swift | DB 結算請求 |
.../SportDataManager/UP/UPSettleService.swift | UP 結算 Service |
.../SportDataManager/UP/UPSettleService+request.swift | UP 結算請求 |
.../SportDataManager/LiveGameSettle/LiveGameSettleService.swift | LiveGame 結算 |
.../SportDataManager/SettleModel/BetSettleModel.swift | 注單結算 Model |
.../SportDataManager/SettleModel/BetSettleSelectionsModel.swift | 結算選項 |
.../SportDataManager/SettleModel/BetSettleType.swift | 結算類型 |
.../SportDataManager/SettleModel/BetSettledStatus.swift | 已結算狀態 |
.../SportDataManager/SettleModel/BetSettlementStatus.swift | 結算進度 |
.../SportDataManager/DB/OBEventModel.swift | OB 賽事 Model |
.../SportDataManager/DB/OBDataManager.swift | OB 資料管理 |
.../SportDataManager/FB/STEventModel.swift | ST 賽事 Model |
.../SportDataManager/FB/STDataManager.swift | ST 資料管理 |
基礎路徑:
BBSport/STUIKit/STSportCoreDataCenter/
API
注單列表
FB/UP 注單列表(未結算/已結算)
POST v1/order/new/bet/list — JSON — 來源:FBSportAPI / UPSportAPI
TIP
未結算帶 isSettled: false;已結算帶 isSettled: true 及日期區間。
Request:
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| isSettled | bool | ✅ | false=未結算、true=已結算 |
| size | int | ✅ | 未結算 200、已結算 50 |
| languageType | string | ✅ | 固定 "CMN" |
| current | int | 頁碼(已結算分頁) | |
| startTime | string | 開始時間(已結算) | |
| endTime | string | 結束時間(已結算) |
Response:(JSON String → FBSettledContainerModel)
| 欄位 | 型別 | 說明 |
|---|---|---|
| records | [FBSettleModel] | 注單記錄列表 |
| ods | [FBSettleModel] | 注單記錄(備用) |
| sts | [Sts] | 統計資料 |
| total | Int | 總筆數 |
FB/UP 提前結算詢價
POST v1/order/cashOut/price — JSON — 來源:FBSportAPI / UPSportAPI
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| orderIds | [string] | ✅ | 訂單 ID 陣列 |
Response:(success=true 時 data,型別 FBSettleCashOutPriceModel)
| 欄位 | 型別 | 說明 |
|---|---|---|
| mxc | Int | 最大 CashOut 次數 |
| pr | [FBSettleCashOutListModel] | 詢價列表 |
FBSettleCashOutListModel:
| 欄位 | 型別 | 說明 |
|---|---|---|
| oid | String | 注單號 |
| amt | Decimal | 詢價(賠率) |
| smis | Decimal | 單關最小結算本金 |
| pmis | Decimal | 串關最小結算本金 |
FB/UP 提交提前結算
POST v1/order/cashOut/bet — JSON — 來源:FBSportAPI / UPSportAPI
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| orderId | string | ✅ | 訂單 ID |
| cashOutTime | string | ✅ | 提前結算時間 |
| cashOutStake | string | ✅ | 提前結算金額 |
| acceptOddsChange | bool | ✅ | 是否接受賠率變動,固定 false |
| unitCashOutPayoutStake | string | ✅ | 單位 CashOut 派獎 |
| parlay | bool | ✅ | 是否串關 |
Response: JSON String,含提前結算結果。
FB/UP 提前結算狀態查詢
POST v1/order/getCashOutsByIds — JSON — 來源:FBSportAPI / UPSportAPI
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| ids | [string] | ✅ | CashOut ID 陣列 |
Response: JSON String,含各 CashOut 狀態。
FB/UP 預約提前結算
POST v1/order/cashOutReserve/bet — JSON — 來源:FBSportAPI / UPSportAPI
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| orderId | string | ✅ | 訂單 ID |
| cashOutStake | string | ✅ | 預約 CashOut 金額 |
| cashOutPayoutStake | string | ✅ | CashOut 派獎金額 |
| parlay | bool | ✅ | 是否串關 |
Response: JSON String。
FB/UP 取消預約提前結算
POST v1/order/cashOutReserve/cancel — JSON — 來源:FBSportAPI / UPSportAPI
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| reserveCashOutId | string | ✅ | 預約 CashOut ID |
Response: JSON String。
FB/UP 預約投注列表
POST v1/order/new/reserve/betList — JSON — 來源:FBSportAPI / UPSportAPI
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| startTime | string | ✅ | 開始時間(進行中傳空字串) |
| endTime | string | ✅ | 結束時間(進行中傳空字串) |
| isFailed | bool | ✅ | false=進行中、true=失敗 |
| languageType | string | ✅ | 固定 "CMN" |
Response: JSON String,含預約投注列表。
DB 注單
DB 注單列表
POST yewu13/v1/betOrder/client/getOrderListV3 — JSON — 來源:DBSportAPI
Request:
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| orderStatus | int | ✅ | 注單狀態篩選 |
| page | int | ✅ | 頁碼 |
| size | int | ✅ | 每頁數量 |
| timeType | int | ✅ | 時間類型(1=今天、2=昨天、3=本週) |
Response:(JSON String → DBSettleModelContainer)
| 欄位 | 型別 | 說明 |
|---|---|---|
| records | [DBSettleModel] | 注單記錄列表 |
DBSettleModel 主要欄位:
| 欄位 | 型別 | 說明 |
|---|---|---|
| orderNo | String | 訂單號 |
| seriesType | String | 串關類型(單投=1) |
| seriesValue | String | 串關值 |
| seriesSum | Int | 串關注數 |
| detailList | [DBDetailList] | 訂單投注項明細 |
WARNING
DB 已結算查詢失敗(code "0401038" / "503")→ 最多重試 2 次,間隔 0.5s。
DB 提前結算
POST yewu13/v1/betOrder/orderPreSettle — JSON — 來源:DBSportAPI
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| orderNo | string | ✅ | 訂單號 |
| settleAmount | string | ✅ | 結算金額 |
| deviceType | int | ✅ | 裝置類型 |
| frontSettleAmount | string | ✅ | 前端計算結算金額 |
Response: JSON String。
DB 提前結算狀態查詢
GET yewu13/v1/betOrder/queryOrderPreSettleConfirm — JSON — 來源:DBSportAPI
無參數,靠 Header token/uid 認證。
Response: JSON String,含待確認的提前結算訂單。
DB 提前結算詳情
GET yewu13/v1/betOrder/client/getPreSettleOrderDetail — JSON — 來源:DBSportAPI
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| orderNo | string | ✅ | 訂單號 |
Response:(code="0000000" 時 data,型別 [DBEarlySettleDetailModel]?)
| 欄位 | 型別 | 說明 |
|---|---|---|
| orderNo | String | 主單號 |
| preOrderNo | String | 提前結算子單號 |
| orderStatus | Int | 注單狀態 |
| createTime | Double | 提前結算時間 |
| remainingBetAmount | Double | 剩餘可結算額度 |
| settleAmount | Double | 返還金額 |
WARNING
DB 平台無預約提前結算(無 ReserveCashOut / ReserveBetList)。
LiveGame 注單
LiveGame 注單(直播間互動投注,如骰寶)無獨立的注單查詢 API。LiveGame 未結算/已結算使用 SettleTableViewAdapter+LiveGame 擴展渲染,底層結算 Service 為 LiveGameSettleService,資料來源複用體育注單列表 API(FB/UP v1/order/new/bet/list)。
遊戲注單
遊戲注單(非體育類遊戲投注記錄)使用以下 API:
遊戲投注記錄
POST api/forehead/data/betting/gameBetList — urlForm — 來源:STAPI
Request:
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| stime | String | ✅ | 開始時間 |
| etime | String | ✅ | 結束時間 |
| channelId | Int | ✅ | 錢包 ID |
| page | Int | ✅ | 頁碼 |
| size | Int | ✅ | 每頁數量 |
| gamePlatformId | Int | ✅ | 遊戲平台 ID |
| status | String | ✅ | 狀態篩選(彩票時 key 改為 ticketStatus) |
Response:(code=1 時 data,型別 GameBetListRequest.Response)
| 欄位 | 型別 | 說明 |
|---|---|---|
| total | Int | 總筆數 |
| sum | Sum | 統計(win=盈利、amount=投注額) |
| list | [BBBetGameModel] | 遊戲投注記錄列表 |
資料模型
FBSettleModel 完整欄位(15 個)
| 欄位 | 型別 | 說明 |
|---|---|---|
| id | String | 訂單 ID |
| sert | Int | 投注類型(0=單投、1=串關) |
| bt | String | 投注類型描述 |
| sat | Decimal | 投注本金 |
| sa | Decimal | 結算金額 |
| cops | Decimal | 提前結算返還金額 |
| mwa | Decimal | 最大可贏額(不含本金) |
| st | Int | 注單狀態(0=建立、1=確認中、2=已確認、3=已拒絕、4=取消、5=已結算) |
| rst | STSettleReserveType | 預約狀態(0=預約中、1=成功、2=失敗、3=取消) |
| ab | Bool | 是否預約投注 |
| isCanCashout | Bool | 是否可提前結算 |
| isCanAppointmentCashout | Bool | 是否可預約提前結算 |
| ops | [OPS] | 投注選項集合 |
| crl | [Crl] | 提前結算歷史記錄 |
| rcool | [Rcool] | 預約提前結算歷史 |
OPS(投注選項)
| 欄位 | 型別 | 說明 |
|---|---|---|
| te | [TE] | 球隊資訊 |
| sid | Int | 運動 ID |
| mid | Int | 比賽 ID |
| mn | String | 比賽名稱 |
| ln | String | 聯賽名稱 |
| od | Decimal | 歐盤賠率 |
| bo | String | 下注時賠率 |
| mgn | String | 玩法名稱 |
| onm | String | 投注玩法 |
| ip | Bool | 是否滾球 |
Sts(多幣種統計)
| 欄位 | 型別 | 說明 |
|---|---|---|
| cid | Int | 幣種 ID |
| ct | Int | 訂單數 |
| sa | Decimal | 投注金額 |
| pa | Decimal | 返還額 |
| cwl | Decimal | 輸贏 |
各平台功能差異
| 功能 | FB | UP | DB | LiveGame |
|---|---|---|---|---|
| 未結算注單 | ✓ | ✓ | ✓ | ✓ |
| 已結算注單 | ✓ | ✓ | ✓ | ✓ |
| 提前結算 | ✓ | ✓ | ✓(PreSettle) | - |
| 提前結算 Tab | ✓ | ✓ | - | - |
| 預約提前結算 | ✓ | ✓ | - | - |
| 預約投注列表 | ✓ | ✓ | - | - |
WARNING
FB 與 UP 的 API 路徑完全一致,僅 base URL 不同。DB 使用 yewu13 前綴的獨立 API 體系。LiveGame 無獨立結算 API。
實作重點
- 分頁載入:MJRefresh 下拉刷新 + 上拉載入;
currentPage刷新時重置為 1 - TableView Adapter 模式:
SettleTableViewAdapter基底,各平台透過 Extension 擴展 - 快取管理:切換平台 Tab 時優先顯示快取,背景更新
- 提前結算可用性:根據商戶設定動態計算,開關來源為
POST v1/merchant/detailAPI(FB/UP)回傳的FBMerchantDetailModel:co(CashOut):單關提前結算開關(1=單次、2=多次、3=關閉)boc(BookOrderCashOut):單關預約提前結算開關(1=單次、2=多次、3=關閉)pco(ParlayCashOut):串關提前結算開關(1=開啟、2=關閉)pbc(ParlayBookOrderCashOut):串關預約提前結算開關(1=開啟、2=關閉)- 另有
bo(BookOrder):單關預約投注開關(1=開啟、2=關閉) - 同時檢查已結算次數
coc是否達上限
關鍵數字
- 未結算查詢 size:200
- 已結算查詢 size:50
- 提前結算輪詢間隔:5 秒
- DB 失敗重試:最多 2 次,間隔 0.5 秒