# 定位系統 Web API 技術指引
## 請求錯誤代碼說明
* 401:填入參數錯誤
* 402:accesToken 錯誤
* 403:無權限操作
* 404:系統錯誤
## 取得總部/品牌/門店
API網址:http://localhost/dudoo/reservation/getHQBrandsCompany
功能說明:取得所有公司總部名稱,顯示在下拉選單,並為取得品牌的查詢必要條件。
限制條件:使用者必須登入
通訊協議命令:POST
#### Request 輸入參數
| 參數名稱 | 描述 | 類型和長度限制 | 必填(Y/N) |
| ----------- | ------------------------------------------------------------ | -------------- | --------- |
| type | 本參數填入「**HQ**」則回應會獲得總部<br />填入「**BRANDS**」則回應會獲得品牌<br />填入「**COMPANY**」則回應會獲得門店 | String | Y |
| hierarchyId | 當 type 填入「**BRANDS**」時,此參數必須帶入 | Int | N |
| brandId | 當 type 填入「**COMPANY**」時,此參數必須帶入 | Int | N |
#### Response 返回結果(成功)
| 參數名稱 | 描述 | 類型和長度限制 |
| --------------- | ------------------------------------------------------------ | -------------- |
| success | 成功 = true,失敗 = false | Boolean |
| recordsTotal | 查詢資料總筆數 | Int |
| recordsFiltered | 如果有搜尋時的資料筆數,如果無搜尋條件則與 recordsTotal 相同 | Int |
| hierarchyId | 總部編號,當輸入參數 type = '**HQ**' 的時候才會出現 | Int |
| brandId | 品牌編號,當輸入參數 type = '**BRANDS**' 的時候才會出現 | Int |
| companyId | 門店編號,當輸入參數 type = '**COMPANY**' 的時候才會出現 | Int |
| name | 當輸入參數 type = '**HQ**' 的時候為總部名稱<br />當輸入參數 type = '**BRANDS**' 的時候為品牌名稱<br />當輸入參數 type = '**COMPANY**' 的時候為門店名稱 | String |
| type | 當輸入參數 type = '**HQ**' 的時候顯示**HQ**<br />當輸入參數 type = '**BRANDS**' 的時候顯示**BRANDS**<br />當輸入參數 type = '**COMPANY**' 的時候顯示**COMPANY** | String |
#### Response 返回結果顯示範例(成功)
```json
# $type = 'HQ' 的時候
{
success: true,
recordsTotal: 1,
recordsFiltered: 1,
data:[
{
hierarchyId:1,
name:"圓石",
type:"HQ"
}
]
}
# $type = 'BRANDS' 的時候
{
success: true,
recordsTotal: 1,
recordsFiltered: 1,
data:[
{
brandId:10,
name:"我是品牌",
type:"BRANDS"
}
]
}
# $type = 'COMPANY' 的時候
{
success: true,
recordsTotal: 1,
recordsFiltered: 1,
data:[
{
companyId: 31,
name:"圓石左營店",
type:"COMPANY"
}
]
}
```
#### Response 返回結果(失敗)
| 參數名稱 | 描述 | 類型和長度限制 |
| --------------- | ------------------------------------------------------------ | -------------- |
| success | 成功 = true,失敗 = false | Boolean |
| recordsTotal | 查詢資料總筆數 | Int |
| recordsFiltered | 如果有搜尋時的資料筆數,如果無搜尋條件則與 recordsTotal 相同 | Int |
| code | 錯誤代碼 | Int |
| msg | 錯誤訊息 | String |
#### Response 返回結果顯示範例(失敗)
```json
{
success: false,
recordsTotal: 1,
recordsFiltered: 1,
data:[
{
code:401,
msg:"填入參數錯誤"
}
]
}
```
## 通知發送紀錄
API網址:http://localhost/dudoo/reservation/notificationSendLog
功能說明:本 API 提供通知發送紀錄頁面顯示資料,查詢條件除了起迄日期不得留空之外,其他欄位均可留空。
限制條件:查詢條件除了起迄日期必須填入參數之外,其餘參數非必填。
通訊協議命令:POST
#### Request 輸入參數
| 參數名稱 | 描述 | 類型和長度限制 | 必填(Y/N) |
| ----------- | ------------------------- | -------------- | --------- |
| hierarchyId | 總部,填入總部編號 | Int | N |
| brandId | 品牌,填入品牌編號 | Int | N |
| companyId | 門店,填入門店編號 | Int | N |
| phone | 手機號碼搜尋 | String(15) | N |
| username | 顧客姓名 | String | N |
| startDate | 起迄日期,格式 YYYY/mm/dd | DateTime | Y |
| endDate | 起迄日期,格式 YYYY/mm/dd | DateTime | Y |
#### Response 返回結果(成功)
| 參數名稱 | 描述 | 類型和長度限制 |
| -------------------- | ------------------------------------------------------------ | -------------- |
| success | 成功 = true,失敗 = false | Boolean |
| recordsTotal | 查詢資料總筆數 | Int |
| recordsFiltered | 如果有搜尋時的資料筆數,如果無搜尋條件則與 recordsTotal 相同 | Int |
| createTime | 訊息發送時間,格式為 yyyy/mm/dd HH:ii | Date |
| phone | 顧客電話,當 notificationResource 為**簡訊**時不論發送成功與否,都要顯示電話號碼。當 notificationResource 為**LINE**則顯示 「 - 」即可。 | String(15) |
| name | 顧客姓名 | String |
| hq | 交易總部 | String |
| brand | 交易品牌 | String |
| company | 發送門店 | String |
| notificationResource | 通知類型(sms = 簡訊 / line = LINE) | String |
| notificationType | 通知種類:<br />confirm = 訂位確認(自動)<br />remind_auto = 用餐提醒(自動)<br />remind_manual = 用餐提醒(手動) | String |
| status | 狀態種類:<br />queue = 排程中<br />sent = 成功<br />fail = 失敗<br />terminate = 失敗 | String |
| id | 通知發送紀錄ID,取自 notify_job 表格的 job_id 欄位 | Int |
#### Response 返回結果顯示範例(成功)
```json
{
success: ture,
recordsTotal: 4,
recordsFiltered: 4,
data:[
{
id: 1,
createTime: "2018/07/20 08:02",
phone: "0918106177",
name: "翁先珍",
hq: "酮溫層酮低碳飲食專賣店",
brand: "健身廚房",
company: "奎克咖啡",
notificationResource: "sms",
notificationType: "confirm",
status: "terminate"
},
{
id: 2,
createTime: "2018/07/20 08:02",
phone: "0919233121",
name: "謝一行",
hq: "健身廚房",
brand: "健身廚房",
company: "健身廚房",
notificationResource: "sms",
notificationType: "remind_auto",
status: "sent"
},
{
id: 3,
createTime: "2018/07/20 08:02",
phone: "-",
name: "林君稀",
hq: "瓏鹽酥雞",
brand: "瑪喜大韓食堂",
company: "瓏鹽酥雞",
notificationResource: "line",
notificationType: "remind_auto",
status: "sent"
},
{
id: 4,
createTime: "2018/07/20 08:02",
phone: "-",
name: "謝羽志",
hq: "翻白眼女孩 炭烤三明治",
brand: "陳媽媽私房雞肉",
company: "翻白眼女孩 炭烤三明治",
notificationResource: "line",
notificationType: "remind_auto",
status: "sent"
}
]
}
```
#### Response 返回結果(失敗)
| 參數名稱 | 描述 | 類型和長度限制 |
| --------------- | ------------------------------------------------------------ | -------------- |
| success | 成功 = true,失敗 = false | Boolean |
| recordsTotal | 查詢資料總筆數 | Int |
| recordsFiltered | 如果有搜尋時的資料筆數,如果無搜尋條件則與 recordsTotal 相同 | Int |
| code | 錯誤代碼 | Int |
| msg | 錯誤訊息 | String |
#### Response 返回結果顯示範例(失敗)
```json
{
success: false,
recordsTotal: 1,
recordsFiltered: 1,
data:[
{
code:401,
msg:"填入參數錯誤"
}
]
}
```
## 發送通知統計
API網址:http://localhost/dudoo/reservation/notificationSendStatic
功能說明:本 API 提供通知發送統計頁面顯示資料,查詢條件除了起迄日期不得留空之外,其他欄位均可留空。
限制條件:查詢條件除了起迄日期必須填入參數之外,其餘參數非必填。
通訊協議命令:POST
#### Request 輸入參數
| 參數名稱 | 描述 | 類型和長度限制 | 必填(Y/N) |
| ----------- | ------------------------- | -------------- | --------- |
| hierarchyId | 總部,填入總部編號 | Int | N |
| brandId | 品牌,填入品牌編號 | Int | N |
| companyId | 門店,填入門店編號 | Int | N |
| startDate | 起迄日期,格式 YYYY/mm/dd | DateTime | Y |
| endDate | 起迄日期,格式 YYYY/mm/dd | DateTime | Y |
#### Response 返回結果(成功)
| 參數名稱 | 描述 | 類型和長度限制 |
| --------------- | ------------------------------------------------------------ | -------------- |
| success | 成功 = true,失敗 = false | Boolean |
| recordsTotal | 查詢資料總筆數 | Int |
| recordsFiltered | 如果有搜尋時的資料筆數,如果無搜尋條件則與 recordsTotal 相同 | Int |
| smsTotal | 簡訊發送數量合計 | Int |
| lineTotal | Line 訊息發說數量合計 | Int |
| createTime | 發送時間,格式為 YYYY/mm/dd | Date |
| sms | 當日簡訊發送數量合計 | Int |
| line | 當日Line 訊息發說數量合計 | Int |
#### Response 返回結果顯示範例(成功)
```json
{
success: true,
recordsTotal: 1,
recordsFiltered: 1,
smsTotal: 60905,
lineTotal: 816,
data:[
{
createTime: "2018/08/15",
sms: 59606,
line: 312
},
{
createTime: "2018/08/14",
sms: 11068,
line: 402
},
{
createTime: "2018/08/13",
sms: 67417,
line: 403
}
]
}
```
#### Response 返回結果(失敗)
| 參數名稱 | 描述 | 類型和長度限制 |
| --------------- | ------------------------------------------------------------ | -------------- |
| success | 成功 = true,失敗 = false | Boolean |
| recordsTotal | 查詢資料總筆數 | Int |
| recordsFiltered | 如果有搜尋時的資料筆數,如果無搜尋條件則與 recordsTotal 相同 | Int |
| code | 錯誤代碼 | Int |
| msg | 錯誤訊息 | String |
#### Response 返回結果顯示範例(失敗)
```json
{
success: false,
recordsTotal: 1,
recordsFiltered: 1,
data:[
{
code:401,
msg:"填入參數錯誤"
}
]
}
```
## 通知方案設定/新增/修改/刪除通知方案
API網址:http://localhost/dudoo/reservation/alterNotificationProgram
功能說明:本 API 提供通知方案設定新增一個通知方案
限制條件:使用者必須登入
通訊協議命令:POST
#### Request 輸入參數
| 參數名稱 | 描述 | 類型和長度限制 | 必填(Y/N) |
| --------- | ------------------------------------------------------------ | -------------- | --------- |
| name | 方案名稱 | String | Y |
| startDate | 開始販售日期 | DateTime | Y |
| endDate | 結束販售日期,不填預設永久 | DateTime | N |
| price | 方案收費金額 | Int | Y |
| smsPrice | SMS簡訊每組價錢 | Float | Y |
| linePrice | LINE訊息通知每組價錢 | Float | Y |
| type | **CREATE** = 新增,**UPDATE** = 修改,**DELETE** = 刪除 | String | Y |
| id | **dudoo_center.services 的 id**,當操作 **UPDATE**、**DELETE** 時才需要傳入此參數 | Int | N |
| disabled | 販售狀態,0 = 銷售,1 = 停售 | Int | N |
#### Response 返回結果(成功)
| 參數名稱 | 描述 | 類型和長度限制 |
| --------------- | ------------------------------------------------------------ | -------------- |
| success | 成功 = true,失敗 = false | Boolean |
| recordsTotal | 查詢資料總筆數 | Int |
| recordsFiltered | 如果有搜尋時的資料筆數,如果無搜尋條件則與 recordsTotal 相同 | Int |
| code | 狀態碼,code = 0 表示新增方案成功 | Int |
| msg | 新增/修改/刪除完畢顯示訊息 | String |
#### Response 返回結果顯示範例(成功)
```json
{
success: true,
recordsTotal: 1,
recordsFiltered: 1,
data: {
code: 201,
msg: "操作成功"
}
}
```
#### Response 返回結果(失敗)
| 參數名稱 | 描述 | 類型和長度限制 |
| --------------- | ------------------------------------------------------------ | -------------- |
| success | 成功 = true,失敗 = false | Boolean |
| recordsTotal | 查詢資料總筆數 | Int |
| recordsFiltered | 如果有搜尋時的資料筆數,如果無搜尋條件則與 recordsTotal 相同 | Int |
| code | 錯誤代碼 | Int |
| msg | 錯誤訊息 | String |
#### Response 返回結果顯示範例(失敗)
```json
{
success: false,
recordsTotal: 1,
recordsFiltered: 1,
data:[
{
code:401,
msg:"填入參數錯誤"
}
]
}
```
## 通知方案設定/顯示所有通知方案
API網址:http://localhost/dudoo/reservation/getNotificationProgram
功能說明:本 API 提供通知方案設定頁面載入時,顯示所有方案狀態列表
限制條件:使用者必須登入
通訊協議命令:GET
#### Request 輸入參數
| 參數名稱 | 描述 | 類型和長度限制 | 必填(Y/N) |
| -------- | ---- | -------------- | --------- |
| 無 | - | - | - |
#### Response 返回結果(成功)
| 參數名稱 | 描述 | 類型和長度限制 |
| --------------- | ------------------------------------------------------------ | -------------- |
| success | 成功 = true,失敗 = false | Boolean |
| recordsTotal | 查詢資料總筆數 | Int |
| recordsFiltered | 如果有搜尋時的資料筆數,如果無搜尋條件則與 recordsTotal 相同 | Int |
| name | 方案名稱 | String |
| startDate | 銷售開始時間,格式為YYYY-mm-dd HH:ii:ss | String |
| endDate | 結束銷售時間,格式為YYYY-mm-dd HH:ii:ss,若是 NULL 表示無限期 | String |
| linePrice | LINE(組/價) | Int |
| lineAmount | Line 可發送數(組) | Int |
| smsPrice | 簡訊(組/價) | Int |
| smsAmount | 簡訊可發送數(組) | Int |
| programPrice | 方案金額 | Int |
| status | 狀態 0 = 排程中,1 = 銷售中,2 = 已停售 | Int |
| id | **dudoo_center.services 的 id** | Int |
#### Response 返回結果顯示範例(成功)
```json
{
success: true,
recordsTotal: 1,
recordsFiltered: 1,
data:[
{
name: "豪華套餐",
startDate: "2020-02-06 00:00:00",
endDate: "2020-12-31 00:00:00",
linePrice: 2.5,
lineAmount: 3600,
smsPrice: 5,
smsAmount: 1800,
programPrice: 9000,
status: 1
}
]
}
```
#### Response 返回結果(失敗)
| 參數名稱 | 描述 | 類型和長度限制 |
| --------------- | ------------------------------------------------------------ | -------------- |
| success | 成功 = true,失敗 = false | Boolean |
| recordsTotal | 查詢資料總筆數 | Int |
| recordsFiltered | 如果有搜尋時的資料筆數,如果無搜尋條件則與 recordsTotal 相同 | Int |
| code | 錯誤代碼 | Int |
| msg | 錯誤訊息 | String |
#### Response 返回結果顯示範例(失敗)
```json
{
success: false,
recordsTotal: 1,
recordsFiltered: 1,
data:[
{
code:403,
msg:"無權限操作"
}
]
}
```
##