# 激勵點數、挑戰任務
---
- 常數定義
- [任務分類](#任務分類)
- [任務層級](#任務層級)
- [任務頻率](#任務頻率)
- [任務類型](#任務類型)
- [任務子類型](#任務子類型)
- 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
}
}
}
```