Skip to content

每日任務與簽到(開發文檔)

最後更新:2026-04-10

📖 功能說明請參考 每日任務與簽到


架構

相關檔案

ViewController(2 個)
檔案說明
.../Tasks/C/BBTasksDetailViewController.swift任務/簽到主頁
.../Tasks/C/SignInSuccessViewController.swift簽到成功動畫

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

ViewModel / Model(5 個)
檔案說明
.../Tasks/VM/BBTasksDetailViewModel.swift任務詳情 ViewModel
.../Tasks/M/BBDailyTaskCellViewModel.swift每日任務 Cell ViewModel
.../Home/M/MyTask/STCheckInViewModel.swift簽到 ViewModel
.../Home/M/MyTask/STTaskCheckInModel.swift簽到 Model
.../Home/M/MyTask/STTaskHomeModel.swift任務首頁 Model

基礎路徑:BBSport/Tab/我的/(Home 或 Mine)

View(8 個)
檔案說明
.../Tasks/V/BBDailyTaskView.swift每日任務主視圖
.../Tasks/V/MyDailyMySignCell.swift簽到日曆 Cell
.../Tasks/V/MyDailyMySignInfoCell.swift簽到資訊 Cell
.../Tasks/V/MyDailyMySignRewardCell.swift簽到獎勵 Cell
.../Tasks/V/MyDailyTaskProgressBarView.swift任務進度條
.../Tasks/V/MyDailyTaskProgressBarWrapper.swift進度條 Wrapper
.../Tasks/V/MyDailyTaskSummaryCell.swift任務摘要 Cell
.../Tasks/V/SignRuleAlertView.swift簽到規則彈窗

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

Service / Manager(5 個)
檔案說明
BBSport/Tools/TaskManager/STTaskManager.swift核心任務管理器(單例,持有以下四個子管理器)
BBSport/Tools/TaskManager/GeneralTaskManager.swift通用任務管理(非數據源相關的背景任務排程)
BBSport/Tools/TaskManager/FBSportTaskManager.swiftFB 體育任務(管理 FB 數據源的背景輪詢與任務排程)
BBSport/Tools/TaskManager/UPSportTaskManager.swiftUP 體育任務(管理 UP 數據源的背景輪詢與任務排程)
BBSport/Tools/TaskManager/DBSportTaskManager.swiftDB 體育任務(管理 DB/OB 數據源的背景輪詢與任務排程)

四種 TaskManager 說明STTaskManager 是單例入口,內部持有 generalTaskManager(負責通用非平台相關任務)和三個體育數據源管理器(fbTaskManager/dbTaskManager/upTaskManager)。切換數據源時(如從 FB 切到 DB),會暫停其他平台的任務並啟動目標平台的任務。三個體育 TaskManager 結構相同,差別僅在觀察的數據源事件不同。

API(7 個)
檔案說明
.../Task/STAPI+TaskDailyMissionRequest.swift每日任務進度
.../Task/STAPI+DailyMissionGetRewardRequest.swift任務領獎
.../Task/STAPI+TaskSignPercentageRequest.swift簽到百分比
.../Task/STAPI+TaskActivityInfoRequest.swift活動設定
.../Task/STAPI+TaskGetRewardRequest.swift簽到/領獎
.../STAPI+ActivityActReceiveInfoRequest.swift可領取狀態
.../Task/STAPI+OperatePicRequest.swift活動 ID 查詢

基礎路徑:BBSport/API/STAPI/


API

簽到與任務載入


每日任務進度

POST api/forehead/activity/dailyMission/get — urlForm — STAPI.TaskDailyMissionRequest

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

Response:

欄位型別說明
missions[TaskMission]任務列表(見下方展開)
activenessAwards[TaskActivenessAward]活躍度獎勵列表(見下方展開)
activenessPointTotalInt活躍度統計值
cycleInt周期(0=每周, 2=每日)
activeInt開關(0=關閉, 1=開啟)
TaskMission 欄位
欄位型別說明
idString任務 ID
nameString任務名稱
descriptionString任務內容說明
condTypeInt任務類型(1=登入, 2=投注, 3=充值, 4=廣場爆料, 5=直播, 6=提現, 7=金幣, 8=論壇)
condDetailInt二級條件(101=任意端登入, 102=APP端, 201=有效投注全平台, 202=任意投注全平台, 203=有效投注指定平台, 204=任意投注指定平台, 301=累計充值, 302=單次充值 等)
condDetailthree[Int]三級條件:指定平台類型(0=彩票, 1=真人, 2=體育, 3=電子, 4=捕魚, 5=電競, 6=棋牌)
condValueDouble條件數值(需達成的目標值)
countDouble當前統計值
receiveTimesInt已領取次數
repeatTimesInt可重複次數
awardTaskActivenessAward獎勵資訊
TaskActivenessAward 欄位
欄位型別說明
idString獎勵 ID
activenessValueInt活躍度門檻
awardTypeInt獎品類型(0=金幣)
awardIdInt獎品 ID
awardNameString獎品名稱
imgUrlString獎品圖片 URL
awardAmountInt獎品金額
desireMultipleInt流水倍數
statusInt領取狀態(0=未領取, 1=已領取, 2=未達標)

