---
# System prepended metadata

title: Custos Enterprise API - API-013 取得員工 APP 使用歷程 (新)
tags: [新 API]

---

# 取得員工 APP 使用歷程
Custos-EnterpriseAPP-API-013
V3.0
2023.09.14
	
Custos 企業會員之員工登入 Custos Enterprise APP 後，取得個人 APP 使用歷程。

[toc]
## 作業啟動
1. 以傳入之使用者 token 取得使用者流水編號 #emp_data_id
2. 傳入參數 節碳生活功能代碼 #function_id、查詢起始日期 #begin_date、查詢迄止日期 #end_date
3. 記錄 SystemLog：#emp_data_id|取得員工 APP 使用歷程|作業啟動

## API 作業啟動
1. 以 #emp_data_id 取得使用者所屬企業流水編號 #corp_data_id、語系代碼 #language_setting
2. 以 #function_id 分別查詢以下資料表；若 #function_id 未傳則查詢全部資料表

   |#function_id|資料表|說明|
   |-|-|-|
   |1|corp_ls_stairs_records|以 happen_date 為日期條件|
   |2、3、4|corp_ls_photo_album|以 create_date 為日期條件|
   |5、6|corp_ls_transportation_records|以 create_date 為日期條件|


   取得員工 APP 使用歷程紀錄 (若起迄日期未傳入則撈取所有資料)
   參考 SQL：
   *select happen_date as date, function_id, floors as results from corp_ls_stairs_records where corp_data_id = #corp_data_id and emp_data_id = #emp_data_id and happen_date >= '#begin_date' and happen_date <= '#end_date' order by happen_date desc*

   *select create_date as date, function_id, 1 as results from corp_ls_photo_album where corp_data_id = #corp_data_id and emp_data_id = #emp_data_id and create_date >= '#begin_date' and create_date <= '#end_date' order by create_date desc*

   *select create_date as date, function_id, mileage as results from corp_ls_transportation_records where corp_data_id = #corp_data_id and emp_data_id = #emp_data_id and create_date >= '#begin_date' and create_date <= '#end_date' order by create_date desc*

   上述所有資料集全部做 union 後，再依照 date 降冪排序。
   
