owned this note
owned this note
Published
Linked with GitHub
:::spoiler API 清單
[TOC]
:::
# 飲食紀錄管理
## 常數定義
### 食物分類
欄位 | 型態 | 說明
---|---|---
category | string | WHOLE_GRAINS: 全榖雜糧, LEGUME_FISH_MEAT_EGG: 豆魚肉蛋, DAIRY: 乳製品, VEGETABLES: 蔬菜, FRUITS: 水果, OILS_AND_NUTS: 食用油與堅果, DRINK: 飲料, OTHER: 其他
### 食物類型-LEGUME_FISH_MEAT_EGG
欄位 | 型態 | 說明
---|---|---
type | string | LOW_FAT: 低脂, MEDIUM_FAT: 中脂, HIGH_FAT: 高脂, VERY_HIGH_FAT: 超高脂
### 食物類型-DAIRY
欄位 | 型態 | 說明
---|---|---
type | string | LOW_FAT: 低脂, WHOLE_FAT: 全脂, SKIM: 脫脂
### 食物類型-VEGETABLES
欄位 | 型態 | 說明
---|---|---
type | string | RAW: 生, COOKED: 熟
### 食物類型-OILS_AND_NUTS
欄位 | 型態 | 說明
---|---|---
type | string | OIL: 食用油, NUT: 堅果
### 食物類型-DRINK
欄位 | 型態 | 說明
---|---|---
type | string | WATER: 水, FULL_SUGAR: 全糖, LESS_SUGAR: 少糖, HALF_SUGAR: 半糖, QUARTER_SUGAR: 微糖, SUGAR_FREE: 無糖
### 用餐時段
欄位 | 型態 | 說明
---|---|---
timePeriod | int | ALL: -1(查詢用), 早上: 1, 中午: 2, 晚上: 3, 睡前: 4
### 用餐餐別
欄位 | 型態 | 說明
---|---|---
timePeriodType | int | ALL: -1(查詢用), <br/> **早上**<br/> 早餐: 10, 早午餐: 11, 運動前一小時: 12, 運動前兩小時: 13, 運動後一小時: 14, 運動後兩小時: 15, <br/> **中午**<br/> 午餐: 20, 下午茶: 21, 運動前一小時: 22, 運動前兩小時: 23, 運動後一小時: 24, 運動後兩小時: 25, <br/> **晚上**<br/> 晚餐: 30, 點心: 31, 運動前一小時: 32, 運動前兩小時: 33, 運動後一小時: 34, 運動後兩小時: 35 <br/> **睡前**<br/> 40:宵夜, 運動前一小時: 42, 運動前兩小時: 43, 運動後一小時: 44, 運動後兩小時: 45
### 烹調方式
欄位 | 型態 | 說明
---|---|---
type | string | FAT_FREE: 無油, FRY: 非油炸, FRIED: 油炸
### 額外加糖
欄位 | 型態 | 說明
---|---|---
type | string | NONE: 無添加, WITH_SUGAR: 加糖
### 餐盤狀態
欄位 | 型態 | 說明
---|---|---
status | string | DRAFT: 草稿, PUBLISHED: 已發布
### 飲食記錄方式
欄位 | 型態 | 說明
---|---|---
diaryRecordType | string | DIET_PLAN: 我的餐盤, FOOD_DB: 食品資料庫
### 飲食分數查詢區間類別
欄位 | 型態 | 說明
---|---|---
scorePeriod | string | DAILY: 日, WEEKLY: 週, MONTHLY: 月
## Schema
### 飲食紀錄目標(DietGoal)
Name | Type | 說明
--- | --- | ---
weight | double | 標準體重
targetCalorie | double | 目標熱量(kCal)
protein | double | 蛋白質(g)
carbohydrate | double | 碳水化合物(g)
fat | double | 脂肪(g)
example:
```javascript
{
"weight": 65,
"targetCalorie": 1883,
"protein": 78,
"carbohydrate": 56,
"fat": 60
}
```
### 食品(DietFood)
Name | Type | 說明
--- | --- | ---
id | int | 食品id
foodNo | string | 食品編號
foodType | string | 食品分類
name | string | 食品名稱
quantity | string | 數量(每100g可食用含量)
unit | string | 單位(每100g可食用含量)
calorie | double | 修正熱量(kcal)
protein | double | 粗蛋白(g)
dietaryFiber | double | 膳食纖維(g)
carbohydrate | double | 總碳水化合物(g)
fat | double | 粗脂肪(g)
size | string | 份量
example:
```javascript
{
"id": 940,
"foodNo": "I0400301",
"foodType": "肉類",
"name": "烏骨雞",
"quantity": 100,
"unit": "g",
"calorie": 213.0,
"protein": 17.9,
"fat": 15.1,
"carbohydrate": 0.8,
"size": "份"
}
```
### 飲食紀錄圖片 (DietDiaryImage)
Name | Type | 建立時傳入 | 說明
--- | --- | --- | ---
id | string | N | 飲食紀錄圖片id
image | string | Y | 新增時,APP 會傳入圖片 base64 字串,後端會儲存成影像檔後,在 image 屬性裡存入飲食紀錄圖片 url
imageType | string | N | enum: ['jpg', 'png']
time | timestamp | Y | 飲食紀錄時間
timePeriod | int | Y | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | Y | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
example:
```javascript
//Upload
{
"image": "圖片BASE64編碼",
"time": 1615249186619,
"timePeriod": 1,
"timePeriodType": 10
}
//Response
{
"id": "6eff39d7-8287-4ce0-abd0-7940338a6e17",
"image": "http://content-service/swift/v1/diet/diary/8985df36-c3a7-464b-9f53-c453a953be15.png",
"time": 1615249186619,
"timePeriod": 1,
"timePeriodType": 10
}
```
### 飲食紀錄 (DietDiary)
Name | Type | 建立時傳入 | 說明
--- | --- | --- | ---
id | long | N | 飲食紀錄id
time | timestamp | Y | 飲食紀錄時間
hhmmOfTime | int | N | time 的 hhmm 格式,比如早上 10:30, 這個值就是 1030,作為搜尋的條件之用
timePeriod | int | Y | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | Y | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
foodId | int | Y | 飲食紀錄的的食品編號 (-1則為自訂飲食名稱, 或是記錄方式為使用我的餐盤計劃)
foodName | string | - | 如果foodId = -1,且記錄方式為食品資料庫時則為必填,<br/>**當foodCategoryId為其他食材時必填**
timeAndTimePeriodType | timestamp | N | 作為排序之用,先依 time 排出每日的飲食紀錄,再依 timePeriodType 來排序
quantity | double | Y | 飲食紀錄的的食品數量
calorie | double | N | 建議熱量 (需乘上 quantity,四捨五入到小數點第一位),<br/>**當foodCategoryId為其他食材時, calorie會由使用者輸入的protein, carbohydrate, fat及quantity計算出來**
protein | double | N | 建議蛋白質 (需乘上 quantity,四捨五入到小數點第一位),<br/>**當foodCategoryId為其他食材時, 開放使用者可以輸入, 表示1份的值**
dietaryFiber | double | N | 建議膳食纖維 (需乘上 quantity,四捨五入到小數點第一位)
carbohydrate | double | N | 建議碳水化合物 (需乘上 quantity,四捨五入到小數點第一位),<br/>**當foodCategoryId為其他食材時, 開放使用者可以輸入, 表示1份的值**
fat | double | N | 脂肪 (需乘上 quantity,四捨五入到小數點第一位),<br/>**當foodCategoryId為其他食材時, 開放使用者可以輸入, 表示1份的值**
foodCategoryId | string | Y | 食材營養素id, 飲食記錄方式使用我的餐盤計劃時為必填
plateId | string | N | 目前使用的我的餐盤id
cookedType | string | Y | 飲食記錄方式使用我的餐盤計劃時, 食材的烹調方式, 參閱 [烹調方式](#烹調方式)
addedSugar | string | Y | 飲食記錄方式使用我的餐盤計劃時, 食材是否額外加糖, 參閱 [額外加糖](#額外加糖)
foodCategory | string | N | 飲食記錄方式使用我的餐盤計劃時, 食物分類, 參閱[食物分類](#食物分類)
foodCategoryType | string | N | 飲食記錄方式使用我的餐盤計劃時, 食物類型, 請參閱[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
remark | string | N | 飲食記錄備註, 一個餐別只會有一個備註
isSaveMe | boolean | N | 是否將其他記錄方式的食品加入到常用清單裡
example:
```javascript
//飲食記錄方式-食品資料庫(原本API使用方式)
{
"id": 1,
"time": 1585546156101,
"timePeriod": 2,
"timePeriodType": 21,
"foodId": 12,
"quantity": 2,
"calorie": 500,
"protein": 12.9,
"dietaryFiber": 8.09,
"carbohydrate": 73.0587,
"fat": 30
}
//飲食記錄方式-我的餐盤計劃
{
"id": 1,
"time": 1585546156101,
"timePeriod": 2,
"timePeriodType": 21,
"foodId": -1,
"foodName": "豆魚肉蛋(中脂)(非油炸)",
"quantity": 2,
"calorie": 500,
"protein": 12.9,
"dietaryFiber": 8.09,
"carbohydrate": 73.0587,
"fat": 30,
"foodCategoryId": "5ac5e206-881d-4d0d-b6b7-6ef9c61713b4",
"plateId": null,
"cookedType": "FRY",
"addedSugar": null
}
```
## API
### 取得飲食目標[WEB/APP]
```url
POST /diet/goal
```
#### Request
欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明
---|---|---|---|---|---
householdMemberId | string | Y | | | App User不用填,會由token取得
```javascript
{
"householdMemberId": "8e19e873-a043-4c1d-9259-f95d78881ea7"
}
```
#### Response (成功):
```javascript
{
"httpCode": 200,
"result": {
"data": {
"weight": 75.6,
"targetCalorie": 2268.0,
"protein": 85.1,
"fat": 75.6,
"carbohydrate": 311.9
}
}
}
```
### 新增飲食紀錄[APP]
```url
POST /diet/diary/bulkAdd
```
* 當新增其他食材時, foodName為必填, 並開放protein, carbohydrate, fat 讓使用者可以輸入
- protein, carbohydrate, fat 輸入的值代表的是1份的數值
- calorie 會由使用者輸入的 protein, carbohydrate, fat 及份量去計算出來
- calorie = (protein * 4 + carbohydrate * 4 + fat * 9) * quantity
#### Request
```javascript
//飲食記錄方式-食品資料庫(原本API使用方式)
{
"householdMemberId":"123", //App User不需填
"remark": "備註",
"dietDiaryList": [
{
"time": 1608145199000,
"timePeriod": 3,
"timePeriodType": 30,
"foodId": -1,
"quantity": 1,
"foodName": "大腸包小腸"
},
...
]
}
//飲食記錄方式-我的餐盤計劃
{
"householdMemberId":"123", //App User不需填
"remark": "備註",
"dietDiaryList": [
{ //一般六大營養素食材
"time": 1608145199000,
"timePeriod": 2,
"timePeriodType": 21,
"foodId": -1,
"quantity": 2,
"foodCategoryId": "5ac5e206-881d-4d0d-b6b7-6ef9c61713b4",
"plateId": null,
"cookedType": "FRY",
"addedSugar": null
},
{ //其他記錄方式, 使用者自行輸入
"time": 1608145199000,
"timePeriod": 2,
"timePeriodType": 21,
"foodId": -1,
"quantity": 1,
"foodCategoryId": "db3bdb82-f814-457f-a588-869871671cb8",
"plateId": null,
"foodName": "大俠愛吃漢堡包",
"calorie": null,
"protein": 35,
"carbohydrate": 250,
"fat": 87,
"isSaveMe": true,
}
]
}
```
#### Response
```javascript
//飲食記錄方式-食品資料庫(原本API使用方式)
{
"httpCode": 200,
"result": {
"data": [
{
"householdMemberId": "123",
"time": 1585546156101,
"hhmmOfTime": 1126,
"timePeriod": 2,
"timePeriodType": 21,
"foodId": 0,
"foodName": "test food",
"timeAndTimePeriodType": 1607961600021,
"quantity": 2,
"calorie": 0,
"protein": 0,
"dietaryFiber": 0,
"carbohydrate": 0,
"fat": 0,
"createdAt": 1608002816917
}
]
}
}
//飲食記錄方式-我的餐盤計劃
{
"httpCode": 200,
"result": {
"data": [
{
"householdMemberId": "123",
"time": 1585546156101,
"hhmmOfTime": 1126,
"timePeriod": 2,
"timePeriodType": 21,
"foodId": -1,
"foodName": "豆魚肉蛋(中脂)(非油炸)",
"timeAndTimePeriodType": 1607961600021,
"quantity": 2,
"calorie": 0,
"protein": 0,
"dietaryFiber": 0,
"carbohydrate": 0,
"fat": 0,
"createdAt": 1608002816917,
"foodCategoryId": "5ac5e206-881d-4d0d-b6b7-6ef9c61713b4",
"plateId": null,
"cookedType": "FRY",
"addedSugar": null
}
]
}
}
```
### 依飲食紀錄餐別整批更新[APP]
```url
POST /diet/diary/bulkUpdate
```
依照PayLoad陣列裡面的timePeriod來批次刪除並批次新增
#### Request
```javascript
//飲食記錄方式-食品資料庫(原本API使用方式)
{
"householdMemberId":"123", //APP User不需填
"date":"2020/12/15",
"timePeriod": 2,
"timePeriodType": 21,
"remark": "備註",
"dietDiaryList": [
{ //old data
"id": 123,
"time": 1608145199000,
"foodId": 19,
"quantity": 1
},
{ // new data
"time": 1585546156101,
"foodId": -1,
"quantity": 1,
"foodName": "大腸包小腸"
},
...
]
}
//飲食記錄方式-我的餐盤計劃
{
"householdMemberId":"123", //APP User不需填
"date":"2020/12/15",
"timePeriod": 2,
"timePeriodType": 21,
"remark": "備註",
"dietDiaryList": [
{ //old data
"id": 123,
"time": 1608145199000,
"foodId": -1,
"quantity": 2,
"foodCategoryId": "5ac5e206-881d-4d0d-b6b7-6ef9c61713b4",
"plateId": null,
"cookedType": "FRY",
"addedSugar": null
},
{ // new data
"time": 1585546156101,
"foodId": -1,
"quantity": 1,
"foodCategoryId": "3bab6bb8-b286-4ccd-9de3-bc282acdb090",
"plateId": null,
"cookedType": "FRY",
"addedSugar": null
}
]
}
```
#### Response
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": 20,
"image": "diet/diary/70137f1c-e68d-4644-bd06-f7b1fee29978.png",
"householdMemberId": "123",
"time": 1608002816917,
"hhmmOfTime": 1126,
"timePeriod": 2,
"timePeriodType": 21,
"foodId": 11,
"foodName": "低筋麵粉",
"timeAndTimePeriodType": 1607961600021,
"quantity": 1,
"calorie": 359,
"protein": 8,
"dietaryFiber": 2,
"carbohydrate": 78,
"fat": 1,
"createdAt": 1608101032626
}
]
}
}
```
### 依飲食紀錄餐別整批更新-新版[APP]
```url
POST /diet/diary/bulk-update-new
```
* 依照PayLoad裡面的oldTime, oldTimePeriod, oldTimePeriodType 來批次刪除並批次新增
#### Request
欄位 | 型態 | Required | 長度限制 | 預設 | 說明
---- | --- | --- | --- | --- | ---
oldTime | timestamp | Y | | | 要修改的原飲食記錄日期
oldTimePeriod | int | Y | | | 要修改的原飲食記錄用餐時段, 參閱 [用餐時段](#用餐時段)
oldTimePeriodType | int | Y | | | 要修改的原飲食記錄用餐餐別, 參閱 [用餐餐別](#用餐餐別)
newTime | timestamp | Y | | | 變更後的飲食記錄日期
newTimePeriod | int | Y | | | 變更後的飲食記錄用餐時段, 參閱 [用餐時段](#用餐時段)
newTimePeriodType | int | Y | | | 變更後的飲食記錄用餐餐別, 參閱 [用餐餐別](#用餐餐別)
dietDiaryList | json array | Y | | | 飲食記錄 json array, payload裡的time, timePeriod, timePeriodType不用填, 會由newTime, newTimePeriod, newTimePeriodType帶入, 其餘欄位參閱 [新增飲食紀錄APP](#新增飲食紀錄APP)
```javascript
//飲食記錄方式-食品資料庫(原本API使用方式)
{
"oldTime": 1675825132000,
"oldTimePeriod": 1,
"oldTimePeriodType": 10,
"newTime": 1676003400000,
"newTimePeriod": 2,
"newTimePeriodType": 20,
"remark": "備註",
"dietDiaryList": [
{
"foodId": 1234,
"quantity": 1,
"foodName": "大腸包小腸"
},
...
]
}
//飲食記錄方式-我的餐盤計劃
{
"oldTime": 1675825132000,
"oldTimePeriod": 1,
"oldTimePeriodType": 10,
"newTime": 1676003400000,
"newTimePeriod": 2,
"newTimePeriodType": 20,
"remark": "備註",
"dietDiaryList": [
{
"foodId": -1,
"quantity": 1,
"foodCategoryId": "3bab6bb8-b286-4ccd-9de3-bc282acdb090",
"plateId": null,
"cookedType": "FRY",
"addedSugar": null
}
]
}
```
#### Response
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": 2096,
"householdMemberId": "c0fbb6d5-53c4-4962-bc17-1591e4903b2f",
"time": 1670660760000,
"hhmmOfTime": 1626,
"timePeriod": 2,
"timePeriodType": 20,
"foodId": -1,
"foodName": "豆魚肉蛋(中脂)(非油炸)",
"timeAndTimePeriodType": 1670601600020,
"quantity": 1,
"calorie": 88,
"protein": 7,
"dietaryFiber": 0,
"carbohydrate": 0,
"fat": 6.67,
"createdAt": 1679905292839,
"foodCategoryId": "5ac5e206-881d-4d0d-b6b7-6ef9c61713b4",
"cookedType": "FRY"
},
...
]
}
}
```
### 編輯飲食紀錄[APP]
```url
PUT /diet/diary/:id
```
#### Request
```javascript
{
"time": "1585546156101",
"timePeriod": "2",
"timePeriodType": "21 ",
"foodId": 12,
"quantity": 2
}
```
#### Response
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": 5,
"time": 1585546157101,
"hhmmOfTime": 1329,
"foodName": "小麥胚芽",
"timeAndTimePeriodType": 1585497600021,
"calorie": 792,
"protein": 63,
"dietaryFiber": 20,
"carbohydrate": 96,
"fat": 23
}
}
}
```
### 查詢飲食紀錄[APP]
```url
GET /diet/diary/$id
```
#### Response
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": 12,
"householdMemberId": "123",
"time": 1608159599000,
"hhmmOfTime": 659,
"timePeriod": 3,
"timePeriodType": 31,
"foodId": 17,
"foodName": "餛飩皮",
"timeAndTimePeriodType": 1608134400031,
"quantity": 1,
"calorie": 268,
"protein": 8,
"dietaryFiber": 2,
"carbohydrate": 58,
"fat": 1,
"createdAt": 1608100300826
}
}
}
```
### 查詢飲食紀錄列表[APP/WEB]
```url
POST /diet/diary (WEB/APP 共用)
```
#### Request
欄位 | 型態 | 預設 | 說明
--- | --- | --- |---
query | json | | 查詢條件json
pagination | json | | 分頁json
sorter | json | | 排序json
##### query (查詢條件json)
欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明
---|---|---|---|---|---
householdMemberId | string | | | | 要搜尋的 householdMemberId,若沒有傳入 householdMemberId,就以改由 token 取得個案資料
startedAt | timestamp | | | | 要搜尋的日期區間
endAt | timestamp | | | | 要搜尋的日期區間
timePeriod | int | | | -1 | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | | | -1 | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
##### pagination (分頁json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
current | int | | 1 | 當前頁數
pageSize | int | | 10 | 每頁結果數量,-1 為顯示所有
##### sorter (排序json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
field | string | | createdAt | 排序欄位,"timeAndTimePeriodType":這個可以先依 time 排出每日的飲食紀錄,再依 timePeriodType 來排序
order | string | | asc | 升序或降序
```javascript
{
"query": {
"startedAt": 1607990400000,
"endAt": 1608076799000,
"householdMemberId": "123",
"timePeriod": -1,
"timePeriodType": -1
},
"pagination": {
"current": 1,
"pageSize":10
},
"sorter": {
"field": "createdAt",
"order": "desc"
}
}
```
#### Response
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": 20,
"householdMemberId": "123",
"time": 1608002816917,
"hhmmOfTime": 1126,
"timePeriod": 2,
"timePeriodType": 21,
"foodId": 11,
"foodName": "低筋麵粉",
"timeAndTimePeriodType": 1607961600021,
"quantity": 1,
"calorie": 359,
"protein": 8,
"dietaryFiber": 2,
"carbohydrate": 78,
"fat": 1
},
...
],
"pagination": {
"current": 1,
"pageSize": 10,
"total": 2
}
}
}
```
### 查詢特定時段的飲食紀錄列表[APP]
```url
POST /diet/diary/timeframe
```
#### Request
欄位 | 型態 | 預設 | 說明
--- | --- | --- |---
query | json | | 查詢條件json
pagination | json | | 分頁json
sorter | json | | 排序json
##### query (查詢條件json)
欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明
---|---|---|---|---|---
householdMemberId | string | | | | 要搜尋的 householdMemberId,若沒有傳入 householdMemberId,就以改由 token 取得個案資料
startDate | string | | | | 要搜尋的日期區間起日milliseconds,範例:"2020/02/19"-> 1582070400000
endDate | string | | | | 要搜尋的日期區間迄日milliseconds,範例:"2020/02/19" -> 1582070400000
startTime | string | | | | 要搜尋的時間區間,範例:"12:02"
endTime | string | | | | 要搜尋的時間區間,範例:"12:02"
timePeriod | int | | | -1 | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | | | -1 | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
##### pagination (分頁json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
current | int | | 1 | 當前頁數
pageSize | int | | 10 | 每頁結果數量,-1 為顯示所有
##### sorter (排序json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
field | string | | createdAt | 排序欄位,"timeAndTimePeriodType":這個可以先依 time 排出每日的飲食紀錄,再依 timePeriodType 來排序
order | string | | asc | 升序或降序
```javascript
{
"query": {
"startDate": 1582070400000,
"endDate": 1582070400000,
"startTime":"11:00",
"endTime":"11:50",
"timePeriod": "2",
"householdMemberId": "123"
},
"pagination": {
"current": 1,
"pageSize":10
},
"sorter": {
"field": "timeAndTimePeriodType",
"order": "desc"
}
}
```
#### Response
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": 20,
"householdMemberId": "123",
"time": 1608002816917,
"hhmmOfTime": 1126,
"timePeriod": 2,
"timePeriodType": 21,
"foodId": 11,
"foodName": "低筋麵粉",
"timeAndTimePeriodType": 1607961600021,
"quantity": 1,
"calorie": 359,
"protein": 8,
"dietaryFiber": 2,
"carbohydrate": 78,
"fat": 1
},
...
],
"pagination": {
"current": 1,
"pageSize": 10,
"total": 2
}
}
}
```
### 刪除飲食紀錄[APP]
```url
DELETE /diet/diary/$id
```
#### Response
```javascript
{
"httpCode": 200,
"result": {
"data": {
"count": 1
}
}
}
```
### 上傳食物圖片[APP]
```url
POST /diet/diary/image/upload
```
* 如果沒有給householdMemberId,會用token來取
#### Request
```javascript
{
"time": 1608002816917,
"timePeriod": 3,
"timePeriodType": 30,
"image": "......"
}
```
#### Response
```javascript
{
"httpCode": 200,
"result": {
"data": {
"time": 1608002816917,
"timePeriod": 3,
"timePeriodType": 30,
"householdMemberId": "de4e7194-29c9-488a-855c-d054f26ed3e1",
"image": "diet/diary/746f2de8-2180-4495-9427-ccc9f2a34e2f.png"
}
}
}
```
### 依照時段查詢食物圖片[APP]
```url
POST /diet/diary/image/list
```
* 如果沒有給householdMemberId,會用token來取
#### Request
欄位 | 型態 | Required | 說明
--- | --- | --- | ---
date | string | Y | 紀錄日期(yyyy-MM-dd)
timePeriod | int | Y | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | Y | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
```javascript
{
"date": "2022-09-30",
"timePeriod": 3,
"timePeriodType": 30
}
```
#### Response
欄位 | 型態 | 說明
--- | --- |---
id | String | ImageId
image | String | Image Url
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": "145d277e-e359-42a1-aca2-a66ee9e1d668",
"image": "http://192.168.101.120/swift/v1/AUTH_test/kmuh/diet/diary/f8b061fd-729c-467f-a430-57ae449fe214.png?temp_url_sig=9fc341130ddb0f8a783b444b3a0993d84e6b7ffa&temp_url_expires=1613963517"
}
]
}
}
```
### 依照日期查詢食物圖片[APP]
```url
POST /diet/diary/image/listAll
```
* 如果沒有給householdMemberId,會用token來取
#### Request
欄位 | 型態 | Required | 說明
--- | --- | --- |---
date | string | Y | 紀錄日期(yyyy-MM-dd)
```javascript
{
"date":"2020-12-15"
}
```
欄位 | 型態 | 說明
--- | --- | ---
id | string | ImageId
image | string | Image Url
time | timestamp | 飲食紀錄時間
timePeriod | int | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
#### Response
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": "3b6e6ac6-aa52-4e84-b103-4e240cd3b3cd",
"time": 1608002816917,
"image": "http://192.168.101.120/swift/v1/AUTH_test/kmuh/diet/diary/746f2de8-2180-4495-9427-ccc9f2a34e2f.png?temp_url_sig=6e23d242cb472792f5f1c4689dfd45f2763bd155&temp_url_expires=1614076023",
"timePeriod": 3,
"timePeriodType": 30
}
]
}
}
```
### 刪除食物圖片[APP]
```url
POST /diet/diary/image/delete
```
* 如果沒有給householdMemberId,會用token來取
#### Request
欄位 | 型態 | Required | 說明
--- | --- | --- |---
id | String | Y| ImageId
```javascript
{
"id": "145d277e-e359-42a1-aca2-a66ee9e1d668"
}
```
#### Response
```javascript
{
"httpCode": 200,
"result": {
"data": true
}
}
```
### 查詢飲食紀錄圖片列表[WEB]
```url
POST /diet/diary/image/list-web
```
#### Request
欄位 | 型態 | Required | 預設 | 說明
---- | --- | --- | --- | ---
startAt | timestamp | Y | 無 | 要搜尋的日期區間
endAt | timestamp | Y | 無 | 要搜尋的日期區間
householdMemberId | string | Y | 無 | 要搜尋的 householdMemberId
timePeriod | int | N | -1 | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | N | -1 | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
```javascript
{
"startAt": 1609459200000,
"endAt": 1617148800000,
"householdMemberId": "14cd03fb-719a-425a-a913-9955d1c69101",
"timePeriod": -1,
"timePeriodType": -1
}
```
#### Response
欄位 | 型態 | 說明
--- | --- |---
date | string | 日期
imageList | json array | image json array
##### Response-imageList
欄位 | 型態 | 說明
--- | --- |---
id | string | image id
image | string | image url
time | timestamp | 記錄時間
timePeriod | int | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"date": "2021-03-09",
"imageList": [
{
"id": "6eff39d7-8287-4ce0-abd0-7940338a6e17",
"image": "http://content-service/swift/v1/diet/diary/8985df36-c3a7-464b-9f53-c453a953be15.png",
"time": 1615249186619,
"timePeriod": 1,
"timePeriodType": 10
},
...
]
},
...
]
}
}
```
### 查詢食品列表[APP/WEB]
```url
GET /diet/food
```
#### Request
#### Response
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
Food
},
...
]
}
}
```
### 取得飲食記錄選項列表[APP/WEB]
```url
GET /diet/diary/options
```
#### Request
#### Response
欄位 | 型態 | 說明
--- | --- |---
timePeriods | json array | 用餐時段json array
##### Response-timePeriods
欄位 | 型態 | 說明
--- | --- |---
code | string | 用餐時段code
value | int | 用餐時段value, 飲食記錄相關API 的timePeriod 欄位的值
description | string | 用餐時段說明
timePeriodTypes | json array | 用餐餐別json array
##### Response-timePeriodTypes
欄位 | 型態 | 說明
--- | --- |---
code | string | 用餐餐別code
value | int | 用餐餐別value, 飲食記錄相關API 的timePeriodType 欄位的值
description | string | 用餐餐別說明
```javascript
{
"httpCode": 200,
"result": {
"data": {
"timePeriods": [
{
"code": "ALL",
"description": "全部",
"value": -1,
"timePeriodTypes": [
{
"code": "ALL",
"description": "全部",
"value": -1
}
]
},
{
"code": "MORNING",
"description": "早上",
"value": 1,
"timePeriodTypes": [
{
"code": "BREAKFAST",
"description": "早餐",
"value": 10
},
...
]
},
...
]
}
}
}
```
### 查詢飲食紀錄列表-新版[APP/WEB]
```url
POST /diet/diary/list (WEB/APP 共用)
```
* 返回結果包含調整後記錄
* 調整後記錄(adjustInfo)的 adjustFoodCategoryId, adjustFoodCategory, adjustFoodCategoryType, adjustFoodDescription, adjustFoodSimpleUnit, adjustFoodSimpleUnitTransferCoefficient欄位,
只有在調整成不同食品類型(如中脂改為高脂)時, 才會有值, 如沒有adjustFoodSimpleUnit欄位時, 請使用該筆飲食記錄所帶的簡易單位
#### Request
欄位 | 型態 | 預設 | 說明
--- | --- | --- |---
query | json | | 查詢條件json
pagination | json | | 分頁json
sorter | json | | 排序json
##### query (查詢條件json)
欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明
---|---|---|---|---|---
householdMemberId | string | | | | 要搜尋的 householdMemberId,若沒有傳入 householdMemberId,就以改由 token 取得個案資料
startedAt | timestamp | | | | 要搜尋的日期區間
endAt | timestamp | | | | 要搜尋的日期區間
timePeriod | int | | | -1 | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | | | -1 | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
##### pagination (分頁json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
current | int | | 1 | 當前頁數
pageSize | int | | 10 | 每頁結果數量,-1 為顯示所有
##### sorter (排序json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
field | string | | createdAt | 排序欄位,"timeAndTimePeriodType":這個可以先依 time 排出每日的飲食紀錄,再依 timePeriodType 來排序
order | string | | asc | 升序或降序
```javascript
{
"query": {
"startedAt": 1666627200000,
"endAt": 1667145599000,
"householdMemberId": null,
"timePeriod": -1,
"timePeriodType": -1
},
"pagination": {
"current": 1,
"pageSize":10
},
"sorter": {
"field": "createdAt",
"order": "desc"
}
}
```
#### Response-查詢飲食紀錄列表-新版
欄位 | 型態 | 說明
--- | --- | ---
diaryList | json array | 飲食記錄json array
diaryExtList | json array | 飲食記錄附屬資訊 json array
##### Response-diaryList
欄位 | 型態 | 說明
--- | --- | ---
id | long | N | 飲食紀錄id
householdMemberId | string | householdMemberId
time | timestamp | 飲食紀錄時間
hhmmOfTime | int | time 的 hhmm 格式,比如早上 10:30, 這個值就是 1030,作為搜尋的條件之用
timePeriod | int | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
foodId | int | 飲食紀錄的的食品編號 (-1則為自訂飲食名稱, 或是記錄方式為使用我的餐盤計劃)
foodName | string | 如果foodId = -1,且記錄方式為食品資料庫時則為必填
timeAndTimePeriodType | timestamp | 作為排序之用,先依 time 排出每日的飲食紀錄,再依 timePeriodType 來排序
quantity | double | 飲食紀錄的的食品數量
calorie | double | 建議熱量 (需乘上 quantity,四捨五入到小數點第一位)
protein | double | 建議蛋白質 (需乘上 quantity,四捨五入到小數點第一位)
dietaryFiber | double | 建議膳食纖維 (需乘上 quantity,四捨五入到小數點第一位)
carbohydrate | double | 建議碳水化合物 (需乘上 quantity,四捨五入到小數點第一位)
fat | double | 脂肪
foodCategoryId | string | 食材營養素id, 飲食記錄方式使用我的餐盤計劃時為必填
plateId | string | 目前使用的我的餐盤id
cookedType | string | 飲食記錄方式使用我的餐盤計劃時, 食材的烹調方式, 參閱 [烹調方式](#烹調方式)
addedSugar | string | 飲食記錄方式使用我的餐盤計劃時, 食材是否額外加糖, 參閱 [額外加糖](#額外加糖)
foodCategory | string | 飲食記錄方式使用我的餐盤計劃時, 食物分類, 參閱[食物分類](#食物分類)
foodCategoryType | string | 飲食記錄方式使用我的餐盤計劃時, 食物類型, 請參閱[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
foodDescription | string | 飲食記錄方式使用我的餐盤計劃時, 食材描述
simpleUnit | string | 飲食記錄方式使用我的餐盤計劃時, 簡易份量單位
simpleUnitTransferCoefficient | double | 飲食記錄方式使用我的餐盤計劃時, 簡易單位轉換成一般份量的轉換係數<BR>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50
diaryRecordType | string | 飲食記錄方式, 請參閱[飲食記錄方式](#飲食記錄方式)
suggestInfo | json | 我的餐盤食品建議json
adjustInfo | json | 調整記錄json
###### Response-diaryList-adjustInfo
欄位 | 型態 | 說明
--- | --- | ---
id | string | 飲食調整記錄id
adjustQuantity | double | 調整後數量
adjustCalorie | double | 調整後的熱量
adjustProtein | double | 調整後的蛋白質(g)
adjustCarbohydrate | double | 調整後的碳水化合物(g)
adjustFat | double | 調整後的脂肪(g)
adjustDietaryFiber | double | 調整後的膳食纖維(g)
adjustCookedType | string | 調整後的烹調方式, 請參照[烹調方式](#烹調方式)
adjustAddedSugar | string | 調整後的額外加糖, 請參照[額外加糖](#額外加糖)
adjustFoodCategoryId | string | 調整後的食物id
adjustFoodCategory | string | 調整後的食物分類
adjustFoodCategoryType | string | 調整後的食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
adjustFoodDescription | string | 調整後的食材描述
adjustFoodSimpleUnit | string | 調整後的簡易份量單位
adjustFoodSimpleUnitTransferCoefficient | string | 調整後的簡易單位轉換成一般份量的轉換係數<BR>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50
creator | string | 建立記錄人員的account id
##### Response-diaryExtList
欄位 | 型態 | 說明
--- | --- | ---
id | long | N | 飲食紀錄id
householdMemberId | string | householdMemberId
time | timestamp | 飲食紀錄時間
timePeriodType | int | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
timeAndTimePeriodType | timestamp | 作為排序之用,先依 time 排出每日的飲食紀錄,再依 timePeriodType 來排序
remark | string | 飲食記錄備註, 一個餐別只會有一個備註
```javascript
{
"httpCode": 200,
"result": {
"data": {
"diaryList": [
{
"id": 945,
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"time": 1666678268435,
"hhmmOfTime": 1411,
"timePeriod": 2,
"timePeriodType": 20,
"foodId": -1,
"foodName": "豆魚肉蛋(高脂)(油炸)",
"timeAndTimePeriodType": 1666627200020,
"quantity": 6,
"calorie": 776,
"protein": 42,
"dietaryFiber": 0,
"carbohydrate": 0,
"fat": 67.5,
"foodCategoryId": "eb568c78-be07-4ad6-8b86-e1b18fcef509",
"plateId": "",
"cookedType": "FRIED",
"foodCategory": "LEGUME_FISH_MEAT_EGG",
"foodCategoryType": "HIGH_FAT",
"foodDescription": "豆魚肉蛋(高脂)",
"simpleUnit": "掌心",
"simpleUnitTransferCoefficient": 2,
"adjustInfo": {
"id": "af547029-7ee1-4aaf-b481-5a2e155cfddf",
"adjustQuantity": 4,
"adjustCalorie": 472,
"adjustProtein": 28,
"adjustDietaryFiber": 0,
"adjustCarbohydrate": 0,
"adjustFat": 40,
"creator": "6ec4bd89-633a-4f67-be6e-01172f92223e"
},
"diaryRecordType": "DIET_PLAN"
},
...
],
"diaryExtList": [
{
"id": "4589a77f-f9ca-4a8a-8cc6-ee113004a0c4",
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"time": 1666627200000,
"timePeriodType": 11,
"timeAndTimePeriodType": 1666627200011,
"remark": "拼盤就是爽"
},
...
]
},
"pagination": {
"current": 1,
"pageSize": 10,
"total": 3
},
"sorter": {
"field": "createdAt",
"order": "desc"
},
"total": 3
}
}
```
### 查詢特定時段的飲食紀錄列表-新版[APP]
```url
POST /diet/diary/list-timeframe
```
* 返回結果包含調整後記錄
* 調整後記錄(adjustInfo)的 adjustFoodCategoryId, adjustFoodCategory, adjustFoodCategoryType, adjustFoodDescription, adjustFoodSimpleUnit, adjustFoodSimpleUnitTransferCoefficient欄位,
只有在調整成不同食品類型(如中脂改為高脂)時, 才會有值, 如沒有adjustFoodSimpleUnit欄位時, 請使用該筆飲食記錄所帶的簡易單位
#### Request
欄位 | 型態 | 預設 | 說明
--- | --- | --- |---
query | json | | 查詢條件json
pagination | json | | 分頁json
sorter | json | | 排序json
##### query (查詢條件json)
欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明
---|---|---|---|---|---
householdMemberId | string | | | | 要搜尋的 householdMemberId,若沒有傳入 householdMemberId,就以改由 token 取得個案資料
startDate | string | | | | 要搜尋的日期區間起日milliseconds,範例:"2020/02/19"-> 1582070400000
endDate | string | | | | 要搜尋的日期區間迄日milliseconds,範例:"2020/02/19" -> 1582070400000
startTime | string | | | | 要搜尋的時間區間,範例:"12:02"
endTime | string | | | | 要搜尋的時間區間,範例:"12:02"
timePeriod | int | | | -1 | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | | | -1 | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
##### pagination (分頁json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
current | int | | 1 | 當前頁數
pageSize | int | | 10 | 每頁結果數量,-1 為顯示所有
##### sorter (排序json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
field | string | | createdAt | 排序欄位,"timeAndTimePeriodType":這個可以先依 time 排出每日的飲食紀錄,再依 timePeriodType 來排序
order | string | | asc | 升序或降序
```javascript
{
"query": {
"startDate": 1666627200000,
"endDate": 1667145599000,
"startTime": "00:00",
"endTime": "23:59",
"householdMemberId": null,
"timePeriod": null,
"timePeriodType": null
},
"pagination": {
"current": 1,
"pageSize":10
},
"sorter": {
"field": "createdAt",
"order": "desc"
}
}
```
#### Response
請參閱[查詢飲食紀錄列表-新版](#response-查詢飲食紀錄列表-新版)
```javascript
{
"httpCode": 200,
"result": {
"data": {
"diaryList": [
{
"id": 945,
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"time": 1666678268435,
"hhmmOfTime": 1411,
"timePeriod": 2,
"timePeriodType": 20,
"foodId": -1,
"foodName": "豆魚肉蛋(高脂)(油炸)",
"timeAndTimePeriodType": 1666627200020,
"quantity": 6,
"calorie": 776,
"protein": 42,
"dietaryFiber": 0,
"carbohydrate": 0,
"fat": 67.5,
"foodCategoryId": "eb568c78-be07-4ad6-8b86-e1b18fcef509",
"plateId": "",
"cookedType": "FRIED",
"foodCategory": "LEGUME_FISH_MEAT_EGG",
"foodCategoryType": "HIGH_FAT",
"foodDescription": "豆魚肉蛋(高脂)",
"simpleUnit": "掌心",
"simpleUnitTransferCoefficient": 2,
"adjustInfo": {
"id": "af547029-7ee1-4aaf-b481-5a2e155cfddf",
"adjustQuantity": 4,
"adjustCalorie": 472,
"adjustProtein": 28,
"adjustDietaryFiber": 0,
"adjustCarbohydrate": 0,
"adjustFat": 40,
"creator": "6ec4bd89-633a-4f67-be6e-01172f92223e"
},
"diaryRecordType": "DIET_PLAN"
},
...
],
"diaryExtList": [
{
"id": "4589a77f-f9ca-4a8a-8cc6-ee113004a0c4",
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"time": 1666627200000,
"timePeriodType": 11,
"timeAndTimePeriodType": 1666627200011,
"remark": "拼盤就是爽"
},
...
]
},
"pagination": {
"current": 1,
"pageSize": 10,
"total": 3
},
"sorter": {
"field": "createdAt",
"order": "desc"
},
"total": 3
}
}
```
### 查詢飲食紀錄附屬資訊列表[APP/WEB]
```url
POST /diet/diary-ext/list (WEB/APP 共用)
```
#### Request
欄位 | 型態 | 預設 | 說明
--- | --- | --- |---
query | json | | 查詢條件json
##### query (查詢條件json)
欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明
---|---|---|---|---|---
householdMemberId | string | | | | 要搜尋的 householdMemberId,若沒有傳入 householdMemberId,就以改由 token 取得個案資料
startedAt | timestamp | | | | 要搜尋的日期區間
endAt | timestamp | | | | 要搜尋的日期區間
timePeriodType | int | | | -1 | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
```javascript
{
"query": {
"startedAt": 1666627200000,
"endAt": 1667145599000,
"householdMemberId": null,
"timePeriodType": -1
}
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | long | N | 飲食紀錄id
householdMemberId | string | householdMemberId
time | timestamp | 飲食紀錄時間
timePeriodType | int | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
timeAndTimePeriodType | timestamp | 作為排序之用,先依 time 排出每日的飲食紀錄,再依 timePeriodType 來排序
remark | string | 飲食記錄備註, 一個餐別只會有一個備註
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": "4589a77f-f9ca-4a8a-8cc6-ee113004a0c4",
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"time": 1666627200000,
"timePeriodType": 11,
"timeAndTimePeriodType": 1666627200011,
"remark": "拼盤就是爽"
},
...
]
}
}
```
### APP端-修改飲食記錄方式[APP]
```url
POST /diet/diary/update-record-type
```
#### Request
欄位 | 型態 | Required | 長度限制 | 預設 | 說明
---- | --- | --- | --- | --- | ---
diaryRecordType | string | Y | | | 飲食記錄方式, 請參閱[飲食記錄方式](#飲食記錄方式)
```javascript
{
"diaryRecordType": "DIET_PLAN"
}
```
#### Error
httpCode | 錯誤碼 | 說明
--- | --- | ---
#### Response
欄位 | 型態 | 說明
--- | --- | ---
diaryRecordType | string | 變更後的飲食記錄方式, 請參閱[飲食記錄方式](#飲食記錄方式)
```javascript
{
"httpCode": 200,
"result": {
"data": {
"diaryRecordType": "DIET_PLAN"
}
}
}
```
### APP端-其他食品-我的常用清單[APP]
```url
POST /diet/diary/my-diet-food-list
```
#### Request
#### Error
httpCode | 錯誤碼 | 說明
--- | --- | ---
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 常用食品項目id
householdMemberId | string | householdMemberId
foodName | string | 食品項目名稱
calorie | double | 熱量(Kcal)(1份), 由 protein, carbohydrate, fat去計算出來的
protein | double | 蛋白質(g)(1份)
carbohydrate | double | 碳水化合物(g)(1份)
fat | double | 脂肪(g)(1份)
createTime | timestamp | 建立時間
updateTime | timestamp | 更新時間
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": "5ee8362e-b155-4933-933f-8cc4e668ca75",
"householdMemberId": "150b53f5-7126-4900-9fb0-87a08b45e06b",
"foodName": "MiLo XLarge",
"calorie": 300.0,
"protein": 30.0,
"dietaryFiber": 0.0,
"carbohydrate": 60.0,
"fat": 150.0,
"createTime": 1695196012628,
"updateTime": 1695196012628
},
...
]
}
}
```
### WEB/APP端-取得飲食記錄Summary[WEB/APP]
```url
POST /diet/diary/summary
```
* 包含飲食分數, 飲食記錄攝取熱量, 調整後攝取熱量, 三大營養素熱量比率
* 飲食分數是以整天為計算基礎
* 飲食記錄攝取熱量, 調整後攝取熱量, 三大營養素熱量比率 數值會依timePeriod, timePeriodType有所不同
#### Request
欄位 | 型態 | 預設 | 說明
--- | --- | --- |---
query | json | | 查詢條件json
##### query (查詢條件json)
欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明
---|---|---|---|---|---
householdMemberId | string | WEB:**Y** | | | Web端必填, APP端由token取得
timePeriod | int | | | -1 | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | | | -1 | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
dietDate | string | | | | 要搜尋的日期, YYYY-MM-DD, 或毫秒值
scorePeriod | string | | | | 飲食分數查詢區間類別, 請參閱[飲食分數查詢區間類別](#飲食分數查詢區間類別)
```javascript
{
"query": {
"householdMemberId": null,
"timePeriod": -1,
"timePeriodType": -1,
"dietDate": "2022-10-25",
"scorePeriod": "DAILY"
}
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
dietDate | date | 查詢的日期
dietPlateInfo | json | 建議餐盤 json
scoreSummaryInfo | json | 飲食分數 json
nutrientSummaryInfo | json | 飲食記錄summary json
nutrientSummaryDailyList | json array | 飲食記錄summary daily list
##### Response-dietPlateInfo(json)
請參閱[Response-取得我的建議餐盤](#Response-取得我的建議餐盤)
##### Response-scoreSummaryInfo(json)
欄位 | 型態 | 說明
--- | --- | ---
scoreInfo | json | 飲食分數json, scorePeriod=DAILY時, 表示當日分數, scorePeriod=WEEKLY/MONTHLY時, 表示平均分數
scoreDailyList | json array | scoreInfo daily list
###### Response-scoreInfo(json)
欄位 | 型態 | 說明
--- | --- | ---
score | double | 飲食分數
suggestDescription | string | 飲食分數建議說明
mealDate | date | 飲食分數日期
ingredients | json array | 飲食分數各食品類別達成率 json array
###### Response-ingredient(json)
欄位 | 型態 | 說明
--- | --- | ---
foodCategory | string | 食物分類, 請參閱[食物分類](#食物分類)
completionRate | double | 達成率(%)
##### Response-nutrientSummaryInfo(json)
欄位 | 型態 | 說明
--- | --- | ---
dietDate | date | 飲食記錄日期
totalCalorie | double | 攝取總熱量
protein | double | 攝取蛋白質(g)
carbohydrate | double | 攝取碳水化合物(g)
fat | double | 攝取脂肪(g)
proteinCal | double | 攝取蛋白質熱量
carbohydrateCal | double | 攝取碳水化合物熱量
fatCal | double | 攝取脂肪熱量
proteinRate | double | 攝取蛋白質比率(%)
carbohydrateRate | double | 攝取碳水化合物比率(%)
fatRate | double | 攝取脂肪比率(%)
isAdjust | boolean | 飲食記錄是否有調整過, true表示有調整過, 可使用調整後的相關欄位數值
adjustTotalCalorie | double | 調整後攝取總熱量
adjustProtein | double | 調整後攝取蛋白質(g)
adjustCarbohydrate | double | 調整後攝取碳水化合物(g)
adjustFat | double | 調整後攝取脂肪(g)
adjustProteinCal | double | 調整後攝取蛋白質熱量
adjustCarbohydrateCal | double | 調整後攝取碳水化合物熱量
adjustFatCal | double | 調整後攝取脂肪熱量
adjustProteinRate | double | 調整後攝取蛋白質比率(%)
adjustCarbohydrateRate | double | 調整後攝取碳水化合物比率(%)
adjustFatRate | double | 調整後攝取脂肪比率(%)
##### Response-nutrientSummaryDailyList(json)
請參閱[nutrientSummaryInfo](#Response-nutrientSummaryInfojson)
```javascript
{
"httpCode": 200,
"result": {
"data": {
"dietDate": 1666627200000,
"dietPlateInfo": {
"id": "b2f0701d-91ef-456c-9282-2abea10a2a43",
"createTime": 1665651861183,
"updateTime": 1665713995045,
"status": "PUBLISHED",
"creatorId": "7a17be34-13ae-4687-b971-1e5f586c8e3a",
"creatorName": "Dr. X",
"creatorRole": "腳科醫生",
"tenantId": "858b7fbb-3ba0-4d49-9882-c893a1ef07dc",
"tenantName": "緯緯醫學",
"totalCalorie": 477,
"totalProteinCalorie": 72,
"totalSugarCalorie": 180,
"totalFatCalorie": 225,
"totalProtein": 18,
"totalSugar": 45,
"totalFat": 25,
"timePeriods": [
{
"timePeriod": 2,
"timePeriodType": 20,
"totalCalorie": 236,
"totalProteinCalorie": 56,
"totalSugarCalorie": 0,
"totalFatCalorie": 180,
"totalProtein": 14,
"totalSugar": 0,
"totalFat": 20,
"meals": [
{
"calorie": 236,
"proteinCal": 56,
"sugarCal": 0,
"fatCal": 180,
"protein": 14,
"sugar": 0,
"fat": 20,
"foodCategory": "LEGUME_FISH_MEAT_EGG",
"foodType": "HIGH_FAT",
"quantity": 2,
"simpleUnit": "掌心",
"simpleUnitTransferCoefficient": 2
}
],
"foodCategorys": [
{
"calorie": 236,
"proteinCal": 56,
"sugarCal": 0,
"fatCal": 180,
"protein": 14,
"sugar": 0,
"fat": 20,
"foodCategory": "LEGUME_FISH_MEAT_EGG",
"quantity": 2,
"simpleUnit": "掌心",
"simpleUnitTransferCoefficient": 2
}
]
},
...
],
"nutritionalDiagnosisInfo": {
"categoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d",
"categoryDescription": "體位",
"problemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207",
"problemDescription": "體重過輕",
"etiologyId": "39f991d5-98fe-41f2-8cd5-688c08337364",
"etiologyDescription": "熱量需求增加",
"signs": "tes draft publish"
}
},
"scoreSummaryInfo": {
"scoreInfo": {
"score": 0,
"mealDate": 1666683673892,
"suggestDescription": "慘了!慘了!您的均衡飲食分數非常糟糕,建議下定決心每天都要均衡的攝取六大類食物,一起跟著我的餐盤,營養跟著來唷!",
"ingredients": [
{
"foodCategory": "LEGUME_FISH_MEAT_EGG",
"completionRate": 820
},
...
]
}
},
"nutrientSummaryInfo": {
"dietDate": 1666627200000,
"totalCalorie": 2139.2,
"protein": 114.8,
"carbohydrate": 0,
"fat": 186.5,
"proteinCal": 459.2,
"carbohydrateCal": 0,
"fatCal": 1678.5,
"proteinRate": 21,
"carbohydrateRate": 0,
"fatRate": 78,
"isAdjust": true,
"adjustTotalCalorie": 1835.2,
"adjustProtein": 100.8,
"adjustCarbohydrate": 0,
"adjustFat": 159,
"adjustProteinCal": 403.2,
"adjustCarbohydrateCal": 0,
"adjustFatCal": 1431,
"adjustProteinRate": 22,
"adjustCarbohydrateRate": 0,
"adjustFatRate": 78
},
"nutrientSummaryDailyList": [
{
"dietDate": 1666627200000,
"totalCalorie": 2139.2,
"protein": 114.8,
"carbohydrate": 0,
"fat": 186.5,
"proteinCal": 459.2,
"carbohydrateCal": 0,
"fatCal": 1678.5,
"proteinRate": 21,
"carbohydrateRate": 0,
"fatRate": 78,
"isAdjust": true,
"adjustTotalCalorie": 1835.2,
"adjustProtein": 100.8,
"adjustCarbohydrate": 0,
"adjustFat": 159,
"adjustProteinCal": 403.2,
"adjustCarbohydrateCal": 0,
"adjustFatCal": 1431,
"adjustProteinRate": 22,
"adjustCarbohydrateRate": 0,
"adjustFatRate": 78
}
]
}
}
}
```
### WEB端-取得飲食記錄列表[WEB]
```url
POST /diet-plan-mgmt/diary/list
```
#### Request
欄位 | 型態 | 預設 | 說明
--- | --- | --- |---
query | json | | 查詢條件json
pagination | json | | 分頁json
sorter | json | | 排序json
##### query (查詢條件json)
欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明
---|---|---|---|---|---
householdMemberId | string | Y | | | 要搜尋的 householdMemberId
startDate | string | | | | 要搜尋的啟始日期, YYYY-MM-DD
endDate | string | | | | 要搜尋的結束日期, YYYY-MM-DD
timePeriod | int | | | -1 | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | | | -1 | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
##### pagination (分頁json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
current | int | | 1 | 當前頁數
pageSize | int | | 10 | 每頁結果數量,-1 為顯示所有
##### sorter (排序json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
field | string | | time | 排序欄位,可排序欄位有 time, timePeriod, timePeriodType, foodName, diaryRecordType
order | string | | desc | 升序或降序
```javascript
{
"query": {
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"startDate": "2022-10-01",
"endDate": "2022-10-30",
"timePeriod": 2,
"timePeriodType": null
},
"pagination": {
"current": 1,
"pageSize":10
},
"sorter": {
"field": "time",
"order": "desc"
}
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 飲食記錄id
householdMemberId | string |
time | long | 飲食記錄日期
timePeriod | int | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
hhmmOfTime | int | time 的 hhmm 格式,比如早上 10:30, 這個值就是 1030,作為搜尋的條件之用
foodId | int | 飲食紀錄的的食品編號 (-1則為自訂飲食名稱, 或是記錄方式為使用我的餐盤計劃)
foodName | string | 如果foodId = -1,且記錄方式為食品資料庫時則為必填
timeAndTimePeriodType | timestamp | 作為排序之用,先依 time 排出每日的飲食紀錄,再依 timePeriodType 來排序
quantity | double | 飲食紀錄的的食品數量
calorie | double | 建議熱量 (需乘上 quantity,四捨五入到小數點第一位)
protein | double | 建議蛋白質 (需乘上 quantity,四捨五入到小數點第一位)
dietaryFiber | double | 建議膳食纖維 (需乘上 quantity,四捨五入到小數點第一位)
carbohydrate | double | 建議碳水化合物 (需乘上 quantity,四捨五入到小數點第一位)
fat | double | 脂肪
foodCategoryId | string | 食材營養素id, 飲食記錄方式使用我的餐盤計劃時為必填
plateId | string | 目前使用的我的餐盤id
cookedType | string | 飲食記錄方式使用我的餐盤計劃時, 食材的烹調方式, 參閱 [烹調方式](#烹調方式)
addedSugar | string | 飲食記錄方式使用我的餐盤計劃時, 食材是否額外加糖, 參閱 [額外加糖](#額外加糖)
foodCategory | string | 飲食記錄方式使用我的餐盤計劃時, 食物分類, 參閱[食物分類](#食物分類)
foodCategoryType | string | 飲食記錄方式使用我的餐盤計劃時, 食物類型, 請參閱[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
diaryRecordType | string | 飲食記錄方式, 請參閱[飲食記錄方式](#飲食記錄方式)
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": 951,
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"time": 1666683673892,
"hhmmOfTime": 1541,
"timePeriod": 2,
"timePeriodType": 21,
"foodId": -1,
"foodName": "豆魚肉蛋(高脂)(油炸)",
"timeAndTimePeriodType": 1666627200021,
"quantity": 2.4,
"calorie": 351.2,
"protein": 16.8,
"dietaryFiber": 0.0,
"carbohydrate": 0.0,
"fat": 31.5,
"foodCategoryId": "eb568c78-be07-4ad6-8b86-e1b18fcef509",
"plateId": "",
"cookedType": "FRIED",
"foodCategory": "LEGUME_FISH_MEAT_EGG",
"foodCategoryType": "HIGH_FAT",
"diaryRecordType": "DIET_PLAN"
},
...
],
"pagination": {
"current": 1,
"pageSize": 10,
"total": 7
},
"sorter": {
"field": "time",
"order": "desc"
},
"total": 7
}
}
```
### WEB端-取得飲食記錄詳細列表(含我的餐盤建議及調整記錄)[WEB]
```url
POST /diet-plan-mgmt/diary/list-detail
```
* 返回結果以建議餐盤為優先, 若無id, 表示此筆結果為建議餐盤項目, 請直接存取suggestInfo json
* 返回結果包含我的餐盤建議以及調整後記錄
* 返回結果可選擇是否要包含飲食記錄Summary(飲食分數, 攝取熱量, 調整後攝取熱量, 三大營養素熱量比率)
* 調整後記錄(adjustInfo)的 adjustFoodCategoryId, adjustFoodCategory, adjustFoodCategoryType, adjustFoodDescription, adjustFoodSimpleUnit, adjustFoodSimpleUnitTransferCoefficient欄位,
只有在調整成不同食品類型(如中脂改為高脂)時, 才會有值, 如沒有adjustFoodSimpleUnit欄位時, 請使用該筆飲食記錄所帶的簡易單位
#### Request
欄位 | 型態 | 預設 | 說明
--- | --- | --- |---
query | json | | 查詢條件json
pagination | json | | 分頁json
sorter | json | | 排序json
##### query (查詢條件json)
欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明
---|---|---|---|---|---
householdMemberId | string | Y | | | 要搜尋的 householdMemberId
startDate | string | | | | 要搜尋的啟始日期, YYYY-MM-DD
endDate | string | | | | 要搜尋的結束日期, YYYY-MM-DD
timePeriod | int | | | -1 | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | | | -1 | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
includeSummary | boolean | | | false | 是否要包含飲食記錄Summary(飲食分數, 攝取熱量, 調整後攝取熱量, 三大營養素熱量比率)
dietDate | string | includeSummary=true | | | 飲食記錄日期, YYYY-MM-DD 或日期的毫秒
scorePeriod | string | includeSummary=true | | | 飲食分數查詢區間類別, 請參閱[飲食分數查詢區間類別](#飲食分數查詢區間類別)
##### pagination (分頁json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
current | int | | 1 | 當前頁數
pageSize | int | | 10 | 每頁結果數量,-1 為顯示所有
##### sorter (排序json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
field | string | | time | 排序欄位,可排序欄位有 time, timePeriod, timePeriodType, foodName, diaryRecordType
order | string | | desc | 升序或降序
```javascript
{
"query": {
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"startDate": "2022-10-25",
"endDate": "2022-10-25",
"timePeriod": -1,
"timePeriodType": -1,
"includeSummary": true,
"dietDate": "2022-10-25",
"scorePeriod": "DAILY"
},
"pagination": {
"current": 1,
"pageSize":10
},
"sorter": {
"field": "time",
"order": "desc"
}
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
dietPlanInfo | json |
diaryList | json array | 飲食記錄json array
scoreSummaryInfo | json | includeSummary=true時才會返回, 飲食記錄Summary(飲食分數, 攝取熱量, 調整後攝取熱量, 三大營養素熱量比率) json
nutrientSummaryInfo | json | includeSummary=true時才會返回, 飲食記錄summary json
nutrientSummaryDailyList | json array | includeSummary=true時才會返回, 飲食記錄summary json daily list
##### Response-dietPlanInfo
請參閱[Response-取得我的建議餐盤](#Response-取得我的建議餐盤)
##### Response-diaryList
欄位 | 型態 | 說明
--- | --- | ---
id | string | 飲食記錄id
householdMemberId | string |
time | long | 飲食記錄日期
timePeriod | int | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
hhmmOfTime | int | time 的 hhmm 格式,比如早上 10:30, 這個值就是 1030,作為搜尋的條件之用
foodId | int | 飲食紀錄的的食品編號 (-1則為自訂飲食名稱, 或是記錄方式為使用我的餐盤計劃)
foodName | string | 如果foodId = -1,且記錄方式為食品資料庫時則為必填
timeAndTimePeriodType | timestamp | 作為排序之用,先依 time 排出每日的飲食紀錄,再依 timePeriodType 來排序
quantity | double | 飲食紀錄的的食品數量
calorie | double | 建議熱量 (需乘上 quantity,四捨五入到小數點第一位)
protein | double | 建議蛋白質 (需乘上 quantity,四捨五入到小數點第一位)
dietaryFiber | double | 建議膳食纖維 (需乘上 quantity,四捨五入到小數點第一位)
carbohydrate | double | 建議碳水化合物 (需乘上 quantity,四捨五入到小數點第一位)
fat | double | 脂肪
foodCategoryId | string | 食材營養素id, 飲食記錄方式使用我的餐盤計劃時為必填
plateId | string | 目前使用的我的餐盤id
cookedType | string | 飲食記錄方式使用我的餐盤計劃時, 食材的烹調方式, 參閱 [烹調方式](#烹調方式)
addedSugar | string | 飲食記錄方式使用我的餐盤計劃時, 食材是否額外加糖, 參閱 [額外加糖](#額外加糖)
foodCategory | string | 飲食記錄方式使用我的餐盤計劃時, 食物分類, 參閱[食物分類](#食物分類)
foodCategoryType | string | 飲食記錄方式使用我的餐盤計劃時, 食物類型, 請參閱[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
foodDescription | string | 飲食記錄方式使用我的餐盤計劃時, 食材描述
simpleUnit | string | 飲食記錄方式使用我的餐盤計劃時, 簡易份量單位
simpleUnitTransferCoefficient | double | 飲食記錄方式使用我的餐盤計劃時, 簡易單位轉換成一般份量的轉換係數<BR>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50
diaryRecordType | string | 飲食記錄方式, 請參閱[飲食記錄方式](#飲食記錄方式)
suggestInfo | json | 我的餐盤食品建議json
adjustInfo | json | 調整記錄json
##### Response-diaryList-suggestInfo
請參閱[我的建議餐盤-meals](#Response-meals)
##### Response-diaryList-adjustInfo
欄位 | 型態 | 說明
--- | --- | ---
id | string | 飲食調整記錄id, 若無id, 表示此筆為建議盤餐的項目
adjustQuantity | double | 調整後數量
adjustCalorie | double | 調整後的熱量
adjustProtein | double | 調整後的蛋白質(g)
adjustCarbohydrate | double | 調整後的碳水化合物(g)
adjustFat | double | 調整後的脂肪(g)
adjustDietaryFiber | double | 調整後的膳食纖維(g)
adjustCookedType | string | 調整後的烹調方式, 請參照[烹調方式](#烹調方式)
adjustAddedSugar | string | 調整後的額外加糖, 請參照[額外加糖](#額外加糖)
adjustFoodCategoryId | string | 調整後的食物id
adjustFoodCategory | string | 調整後的食物分類
adjustFoodCategoryType | string | 調整後的食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
adjustFoodDescription | string | 調整後的食材描述
adjustFoodSimpleUnit | string | 調整後的簡易份量單位
adjustFoodSimpleUnitTransferCoefficient | string | 調整後的簡易單位轉換成一般份量的轉換係數<BR>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50
creator | string | 建立記錄人員的account id
##### Response-scoreSummaryInfo(json)
請參閱[飲食記錄Summary-Response-飲食分數](#Response-scoreSummaryInfojson)
##### Response-nutrientSummaryInfo(json)
請參閱[飲食記錄Summary-Response-飲食記錄summary](#Response-nutrientSummaryInfojson)
##### Response-nutrientSummaryDailyList(json array)
請參閱[飲食記錄Summary-Response-飲食記錄summary daily list](#Response-nutrientSummaryDailyListjson)
```javascript
{
"httpCode": 200,
"result": {
"data": {
"dietPlanInfo": {
"id": "b2f0701d-91ef-456c-9282-2abea10a2a43",
"createTime": 1665651861183,
"updateTime": 1665713995045,
"status": "PUBLISHED",
"creatorId": "7a17be34-13ae-4687-b971-1e5f586c8e3a",
"creatorName": "Dr. X",
"creatorRole": "腳科醫生",
"tenantId": "858b7fbb-3ba0-4d49-9882-c893a1ef07dc",
"tenantName": "緯緯醫學",
"totalCalorie": 477,
"totalProteinCalorie": 72,
"totalSugarCalorie": 180,
"totalFatCalorie": 225,
"totalProtein": 18,
"totalSugar": 45,
"totalFat": 25,
"timePeriods": [
{
"timePeriod": 2,
"timePeriodType": 20,
"totalCalorie": 236,
"totalProteinCalorie": 56,
"totalSugarCalorie": 0,
"totalFatCalorie": 180,
"totalProtein": 14,
"totalSugar": 0,
"totalFat": 20,
"meals": [
{
"calorie": 236,
"proteinCal": 56,
"sugarCal": 0,
"fatCal": 180,
"protein": 14,
"sugar": 0,
"fat": 20,
"foodCategory": "LEGUME_FISH_MEAT_EGG",
"foodType": "HIGH_FAT",
"quantity": 2,
"simpleUnit": "掌心",
"simpleUnitTransferCoefficient": 2
}
],
"foodCategorys": [
{
"calorie": 236,
"proteinCal": 56,
"sugarCal": 0,
"fatCal": 180,
"protein": 14,
"sugar": 0,
"fat": 20,
"foodCategory": "LEGUME_FISH_MEAT_EGG",
"quantity": 2,
"simpleUnit": "掌心",
"simpleUnitTransferCoefficient": 2
}
]
},
...
],
"nutritionalDiagnosisInfo": {
"categoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d",
"categoryDescription": "體位",
"problemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207",
"problemDescription": "體重過輕",
"etiologyId": "39f991d5-98fe-41f2-8cd5-688c08337364",
"etiologyDescription": "熱量需求增加",
"signs": "tes draft publish"
}
},
"diaryList": [
{
"id": 945,
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"time": 1666678268435,
"hhmmOfTime": 1411,
"timePeriod": 2,
"timePeriodType": 20,
"foodId": -1,
"foodName": "豆魚肉蛋(高脂)(油炸)",
"timeAndTimePeriodType": 1666627200020,
"quantity": 6,
"calorie": 776,
"protein": 42,
"dietaryFiber": 0,
"carbohydrate": 0,
"fat": 67.5,
"foodCategoryId": "eb568c78-be07-4ad6-8b86-e1b18fcef509",
"plateId": "",
"cookedType": "FRIED",
"foodCategory": "LEGUME_FISH_MEAT_EGG",
"foodCategoryType": "HIGH_FAT",
"foodDescription": "豆魚肉蛋(高脂)",
"simpleUnit": "掌心",
"simpleUnitTransferCoefficient": 2,
"suggestInfo": {
"calorie": 236,
"proteinCal": 56,
"sugarCal": 0,
"fatCal": 180,
"protein": 14,
"sugar": 0,
"fat": 20,
"foodCategory": "LEGUME_FISH_MEAT_EGG",
"foodType": "HIGH_FAT",
"quantity": 2,
"simpleUnit": "掌心",
"simpleUnitTransferCoefficient": 2
},
"adjustInfo": {
"id": "af547029-7ee1-4aaf-b481-5a2e155cfddf",
"adjustQuantity": 4,
"adjustCalorie": 472,
"adjustProtein": 28,
"adjustDietaryFiber": 0,
"adjustCarbohydrate": 0,
"adjustFat": 40,
"creator": "6ec4bd89-633a-4f67-be6e-01172f92223e"
},
"diaryRecordType": "DIET_PLAN"
},
...
],
"scoreSummaryInfo": {
"scoreInfo": {
"score": 0,
"mealDate": 1666683673892,
"ingredients": [
{
"foodCategory": "FRUITS",
"completionRate": 0
},
...
]
}
},
"nutrientSummaryInfo": {
"dietDate": 1666627200000,
"totalCalorie": 2139.2,
"protein": 114.8,
"carbohydrate": 0,
"fat": 186.5,
"proteinCal": 459.2,
"carbohydrateCal": 0,
"fatCal": 1678.5,
"proteinRate": 21,
"carbohydrateRate": 0,
"fatRate": 78,
"isAdjust": true,
"adjustTotalCalorie": 1835.2,
"adjustProtein": 100.8,
"adjustCarbohydrate": 0,
"adjustFat": 159,
"adjustProteinCal": 403.2,
"adjustCarbohydrateCal": 0,
"adjustFatCal": 1431,
"adjustProteinRate": 22,
"adjustCarbohydrateRate": 0,
"adjustFatRate": 78
},
"nutrientSummaryDailyList": [
{
"dietDate": 1666627200000,
"totalCalorie": 2139.2,
"protein": 114.8,
"carbohydrate": 0,
"fat": 186.5,
"proteinCal": 459.2,
"carbohydrateCal": 0,
"fatCal": 1678.5,
"proteinRate": 21,
"carbohydrateRate": 0,
"fatRate": 78,
"isAdjust": true,
"adjustTotalCalorie": 1835.2,
"adjustProtein": 100.8,
"adjustCarbohydrate": 0,
"adjustFat": 159,
"adjustProteinCal": 403.2,
"adjustCarbohydrateCal": 0,
"adjustFatCal": 1431,
"adjustProteinRate": 22,
"adjustCarbohydrateRate": 0,
"adjustFatRate": 78
}
]
},
"pagination": {
"current": 1,
"pageSize": 10,
"total": 3
},
"sorter": {
"field": "time",
"order": "desc"
},
"total": 3
}
}
```
### WEB端-新增飲食記錄[WEB]
```url
POST /diet-plan-mgmt/diary/add
```
#### Request
欄位 | 型態 | Required | 預設 | 說明
---- | --- | --- | --- | ---
householdMemberId | string | Y | | householdMemberId
time | timestamp | Y | | 飲食紀錄時間
timePeriod | int | Y | | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | Y | | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
foodId | int | Y | | 飲食紀錄的的食品編號 (-1則為自訂飲食名稱, 或是記錄方式為使用我的餐盤計劃)
foodName | string | - | | 如果foodId = -1,且記錄方式為食品資料庫時則為必填
quantity | double | Y | | 飲食紀錄的的食品數量
foodCategoryId | string | Y | | 食材營養素id, 飲食記錄方式使用我的餐盤計劃時為必填
plateId | string | N | | 目前使用的我的餐盤id
cookedType | string | Y | | 飲食記錄方式使用我的餐盤計劃時, 食材的烹調方式, 參閱 [烹調方式](#烹調方式)
addedSugar | string | Y | | 飲食記錄方式使用我的餐盤計劃時, 食材是否額外加糖, 參閱 [額外加糖](#額外加糖)
```javascript
{
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"time": 1664955020000,
"timePeriod": 2,
"timePeriodType": 21,
"foodId": -1,
"quantity": 1,
"foodCategoryId": "3bab6bb8-b286-4ccd-9de3-bc282acdb090",
"plateId": "678901f0-8834-4a31-b381-5f5faab62825",
"cookedType": "FRY"
}
```
#### Error
httpCode | 錯誤碼 | 說明
--- | --- | ---
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | long | 飲食紀錄id
householdMemberId | string | householdMemberId
time | timestamp | 飲食紀錄時間
hhmmOfTime | int | time 的 hhmm 格式,比如早上 10:30, 這個值就是 1030,作為搜尋的條件之用
timePeriod | int | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
foodId | int | 飲食紀錄的的食品編號 (-1則為自訂飲食名稱, 或是記錄方式為使用我的餐盤計劃)
foodName | string | 食品名稱
timeAndTimePeriodType | timestamp | 作為排序之用,先依 time 排出每日的飲食紀錄,再依 timePeriodType 來排序
quantity | double | 食品數量
calorie | double | 熱量 (需乘上 quantity,四捨五入到小數點第一位)
protein | double | 蛋白質 (需乘上 quantity,四捨五入到小數點第一位)
dietaryFiber | double | 膳食纖維 (需乘上 quantity,四捨五入到小數點第一位)
carbohydrate | double | 碳水化合物 (需乘上 quantity,四捨五入到小數點第一位)
fat | double | 脂肪 (需乘上 quantity,四捨五入到小數點第一位)
foodCategoryId | string | 食材營養素id, 飲食記錄方式使用我的餐盤計劃時為必填
plateId | string | 目前使用的我的餐盤id
cookedType | string | 飲食記錄方式使用我的餐盤計劃時, 食材的烹調方式, 參閱 [烹調方式](#烹調方式)
addedSugar | string | 飲食記錄方式使用我的餐盤計劃時, 食材是否額外加糖, 參閱 [額外加糖](#額外加糖)
foodCategory | string | 飲食記錄方式使用我的餐盤計劃時, 食物分類, 參閱[食物分類](#食物分類)
foodCategoryType | string | 飲食記錄方式使用我的餐盤計劃時, 食物類型, 請參閱[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": 917,
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"time": 1664955020000,
"hhmmOfTime": 1530,
"timePeriod": 2,
"timePeriodType": 21,
"foodId": -1,
"foodName": "全榖雜糧(非油炸)",
"timeAndTimePeriodType": 1664899200021,
"quantity": 1,
"calorie": 113,
"protein": 2,
"dietaryFiber": 0,
"carbohydrate": 15,
"fat": 5,
"createdAt": 1666170077905,
"creator": "6ec4bd89-633a-4f67-be6e-01172f92223e",
"foodCategoryId": "3bab6bb8-b286-4ccd-9de3-bc282acdb090",
"plateId": "678901f0-8834-4a31-b381-5f5faab62825",
"cookedType": "FRY"
}
}
}
```
### WEB端-修改飲食記錄[WEB]
```url
POST /diet-plan-mgmt/diary/update
```
#### Request
欄位 | 型態 | Required | 預設 | 說明
---- | --- | --- | --- | ---
id | long | Y | | 飲食記錄id
householdMemberId | string | Y | | householdMemberId
time | timestamp | Y | | 飲食紀錄時間
timePeriod | int | Y | | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | Y | | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
foodId | int | Y | | 飲食紀錄的的食品編號 (-1則為自訂飲食名稱, 或是記錄方式為使用我的餐盤計劃)
foodName | string | - | | 如果foodId = -1,且記錄方式為食品資料庫時則為必填
quantity | double | Y | | 飲食紀錄的的食品數量
foodCategoryId | string | Y | | 食材營養素id, 飲食記錄方式使用我的餐盤計劃時為必填
plateId | string | N | | 目前使用的我的餐盤id
cookedType | string | Y | | 飲食記錄方式使用我的餐盤計劃時, 食材的烹調方式, 參閱 [烹調方式](#烹調方式)
addedSugar | string | Y | | 飲食記錄方式使用我的餐盤計劃時, 食材是否額外加糖, 參閱 [額外加糖](#額外加糖)
```javascript
{
"id": 917,
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"time": 1664955020000,
"timePeriod": 2,
"timePeriodType": 21,
"foodId": -1,
"quantity": 1.5,
"foodCategoryId": "3bab6bb8-b286-4ccd-9de3-bc282acdb090",
"plateId": "678901f0-8834-4a31-b381-5f5faab62825",
"cookedType": "FRIED"
}
```
#### Error
httpCode | 錯誤碼 | 說明
--- | --- | ---
400 | API_ERROR.NOT_EXIST | 無此筆資料
403 | API_ERROR.PERMISSION_DENIED | 無此操作權限
422 | SERVICE_ERROR.DIET_DIARY_HAD_ADJUST_UPDATE_NOT_ALLOWED | 有調整記錄,不允許編輯飲食記錄
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | long | 飲食紀錄id
householdMemberId | string | householdMemberId
time | timestamp | 飲食紀錄時間
hhmmOfTime | int | time 的 hhmm 格式,比如早上 10:30, 這個值就是 1030,作為搜尋的條件之用
timePeriod | int | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
foodId | int | 飲食紀錄的的食品編號 (-1則為自訂飲食名稱, 或是記錄方式為使用我的餐盤計劃)
foodName | string | 食品名稱
timeAndTimePeriodType | timestamp | 作為排序之用,先依 time 排出每日的飲食紀錄,再依 timePeriodType 來排序
quantity | double | 食品數量
calorie | double | 熱量 (需乘上 quantity,四捨五入到小數點第一位)
protein | double | 蛋白質 (需乘上 quantity,四捨五入到小數點第一位)
dietaryFiber | double | 膳食纖維 (需乘上 quantity,四捨五入到小數點第一位)
carbohydrate | double | 碳水化合物 (需乘上 quantity,四捨五入到小數點第一位)
fat | double | 脂肪 (需乘上 quantity,四捨五入到小數點第一位)
foodCategoryId | string | 食材營養素id, 飲食記錄方式使用我的餐盤計劃時為必填
plateId | string | 目前使用的我的餐盤id
cookedType | string | 飲食記錄方式使用我的餐盤計劃時, 食材的烹調方式, 參閱 [烹調方式](#烹調方式)
addedSugar | string | 飲食記錄方式使用我的餐盤計劃時, 食材是否額外加糖, 參閱 [額外加糖](#額外加糖)
foodCategory | string | 飲食記錄方式使用我的餐盤計劃時, 食物分類, 參閱[食物分類](#食物分類)
foodCategoryType | string | 飲食記錄方式使用我的餐盤計劃時, 食物類型, 請參閱[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": 917,
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"time": 1664955020000,
"hhmmOfTime": 1530,
"timePeriod": 2,
"timePeriodType": 21,
"foodId": -1,
"foodName": "全榖雜糧(油炸)",
"timeAndTimePeriodType": 1664899200021,
"quantity": 1.5,
"calorie": 170,
"protein": 3,
"dietaryFiber": 0,
"carbohydrate": 22.5,
"fat": 5,
"createdAt": 1666170077905,
"creator": "6ec4bd89-633a-4f67-be6e-01172f92223e",
"foodCategoryId": "3bab6bb8-b286-4ccd-9de3-bc282acdb090",
"plateId": "678901f0-8834-4a31-b381-5f5faab62825",
"cookedType": "FRIED"
}
}
}
```
### WEB端-刪除飲食記錄[WEB]
```url
POST /diet-plan-mgmt/diary/delete
```
#### Request
欄位 | 型態 | Required | 預設 | 說明
---- | --- | --- | --- | ---
id | long | Y | | 飲食記錄id
```javascript
{
"id": 918
}
```
#### Error
httpCode | 錯誤碼 | 說明
--- | --- | ---
400 | API_ERROR.NOT_EXIST | 無此筆資料
403 | API_ERROR.PERMISSION_DENIED | 無此操作權限
422 | SERVICE_ERROR.DIET_DIARY_HAD_ADJUST_DELETE_NOT_ALLOWED | 有調整記錄,不允許刪除飲食記錄
#### Response
欄位 | 型態 | 說明
--- | --- | ---
count | int | count > 0 表示刪除成功
```javascript
{
"httpCode": 200,
"result": {
"data": {
"count": 1
}
}
}
```
### 取得飲食建議列表[APP/WEB]
```url
POST /diet/diary/advice/list
```
#### Request
欄位 | 型態 | 預設 | 說明
--- | --- | --- |---
query | json | | 查詢條件json
pagination | json | | 分頁json
sorter | json | | 排序json
##### query (查詢條件json)
欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明
---|---|---|---|---|---
householdMemberId | string | **Web**Y | | | 要搜尋的 householdMemberId,Web端必填,App端由 token 取得
dietDate | string | | | | 要搜尋的日期, YYYY-MM-DD
timePeriod | int | | | -1 | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | | | -1 | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
##### pagination (分頁json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
current | int | | 1 | 當前頁數
pageSize | int | | 10 | 每頁結果數量,-1 為顯示所有
##### sorter (排序json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
field | string | | updateTime | 排序欄位,可排序欄位有 updateTime, timePeriodType, creatorName
order | string | | desc | 升序或降序
```javascript
{
"query": {
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"dietDate": "2022-10-15",
"timePeriod": null,
"timePeriodType": null
},
"pagination": {
"current": 1,
"pageSize":10
},
"sorter": {
"field": "createdAt",
"order": "desc"
}
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 飲食建議id
householdMemberId | string |
dietDate | timestamp | 飲食記錄日期
timePeriod | int | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
advice | string | 飲食建議內容
creator | string | 建議人員的account id
creatorName | string | 建議人員名稱
creatorRoleName | string | 建議人員角色名稱
tenantName | string | 建議人員租戶名稱
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": "39e5ccce-7c1b-4c32-bb81-09e0513b6bfd",
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"dietDate": 1665763200000,
"timePeriod": 2,
"timePeriodType": 21,
"advice": "別吃太多啦~~",
"creator": "6ec4bd89-633a-4f67-be6e-01172f92223e",
"createTime": 1666172892334,
"updater": "6ec4bd89-633a-4f67-be6e-01172f92223e",
"updateTime": 1666172892334,
"creatorName": "蘇凱文"
}
],
"pagination": {
"current": 1,
"pageSize": 10,
"total": 1
},
"sorter": {
"field": "createdAt",
"order": "desc"
},
"total": 1
}
}
```
### WEB端-新增飲食建議[WEB]
```url
POST /diet-plan-mgmt/advice/add
```
#### Request
欄位 | 型態 | Required | 長度限制 | 預設 | 說明
---- | --- | --- | --- | --- | ---
householdMemberId | string | Y | | | householdMemberId
dietDate | string | Y | | | 飲食記錄日期, YYYY-MM-DD
timePeriod | int | Y | | | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | Y | | | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
advice | string | N | 2000 | | 飲食建議內容
```javascript
{
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"dietDate": "2022-10-15",
"timePeriod": 2,
"timePeriodType": 21,
"advice": "別吃太多啦~~"
}
```
#### Error
httpCode | 錯誤碼 | 說明
--- | --- | ---
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 飲食建議id
householdMemberId | string |
dietDate | timestamp | 飲食記錄日期
timePeriod | int | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
advice | string | 飲食建議內容
creator | string | 建議人員的account id
creatorName | string | 建議人員名稱
creatorRoleName | string | 建議人員角色名稱
tenantName | string | 建議人員租戶名稱
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "39e5ccce-7c1b-4c32-bb81-09e0513b6bfd",
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"dietDate": 1665763200000,
"timePeriod": 2,
"timePeriodType": 21,
"advice": "別吃太多啦~~",
"creator": "6ec4bd89-633a-4f67-be6e-01172f92223e",
"createTime": 1666172892334,
"updater": "6ec4bd89-633a-4f67-be6e-01172f92223e",
"updateTime": 1666172892334
}
}
}
```
### WEB端-修改飲食建議[WEB]
```url
POST /diet-plan-mgmt/advice/update
```
#### Request
欄位 | 型態 | Required | 長度限制 | 預設 | 說明
---- | --- | --- | --- | --- | ---
id | string | Y | | | 飲食建議id
householdMemberId | string | Y | | | householdMemberId
dietDate | string | Y | | | 飲食記錄日期, YYYY-MM-DD
timePeriod | int | Y | | | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | Y | | | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
advice | string | N | 2000 | | 飲食建議內容
```javascript
{
"id": "5ed0c1f8-717a-476d-9d7c-9990eac14335",
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"dietDate": "2022-10-15",
"timePeriod": 2,
"timePeriodType": 20,
"advice": "吃太多不好唷~~"
}
```
#### Error
httpCode | 錯誤碼 | 說明
--- | --- | ---
400 | API_ERROR.NOT_EXIST | 無此筆資料
403 | API_ERROR.PERMISSION_DENIED | 無此操作權限
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 飲食建議id
householdMemberId | string |
dietDate | timestamp | 飲食記錄日期
timePeriod | int | 飲食紀錄時段, 請參閱[用餐時段](#用餐時段)
timePeriodType | int | 飲食紀錄餐別, 請參閱[用餐餐別](#用餐餐別)
advice | string | 飲食建議內容
creator | string | 建議人員的account id
creatorName | string | 建議人員名稱
creatorRoleName | string | 建議人員角色名稱
tenantName | string | 建議人員租戶名稱
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "39e5ccce-7c1b-4c32-bb81-09e0513b6bfd",
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"dietDate": 1665763200000,
"timePeriod": 2,
"timePeriodType": 21,
"advice": "別吃太多啦~~",
"creator": "6ec4bd89-633a-4f67-be6e-01172f92223e",
"createTime": 1666172892334,
"updater": "6ec4bd89-633a-4f67-be6e-01172f92223e",
"updateTime": 1666172892334
}
}
}
```
### WEB端-刪除飲食建議[WEB]
```url
POST /diet-plan-mgmt/advice/delete
```
#### Request
欄位 | 型態 | Required | 長度限制 | 預設 | 說明
---- | --- | --- | --- | --- | ---
id | string | Y | | | 飲食建議id
```javascript
{
"id": "5ed0c1f8-717a-476d-9d7c-9990eac14335"
}
```
#### Error
httpCode | 錯誤碼 | 說明
--- | --- | ---
400 | API_ERROR.NOT_EXIST | 無此筆資料
403 | API_ERROR.PERMISSION_DENIED | 無此操作權限
#### Response
欄位 | 型態 | 說明
--- | --- | ---
count | int | count > 0 表示刪除成功
```javascript
{
"httpCode": 200,
"result": {
"data": {
"count": 1
}
}
}
```
### WEB端-新增飲食調整記錄[WEB]
```url
POST /diet-plan-mgmt/adjust/add
```
#### Request
欄位 | 型態 | Required | 長度限制 | 預設 | 說明
---- | --- | --- | --- | --- | ---
householdMemberId | string | Y | | | householdMemberId
dietdiaryId | long | Y | | | 飲食記錄id
adjustQuantity | double | Y | | | 調整後數量
adjustFoodCategoryType | string | | 20 | | 調整後的食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
adjustCookedType | string | | 36 | | 調整後的烹調方式, 請參照[烹調方式](#烹調方式)
adjustAddedSugar | string | | 36 | | 調整後的額外加糖, 請參照[額外加糖](#額外加糖)
```javascript
{
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"dietdiaryId": 917,
"adjustQuantity": 2,
"adjustFoodCategoryType": null,
"adjustCookedType": null,
"adjustAddedSugar": null
}
```
#### Error
httpCode | 錯誤碼 | 說明
--- | --- | ---
402 | SERVICE_ERROR.DIET_DIARY_NOT_EXIST | 飲食記錄不存在
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 飲食調整記錄id
householdMemberId | string | householdMemberId
dietdiaryId | long | 飲食記錄id
adjustQuantity | double | 調整後數量
adjustFoodCategoryId | string | 調整後的食物id
adjustFoodCategoryType | string | 調整後的食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
adjustCookedType | string | 調整後的烹調方式, 請參照[烹調方式](#烹調方式)
adjustAddedSugar | string | 調整後的額外加糖, 請參照[額外加糖](#額外加糖)
adjustCalorie | double | 調整後的熱量
adjustProtein | double | 調整後的蛋白質(g)
adjustDietaryFiber | double | 調整後的膳食纖維(g)
adjustCarbohydrate | double | 調整後的碳水化合物(g)
adjustFat | double | 調整後的脂肪(g)
creator | string | 建議人員的account id
creatorName | string | 調整人員名稱
creatorRoleName | string | 調整人員角色名稱
tenantName | string | 調整人員租戶名稱
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "4be5af28-27e3-4e2d-91da-defc6b5a6851",
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"dietdiaryId": 917,
"adjustQuantity": 2,
"adjustCalorie": 0,
"adjustProtein": 0,
"adjustDietaryFiber": 0,
"adjustCarbohydrate": 0,
"adjustFat": 0,
"creator": "6ec4bd89-633a-4f67-be6e-01172f92223e",
"createTime": 1666252976431,
"updater": "6ec4bd89-633a-4f67-be6e-01172f92223e",
"updateTIme": 1666252976431
}
}
}
```
### WEB端-修改飲食調整記錄[WEB]
```url
POST /diet-plan-mgmt/adjust/update
```
#### Request
欄位 | 型態 | Required | 長度限制 | 預設 | 說明
---- | --- | --- | --- | --- | ---
id | string | Y | | | 飲食調整記錄id
householdMemberId | string | Y | | | householdMemberId
dietdiaryId | long | Y | | | 飲食記錄id
adjustQuantity | double | Y | | | 調整後數量
adjustFoodCategoryType | string | | 20 | | 調整後的食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
adjustCookedType | string | | 36 | | 調整後的烹調方式, 請參照[烹調方式](#烹調方式)
adjustAddedSugar | string | | 36 | | 調整後的額外加糖, 請參照[額外加糖](#額外加糖)
```javascript
{
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"dietdiaryId": 917,
"adjustQuantity": 2,
"adjustFoodCategoryType": null,
"adjustCookedType": null,
"adjustAddedSugar": null
}
```
#### Error
httpCode | 錯誤碼 | 說明
--- | --- | ---
402 | SERVICE_ERROR.DIET_DIARY_NOT_EXIST | 飲食記錄不存在
400 | API_ERROR.NOT_EXIST | 無此筆資料
403 | API_ERROR.PERMISSION_DENIED | 無此操作權限
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 飲食調整記錄id
householdMemberId | string | householdMemberId
dietdiaryId | long | 飲食記錄id
adjustQuantity | double | 調整後數量
adjustFoodCategoryId | string | 調整後的食物id
adjustFoodCategoryType | string | 調整後的食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
adjustCookedType | string | 調整後的烹調方式, 請參照[烹調方式](#烹調方式)
adjustAddedSugar | string | 調整後的額外加糖, 請參照[額外加糖](#額外加糖)
adjustCalorie | double | 調整後的熱量
adjustProtein | double | 調整後的蛋白質(g)
adjustDietaryFiber | double | 調整後的膳食纖維(g)
adjustCarbohydrate | double | 調整後的碳水化合物(g)
adjustFat | double | 調整後的脂肪(g)
creator | string | 建議人員的account id
creatorName | string | 調整人員名稱
creatorRoleName | string | 調整人員角色名稱
tenantName | string | 調整人員租戶名稱
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "4be5af28-27e3-4e2d-91da-defc6b5a6851",
"householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
"dietdiaryId": 917,
"adjustQuantity": 2,
"adjustCalorie": 0,
"adjustProtein": 0,
"adjustDietaryFiber": 0,
"adjustCarbohydrate": 0,
"adjustFat": 0,
"creator": "6ec4bd89-633a-4f67-be6e-01172f92223e",
"createTime": 1666252976431,
"updater": "6ec4bd89-633a-4f67-be6e-01172f92223e",
"updateTIme": 1666252976431
}
}
}
```
### WEB端-刪除飲食調整記錄[WEB]
```url
POST /diet-plan-mgmt/adjust/delete
```
#### Request
欄位 | 型態 | Required | 長度限制 | 預設 | 說明
---- | --- | --- | --- | --- | ---
id | string | Y | | | 飲食調整記錄id
```javascript
{
"id": "5ed0c1f8-717a-476d-9d7c-9990eac14335"
}
```
#### Error
httpCode | 錯誤碼 | 說明
--- | --- | ---
400 | API_ERROR.NOT_EXIST | 無此筆資料
403 | API_ERROR.PERMISSION_DENIED | 無此操作權限
#### Response
欄位 | 型態 | 說明
--- | --- | ---
count | int | count > 0 表示刪除成功
```javascript
{
"httpCode": 200,
"result": {
"data": {
"count": 1
}
}
}
```