# 八卦山會員前台
###### tags: `八卦山`,`API`,`會員管理`
| 日期 | 內容 | 編輯人 |
| -------- | -------- | -------- |
| 2020/02/22 | 初版 | coco |
| 2020/02/25 | 新增INT_TB_Relatives, | coco |
| 2020/03/02 | 修改查詢會員清單SQL | coco |
| 2020/03/10 | 修正文件細節 | coco |
## 相關說明
##### Schema : bagua_buddha
##### 專案名稱:bagua-buddha-ui
##### 備註說明:
畫面隨時會異動,該文件主要指出對應欄位參數
## 流程圖
## 會員管理
### 註冊會員
##### API Detail Process執行步驟說明
|步驟 | 程序 | 處理內容 |
| --- | --- | ---- |
| 1 | 前端導頁至輸入會員資料的[註冊]畫面 | 會員點擊[註冊]功能鍵後,導頁至[註冊]頁面,再欄位驗證合法前,確認按鈕需為<font color="#4F4F4F">灰色</font>,不可被點擊與呼叫API |
| 2 | 驗證參數是否合法 |欄位驗證不合法則,顯示回傳錯誤訊息。|
| 3 | 會員輸入資料後,呼叫API | 會員輸入必填資料後,前端需驗證輸入內容是否合法後,<font color="#007500">[註冊]</font>鈕亮起,呼叫此API,不合法則顯示回傳<font color="#f00">錯誤訊息</font>。 |
| 4 | 資料合法送出後,跳轉到[會員資訊]頁面 | 資料合法但送出資料後,因網路或其他問題而無法成功新增,需將錯誤訊息回傳至前端,並依照日期規範寫入LOG,且避免將Exception回傳至前端 |
| 5 | 結束,跳轉至成功畫面 | |
##### Correspond 畫面對應




