Appearance
福利中心(Welfare Center)
最後更新:2026-04-07
功能說明
福利中心集中展示使用者所有可領取的獎勵,包含:現金、現金券、存送券、流水券、實物、VIP 成長值、禮品券、稱號、體驗金等多種獎勵類型。分為「進行中」(可領取)和「已失效」兩個狀態頁籤,支援按獎勵類型篩選。
使用者流程
- 進入「我的」→ 找到「福利中心」入口 →
WelfareCentreViewModel驅動頁面 - 頁面頂部兩個 Tab:「進行中」/ 「已失效」
- 各 Tab 下方有類型篩選按鈕(全部 / 現金 / 現金券 / 存送券 / 流水券 / 實物 / VIP / 禮品券 / 體驗金 / 稱號)
- 清單顯示福利項目,每項顯示獎勵名稱、金額、截止時間、狀態
- 點擊「領取」→ 呼叫
WelfareCenterClaimRequest - 部分實物獎品需填寫收貨地址(
addressId)
頁面跳轉
- 「我的」首頁 → 福利中心 →
WelfareCentreViewController - 實物獎品領取 → 填寫收貨地址頁
技術視角(開發看這裡)
相關檔案
| 類型 | 檔案路徑 |
|---|---|
| ViewController | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/MiddleMenu/WalfareCentre/C/WelfareCentreViewController.swift |
| ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/MiddleMenu/WalfareCentre/M/WelfareCentreViewModel.swift |
| Model | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/MiddleMenu/WalfareCentre/M/WelfareCentreModel.swift |
| View(Cell) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/MiddleMenu/WalfareCentre/V/WelfareCentreCellTableViewCell.swift |
| View(篩選) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/MiddleMenu/WalfareCentre/V/WelfareCentreFilterView.swift |
| View(Header) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/MiddleMenu/WalfareCentre/V/WelfareCentreHeaderView.swift |
| View(TableView) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/MiddleMenu/WalfareCentre/V/WelfareCentreTableView.swift |
| View(Footer) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/MiddleMenu/WalfareCentre/V/WelfareCenterFooterView.swift |
| Extension(UIButton) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/MiddleMenu/WalfareCentre/V/ExtensionUIButton.swift |
| View(多選按鈕) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/MiddleMenu/WalfareCentre/V/SelectMultipleButtons.swift |
| API(活動列表) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/Activity/STAPI+ActivityListRequest.swift |
| API(彩蛋資訊) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/Activity/STAPI+EggInfoRequest.swift |
| API(金幣商城餘額) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/Activity/STAPI+GoldMallBalanceRequest.swift |
| API(福利中心領取) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/WelfareCenter/STAPI+WelfareCenterClaimRequest.swift |
| API(福利中心列表) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/WelfareCenter/STAPI+WelfareCenterListRequest.swift |
| API(福利未領取數量) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/WelfareCenter/STAPI+WelfareCenterUnclaimCountRequest.swift |
| API(福利各類型數量) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/WelfareCenter/STAPI+WelfareCountByAwardTypeRequest.swift |
API
| 功能說明 | Namespace | Endpoint | Method | 主要參數 |
|---|---|---|---|---|
| 福利列表(進行中/已失效) | STAPI | api/forehead/activity/welfare/list | POST | 無 |
| 各類型數量統計 | STAPI | api/forehead/activity/welfare/countByAwardType | POST | 無 |
| 領取福利 | STAPI | api/forehead/activity/welfare/claim | POST | idStr、addressId(實物必填) |
| 未領取數量 | STAPI | api/forehead/activity/welfare/unClaimCount | POST | 無 |
資料模型
StatusType(福利狀態)
| 值 | 說明 |
|---|---|
-1 | 不可領取 |
0 | 已達標未領取(可領取) |
1 | 已領取 |
2 | 已過期 |
3 | 已發貨 |
4 | 已拒絕 |
5 | 已刪除 |
6 | 未使用 |
FilterButtonType(篩選類型)
all、cash(現金)、cashTicket(現金券)、saveTicket(存送券)、waterTicket(流水券)、goods(實物)、vip、giftTicket(禮品券)、title(稱號)、experienceTicket(體驗金)
實作重點
雙重狀態管理:
enable(進行中)/disable(已失效)有各自的分頁計數器,切換 Tab 時獨立分頁本地篩選:類型篩選(
getData)在本地資料上做 filter,不重新請求 API,避免過多網路請求數量統計:
getListCount呼叫WelfareCountByAwardTypeRequest取得各類型的數量,篩選按鈕旁顯示數量 badge分頁加載:
currentEnablePage/currentDisablePage管理各狀態的分頁狀態對應:進行中對應
status == 0 或 6;已失效對應其餘狀態(-1, 1, 2, 3, 4, 5)
API 呼叫流程
進入福利中心 (WelfareCentreViewController)
viewDidLoad → getData()
├─ [並行 1] POST api/forehead/activity/welfare/list
│ {status:"0,6", page:0, size:200}
│ → 可用福利 (進行中)
│
├─ [並行 2] POST api/forehead/activity/welfare/list
│ {status:"-1,1,2,3,4,5", page:0, size:200}
│ → 已失效福利
│
└─ [並行 3] POST api/forehead/activity/welfare/countByAwardType
→ 各類型未領取/已失效數量
(現金、現金券、存款券、流水券、實物、VIP、禮品券、稱號、經驗券)領取福利
用戶點擊領取
└─ [API] POST api/forehead/activity/welfare/claim {idStr, addressId?}
→ 成功後重新載入列表分頁
上拉載入更多 → page += 1 → 重新請求對應狀態列表