Skip to content

遊戲大廳(開發文檔)

最後更新:2026-04-10

📖 功能說明請參考 遊戲大廳


架構

相關檔案

ViewController(6 個)
檔案說明
.../controller/BBHomeViewController.swift遊戲首頁
.../controller/BBSubGameViewController.swift子遊戲列表
.../controller/BBSearchSubGameViewController.swift搜索子遊戲
.../controller/BBHomeOtherHandler.swift維護狀態處理
.../controller/IFNewStaticWebViewController.m遊戲 WebView(OC)
.../PushGameService.swift遊戲跳轉服務

基礎路徑:BBSport/Tab/游戏/Amuse/

Handler(6 個)
檔案說明
.../controller/BBHomeDaZhuanPanHander.swift大轉盤
.../controller/BBHomeLoginOrLogoutHander.swift登入登出
.../controller/BBHomeNoticeShower.swift公告顯示
.../controller/BBHomeScrollHaner.swift滾動處理
.../controller/BBHomeThemeStyleHandle.swift主題樣式
.../controller/BBNetworkHander.swift網路請求

基礎路徑:BBSport/Tab/游戏/Amuse/

Model(10 個)
檔案說明
.../model/HomeAllGameModel.h/.m遊戲分類(OC)
.../model/GameItemModel.h/.m遊戲項目(OC)
.../BBUserBannerModelItem.swiftBanner Model
.../model/BBUserDialogModel.swift對話框 Model
.../model/BBUserNoticeModel.swift公告 Model
.../model/BBUserProductConfigModel.m產品設定(OC)
.../model/IFAGGameModel.swiftAG 遊戲 Model
以及其他 OC Model...

基礎路徑:BBSport/Tab/游戏/Amuse/

View(15 個)
檔案說明
.../view/HomeCardView.swift遊戲卡片
.../view/CarItemView.swift卡片項目
.../view/BBUserHomeNavView.swift首頁導航
.../view/BBGotoSportAPPView.swift跳轉體育
.../view/BBSubGameChooseBar.swift子遊戲選擇欄
.../view/BBSubGameVCNav.swift子遊戲導航
.../view/NewUserSpinView.swift新人轉盤
.../view/NewUserSpinOverlay.swift轉盤遮罩
以及 Cell、HornView、公告控件等...

基礎路徑:BBSport/Tab/游戏/Amuse/

維護管理(2 個)
檔案說明
BBSport/Tools/MaintenanceManager/GameMaintenanceManager.swift全域維護管理
BBSport/Tools/MaintenanceManager/GameMaintenanceStatusModel.swift維護狀態 Model
API — 遊戲核心(7 個)
檔案說明
.../Game/STAPI+HomeGameListRequest.swift首頁遊戲列表
.../Game/STAPI+ListSubGamesRequest.swift子遊戲列表
.../Game/STAPI+JumpGameUrlRequest.swift遊戲 URL 跳轉
.../Game/STAPI+GameJumpRequest.swift遊戲跳轉
.../Game/STAPI+GameJumpPreCheckRequest.swift跳轉預檢
.../Game/STAPI+GamebetConfigQueryRequest.swift圖示設定
.../Game/STAPI+GamePrizeListRequest.swift獎品列表

基礎路徑:BBSport/API/STAPI/

API — 轉盤(4 個)
檔案說明
.../Amuse/API/STAPI+WheelList.swift轉盤活動列表
.../Amuse/API/STAPI+WheelGet.swift轉盤獲取
.../Amuse/API/STAPI+WheelInfo.swift轉盤資訊
.../Amuse/API/STAPI+WheelUserInfo.swift轉盤用戶資訊

基礎路徑:BBSport/Tab/游戏/

彩票模組(獨立 Moya 網路層)

彩票功能由 ML 前綴類管理,位於 BBSport/Tab/游戏/Amuse/Lottery/ 目錄,使用獨立 Moya 網路層。主要包含:

  • 大廳MLLobbyMainViewController
  • 彩票主頁MLLotteryMainViewController
  • 快速投注LFastBetViewController
  • 開獎詳情MLRunLotteryDetailViewController
  • 投注記錄MLBetHistoryMainViewController
  • 彩票管理MLLotteryManageMainViewController
  • 網路層MLLTHttpService / MLLotteryPlatformRequestAction
  • 走勢圖LotteryChartViewController
  • 六合彩投注MLLHCBetViewController
  • 算法MLAlgorithmObject / MLBetCountAlgorithObject

baseURL 由 MLLTJumpManager.shared.baseUrl 動態設定。


API

遊戲大廳核心


首頁遊戲列表

POST api/forehead/gamebet/game/show/all — urlForm — STAPI.HomeGameListRequest

參數型別必填說明
showClientInt固定 2(App 端)

Response:

欄位型別說明
nav[HomeGame]導航列遊戲分類
recommend[HomeGame]推薦遊戲分類

子遊戲列表

POST api/forehead/gamebet/game/listSubGames — urlForm — STAPI.ListSubGamesRequest

參數型別必填說明
channelIdInt渠道 ID
subTypeInt遊戲子類型(-1=全部, 1=電動老虎機, 2=經典, 3=刮刮樂, 4=棋牌, 5=街機)
lineNumInt遊戲線數(-1=全部, 1=0~20, 2=20~50, 3=50~100, 4=多旋轉)
gameTypeInt固定 3

Response: [IFAGGameModel](gameName, logo, gameId, isFavourite)


遊戲跳轉(取 URL)

POST api/forehead/gamebet/game/jump — urlForm — STAPI.JumpGameUrlRequest

參數型別必填說明
gameIdInt遊戲 ID
mobileDisplayOrientationInt有值時帶入
typeString固定 "0"

Response: String(遊戲 URL)


遊戲跳轉預檢

POST api/forehead/gamebet/game/jump/preCheck — urlForm — STAPI.GameJumpPreCheckRequest

參數型別必填說明
gameIdInt遊戲 ID

Response:

欄位型別說明
awardAmountInt體驗金金額
transferAvailableBoolfalse=彈窗提示首充
userHasAwardAmountBool有體驗金
userHasRechargeBool已充值

遊戲圖示設定

POST api/forehead/gamebet/config/query — urlForm — STAPI.GamebetConfigQueryRequest

參數型別必填說明
showClientString固定 "2"

Response: [BBGameIconItem](channelId, gameIcon, gameId, name, maintenId 等)


產品維護設定

POST api/forehead/gamebet/product/productConfig — urlForm — STAPI.ProductConfigRequest

參數型別必填說明
typeInt2(非遊戲場景帶入)

Response: String(維護設定 JSON,解析為 BBUserProductConfigModel)


錢包轉帳


錢包餘額資訊

POST api/forehead/gamebet/transfer/info — urlForm — STAPI.TransferInfoRequest

無參數。Response: balance([BBBalanceModel]), config(BBBalanceCofigModel)


提交轉帳

POST api/forehead/gamebet/transfer/submitsync — urlForm — STAPI.TransferSubmitRequest

參數型別必填說明
fromChannelIdInt轉出渠道(0=中心錢包)
toChannelIdInt轉入渠道
amountDouble轉帳金額
typeInt1=後台取總金額

Response: 無 data。


各渠道餘額刷新

POST api/forehead/gamebet/balance/refreshByChannel — urlForm — STAPI.RefreshByChannelRequest

參數型別必填說明
channelIdInt渠道 ID

Response: 無 data。


大轉盤


轉盤活動列表

POST api/forehead/activity/wheel/list — urlForm — STAPI.WheelListRequest

無參數。Response: [ResponseModel](id, wheelId, status, startTime, endTime, mobilePic, floatPic, config, wheelName, wheelType)


彩票模組 API

彩票使用獨立 Moya 網路層,baseURL 動態設定。

彩票主要 API 列表(16 個)
功能EndpointMethod
遊戲菜單wps/api/game-menuGET
熱門彩種wps/api/game-hotGET
玩法菜單wps/api/play-menuGET
投注wps/api/betPOST
投注撤單wps/api/bet-cancelPOST
投注記錄wps/api/bet-historyGET
追號投注wps/api/better-chase-betPOST
追號記錄wps/api/chase-historyGET
用戶餘額wps/api/account-getGET
開獎歷史wps/api/newest-resultGET
走勢圖wps/api/analysis/runGET
六合彩生肖wps/api/6cj/animalGET
設定中心wps/api/config-centerGET
首頁 Bannerwps/api/ad-listGET
Token 續期wps/api/token-refreshGET
百家樂動畫wps/api/baccarat-aniGET
完整彩票 API 列表(36 個)

另含:play-multi, play-single, common-rule, single-newest-result, history, bet-history-order, chase-revoke, chase-bet-history, chase-result, chase-start-result, save-config-center, game-i18n, report/date, analysis/long, analysis/cold, analysis/lose, down5, long-batch-bet, optional-play-config, optional-play-get, optional-play-update, merchant-config, game-desc

彩票核心 API 參數說明

投注(bet)

POST wps/api/bet — 來源:MLLotteryPlatformRequestAction

參數說明
gameId彩種 ID
playId玩法 ID
betContent投注內容(號碼組合)
betAmount投注金額
issueNo期號
betCount注數

Response: 投注結果(含訂單號、投注狀態)。彩票使用獨立 Moya 網路層,Response 結構由 MLLTHttpService 統一解析。


投注記錄(bet-history)

GET wps/api/bet-history — 來源:MLLotteryPlatformRequestAction

參數說明
gameId彩種 ID(可選,不傳為全部)
page頁碼
pageSize每頁數量
startTime開始時間
endTime結束時間

Response: 投注記錄列表(含訂單號、彩種、投注內容、金額、開獎結果、盈虧)。


用戶餘額(account-get)

GET wps/api/account-get — 來源:MLLotteryPlatformRequestAction

無參數,靠彩票模組 token 認證。

Response: 用戶在彩票平台的餘額資訊。


遊戲類型

gameType說明
0彩票
1真人
2體育
3老虎機
4捕魚
5電競
6棋牌

維護狀態

MaintainType說明
isMaintain維護中
willMaintain即將維護
noMaintain未維護
unknowMaintain未知

關鍵數字

  • 轉帳超時:3 秒後強制進入遊戲
  • 遊戲列表快取:NSKeyedArchiver 存入 UserDefaults(key: GAME_ARRAY_LIST
  • 轉盤顯示:status == 1 且在 startTime~endTime 內

錯誤處理

遊戲 WebView 載入失敗

IFNewStaticWebViewController(OC)實作 WKNavigationDelegate,但未實作 webView:didFailProvisionalNavigation:withError: 回調。目前載入失敗的處理方式:

  • URL 載入前先清除 Cookie(WKWebsiteDataStore removeDataOfTypes),再重新 loadRequest
  • UIProgressView 進度條透過 KVO 監聽 estimatedProgress 顯示載入進度
  • 彩票模組的 MLWebViewController 有完整的 didFail 處理,顯示 loadFailed 空狀態文字
  • 遊戲主 WebView 未有明確的錯誤重試 UI,載入失敗時用戶需手動返回重新進入

錢包轉帳失敗

PushGameService 的轉帳流程:

  1. 請求 TransferInfoRequest 取得錢包資訊
  2. 呼叫 BBWalletService.finishedOnceTranser(transferModel:toChannelId:) 執行一鍵轉帳
  3. 超時機制DispatchQueue.main.asyncAfter(deadline: .now() + 3) 設定 3 秒超時,無論轉帳是否完成都強制進入遊戲頁面
  4. 使用 isEnterGame 布林旗標防止重複推頁(轉帳成功和超時只執行一次)
  5. onError 回調:僅執行 STLoading.stop() 停止載入動畫,不顯示額外提示
  6. 轉帳失敗時 Socket 推送 STPushType.pushTypeTransferError(code 406),由全域推送 Toast 顯示「轉賬失敗」提示

OC 遺留代碼

以下 .m/.h 檔案為 Objective-C 歷史代碼,Swift 透過 Bridging Header 調用:

檔案說明
IFNewStaticWebViewController.m/.h遊戲 WebView 載體(WKWebView)
HomeAllGameModel.m/.h遊戲分類 Model
GameItemModel.m/.h遊戲項目 Model
BBUserProductConfigModel.m產品維護設定 Model
SystemNoticeListModel.m/.h系統公告 Model
PrizeModel.m/.h獎品 Model
MainItemModel.m/.h主頁項目 Model
BBUserSystemMessageModel.m/.h系統訊息 Model
BBUserMoneyDetailModel.m/.h資金明細 Model
BBUserMessageVmodel.m/.h訊息 ViewModel
BBUserIndexTableViewModel.m/.h首頁 TableView Model
BBUserGLBaseModel.m/.hGL 基底 Model
SKAutoScrollLabel.m/.h自動滾動標籤
HornView.m/.h / HornLabel.m/.h跑馬燈公告
BBUserSwiftOCAdapter.m/.hSwift-OC 橋接 Adapter
MLCommonTools.m/.h彩票通用工具(彩票模組)
WebsocketStompKit.m/.hWebSocket STOMP 協議(彩票模組)

實作重點

  • PushGameService 四道關卡:recommendType → 維護 → 登入 → 首次充值(PreCheck)
  • 體驗金ExperCashHelper.showAlertIfNeeded 處理未綁定提示
  • 子遊戲分流subGameNum > 1 → push SubGameVC;gameId == 28 → MGJRouter 彩票模組
  • 錢包轉帳TransferInfoRequestBBWalletService.finishedOnceTranser → 超時 3s 強制進入
  • 遊戲頁載體:一般 → IFNewStaticWebViewController;PG 電子 → loadHTMLString;MW 捕魚 → 外部瀏覽器
  • 維護同步viewWillAppear 呼叫 requestProductConfig();Socket 即時推送 STNotify.maintainID
  • GameMaintenanceManager:管理 app/fb/db/up 四平台;APP 級維護替換 rootVC 為 BBMaintainViewController
  • 彩票獨立性ML 前綴、Moya 獨立網路層、MLBaseViewController 基底、baseURL 動態設定
  • 遊戲啟動記錄GameStatusManager.shared.updateSavedGameType(.bbAmuse),下次啟動預設選「遊戲」Tab
  • 本地快取NSKeyedArchiverGAME_ARRAY_LIST,下次啟動先載入再請求更新