POST : /insert
格式 : json
##### Request(請求後端電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------|--- | ------- | ------ |------------- | ------------------ |
| 會員序號 | V | custId | int(11) | |
| 密碼 | V | password | VARCHAR(200) |sha256 加密後存入 ,需英數八碼以上|
| 會員帳號 | V | username | VARCHAR(50) | 至少六碼英數字組合 |
| 會員名稱 | V | name | VARCHAR(500) | |
| 身分證字號/統一編號 | | idNum | VARCHAR(20) |預留欄位 |
| 地址 | V | address | VARCHAR(200) ||
| 戶籍地址 | V | ResidenceAddress | VARCHAR(200) ||
| email | | email | VARCHAR(100) | |
| 電話號碼 | | mobile | VARCHAR(20) | |
| 年干 | | year1 | VARCHAR(2) | 年干 lookupType = 'year1 ' |
| 年支 | | year2 | VARCHAR(2) | 年支 lookupType = 'year2 '|
| 月干 | | month1 | VARCHAR(2) | 月干 lookupType = month1' |
| 月支 | | month2 | VARCHAR(2) | 月支 lookupType = month1'|
| 日干 | | day1 | VARCHAR(2) | 日干 lookupType = 'day1'|
| 日支 | | dayr2 | VARCHAR(2) | 日支 lookupType = 'day2'|
| 時干 | | hour1 | VARCHAR(2) | 時干 lookupType = 'hour1'|
| 時支 | | hour2 | VARCHAR(2) | 日支 lookupType = 'hour2'|
| 性別 | V | gender | VARCHAR(20) | 性別 F:女 M:男 |
| 生日 | V | birthday | VARCHAR(8) | 20010506|
| 創建日期 | V | crDate | DATETIME(3) | |
| 修改日期 | V | dateStamp | DATETIME(3) ||
| 關係人 | | relative | array | |
| 關係序號| V | relativeId | int(11) | |
| 名稱 | V | name | VARCHAR(45) | 關係人姓名 |
| 稱謂 | | appellation | VARCHAR(200) | 關係人稱謂 |
| 性別 | V | gender | VARCHAR(20) | 關係人 |
| 生日 | V | birthday | VARCHAR(8) | 關係人 |
| 創建日期 | V | crDate | DATETIME(3) | |
| 修改日期 | V | dateStamp | DATETIME(3) ||
```json=
{
"password":"9af15b336e6a9619928537df30b2e6a2376569fcf9d7e773eccede65606529a0",
"username":"coco01",
"name":"測試帳號",
"address":"台北市大安區信義路二段72號",
"email":"coco@intella.co",
"mobile":"0911123123",
"year1":"",
"year2":"",
"month1":"",
"month2":"",
"day1":"",
"dayr2":"",
"hour1":"",
"hour2":"",
"gender":"F",
"birthday":"20010805",
"relative":[
"name":"英小拉",
"appellation":"妹妹",
"gender":"F",
"birthday":"19910526",
"crDate":"2021-02-25 17:39:07.000",
"dateStamp":"2021-02-25 17:39:07.000"
],
[
"name":"英特特",
"appellation":"弟弟",
"gender":"M",
"birthday":"19980228",
"crDate":"2021-02-25 17:39:07.000",
"dateStamp":"2021-02-25 17:39:07.000"
]
}
```
##### Response (回應前端的電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------| --- | ------- | ------ |------------- | ------------------ |
| 回應代碼| V| msgCode | string | 0000 | 0000:成功 其餘會顯示錯誤訊息|
| 回應訊息| V | msg | string | "" |
######
>資料庫執行成功,insert 均成功
```json=
{
"msgCode": "0000",
"msg": "",
"data":[]
}
```
>資料庫執行失敗,或發生其他exception
```json=
{
"msgCode": "9999",
"msg": "新增失敗,請重新操作",
"data":[]
}
```
>username ,資料庫查詢筆數 = 1
```json=
{
"msgCode": "0001",
"msg": "帳號已存在",
"data":[]
}
```
>username 與 password 資料庫查詢筆數 = 0
```json=
{
"msgCode": "0001",
"msg": "帳號、密碼不符合格式",
"data":[]
}
```
>Img 超出資料庫欄位
```json=
{
"msgCode": "0001",
"msg": "圖檔太大,請重新上傳",
"data":[]
}
```
##### SQL
```sql=
set @password = '9af15b336e6a9619928537df30b2e6a2376569fcf9d7e773eccede65606529a0';
set @username = 'coco01';
set @name = '測試帳號';
set @address = '台北市大安區信義路二段72號';
set @email = 'coco@intella.co';
set @mobile = '0911123123';
set @gender = 'F';
set @birthday = '20030921';
INSERT INTO
`bagua_buddha`.`INT_TB_Customer`
(
`password`,
`username`,
`name`,
`address`,
`email`,
`mobile`,
`gender`,
`birthday`,
`crDate`,
`dateStamp`
)
VALUES (
@password,
@username,
@name,
@address,
@email,
@mobile,
@gender,
@birthday
Sysdate(),
Sysdate()
);
```
>上方SQL執行成功,使得進行下方SQL,帶入上方custId
```sql=
SET @custId = #上方insert成功後取得自增主鍵
SET @name = "";
SET @appellation = "";
SET @gender = "";
SET @birthday = "";
INSERT INTO `bagua_buddha`.`INT_TB_Relatives`
(`custId`,
`name`,
`appellation`,
`gender`,
`birthday`,
`crDate`,
`dateStamp`)
VALUES (@custId,
@name,
@appellation,
@gender,
@birthday,
sysdate(),
sysdate());
```
### 新增會員眷屬關聯檔
POST : /insertRelation
格式 : json
##### Request(請求後端電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------|--- | ------- | ------ |------------- | ------------------ |
| 會員序號 | V | custId | int(11) | |
| 名稱 | V | name | VARCHAR(45) | 關係人姓名 |
| 稱謂 | | appellation | VARCHAR(200) | 關係人稱謂 |
| 性別 | V | gender | VARCHAR(20) | 關係人 |
| 生日 | V | birthday | VARCHAR(8) | 關係人 |
| 創建日期 | V | crDate | DATETIME(3) | |
| 修改日期 | V | dateStamp | DATETIME(3) ||
```json=
{
"name":"英小拉",
"appellation":"妹妹",
"gender":"F",
"birthday":"19910526",
"crDate":"2021-02-25 17:39:07.000",
"dateStamp":"2021-02-25 17:39:07.000"
}
```
##### Response (回應前端的電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------| --- | ------- | ------ |------------- | ------------------ |
| 回應代碼| V| msgCode | string | 0000 | 0000:成功 其餘會顯示錯誤訊息|
| 回應訊息| V | msg | string | "" |
######
>資料庫執行成功,insert 成功
```json=
{
"msgCode": "0000",
"msg": "",
"data":[]
}
```
>資料庫執行失敗,或發生其他exception
```json=
{
"msgCode": "9999",
"msg": "新增失敗,請重新操作",
"data":[]
}
```
>username 資料庫查詢筆數 = 0
```json=
{
"msgCode": "9999",
"msg": "帳號不存在",
"data":[]
}
```
```sql=
SET @custId = 1;
SET @name = "";
SET @appellation = "";
SET @gender = "";
SET @birthday = "";
INSERT INTO `bagua_buddha`.`INT_TB_Relatives`
(`custId`,
`name`,
`appellation`,
`gender`,
`birthday`,
`crDate`,
`dateStamp`)
VALUES (@custId,
@name,
@appellation,
@gender,
@birthday,
sysdate(),
sysdate());
```
### 查詢會員清單
##### API Detail Process執行步驟說明
|步驟 | 程序 | 處理內容 |
| --- | --- | ---- |
| 1 | 編輯會員資料 | 點擊左上角<font color="#4F4F4F">[漢堡]</font>功能鍵,點擊[設定],[編輯資料] |
| 2 | 呼叫查詢會員API,獲取該會員資料| 呼叫API,帶入參數<font color="#EA0000">[custId]</font>,並根據回傳值<font color="#0000E3">rsp</font>帶入相對應欄位。username 為唯讀欄位 |
| 4 | 結束 | |
##### Correspond 畫面對應


