# Yake Mobile API
資料更新時間:2024/04/1
## 異動內容(2024/04/1)
1.authTokene改authorization
2.關鍵字查詢Menber的response漏了一個firstOperationDate
3.更新使用者個人資訊,新增type, 9:首次記錄日期(firstOperationDate)
## 名詞定義
* User:醫生、美容師
* Member:會員、顧客、病患
## Server統一回傳格式
``` json
// status : 0成功、1失敗、2token過期
//response of successful request:
{
"status": "0",
"data": {
//API 回傳內容
},
"message": "" // Or optional success message
}
//response of failed request:
{
"status": "1",
"data": null, // Or optional success message
"message": "Error Message" // Error Message
}
```
## User
### [POST] /user/Login
>說明:
>首次當入的話,參數帶account、passWord、serialNumber,Responses收到loginToken跟authToken。
>之後登入,參數帶account、passWord、loginToken,Responses收到authToken。
##### Headers
> 無
##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |account|required|String|帳號|
> |passWord|required|String|密碼|
> |serialNumber|optional|String|序號|
> |loginToken|optional|String|loginToken|
##### Responses
``` json
//如果參數收到serialNumber,就回傳loginToken跟authToken。
//如果參數收到loginToken,就回傳loginToken。
{
"loginToken" : "loginToken", // 後需登入,使用的token
"authorization" : "authorization", // 後續call api時,提server辨識身份。
}
```
### [GET] /user/getOTP
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|
##### Paremeters
>無
##### Responses
``` json
{
"otp" : "123456",
}
```
## Member 查詢
### [GET] /member/searchByMemberData 個資查詢Menber
> 說明:
> 依照給的參數條件去做搜尋。參數name、phone、birthDay、memberID,同時只會存在一種。
> 有可能比對到多人,所以回傳MemberData array,MemberData只包含使用者的基本資料(List頁面呈現)
> MemberData如Responses所示。
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|
##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |name|optional|String|會員姓名|
> |phone|optional|String|電話|
> |birthDay|optional|String|生日(yyyy/mm/dd)|
> |memberID|optional|String|編號|
##### Responses
> 參數name、phone、birthDay、memberID,同時只會存在一種
> 有可能比對到多人,所以回傳MemberData array
> MemberData只包含使用者的基本資料(List頁面呈現)
``` json
[
{
"memberID" : "memberID",
"name" : "memberName",
"gender" : 1,
"birthDay" : "yyyy/mm/dd",
"mobile" : "member手機",
"phone" : "member電話",
"height" : 170.2, //Double
"weight" : 50.1, //Double
"addredss" : "member住址",
"firstOperationDate" : "yyyy/mm/dd",
}
]
```
---
### [GET] /member/searchByKeyWord 關鍵字查詢Menber
> 說明:
> 相較於searchByMemberData回傳的的MemberData,關鍵字查詢需要多給relatvie以利List畫面呈現
> keyword、searchType 希望也一並附在Responses
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|
##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |type|required|Int|查詢標的,0:事件紀錄、1:施作紀錄、2:購買紀錄、3:備註紀錄、4:施作產品紀錄、5:施作材料紀錄|
> |keyWord|required|String|關鍵字|
##### Responses
``` json
{
"keyword": "痘疤",
"searchType": 1, // 1:施作紀錄
"result": [{
"memberID" : "memberID",
"name" : "memberName",
"gender" : 1,
"birthDay" : "yyyy/mm/dd",
"mobile" : "member手機",
"phone" : "member電話",
"height" : 170.2,
"weight" : 50.1,
"addredss" : "member住址",
"firstOperationDate" : "yyyy/mm/dd",
"relative": "因為什麼原因,施作痘疤修復療程,然後怎樣怎樣"
},]
}
```
---
### [POST][multipart] /member/searchByPhoto 基礎照片查詢Menber
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|
##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |photo|required|multipart/form-data|照片檔(PNG)|
##### Responses
> 同searchByMemberData的回傳
---
### [GET] /member/getMemberDetail 取得Member所有資料
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|
##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|
##### Responses
``` json
{
"memberID" : "memberID",
"name" : "memberName",
"gender" : 1,
"birthDay" : "yyyy/mm/dd",
"mobile" : "member手機",
"phone" : "member電話",
"height" : 170.2,
"weight" : 50.1,
"addredss" : "member住址",
"firstOperationDate" : "yyyy/mm/dd",
"eventRecord" : [ //事件紀錄
{
"eventId":123, //事件ID
"name":"事件名稱",
"content":"事件描述內容....",
},
],
"operationRecord" : [ //操作紀錄
{
"operationId":123, //操作紀錄ID
"name":"施作方式",
"date":"yyyy/mm/dd", //施作日期
"method":"施作方法",
"material":"使用材料",
"materialCosts":2000, //材料費用
"operationCosts":20000, //施作費用
},
],
"purchaseRecord" : [ //購買紀錄
{
"purchaseId":123, //購買紀錄ID
"name":"產名稱",
"date":"yyyy/mm/dd", //購買日期
"count":5, //購買數量
"unitPrice":500, //單價
"totalPrice":2500, //總價
},
],
"note" : "備註備註", //備註
"basicPhoto" : "basicPhoto", // 基礎照片網址
"photo" : [ // 其他照片網址
{
"photoId":123, //購買紀錄ID
"url":"photo_url", //相片網址
"date":"yyyy/mm/dd", //相片日期
"description":"XXX手術", //相片描述
},
],
}
```
---
## MemberData 更新
### [POST][multipart] /member/updateMemberPhoto 更新基礎照片
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|
##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|
> |photo|required|multipart/form-data|照片檔(PNG) |
##### Responses
``` json
{
"status": "success", // or "error"
"message": "" /* Or optional success message */
}
```
---
### [POST] /member/updateMemberData 更新使用者個人資訊
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|
##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|
> |type|required|Int|更改標的,0:姓名、1:手機、2:市話、3:生日、4:身高、5:體重、6:住址、7:性別、8:備註、9:首次記錄日期(firstOperationDate)|
> |content|required|String|回傳內容,如果是性別,會回傳Int。身高、體重會回傳Double|
##### Responses
``` json
{
"status": "success",
"data": null,
"message": ""
}
```
### [POST] /member/updateEventRecord 更新事件紀錄
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|
##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|
> |eventId|required|String| 事件ID|
> |name|required|String|事件名稱|
> |content|required|String|事件描述內容|
##### Responses
``` json
{
"status": "success",
"data": null,
"message": ""
}
```
### [POST] /member/updateOperationRecord 更新操作紀錄
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|
##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|
> |operationId|required|String| operationId|
> |name|required|String|施作方式|
> |date|required|String|yyyy/mm/dd 施作日期|
> |method|required|String|施作方法|
> |material|required|String|使用材料|
> |materialCosts|required|Int|材料費用|
> |operationCosts|required|Int|施作費用|
##### Responses
``` json
{
"status": "success",
"data": null,
"message": ""
}
```
### [POST] /member/updatePurchaseRecord 更新購買紀錄
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|
##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|
> |purchaseId|required|String| 購買紀錄ID|
> |name|required|String|產品名稱|
> |date|required|String|yyyy/mm/dd 購買日期|
> |count|required|Int|購買數量|
> |unitPrice|required|Int|單價|
> |totalPrice|required|Int|總價|
##### Responses
``` json
{
"status": "success",
"data": null,
"message": ""
}
```
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|
##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|
> |type|required|Int|更改標的,0:事件紀錄、1:施作紀錄、2:購買紀錄、3:備註紀錄|
> |recordID|required|String| 如果是事件就是事件ID,施作紀錄就是施作紀錄ID,以此類推。(備註紀錄沒有ID,所以填寫null)|
> |content|required|String|如果事件紀錄就會是回傳事件紀錄的格式,以此類推|
##### Responses
``` json
{
"status": "success",
"data": null,
"message": ""
}
```
## MemberData 刪除照片
### [GET] /member/deleteMemberPhoto
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|
##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|
> |photoID|required|String|要刪除的photoID|
##### Responses
``` json
{
"status": "success", // or "error"
"message": "" /* Or optional success message */
}
```
---
## MemberData 新增
### [POST][multipart] /member/add 新增使用者
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|
##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberData|required|JsonString|會員資料,範例如下|
> |basicPhoto|required|multipart/form-data|照片檔(PNG) |
```json
//會員資料JsonString
{
"name" : "memberName",
"gender" : 1,
"birthDay" : "yyyy/mm/dd",
"mobile" : "member手機",
"phone" : "member電話",
"height" : 172.0, //Double
"weight" : 55.0, //Double
"addredss" : "member住址",
"firstOperationDate" : "yyyy/mm/dd",
"eventRecord" : [ //事件紀錄
{
"eventId":123, //事件ID
"name":"事件名稱",
"content":"事件描述內容....",
},
],
"operationRecord" : [ //操作紀錄
{
"operationId":123, //操作紀錄ID
"name":"施作方式",
"date":"yyyy/mm/dd", //施作日期
"method":"施作方法",
"material":"使用材料",
"materialCosts":2000, //材料費用
"operationCosts":20000, //施作費用
},
],
"purchaseRecord" : [ //購買紀錄
{
"purchaseId":123, //購買紀錄ID
"name":"產名稱",
"date":"yyyy/mm/dd", //購買日期
"count":5, //購買數量
"unitPrice":500, //單價
"totalPrice":2500, //總價
},
],
"note" : "備註備註", //備註
"photo" : [ // 其他照片網址
{
"photoId":123, //購買紀錄ID
"url":"photo_url", //相片網址
"date":"yyyy/mm/dd", //相片日期
"description":"XXX手術", //相片描述
},
],
}
```
##### Responses
``` json
{
"status": "success",
"data": null,
"message": ""
}
```
---
### [POST][multipart] /member/addMemberPhoto 新增照片
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|
##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |date|required|String|yyyy/mm/dd|
> |description|required|String|相片描述|
> |photo|required|multipart/form-data|照片檔(PNG) |
##### Responses
``` json
{
"status": "success",
"data": null,
"message": ""
}
```
---