每日任務領取獎勵

POST api/forehead/activity/dailyMission/award/get — urlForm — STAPI.DailyMissionGetRewardRequest

參數型別必填說明
missionIdString任務 ID

Response: 無 data,僅 code + message。


簽到百分比

POST api/forehead/activity/act/userInfo — urlForm — STAPI.TaskSignPercentageRequest

參數型別必填說明
actIdInt活動 ID
templateString固定 "signPercentage"

Response:

欄位型別說明
signTodayBool今日是否已簽到
signAwards[TaskSignPercentageAward]簽到獎勵列表
totalAwards[TaskSignPercentageAward]累計獎勵列表
TaskSignPercentageAward 欄位

id(Int), userId(Int), actId(Int), amount(Int), coinCode(String), percentage(Int), signDay(String), receiveStatus(Int, 0=未領/1=已領)


活動設定(簽到日曆)

POST api/forehead/activity/act/info — urlForm — STAPI.TaskActivityInfoRequest

參數型別必填說明
actIdInt活動 ID
templateString固定 "signPercentage"

Response:

欄位型別說明
signCycleInt簽到周期(4=本周, 5=本月, 7=指定, 8=注冊時間)
signPeriodStart / signPeriodEndInt指定週期時間
actStartDate / actEndDateInt活動時間
signConfigSTSignConfigModel簽到設定(見下方展開)
signAwardConfigs[STSignAwardConfigModel]簽到獎勵設定(見下方展開)
totalSignAwardConfigs[STSignAwardConfigModel]累計簽到獎勵設定
STSignConfigModel 欄位
欄位型別說明
rechargeAmountInt充值金額門檻
validBetAmountInt有效投注金額門檻
userProfitInt使用者盈利門檻
signTypeInt0=手動簽到, 1=自動簽到
awardWaySTAwardType0=按順序領獎, 1=按天數領獎
condCareInt條件判斷方式
STSignAwardConfigModel 欄位
欄位型別說明
totalTimesInt累計次數
totalWayInt累計方式
assessmentTypeInt考核類型
awardIdInt獎勵 ID
awardNameString獎勵名稱
awardTypeInt獎勵類型(-9=現金, 0=金幣, 3=實物, 8=現金券, 11=VIP經驗值, 12=存送券, 13=流水券, 17=稱號)
percentageInt百分比
amountInt金額
desireMultipleInt流水倍數
imgUrlString圖片 URL

簽到 / 領取累計獎勵

POST api/forehead/activity/act/get — urlForm — STAPI.TaskGetRewardRequest

參數型別必填說明
actIdInt活動 ID
actionTypeInt0=簽到, 1=領獎
subIdInt簽到傳 0,領獎傳獎勵 ID
templateString固定 "signPercentage"

Response: 無 data,僅 code + message。


可領取狀態檢查

POST api/forehead/activity/act/receive/info — urlForm — STAPI.ActivityActReceiveInfoRequest

無參數,靠 Header token/uid 認證(需 Authorization)。

Response:

欄位型別說明
goldMallCanReceiveBool金幣商城可領取
inviteCanReceiveBool好友邀請可領取
welfareCanReceiveBool福利中心可領取

活動 ID 查詢

POST api/forehead/system/config/images/query — urlForm — STAPI.OperatePicRequest

參數型別必填說明
categoryIdString分類 ID(任務用 "40201"

Response: [STQueryResponseModel]

欄位型別說明
idInt記錄 ID
categoryIdInt分類 ID
actionContentString動作內容
actionTypeSTQueryActionType0=無, 1=跳賽事, 2=跳 URL, 3=彈文本, 6=App 頁面

獎勵類型對照

rawValue前端類型圖示
-9, 0, 15.coin(金幣/現金)sign_coin_not / sign_coin_ed
8, 12, 13.roll(券)sign_roll_not / sign_roll_ed
17.title(稱號)sign_title_not / sign_title_ed

後端獎勵類型完整對照

-9=現金, 0=金幣, 3=實物, 8=現金券, 11=VIP 經驗值, 12=存送券, 13=流水券, 15=金幣, 17=稱號

實作重點

  • 任務/簽到共用 VC:透過 isSingMy 切換顯示簽到或任務 Section(注意:isSingMy 是原始碼中的實際拼寫,非 typo,定義於 BBTasksDetailViewController.swifttrue = 顯示簽到頁,false = 顯示任務頁)
  • 簽到獎勵類型判斷AwardType(rawValue:) 映射;-9, 0, 15 合併為 .coin
  • 簽到百分比:需 actId + template: "signPercentage"
  • 活動領取 API:通用接口,不同活動類型需不同參數