POST : /queryCustList
格式 : json
##### Request(請求後端電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------|--- | ------- | ------ |------------- | ------------------ |
| 會員序號 | V | custId | int(11) | 隱藏欄位,不顯示 |
| 會員帳號 | | username | VARCHAR(50) | |
| 關鍵字查詢 | | keyword | VARCHAR(50) | 關鍵字查詢 |
| 當前頁面 | V | currentPage | int(11) | |
| 每頁筆數 | V | pageSize | int(11) | |
| 總頁數 | V | totalPage | int(11) | |
```json=
{
"custId":1,
"keyword":"cocoTest01",
"currentPage":1,
"pageSize":20,
"totalPage":5
}
```
##### Response (回應前端的電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------| --- | ------- | ------ |------------- | ------------------ |
| 回應代碼| V| msgCode | string | 0000 | 0000:成功 其餘會顯示錯誤訊息|
| 回應訊息| V | msg | string | "" |
######
>資料庫執行成功,insert 均成功
```json=
{
"msgCode": "0000",
"msg": "",
"data":[]
}
```
>資料庫執行失敗,或發生其他exception
```json=
{
"msgCode": "9999",
"msg": "新增失敗,請重新操作",
"data":[]
}
```
>username 不存在
```json=
{
"msgCode": "9999",
"msg": "帳號不存在",
"data":[]
}
```
##### Response (回應前端的電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------|--- | ------- | ------ |------------- | ------------------ |
| 回應代碼| V| msgCode | string | 0000 | 0000:成功 其餘會顯示錯誤訊息|
| 回應訊息| V | msg | string | "" |
| 當前頁面 | V | currentPage | int(11) | |
| 每頁筆數 | V | pageSize | int(11) | |
| 總頁數 | V | totalPage | int(11) | |
| 會員序號 | V | custId | int(11) | |
| 會員帳號 | V | username | VARCHAR(50) | |
| 會員名稱 | V | name | VARCHAR(500) | |
| 身分證字號/統一編號 | | idNum | VARCHAR(20) |預留欄位 |
| 年干 | | year1 | VARCHAR(2) | 年干 lookupType = 'year1 ' |
| 年支 | | year2 | VARCHAR(2) | 年支 lookupType = 'year2 '|
| 月干 | | month1 | VARCHAR(2) | 月干 lookupType = month1' |
| 月支 | | month2 | VARCHAR(2) | 月支 lookupType = month1'|
| 日干 | | day1 | VARCHAR(2) | 日干 lookupType = 'day1'|
| 日支 | | dayr2 | VARCHAR(2) | 日支 lookupType = 'day2'|
| 時干 | | hour1 | VARCHAR(2) | 時干 lookupType = 'hour1'|
| 時支 | | hour2 | VARCHAR(2) | 日支 lookupType = 'hour2'|
| 地址 | V | address | VARCHAR(200) ||
| 戶籍地址 | V | ResidenceAddress | VARCHAR(200) ||
| email | | email | VARCHAR(100) | |
| 手機號碼 | | mobile | VARCHAR(20) | |
| 性別 | V | gender | VARCHAR(20) | 性別 F:女 M:男 |
| 生日 | V | birthday | VARCHAR(8) | 19910306|
| 創建日期 | V | crDate | DATETIME(3) | |
| 修改日期 | V | dateStamp | DATETIME(3) ||
| 關係人 | | relative | array | |
| 關係序號| V | relativeId | int(11) | |
| 名稱 | V | name | VARCHAR(45) | 關係人姓名 |
| 稱謂 | | appellation | VARCHAR(200) | 關係人稱謂 |
| 性別 | V | gender | VARCHAR(20) | 關係人 |
| 生日 | V | birthday | VARCHAR(8) | 關係人 |
| 創建日期 | V | crDate | DATETIME(3) | |
| 修改日期 | V | dateStamp | DATETIME(3) ||
>custId 查詢筆數 > 0
```json=
{
"msgCode": "0000",
"msg": "",
"data":[
"currentPage":1,
"pageSize":20,
"totalPage":5
"content":[{
"custId":1,
"idNum":"",
"username":"coco01",
"name":"測試帳號",
"year1":"",
"year2":"",
"month1":"",
"month2":"",
"day1":"",
"dayr2":"",
"hour1":"",
"hour2":"",
"address":"台北市大安區信義路二段72號",
"ResidenceAddress":"台北市大安區信義路二段72號",
"email":"coco@intella.co",
"mobile":"0911123123",
"gender":"F",
"birthday":"19950305",
"crDate":"2021-02-19 17:56:05.000",
"dateStamp":"2021-02-19 17:56:05.000",
"relative":[
"relativeId":1,
"name":"英小拉",
"appellation":"妹妹",
"gender":"F",
"birthday":"19910526",
"crDate":"2021-02-25 17:39:07.000",
"dateStamp":"2021-02-25 17:39:07.000"
],
[
"relativeId":2,
"name":"英特特",
"appellation":"弟弟",
"gender":"M",
"birthday":"19980228",
"crDate":"2021-02-25 17:39:07.000",
"dateStamp":"2021-02-25 17:39:07.000"
]
},
{
"custId":1,
"idNum":"",
"username":"coco01",
"name":"測試帳號",
"year1":"",
"year2":"",
"month1":"",
"month2":"",
"day1":"",
"dayr2":"",
"hour1":"",
"hour2":"",
"address":"台北市大安區信義路二段72號",
"ResidenceAddress":"台北市大安區信義路二段72號",
"email":"coco@intella.co",
"mobile":"0911123123",
"gender":"F",
"birthday":"19910201",
"relative":[
"relativeId":1,
"name":"英小拉",
"appellation":"妹妹",
"gender":"F",
"birthday":"19910526",
"crDate":"2021-02-25 17:39:07.000",
"dateStamp":"2021-02-25 17:39:07.000"
],
[
"relativeId":2,
"name":"英特特",
"appellation":"弟弟",
"gender":"M",
"birthday":"19980228",
"crDate":"2021-02-25 17:39:07.000",
"dateStamp":"2021-02-25 17:39:07.000"
]
}]
]
}
```
>custId 查詢筆數 = 0
```sql=
{
"msgCode": "0000",
"msg": "查無資料",
"data":[]
}
```
>custId 查詢筆數 < 0 ,或發生其他exception
```sql=
{
"msgCode": "9999",
"msg": "查找失敗,請重新操作",
"data":[]
}
```
其餘參考 通用錯誤回應
##### SQL
```sql=
set @custId = '1';
set @keyword = '';
set @username = '';
set @startDate = '';
set @endDate = '';
SELECT
`custId`,
`password`,
`username`,
`name`,
`idNum`,
`address`,
`email`,
`mobile`,
`gender`,
`birthday`,
`crDate`,
`dateStamp`
FROM `bagua_buddha`.`INT_TB_Customer`
where
#---------判斷是否有傳入餐數,若為空值&null,則不串接and SQL語句----------
( custId= @custId )
or ( username like @keyword )
or ( name like @keyword)
or ( idNum like @keyword)
or ( address like @keyword)
or ( email like @keyword )
or ( birthday like @keyword )
and crDate between @startDate and @endDate
order by crDate asc
;
```
>custId 查詢筆數 > 0 時,執行以下SQL
```sql=
SET @custId = 1;
SELECT
`relativeId`,
`custId`,
`name`,
`appellation`,
`gender`,
`birthday`,
`crDate`,
`dateStamp`
FROM `bagua_buddha`.`INT_TB_Relatives`
WHERE `custId` = @custId;
```
### 刪除會員
>目前無實作 2021/02/25
##### API Detail Process執行步驟說明
|步驟 | 程序 | 處理內容 |
| --- | --- | ---- |
| 1 | 刪除會員資料 | 選取指定會員資料,帶入參數<font color="#EA0000">[custId]</font> |
| 2 | 刪除關聯檔| 需先刪除關聯檔,成功後再刪除會員檔 |
| 3 | 結束 | |
POST : /delete
格式 : json
##### Request(請求後端電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------|--- | ------- | ------ |------------- | ------------------ |
| 會員序號 | V | custId | VARCHAR(50) | |
```json=
"custId":1
```
##### Response (回應前端的電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------| --- | ------- | ------ |------------- | ------------------ |
| 回應代碼| V| msgCode | VARCHAR(4) | 0000 | 0000:成功 其餘會顯示錯誤訊息|
| 回應訊息| V | msg | VARCHAR(50) | "" |
######
>資料庫執行成功,回傳下列訊息
```json=
{
"msgCode": "0000",
"msg": "",
"data":[]
}
```
>資料庫執行失敗,或發生其他exception,回傳下列訊息
```json=
{
"msgCode": "9999",
"msg": "刪除失敗,請重新操作",
"data":[]
}
```
>其餘參考 通用錯誤回應
>需先刪除親屬關聯檔
##### SQL
```sql=
set @custId = 1;
DELETE FROM `bagua_buddha`.`INT_TB_Relatives`
WHERE ( `custId` = @custId );
```
>執行成功後,方得執行以下SQL
##### SQL
```sql=
set @custId = 1;
DELETE FROM `bagua_buddha`.`INT_TB_Customer`
WHERE ( `custId` = @custId );
```
### 編輯會員資料
##### API Detail Process執行步驟說明
|步驟 | 程序 | 處理內容 |
| --- | --- | ---- |
| 1 | 編輯會員資料 | 點擊左上角<font color="#4F4F4F">[漢堡]</font>功能鍵,點擊[設定],[編輯資料] |
| 2 | 呼叫查詢會員API,獲取該會員資料| 呼叫API,帶入參數<font color="#EA0000">[custId]</font>,並根據回傳值<font color="#0000E3">rsp</font>帶入相對應欄位。username 為唯讀欄位 |
| 3 | 驗證參數是否合法 |欄位驗證不合法則,顯示回傳錯誤訊息。|
| 4 | 會員輸入資料後,呼叫API | 會員輸入必填資料後,前端需驗證輸入內容是否合法後,<font color="#007500">[註冊]</font>鈕亮起,呼叫此API,不合法則顯示回傳<font color="#f00">錯誤訊息</font>。 |
| 5 | 資料合法送出後,跳轉到[會員資訊]頁面 | 資料合法但送出資料後,因網路或其他問題而無法成功新增,需將錯誤訊息回傳至前端,並依照日期規範寫入LOG,且避免將Exception回傳至前端 |
| 6 | 結束,刷新本畫面 | |
##### Correspond 畫面對應

