Appearance
每日任務與簽到(開發文檔)
最後更新: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.swift | FB 體育任務(管理 FB 數據源的背景輪詢與任務排程) |
BBSport/Tools/TaskManager/UPSportTaskManager.swift | UP 體育任務(管理 UP 數據源的背景輪詢與任務排程) |
BBSport/Tools/TaskManager/DBSportTaskManager.swift | DB 體育任務(管理 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] | 活躍度獎勵列表(見下方展開) |
| activenessPointTotal | Int | 活躍度統計值 |
| cycle | Int | 周期(0=每周, 2=每日) |
| active | Int | 開關(0=關閉, 1=開啟) |
TaskMission 欄位
| 欄位 | 型別 | 說明 |
|---|---|---|
| id | String | 任務 ID |
| name | String | 任務名稱 |
| description | String | 任務內容說明 |
| condType | Int | 任務類型(1=登入, 2=投注, 3=充值, 4=廣場爆料, 5=直播, 6=提現, 7=金幣, 8=論壇) |
| condDetail | Int | 二級條件(101=任意端登入, 102=APP端, 201=有效投注全平台, 202=任意投注全平台, 203=有效投注指定平台, 204=任意投注指定平台, 301=累計充值, 302=單次充值 等) |
| condDetailthree | [Int] | 三級條件:指定平台類型(0=彩票, 1=真人, 2=體育, 3=電子, 4=捕魚, 5=電競, 6=棋牌) |
| condValue | Double | 條件數值(需達成的目標值) |
| count | Double | 當前統計值 |
| receiveTimes | Int | 已領取次數 |
| repeatTimes | Int | 可重複次數 |
| award | TaskActivenessAward | 獎勵資訊 |
TaskActivenessAward 欄位
| 欄位 | 型別 | 說明 |
|---|---|---|
| id | String | 獎勵 ID |
| activenessValue | Int | 活躍度門檻 |
| awardType | Int | 獎品類型(0=金幣) |
| awardId | Int | 獎品 ID |
| awardName | String | 獎品名稱 |
| imgUrl | String | 獎品圖片 URL |
| awardAmount | Int | 獎品金額 |
| desireMultiple | Int | 流水倍數 |
| status | Int | 領取狀態(0=未領取, 1=已領取, 2=未達標) |
每日任務領取獎勵
POST api/forehead/activity/dailyMission/award/get — urlForm — STAPI.DailyMissionGetRewardRequest
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| missionId | String | ✅ | 任務 ID |
Response: 無 data,僅 code + message。
簽到百分比
POST api/forehead/activity/act/userInfo — urlForm — STAPI.TaskSignPercentageRequest
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| actId | Int | ✅ | 活動 ID |
| template | String | ✅ | 固定 "signPercentage" |
Response:
| 欄位 | 型別 | 說明 |
|---|---|---|
| signToday | Bool | 今日是否已簽到 |
| 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
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| actId | Int | ✅ | 活動 ID |
| template | String | ✅ | 固定 "signPercentage" |
Response:
| 欄位 | 型別 | 說明 |
|---|---|---|
| signCycle | Int | 簽到周期(4=本周, 5=本月, 7=指定, 8=注冊時間) |
| signPeriodStart / signPeriodEnd | Int | 指定週期時間 |
| actStartDate / actEndDate | Int | 活動時間 |
| signConfig | STSignConfigModel | 簽到設定(見下方展開) |
| signAwardConfigs | [STSignAwardConfigModel] | 簽到獎勵設定(見下方展開) |
| totalSignAwardConfigs | [STSignAwardConfigModel] | 累計簽到獎勵設定 |
STSignConfigModel 欄位
| 欄位 | 型別 | 說明 |
|---|---|---|
| rechargeAmount | Int | 充值金額門檻 |
| validBetAmount | Int | 有效投注金額門檻 |
| userProfit | Int | 使用者盈利門檻 |
| signType | Int | 0=手動簽到, 1=自動簽到 |
| awardWay | STAwardType | 0=按順序領獎, 1=按天數領獎 |
| condCare | Int | 條件判斷方式 |
STSignAwardConfigModel 欄位
| 欄位 | 型別 | 說明 |
|---|---|---|
| totalTimes | Int | 累計次數 |
| totalWay | Int | 累計方式 |
| assessmentType | Int | 考核類型 |
| awardId | Int | 獎勵 ID |
| awardName | String | 獎勵名稱 |
| awardType | Int | 獎勵類型(-9=現金, 0=金幣, 3=實物, 8=現金券, 11=VIP經驗值, 12=存送券, 13=流水券, 17=稱號) |
| percentage | Int | 百分比 |
| amount | Int | 金額 |
| desireMultiple | Int | 流水倍數 |
| imgUrl | String | 圖片 URL |
簽到 / 領取累計獎勵
POST api/forehead/activity/act/get — urlForm — STAPI.TaskGetRewardRequest
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| actId | Int | ✅ | 活動 ID |
| actionType | Int | ✅ | 0=簽到, 1=領獎 |
| subId | Int | ✅ | 簽到傳 0,領獎傳獎勵 ID |
| template | String | ✅ | 固定 "signPercentage" |
Response: 無 data,僅 code + message。
可領取狀態檢查
POST api/forehead/activity/act/receive/info — urlForm — STAPI.ActivityActReceiveInfoRequest
無參數,靠 Header token/uid 認證(需 Authorization)。
Response:
| 欄位 | 型別 | 說明 |
|---|---|---|
| goldMallCanReceive | Bool | 金幣商城可領取 |
| inviteCanReceive | Bool | 好友邀請可領取 |
| welfareCanReceive | Bool | 福利中心可領取 |
活動 ID 查詢
POST api/forehead/system/config/images/query — urlForm — STAPI.OperatePicRequest
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| categoryId | String | ✅ | 分類 ID(任務用 "40201") |
Response: [STQueryResponseModel]
| 欄位 | 型別 | 說明 |
|---|---|---|
| id | Int | 記錄 ID |
| categoryId | Int | 分類 ID |
| actionContent | String | 動作內容 |
| actionType | STQueryActionType | 0=無, 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.swift。true= 顯示簽到頁,false= 顯示任務頁) - 簽到獎勵類型判斷:
AwardType(rawValue:)映射;-9, 0, 15 合併為.coin - 簽到百分比:需
actId+template: "signPercentage" - 活動領取 API:通用接口,不同活動類型需不同參數