Skip to content

福利中心(開發文檔)

最後更新:2026-04-10

📖 功能說明請參考 福利中心


架構

相關檔案

ViewController / ViewModel(2 個)
檔案說明
.../WalfareCentre/C/WelfareCentreViewController.swift福利中心主頁
.../WalfareCentre/M/WelfareCentreViewModel.swiftViewModel

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

View(6 個)
檔案說明
.../WalfareCentre/V/WelfareCentreCellTableViewCell.swift福利 Cell
.../WalfareCentre/V/WelfareCentreFilterView.swift篩選視圖
.../WalfareCentre/V/WelfareCentreHeaderView.swiftHeader
.../WalfareCentre/V/WelfareCentreTableView.swiftTableView
.../WalfareCentre/V/WelfareCenterFooterView.swiftFooter
.../WalfareCentre/V/SelectMultipleButtons.swift多選按鈕

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

Model(1 個)
檔案說明
.../WalfareCentre/M/WelfareCentreModel.swift福利 Model

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

API(4 個)
檔案說明
.../WelfareCenter/STAPI+WelfareCenterListRequest.swift福利列表
.../WelfareCenter/STAPI+WelfareCenterClaimRequest.swift領取
.../WelfareCenter/STAPI+WelfareCenterUnclaimCountRequest.swift未領取數
.../WelfareCenter/STAPI+WelfareCountByAwardTypeRequest.swift各類型數量

基礎路徑:BBSport/API/STAPI/


API

進入福利中心


福利列表

POST api/forehead/activity/welfare/list — urlForm — STAPI.WelfareCenterListRequest

參數型別必填說明
statusString進行中: "0,6",已失效: "-1,1,2,3,4,5"
pageInt頁碼(從 0 開始)
sizeInt固定 200

Response:

欄位型別說明
pageNumInt當前頁碼
totalInt總筆數
list[WelfareCentreDetailModel]福利項目列表
WelfareCentreDetailModel 欄位

actId(Int), actName(String), awardType(Int), claimTime(Int), createTime(Int), expireTime(Int), imgUrl(String), idStr(String), price(Double), prizeId(Int), prizeName(String), status(Int) 等


各類型數量統計

POST api/forehead/activity/welfare/countByAwardType — urlForm — STAPI.WelfareCountByAwardTypeRequest

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

Response: [WelfareCountModel]

欄位型別說明
typeNameWelfareCoupon福利券類型(見下方枚舉值)
awardTypes[Int]對應後端 awardType 值
unClaimCountInt未領取數量
invalidCountInt已失效數量

WelfareCoupon 枚舉值(用於分類篩選):

rawValue(String)說明
"现金"現金
"现金券"現金券
"存送券"存送券
"流水券"流水券
"实物"實物
"VIP成长值"VIP 成長值
"礼品券"禮品券
"称号"稱號
"体验金"體驗金
""空值(預設)

awardType 對照表(WelfareCouponType 枚舉):

rawValue(Int)枚舉名說明
-10cashNegativeTen
-9cashNegativeNine現金
-6experienceTicket體驗金
0cashZero金幣
1cashOne
2cashTwo
3goods實物
4cashFour
5cashFive
6cashSix
7cashSeven
8cash現金券/免費彩金
10cashTen
11vipVIP 經驗值
12saveTicket存送券
13waterTicket流水券
14cashFourteen
15coin金幣
16giftTicket禮品券
17title稱號

完整的後端 awardType 含義也可參考 每日任務與簽到-dev 的獎勵類型對照表。


領取福利

POST api/forehead/activity/welfare/claim — urlForm — STAPI.WelfareCenterClaimRequest

參數型別必填說明
idStrString福利項目 ID
addressIdString收貨地址 ID(實物必填)

Response: 無 data,僅 code + message。


未領取數量

POST api/forehead/activity/welfare/unClaimCount — urlForm — STAPI.WelfareCenterUnclaimCountRequest

無參數(需 Authorization)。Response: data: Int。


狀態碼

說明
-1不可領取
0可領取(已達標未領)
1已領取
2已過期
3已發貨
4已拒絕
5已刪除
6未使用

實作重點

  • 雙重狀態管理:進行中 / 已失效各有獨立分頁計數器
  • 本地篩選:類型篩選在本地 filter,不重新請求 API
  • 數量 badgeWelfareCountByAwardTypeRequest 取得各類型數量,篩選按鈕旁顯示
  • 分頁加載currentEnablePage / currentDisablePage 管理各狀態分頁,透過 MJRefreshAutoNormalFooter 觸發上拉加載更多。呼叫 viewModel.loadMoreData() 時根據當前 Tab(進行中/已失效)對對應的 page 計數器 +1 並請求下一頁。每頁固定 size=200
  • 分頁觸發條件:TableView 底部的 MJRefreshAutoNormalFooter,上拉到底自動觸發
  • 狀態對應:進行中 = status 0, 6;已失效 = 其餘
  • 收貨地址:實物獎勵需填收貨地址。跳轉到 BBPersonalInfoEntryAddressController(位於 BBSport/Tab/我的/Mine/UserInfo/C/),是個人資訊模組的共用元件,非本模組獨有
  • WalfareCentre vs WelfareCenter 拼寫差異:目錄和部分檔案名使用 WalfareCentre(如 WalfareCentre/C/WelfareCentreViewController.swift),而 API Request 檔案使用 WelfareCenter(如 STAPI+WelfareCenterListRequest.swift)。這是歷史拼寫差異,Walfare 為早期 typo,後續 API 層修正為 Welfare 但 UI 層未統一重命名