>Res 值與 Rsp 相同值


POST : /update
格式 : json
##### Request(請求後端電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------|--- | ------- | ------ |------------- | ------------------ |
| 會員序號 | V | custId | int(11) | |
| 會員名稱 | V | name | VARCHAR(500) | |
| 身分證字號/統一編號 | | idNum | VARCHAR(20) |預留欄位 |
| 帳號 | V | accountId | VARCHAR(50) |至少六碼英數字組合 |
| 地址 | V | address | VARCHAR(200) ||
| email | | email | VARCHAR(100) | |
| 手機號碼 | | mobile | VARCHAR(20) | |
| 性別 | V | gender | VARCHAR(20) | 性別 F:女 M:男 |
| 生日 | V | birthday | VARCHAR(8) | 19910302|
| 修改日期 | V | dateStamp | DATETIME(3) ||
```json=
{
"custId":1,
"accountId":"cocoTest01",
"idNum":"",
"name":"測試帳號"
"address":"台北市大安區信義路二段72號",
"email":"coco@intella.co",
"mobile":"0911123123",
"gender":"F",
"birthday":"19980201"
}
```
##### Response (回應前端的電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------| --- | ------- | ------ |------------- | ------------------ |
| 回應代碼| V| msgCode | string | 0000 | 0000:成功 其餘會顯示錯誤訊息|
| 回應訊息| V | msg | string | "" |
######
>資料庫執行成功,回傳下列訊息
```json=
{
"msgCode": "0000",
"msg": "",
"data":[]
}
```
>資料庫執行失敗,或發生其他exception
```json=
{
"msgCode": "9999",
"msg": "編輯失敗,請重新操作",
"data":[]
}
```
>其餘參考 通用錯誤回應
##### SQL
```sql=
set @username = 'coco01';
set @name = '測試帳號';
set @address = '台北市大安區信義路二段72號';
set @email = 'coco@intella.co';
set @mobile = '0911123123';
set @gender = 'F';
set @birthday = '19910302';
set @custId = 1;
UPDATE `bagua_buddha`.`INT_TB_Customer`
SET
`username` = @username,
`name` = @name,
`address` = @address,
`email` = @email,
`mobile` = @mobile,
`gender` = @gender,
`birthday` = @birthday,
`dateStamp` = sysdate()
WHERE ( `custId` = @custId);
```
### 重製會員密碼(目前不開放,因為沒有mail server)
##### API Detail Process執行步驟說明
|步驟 | 程序 | 處理內容 |
| --- | --- | ---- |
| 1 | 跳轉至忘記密碼頁面 | 點擊[忘記密碼],跳轉至輸入email頁面 |
| 2 | 輸入參數,並寄送email | 需先檢查email欄位是否合法,合法後呼叫API,寄出信件,若資料庫無對應到資料,則寄送失敗 |
| 3 | 結束 | |
##### Correspond 畫面對應