3. 若需取得腳踏車 (#function_id 為 5) 或大眾運輸 (#function_id 為 6) 之統計數據，需傳入參數 #period，根據下列說明，取得對應數據並計算後，回傳數據陣列及加總數字給 APP：
   |#period|說明|
   |-|-|
   |T|取得當日所有數據資料，以每一筆資料之起始時間降冪排列|
   |D|取得當日 00:00:00 至 23:59:59 之數據資料，以小時為單位加總，記於起始時間；例如：08:10~08:20 有一筆紀錄 3 km，08:35~08:45 有另一筆紀錄 2.8 km，回傳之數據資料應為 08 5.8 km|
   |W|取得前 7 日之數據資料，以 1~7 表示週一到週日；例如 3456712 表示從上週三到本週二|
   |M|取得前 30 日之數據資料，以 YYYY-MM-DD 表示|
   
   **#period 為 T 時需取出 corp_ls_transportation_records.record_id 欄位回傳**

## 作業結束
記錄 SystemLog：#emp_data_id|取得員工 APP 使用歷程|作業結束

## 例外處理
若執行中有發生異常，將攔截到的 exception 訊息記錄 ErrorLog：[YYYYMMDDHHMMSS] EnterpriseAPP-API-013 發生異常：【#攔截到的 exception 訊息】

## 規格及範例
|API No|EnterpriseAPP-API-013|
|-|-|
|API Name|getEmpRecordHistory|
|URL|${url}/APP/getData/getEmpRecordHistory|
|Purpose|取得員工 APP 使用歷程|
|Description|透過 API 取得員工 APP 使用歷程|
|Protocol|JSON over HTTP POST|
|Content-Type|application/json|

**Request**
|參數|型態|必填|長度|說明|
|-|-|:-:|:-:|-|
|token|String|Y||使用者驗證字串|
|function_id|INT|Y||節碳生活功能代碼|
|begin_date|Datetime|N||查詢起始日期|
|end_date|Datetime|N||查詢迄止日期|
|period|String|N|1|統計區間 T/D/W/M；腳踏車與大眾運輸使用|

**Response**
|參數|型態|必回|說明|
|-|-|:-:|-|
|result|String|Y|API 執行結果，Y：成功，N：失敗|
|message|String|N|API 執行失敗的訊息說明|
|total_mileage|INT|N|腳踏車與大眾運輸時回傳之總里程數，單位為公尺|
|total_time|INT|N|腳踏車與大眾運輸時回傳之總分鐘數|
|total_leaves|INT|N|腳踏車與大眾運輸時回傳之總樹葉數|
|data|Object|N|物件陣列，傳回各項節碳生活功能歷程紀錄；result = N 時為空陣列([])|

**Request Sample 1: 查詢使用歷程**
```json
var input = {
  "token": "xxx",
  "function_id": 2,
  "begin_date": "2023-08-01",
  "end_date": "2023-09-30"
}
```

**Request Sample 2: 查詢今日腳踏車紀錄**
```json
var input = {
  "token": "xxx",
  "function_id": 5,
  "period": "T",
}
```

**Request Sample 3: 查詢當日腳踏車紀錄**
```json
var input = {
  "token": "xxx",
  "function_id": 5,
  "period": "D",
}
```

**Request Sample 4: 查詢過去 7 天腳踏車紀錄**
```json
var input = {
  "token": "xxx",
  "function_id": 5,
  "period": "W",
}
```

**Request Sample 5: 查詢過去 30 天腳踏車紀錄**
```json
var input = {
  "token": "xxx",
  "function_id": 5,
  "period": "M",
}
```

**Response Sample 1: 回傳使用歷程 或 今日腳踏車紀錄**
```json
{	
  "result": "Y",	//API 結果，Result = Y 時才會有 data 資料
  "message": "...",	//API 訊息，Ex："執行失敗，原因：XXXXXXXXX"
  "data": [	        //依照日期降冪排列
      {	
         "date": "2023/08/15 08:10:15", 	//歷程紀錄執行時間，取自回傳資料的 date 欄位
         "function_id": 2,	//節碳生活功能 id，取自回傳資料的 function_id
         "results": "10"	//當次已完成數值，取自回傳資料的 results
      },	
      {...}	
   ]	
}
```

**Response Sample 2: 回傳當日腳踏車紀錄**
```json
{	
  "result": "Y",	 //API 結果，Result = Y 時才會有 data 資料
  "message": "...",	 //API 訊息，Ex："執行失敗，原因：XXXXXXXXX"
  "total_mileage": 2723, //腳踏車與大眾運輸時回傳之總里程數，單位為公尺
  "total_time": 17,   //腳踏車與大眾運輸時回傳之總分鐘數
  "total_leaves": 23,    //腳踏車與大眾運輸時回傳之總樹葉數
  "data": [	         
      { 
          "hour": 0,
          "result": "0"
      },
      { 
          "hour": 1,
          "result": "0"
      },
      { 
          "hour": 2,
          "result": "0"
      },
      { ... },
      { 
          "hour": 8,
          "result": "4.1"
      },
      { 
          "hour": 9,
          "result": "0"
      },
      { ... },
      { 
          "hour": 18,
          "result": "4.1"
      },
      { ... },
      { 
          "hour": 23,
          "result": "0"
      },
   ]	
}
```

**Response Sample 3: 過去 7 天腳踏車紀錄**
```json
{	
  "result": "Y",	//API 結果，Result = Y 時才會有 data 資料
  "message": "...",	//API 訊息，Ex："執行失敗，原因：XXXXXXXXX"
  "total_mileage": 2723, //腳踏車與大眾運輸時回傳之總里程數，單位為公尺
  "total_time": 17,   //腳踏車與大眾運輸時回傳之總分鐘數
  "total_leaves": 21,    //腳踏車與大眾運輸時回傳之總樹葉數
  "data": [	        
      { 
          "weekday": 5,   //星期六
          "result": "13"
      },
      { 
          "weekday": 6,   //星期日
          "result": "12"
      },
      { 
          "weekday": 0,   //星期一
          "result": "10.7"
      },
      { 
          "weekday": 1,   //星期二
          "result": "11.5"
      },
      { 
          "weekday": 2,   //星期三
          "result": "9.2"
      },
      { 
          "weekday": 3,   //星期四
          "result": "13"
      },
      { 
          "weekday": 4,   //星期五
          "result": "13"
      }
   ]	
}
```

**Response Sample 4: 回傳過去 30 天腳踏車紀錄**
```json
{	
  "result": "Y",	//API 結果，Result = Y 時才會有 data 資料
  "message": "...",	//API 訊息，Ex："執行失敗，原因：XXXXXXXXX"
  "total_mileage": 2723, //腳踏車與大眾運輸時回傳之總里程數，單位為公尺
  "total_time": 17,   //腳踏車與大眾運輸時回傳之總分鐘數
  "total_leaves": 84,     //腳踏車與大眾運輸時回傳之總樹葉數
  "data": [	        
      { 
          "date": "2023-09-04",
          "result": "13"
      },
      { 
          "date": "2023-09-05",
          "result": "12.1"
      },
      { 
          "date": "2023-09-06",
          "result": "12.3"
      },
      { ... },
      { 
          "date": "2023-10-03",
          "result": "11.8"
      }
   ]	
}
```