---
# System prepended metadata

title: 激勵點數、挑戰任務

---

# 激勵點數、挑戰任務

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