POST : /updatePsw
格式 : json
##### Request(請求後端電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------|--- | ------- | ------ |------------- | ------------------ |
| 會員序號 | V | custId | int(11) | |
| 帳號 | V | username | VARCHAR(50) |至少六碼英數字組合 |
| 密碼 | V | password | VARCHAR(200) |sha256加密後存入,至少四碼 |
| 修改日期 | V | dateStamp | DATETIME(3) ||
```json=
{
"custId":1,
"username":"cocoTest01",
"password":"9af15b336e6a9619928537df30b2e6a2376569fcf9d7e773eccede65606529a0"
}
```
##### Response (回應前端的電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------| --- | ------- | ------ |------------- | ------------------ |
| 回應代碼| V| msgCode | string | 0000 | 0000:成功 其餘會顯示錯誤訊息|
| 回應訊息| V | msg | string | "" |
>資料庫執行成功,回傳下列訊息
```json=
{
"msgCode": "0000",
"msg": "",
"data":{}
}
```
>資料庫執行失敗,或發生其他exception
```json=
{
"msgCode": "9999",
"msg": "編輯失敗,請重新操作",
"data":{}
}
```
>其餘參考 通用錯誤回應
##### SQL
```sql=
set @password = '9af15b336e6a9619928537df30b2e6a2376569fcf9d7e773eccede65606529a0';
set @custId = 1;
UPDATE `bagua_buddha`.`INT_TB_Customer`
SET `password` = @password,
SET `dateStamp` = sysdate()
WHERE ( `custId` = @custId );
```
## 登入/登出
### 會員登入
##### Correspond 畫面對應

