Appearance
VIP系統(開發文檔)
最後更新:2026-04-10
📖 功能說明請參考 VIP系統
架構
相關檔案
ViewController(2 個)
| 檔案 | 說明 |
|---|---|
.../Home/C/VIPViewController.swift | VIP 中心(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.swift | VIP 進度 |
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:
| 欄位 | 型別 | 說明 |
|---|---|---|
| vipLevel | Int | 當前 VIP 等級(0~7) |
| currentExp | Int | 升級用當前成長值 |
| promoExpReq | Int | 升至下一等級所需 EXP |
| currentMaintainExp | Int | 保級用當前成長值 |
| maintainReqExp | Int | 維持等級所需 EXP |
保級/降級規則
保級與降級規則由後台配置,前端不硬編碼。前端僅根據 currentMaintainExp 和 maintainReqExp 顯示保級進度條(VIP 7 時使用),不執行降級判斷邏輯。
附帶 VIP 的 API 列表
以下 API Response 中附帶 vipLevel 欄位,非 VIP 專屬 endpoint:
| API | 檔案 | 說明 |
|---|---|---|
POST /activity/vip/progress/get | STAPI+VIPProgressRequest.swift | VIP 進度(專屬) |
POST /heartbeat | STAPI+HeartBeatRequest.swift | 心跳 |
POST /user/center/home | STAPI+ProfileInfoRequest.swift | 個人資料(UserCenter 中) |
POST /user/center/info | STAPI+ProfileInfoRequest.swift | 查看他人資料 |
POST /user/fans/subscription/list | STAPI+FansPageSubscriptionRequest.swift | 粉絲頁訂閱列表 |
POST /global/search | STAPI+GlobalSearchRequest.swift | 全局搜尋結果 |
POST /proxy/jump | STAPI+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}-dark、chatVip{level}_d(日間)/chatVip{level}_n(夜間) - 顏色影響:VIP ≤ 3 灰色;VIP > 3 金色(
CE5932D)或跑馬燈粉色(CE2B67B) - VIP 等級同步:呼叫 API 後存入
IFUserModel.sharedInstance().vipLevel,全域使用 - 聊天室雙重驗證:前端本地檢查
vipLimitIsAccord+ 後端 WebSocketuserIncompatible回傳 - 福利中心 VIP 獎勵類型:
awardType0=生日、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-type、device-id、version、app-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()是否正確