# 激勵點數、挑戰任務 --- - 常數定義 - [任務分類](#任務分類) - [任務層級](#任務層級) - [任務頻率](#任務頻率) - [任務類型](#任務類型) - [任務子類型](#任務子類型) - API 清單 - [我的點數](#我的點數) - [我的每日挑戰任務](#我的每日挑戰任務) - [我的挑戰任務說明](#我的挑戰任務說明) - [我的點數歷史記錄](#我的點數歷史記錄) - [我的點數月份摘要](#我的點數月份摘要) - [系統補點](#系統補點) - [解析系統補點人員清單](#解析系統補點人員清單) - [下載解析系統補點人員錯誤資料檔](#下載解析系統補點人員錯誤資料檔) - [查詢補點列表](#查詢補點列表) - [撤銷補點](#撤銷補點) - [更新補點備註](#更新補點備註) - [刪除補點備註](#刪除補點備註) --- ## 常數定義 ### 任務分類 欄位 | 型態 | 說明 ---|---|--- category | string | 任務分類, PERSONAL:個人, TEAM:團隊, MENTOR:師徒, EVENT:活動, LOYALTY_CARD:集點卡, SYSTEM:系統 ### 任務層級 欄位 | 型態 | 說明 ---|---|--- level | string | 任務層級, BASE:基礎, CONTINUOUS:連續獎勵, RANDOM:隨機獎勵 ### 任務頻率 欄位 | 型態 | 說明 ---|---|--- frequency | string | 任務頻率, DAILY:每日, EVERY_TIME:每次, EVERY_READ:每則, MONTHLY:每月, ONCE:一次 ### 任務類型 欄位 | 型態 | 說明 ---|---|--- taskType | string | 任務類型, CHECK_IN:簽到, MEASURE:量測, HEALTH_EDU:衛教資訊, STEPS:步數, EVENT_SIGN_IN:活動簽到, INVITATION:邀請好友, NEW_MEMBER:新會員, REDEEM_LOYALTY_CARD:集點卡兌換, COMPENSATION:系統補點, MEMBER_CARD:升等/續約會員卡, EVENT_REGISTER:活動註冊贈點, REVOKE_COMPENSATION:撤銷系統補點 ### 任務子類型 欄位 | 型態 | 說明 ---|---|--- taskSubType | string | 任務子類型, BLOOD_PRESSURE:血壓, BLOOD_SUGAR:血糖, BODY_WEIGHT:體重, WATER: 喝水量, DIET_DIARY:飲食記錄 --- #API 清單 ## 我的點數 ```url POST /reward/my-points ``` ### Request-我的點數 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- ### Response-我的點數 欄位 | 型態 | 說明 -----| -----|-------- points | int | 我的點數 ```javascript { "httpCode": 20, "result": { "data": { "points": 100 } } } ``` ## 我的每日挑戰任務 ```url POST /reward/my-daily-tasks ``` ### Request-我的每日挑戰任務 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- ### Response-我的每日挑戰任務 欄位 | 型態 | 說明 -----| -----|-------- daily | json array | 每日挑戰任務task json array advanced | json array | 進階任務task json array #### Response-我的每日挑戰任務-task json 欄位 | 型態 | 說明 -----| -----|-------- category | string | 任務分類, 參閱 [任務分類](#任務分類) level | string | 任務層級, 參閱 [任務層級](#任務層級) frequency | string | 任務頻率, 參閱 [任務頻率](#任務頻率) taskType | string | 任務類型, 參閱 [任務類型](#任務類型) taskSubType | string | 任務子類型, 參閱 [任務子類型](#任務子類型) name | string | 任務名稱 description | string | 任務描述 points | int | 任務點數 completed | boolean | 是否已完成 ```javascript { "httpCode": 200, "result": { "data": { "daily": [ { "category": "PERSONAL", "level": "BASE", "frequency": "DAILY", "taskType": "MEASURE", "taskSubType": "TEMPERATURE", "name": "每日新增體溫紀錄", "description": "一天只算一筆", "points": 2, "completed": true }, { "category": "PERSONAL", "level": "BASE", "frequency": "DAILY", "taskType": "MEASURE", "taskSubType": "BLOOD_PRESSURE", "name": "每日新增血壓紀錄", "description": "一天只算一筆", "points": 2, "completed": false }, ... ], "advanced": [ { "category": "PERSONAL", "level": "CONTINUOUS", "frequency": "EVERY_TIME", "taskType": "CHECK_IN", "taskSubType": null, "name": "連續簽到2天", "description": "連續簽到2天", "points": 3 }, { "category": "PERSONAL", "level": "BASE", "frequency": "DAILY", "taskType": "STEPS", "taskSubType": null, "name": "每日步數5000步", "description": null, "points": 5 }, { "category": "PERSONAL", "level": "BASE", "frequency": "EVERY_TIME", "taskType": "INVITATION", "name": "邀請新好友1位", "description": "成功邀請好友", "points": 150 } ], } } } ``` ## 我的挑戰任務說明 ```url POST /reward/my-tasks-desc ``` ### Request-我的挑戰任務說明 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- ### Response-我的挑戰任務說明 欄位 | 型態 | 說明 -----| -----|-------- checkInList | json array | 簽到任務task json array measureList | json array | 量測任務task json array stepsList | json array | 步數任務task json array healthEduList | json array | 閱讀任務task json array invitationTask | json | 邀請好友任務task json #### Response-我的挑戰任務說明-task json 欄位 | 型態 | 說明 -----| -----|-------- category | string | 任務分類, 參閱 [任務分類](#任務分類) level | string | 任務層級, 參閱 [任務層級](#任務層級) frequency | string | 任務頻率, 參閱 [任務頻率](#任務頻率) taskType | string | 任務類型, 參閱 [任務類型](#任務類型) taskSubType | string | 任務子類型, 參閱 [任務子類型](#任務子類型) name | string | 任務名稱 description | string | 任務描述 points | int | 任務點數 ```javascript { "httpCode": 200, "result": { "data": { "checkInList": [ { "category": "PERSONAL", "level": "BASE", "frequency": "DAILY", "taskType": "CHECK_IN", "taskSubType": null, "name": "每日簽到", "description": "一天只算一筆", "points": 1 }, { "category": "PERSONAL", "level": "CONTINUOUS", "frequency": "EVERY_TIME", "taskType": "CHECK_IN", "taskSubType": null, "name": "連續簽到2天", "description": "連續簽到2天", "points": 3 }, ], "measureList": [ { "category": "PERSONAL", "level": "BASE", "frequency": "DAILY", "taskType": "MEASURE", "taskSubType": "TEMPERATURE", "name": "每日新增體溫紀錄", "description": "一天只算一筆", "points": 2 }, { "category": "PERSONAL", "level": "BASE", "frequency": "DAILY", "taskType": "MEASURE", "taskSubType": "BLOOD_PRESSURE", "name": "每日新增血壓紀錄", "description": "一天只算一筆", "points": 2 }, ... ], "stepsList": [ { "category": "PERSONAL", "level": "BASE", "frequency": "DAILY", "taskType": "STEPS", "taskSubType": null, "name": "每日步數5000步", "description": null, "points": 5 }, { "category": "PERSONAL", "level": "BASE", "frequency": "DAILY", "taskType": "STEPS", "taskSubType": null, "name": "每日步數6000步", "description": null, "points": 6 }, ... ], "healthEduList": [ { "category": "PERSONAL", "level": "BASE", "frequency": "EVERY_READ", "taskType": "HEALTH_EDU", "taskSubType": null, "name": "閱讀衛教訊息", "description": "一則只算一筆", "points": 5 } ], "invitationTask": { "id": "0c85933d-5faa-49af-ae29-cb99501c07a4", "category": "PERSONAL", "level": "BASE", "frequency": "EVERY_TIME", "taskType": "INVITATION", "name": "邀請新好友1位", "description": "成功邀請好友", "points": 150, "createTime": 1660096800000, "updateTime": 1660096800000, "status": true } } } } ``` ## 我的點數歷史記錄 ```url POST /reward/my-points-history ``` ### Request-我的點數歷史記錄 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- logDate | string | N | | 查詢日期, YYYY-MM-DD, 若未帶則預設查詢今日 ```javascript { "logDate": "2021-08-10" } ``` ### Response-我的點數歷史記錄 欄位 | 型態 | 說明 -----| -----|-------- id | string | 歷史記錄id taskId | string | 任務id taskName | string | 任務名稱 points | int | 獲得點數 logDate | timestamp | 記錄日期 createTime | timestamp | 記錄建立時間 ```javascript { "httpCode": 200, "result": { "data": [ { "id": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a", "taskId": "896f1388-6e9c-4d60-9cc1-2b65ab438920", "taskName": "每日新增血壓紀錄", "points": 2, "logDate": 1609545600000, "createTime": 1609545600000 }, ... ] } } ``` ## 我的點數月份摘要 ```url POST /reward/my-points-month-summary ``` ### Request-我的點數月份摘要 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- logDate | string | N | | 查詢日期, YYYY-MM-DD, 若未帶則預設查詢今日 ```javascript { "logDate": "2021-08-10" } ``` ### Response-我的點數月份摘要 欄位 | 型態 | 說明 -----| -----|-------- logDate | timestamp | 記錄日期 points | int | 獲得點數 ```javascript { "httpCode": 200, "result": { "data": [ { "logDate": 1609545600000, "points": 2 }, ... ] } } ``` ## 系統補點 ```url POST /reward-mgmt/system-compensation ``` * 限平台管理員 ### Request-系統補點 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- tenantId | string | Y | 36 | | 補點租戶ID name | string | Y | 100 | | 補點原因 note | string | N | 200 | | 備註 logDate | string | Y | 10 | | 補點日期, 格式(YYYY-MM-DD) memberList | json array | Y | | | 補點人員清單, 透過 [解析系統補點人員清單](#解析系統補點人員清單) API上傳名單後取得 #### Request-系統補點-member json 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- householdMemberId | string | Y | 36 | | householdMemberId points | int | Y | | | 補點點數 ```javascript { "tenantId": "48e948d2-77c8-4078-9e95-676dcb4d597c", "name": "龍舟賽參賽贈點", "note": "", "logDate": "2023-05-22", "memberList": [ { "householdMemberId": "7d02b768-bea0-47e6-8e46-5ce4a80e2160", "points": 300 } ] } ``` ### Response-系統補點 欄位 | 型態 | 說明 -----| -----|-------- data | int | 補點筆數 ```javascript { "httpCode": 200, "result": { "data": 1 } } ``` ## 解析系統補點人員清單 ```url POST /reward-mgmt/parse-member-list ``` * 限平台管理員 ### Request-解析系統補點人員清單 * body format: form-data 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- file | File | Y | | 匯入的excel檔案 ### Error-解析系統補點人員清單 httpCode | 錯誤碼 | 說明 --- | --- | --- 400 | API_ERROR.ARGUMENT_ERROR | 未選擇上傳檔案 400 | API_ERROR.IMPORT_FILE_FORMAT_ERROR | 匯入檔案非excel 格式 ### Response-解析系統補點人員清單 欄位 | 型態 | 說明 --- | --- |--- totalCount | int | 匯入處理筆數 successCount | int | 匯入成功筆數 failCount | int | 匯入失敗筆數 failuresId | string | 匯入失敗檔案下載id memberList | json array | 解析補點人員 json array #### Response-解析系統補點人員清單-解析補點人員 json 欄位 | 型態 | 說明 --- | --- |--- householdMemberId | string | 補點人員householdMemberId mobile | string | 補點人員手機號碼 name | string | 補點人員名稱 points | int | 補點點數 ```javascript { "httpCode": 200, "result": { "data": { "totalCount": 27, "successCount": 26, "failCount": 1, "failuresId": "e872cd21-eb0f-4dac-8b58-0b1fc49361e9", "memberList": [ { "householdMemberId": "dbcc540a-7630-464e-bfaf-73c9bd08aeed", "mobile": "093123345", "name": "王大明", "points": 60 } ] } } } ``` ## 下載解析系統補點人員錯誤資料檔 ```url POST /reward-mgmt/parse-member-list/export-failures ``` * 限平台管理員 ### Request-下載解析系統補點人員錯誤資料檔 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- failuresId | string | Y | 36 | | 匯入失敗檔案下載id ```javascript { "failuresId": "18982a76-7062-44cd-a27e-d132da550b52" } ``` ### Error-下載解析系統補點人員錯誤資料檔 httpCode | 錯誤碼 | 說明 --- | --- | --- 422 | SERVICE_ERROR.RESOURCE_NOT_EXISTS | 資源不存在 ### Response-下載解析系統補點人員錯誤資料檔 ``` File name: 系統補點人員解析錯誤資料檔.xlsx ``` ## 查詢補點列表 ```url POST /reward-mgmt/system-compensation/query ``` * 限平台管理員 ### Request-查詢補點列表 #### Request-查詢補點列表-query (查詢條件json) 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- startDate | date | | | | 查詢起日 endDate | date | | | | 查詢迄日 tenantId | string | | 36 | | 補點機構組織tenantId keyword | string | | 100 | | 關鍵字查詢, 點數名稱或人員名稱, 手機號碼 #### Request-查詢補點列表-pagination (分頁json) 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- current | int | | 1 | 當前頁數 pageSize | int | | 10 | 每頁結果數量,-1 為顯示所有 #### Request-查詢補點列表-sorter (排序json) 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- field | string | | updateTime | 排序欄位,可排序欄位有 logDate, compensationName, points, tenantName, name, department, updateTime order | string | | desc | 升序或降序 ```javascript { "query": { "startDate": null, "endDate": null, "tenantId": null, "keyword": null }, "pagination": { "current": 1, "pageSize": 10 }, "sorter": { "field": "updateTime", "order": "desc" } } ``` ### Response-查詢補點列表 欄位 | 型態 | 說明 -----| -----|-------- rphId | string | 補點記錄id logDate | timestamp | 補點日期 compensationName | string | 補點名稱 points | int | 補點點數 name | string | 補點人員名稱 householdMemberId | string | 補點人員 householdMemberId mobile | string | 補點人員手機號碼 tenantId | string | 補點機構組織tenantId tenantName | string | 補點機構組織名稱 updateTime | timestamp | 更新日期 note | string | 備註 ```javascript { "httpCode": 200, "result": { "data": [ { "rphId": "faa764c9-94a0-47b0-b31b-e66cab7885f7", "logDate": 1686585600000, "compensationName": "a", "points": 1, "name": "becca", "householdMemberId": "c0fbb6d5-53c4-4962-bc17-1591e4903b2f", "mobile": "0933816312", "tenantId": "5efcfd67-334e-45b3-bf49-7e52f5172891", "tenantName": "企客第一家", "updateTime": 1686650293982, "note": "this is note.." }, ... ], "pagination": { "current": 1, "pageSize": 10, "total": 15 }, "sorter": { "field": "updateTime", "order": "desc" }, "total": 15 } } ``` ## 撤銷補點 ```url POST /reward-mgmt/system-compensation/revoke ``` * 限平台管理員 ### Request-撤銷補點 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- rphId | string | Y | 36 | | 補點記錄id ```javascript { "rphId": "01dd3c12-674a-4dd2-ae7e-5bc63da91afc" } ``` ### Error-撤銷補點 httpCode | 錯誤碼 | 說明 --- | --- | --- 400 | API_ERROR.NOT_EXIST | 資料不存在 422 | SERVICE_ERROR.REWARD_MGMT_REVOKE_COMPENSATION_ALREADY | 系統補點已撤銷過 422 | SERVICE_ERROR.REWARD_MGMT_USER_REWARD_POINT_NOT_ENOUGH | 使用者點數不足 422 | SERVICE_ERROR.REWARD_MGMT_SYSTEM_COMPENSATION_TASK_NOT_EXISTS | 系統補點任務不存在 422 | SERVICE_ERROR.SYSTEM_COMPENSATION_EVENT_NOT_FOUND | 系統補點事件不存在 422 | SERVICE_ERROR.REWARD_MGMT_REVOKE_COMPENSATION_FAIL | 撤銷補點失敗 ### Response-撤銷補點 欄位 | 型態 | 說明 -----| -----|-------- id | string | 撤銷補點使用者點數記錄id householdMemberId | string | 撤銷補點使用者householdMemberId points | int | 撤銷補點使用者現存點數 ```javascript { "httpCode": 200, "result": { "data": { "id": "c428d4a8-853c-473f-971c-dfd693ee9e71", "householdMemberId": "68b135a5-7de3-4c84-8334-4d264689a971", "points": 2, "createTime": 1686041237489, "updateTime": 1687254783543 } } } ``` ## 更新補點備註 ```url POST /reward-mgmt/system-compensation/update-note ``` * 限平台管理員 * 未執行更新補點備註API前, 在查詢時會顯示補點事件所建立的備註 ### Request-更新補點備註 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- rphId | string | Y | 36 | | 補點記錄id note | string | Y | 200 | | 補點記錄備註 ```javascript { "rphId": "01dd3c12-674a-4dd2-ae7e-5bc63da91afc", "note": "This is note..." } ``` ### Error-更新補點備註 httpCode | 錯誤碼 | 說明 --- | --- | --- 400 | API_ERROR.NOT_EXIST | 資料不存在 ### Response-更新補點備註 欄位 | 型態 | 說明 -----| -----|-------- rphId | string | 補點記錄id note | string | 補點記錄備註 ```javascript { "httpCode": 200, "result": { "data": { "rphId": "01dd3c12-674a-4dd2-ae7e-5bc63da91afc", "note": "This is note..." } } } ``` ## 刪除補點備註 ```url POST /reward-mgmt/system-compensation/delete-note ``` * 限平台管理員 * 刪除自訂備註後, 查詢時會顯示回原本補點事件的備註 ### Request-刪除補點備註 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- rphId | string | Y | 36 | | 補點記錄id ```javascript { "rphId": "01dd3c12-674a-4dd2-ae7e-5bc63da91afc" } ``` ### Error-刪除補點備註 httpCode | 錯誤碼 | 說明 --- | --- | --- 400 | API_ERROR.NOT_EXIST | 資料不存在 ### Response-刪除補點備註 欄位 | 型態 | 說明 -----| -----|-------- count | int | 刪除資料筆數, count > 0 時表示刪除成功 ```javascript { "httpCode": 200, "result": { "data": { "count": 1 } } } ```