POST : /logIn
格式 : json
##### Request(請求後端電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------|--- | ------- | ------ |------------- | ------------------ |
| 帳號 | V | username | VARCHAR(50) |至少六碼英數字組合 |
| 密碼 | V | password | VARCHAR(200) |sha256加密後存入,至少四碼|
```json=
{
"username":"cocoTest01",
"password":"9af15b336e6a9619928537df30b2e6a2376569fcf9d7e773eccede65606529a0"
}
```
##### Response (回應前端的電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------| --- | ------- | ------ |------------- | ------------------ |
| 回應代碼| V| msgCode | VARCHAR(4) | 0000 | 0000:成功 其餘會顯示錯誤訊息|
| 回應訊息| V | msg | VARCHAR((100)) | "" |
>執行成功,回傳下列訊息
```json=
{
"msgCode": "0000",
"msg": "",
"data":{}
}
```
>執行失敗,或發生其他exception
```json=
{
"msgCode": "9999",
"msg": "登入失敗,請重新操作",
"data":{}
}
```
>會員不存在/帳號密碼錯誤
```json=
{
"msgCode": "9999",
"msg": "會員不存在或密碼錯誤",
"data":{}
}
```
>其餘參考 通用錯誤回應
### 會員登出
##### Correspond 畫面對應

