Coco Liao
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # 八卦山會員前台 ###### 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 畫面對應 ![](https://i.imgur.com/mjfessm.png) ![](https://i.imgur.com/WRwsjjx.png) ![](https://i.imgur.com/safuIJf.png) ![](https://i.imgur.com/XeRaZRh.png) 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 畫面對應 ![](https://i.imgur.com/WRwsjjx.png) ![](https://i.imgur.com/safuIJf.png) 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 畫面對應 ![](https://i.imgur.com/4Oypz5Q.png) >Res 值與 Rsp 相同值 ![](https://i.imgur.com/WRwsjjx.png) ![](https://i.imgur.com/safuIJf.png) 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 畫面對應 ![](https://i.imgur.com/WgmvZ7e.png) ![](https://i.imgur.com/y85Sx1z.png) 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 畫面對應 ![](https://i.imgur.com/vEgxEJG.png) 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 畫面對應 ![](https://i.imgur.com/IqB0oUR.png) 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 = '會員資料表';

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully