Skip to content

VIP系統(開發文檔)

最後更新:2026-04-10

📖 功能說明請參考 VIP系統


架構

相關檔案

ViewController(2 個)
檔案說明
.../Home/C/VIPViewController.swiftVIP 中心(H5 WebView)
.../Home/C/BBMineViewController.swift我的首頁

基礎路徑:BBSport/Tab/我的/

View(6 個)
檔案說明
.../Home/V/BBMineHeaderVipView.swift頭部 VIP 區
.../Home/V/BBMineHeadView.swift頭部容器
.../Home/V/VIP/BBMineVipNormalView.swift一般等級視圖
.../Home/V/VIP/BBMineVipLogoutView.swift登出狀態視圖
.../Home/V/VIP/BBMineVipMaxLevelView.swift最高等級視圖
.../Home/V/VIP/BBMineVipTagView.swift權益標籤

基礎路徑:BBSport/Tab/我的/

API(3 個)
檔案說明
BBSport/API/STAPI/User/STAPI+VIPProgressRequest.swiftVIP 進度
BBSport/API/STAPI/STAPI+HeartBeatRequest.swift心跳(含 VIP)
BBSport/API/STAPI/User/Profile/STAPI+ProfileInfoRequest.swift個人資料(含 VIP)
跨模組引用(5 個)
檔案說明
.../STChatView/M/STChatMessageModel.swift聊天規則 VIP 限制
.../STChatView/STChatManager.swift聊天 VIP 發言檢查
.../Withdraw/M/AppointmentInfoModel.swift提款 VIP 額度
.../Manager/CustomerChatManager.swift客服帶入 VIP
.../WalfareCentre/M/WelfareCentreModel.swift福利中心 VIP 獎勵

基礎路徑:BBSport/Tab/(各模組)


API

VIP 進度


取得 VIP 升級進度

POST api/forehead/activity/vip/progress/get — urlForm — STAPI.VIPProgressRequest

無參數,靠 Header token/uid 認證。

Response:

欄位型別說明
vipLevelInt當前 VIP 等級(0~7)
currentExpInt升級用當前成長值
promoExpReqInt升至下一等級所需 EXP
currentMaintainExpInt保級用當前成長值
maintainReqExpInt維持等級所需 EXP

保級/降級規則

保級與降級規則由後台配置,前端不硬編碼。前端僅根據 currentMaintainExpmaintainReqExp 顯示保級進度條(VIP 7 時使用),不執行降級判斷邏輯。

附帶 VIP 的 API 列表

以下 API Response 中附帶 vipLevel 欄位,非 VIP 專屬 endpoint:

API檔案說明
POST /activity/vip/progress/getSTAPI+VIPProgressRequest.swiftVIP 進度(專屬)
POST /heartbeatSTAPI+HeartBeatRequest.swift心跳
POST /user/center/homeSTAPI+ProfileInfoRequest.swift個人資料(UserCenter 中)
POST /user/center/infoSTAPI+ProfileInfoRequest.swift查看他人資料
POST /user/fans/subscription/listSTAPI+FansPageSubscriptionRequest.swift粉絲頁訂閱列表
POST /global/searchSTAPI+GlobalSearchRequest.swift全局搜尋結果
POST /proxy/jumpSTAPI+ProxyJumpRequest.swift代理跳轉資訊

實作重點

  • H5 跳轉:VIP 中心(mc/vip)與詳情(mc/vip-detail)均為 H5,透過 IFCommonUtil.appendTokenActiveUrl 附加 Token 載入
  • 進度條計算:VIP 0~6 用 currentExp / promoExpReq;VIP 7 用 currentMaintainExp / maintainReqExp
  • VIP 標籤圖片命名vip{level}vip{level}-darkchatVip{level}_d(日間)/ chatVip{level}_n(夜間)
  • 顏色影響:VIP ≤ 3 灰色;VIP > 3 金色(CE5932D)或跑馬燈粉色(CE2B67B
  • VIP 等級同步:呼叫 API 後存入 IFUserModel.sharedInstance().vipLevel,全域使用
  • 聊天室雙重驗證:前端本地檢查 vipLimitIsAccord + 後端 WebSocket userIncompatible 回傳
  • 福利中心 VIP 獎勵類型awardType 0=生日、1=升級、2=月度;WelfareCouponType.vip=11(成長值),詳見 福利中心-dev

H5 URL 拼接範例

IFCommonUtil.appendTokenActiveUrl 方法會在 H5 URL 後附加認證參數:

https://{resourceDomain}/mc/vip?token={urlEncoded_token}&uid={urlEncoded_uid}&os-type=ios&device-id={deviceId}&version={appVersion}&app-type={appType}

若 URL 已含 ?,則用 & 拼接參數。未登入時不附加 token,僅附加 os-typedevice-idversionapp-type

VIP 中心常數:VIPCenter = "mc/vip",VIP 詳情常數:VIPDetail = "mc/vip-detail"(定義於 BBNewCommonConstant.swift)。

H5 排錯方向

H5 頁面出問題時:

  • 白屏/載入失敗:檢查 appendTokenActiveUrl 拼接的 URL 是否正確(Proxyman 抓包),確認 token 是否過期
  • 內容異常:H5 由前端 Web 團隊維護,聯繫 Web 前端負責人排查
  • Token/參數問題:確認 IFUserModel.sharedInstance().token 是否為空,IFCommonUtil.getBaseUrl() 是否正確