POST : /logOut
>呼叫網址&清掉session/Token
##### Response (回應前端的電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------| --- | ------- | ------ |------------- | ------------------ |
| 回應代碼| V| msgCode | VARCHAR(4) | 0000 | 0000:成功 其餘會顯示錯誤訊息|
| 回應訊息| V | msg | VARCHAR(100) | "" |
>執行成功,回傳下列訊息
```json=
{
"msgCode": "0000",
"msg": "",
"data":{}
}
```
>執行失敗,或發生其他exception
```json=
{
"msgCode": "9999",
"msg": "登出失敗,請重新操作",
"data":{}
}
```
>會員不存在/帳號密碼錯誤
```json=
{
"msgCode": "9999",
"msg": "會員不存在或密碼錯誤",
"data":{}
}
```
>其餘參考 通用錯誤回應
## 通用API驗證
#### API Detail Process執行步驟說明
|步驟 | 程序 | 處理內容 |
| --- | --- | ---- |
| 1 | 呼叫此api後,需先檢查必填欄位是否均有值,若為空字串或null,請回復錯誤訊息 | 參數參考 錯誤訊息列表|
| 2 | 傳入值均有值且格式正確後,需驗證參數正確性 | |
| 3 | 資料庫正確存入後,請回傳msgCode = '0000' | |
| 4 | 存入時發生異常導致存入失敗時,請寫LOG|msgCode = '9999', msg= '系統發生異常,請聯繫管理員'
## 通用錯誤回應
```json=
輸入參數為空值、null
{
"msgCode": "9999",
"msg": @參數欄位+"不得為空值",
"data":[]
}
輸入參數型態錯誤
{
"msgCode": "9999",
"msg": @參數欄位+"輸入不正確",
"data":[]
}
輸入參數長度有誤
{
"msgCode": "9999",
"msg": @參數欄位+"長度有誤",
"data":[]
}
```
## LookupCode查找
POST : /worship-server/api/order/getLookupCode
格式 : json
##### Request(請求後端電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------|--- | ------- | ------ |------------- | ------------------ |
| lookupType | V |lookupType||
```json=
{
"lookupType":"worshipCandles"
}
```
##### Response (回應前端的電文格式)
| 欄位說明 |必填 | KEY | TYPE | DSCR |
| --------| --- | ------- | ------ |------------- | ------------------ |
| 回應代碼| V| msgCode | VARCHAR(4) | 0000 | 0000:成功 其餘會顯示錯誤訊息|
| 回應訊息| V | msg | VARCHAR(100) | |
```json=
[
{
"lookupType": "worshipCandles",
"lookupCode": "W01",
"dscr": "孔子智慧燈",
"value": 0,
"type1": "大成殿供奉孔子,長年燃點孔子智慧燈庇佑學子開啟智慧,仕途成就、光明無礙、文筆順暢。",
"type2": "500",
"type3": "大成殿"
},
{
"lookupType": "worshipCandles",
"lookupCode": "W02",
"dscr": "長生祿位燈",
"value": 1,
"type1": "大雄寶殿供奉釋迦牟尼佛,於佛前安奉長生祿位佛祖燈,祈求佛光照耀身體健康,前途光明、消災延壽、福慧雙全、如意吉祥。",
"type2": "500",
"type3": ""
}
]
```
#### 獲取點燈下拉式清單
##### Request(請求後端電文格式)
| 欄位說明 |必填 | KEY |
| --- | --- | --- |
| lookupType | V | worshipCandles |
##### Response (回應前端的電文格式)
| 欄位說明 |必填 | KEY |
| --- | --- | --- |
| lookupType | V | 固定:worshipCandles |
| lookupCode | V | ex:W01 |
| dscr | V | 燈名|
| value | V | 排序值 |
| type1 | | 點燈說明 |
| type2 | | 價格 |
| type3 | | |
---
#### 獲取交易特店資料
##### Request(請求後端電文格式)
| 欄位說明 |必填 | KEY |
| --- | --- | --- |
| lookupType | V | 固定:scan2Pay |
| lookupCode | | |
##### Response (回應前端的電文格式)
| 欄位說明 |必填 | KEY |
| --- | --- | --- |
| lookupType | V | 固定:scan2Pay |
| lookupCode | V | ex:merchant |
| dscr | V | 特店資料 | lookupCode = 'merchant'|
| value | V | 排序值 | lookupCode = 'merchant'|
| type1 | | 特店帳號 | lookupCode = 'merchant'|
| type2 | | tradePin | lookupCode = 'merchant'|
| type3 | | |
手機 hash加密
stage 開心的DB
bagua_buddha
會員系統 DB 親屬
台大MYNTU 那套
前端要RWD
CREATE SCHEMA `bagua_buddha` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin ;
CREATE TABLE `bagua_buddha`.`INT_TB_Customer` (
`custId` INT(11) NOT NULL,
PRIMARY KEY (`custId`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_bin
COMMENT = '會員資料表';
{"metaMigratedAt":"2023-06-15T19:53:47.185Z","metaMigratedFrom":"Content","title":"八卦山會員前台","breaks":true,"contributors":"[{\"id\":\"a1fbdd53-f0f4-4397-b1d5-6cd716636a4e\",\"add\":125249,\"del\":100597}]"}