/
[연습] buyer - 결과

[연습] buyer - 결과

“화면설계서와 ERD로 ICE schema 설계 및 API 작성”

 

Download

[FO] Buyer 회원가입_화면설계서.pptx

 

[BO] Buyer 회원정보 관리_화면설계서.pptx

 

ERD

 

PATH : schema/practiceSample

 

Schema 작성

[ { "parentId": "buyers", "typeId": "nodeType", "tid": "country", "typeName": "Country", "repositoryType": "node", "standaloneIndex": false, "microservice": "customers", "eviction": 10000, "propertyTypes": [ { "pid": "code", "name": "Code", "valueType": "STRING", "idable": true, "indexable": true, "orderNo": 10 }, { "pid": "name", "name": "Country Name", "valueType": "STRING", "labelable": true, "indexable": true, "orderNo": 30 }, { "pid": "countryDialingCode", "name": "Country Dialing Code", "valueType": "STRING", "indexable": true, "orderNo": 40 } ] } ]

 

[ { "parentId": "buyers", "typeId": "nodeType", "tid": "buyerCompany", "typeName": "BuyerCompany Information", "repositoryType": "node", "standaloneIndex": false, "microservice": "customers", "eviction": 10000, "propertyTypes": [ { "pid": "id", "name": "ID", "valueType": "INT", "idable": true, "idType": "hash", "indexable": true, "orderNo": 10 }, { "pid": "name", "name": "Company Name", "valueType": "STRING", "labelable": true, "indexable": true, "orderNo": 20 }, { "pid": "ceo", "name": "CEO", "valueType": "STRING", "indexable": true, "orderNo": 30 }, { "pid": "homepage", "name": "Homepage", "valueType": "STRING", "indexable": true, "orderNo": 40 }, { "pid": "address", "name": "Address", "valueType": "STRING", "indexable": true, "orderNo": 50 }, { "pid": "establishedYear", "name": "Established Year", "valueType": "STRING", "indexable": true, "orderNo": 60 }, { "pid": "noOfEmployee", "name": "No.of Employee", "valueType": "CODE", "indexable": true, "orderNo": 70, "code": [ { "value": "upto10", "label": "1~10" }, { "value": "upto100", "label": "1~100" }, { "value": "upto1000", "label": "1~1000" }, { "value": "upto10000", "label": "1~10000" }, { "value": "over10000", "label": "10000~" } ] }, { "pid": "businessType", "name": "Business Type", "valueType": "STRING", "indexable": true, "orderNo": 80 }, { "pid": "annualSales", "name": "Annual Sales(1,000 USD)", "valueType": "CODE", "indexable": true, "orderNo": 90, "code": [ { "value": "upto10", "label": "1~10" }, { "value": "upto100", "label": "1~100" }, { "value": "upto1000", "label": "1~1000" }, { "value": "upto10000", "label": "1~10000" }, { "value": "over10000", "label": "10000~" } ] } ] } ]

 

[ { "parentId": "buyers", "typeId": "nodeType", "tid": "buyer", "typeName": "바이어", "repositoryType": "node", "standaloneIndex": false, "microservice": "customers", "eviction": 10000, "propertyTypes": [ { "pid": "id", "name": "Member No.", "valueType": "INT", "idable": true, "idType": "hash", "indexable": true, "orderNo": 10 }, { "pid": "buyerId", "name": "buyer Id (E-mail)", "valueType": "STRING", "indexable": true, "orderNo": 20 }, { "pid": "password", "name": "Password", "valueType": "STRING", "indexable": true, "orderNo": 30 }, { "pid": "name", "name": "buyer Name", "valueType": "STRING", "labelable": true, "indexable": true, "orderNo": 40 }, { "pid": "country", "name": "Country", "valueType": "REFERENCE", "indexable": true, "referenceType": "country", "orderNo": 50 }, { "pid": "jopPosition", "name": "Job position", "valueType": "CODE", "indexable": true, "orderNo": 60, "code": [ { "value": "sff", "label": "Staff" }, { "value": "am", "label": "Assistant Manager" }, { "value": "m", "label": "Manager" }, { "value": "dgm", "label": "Deputy General Manager" }, { "value": "gm", "label": "General Manager" }, { "value": "ceo", "label": "CEO" } ] }, { "pid": "mobile", "name": "Mobile", "valueType": "STRING", "indexable": true, "orderNo": 70 }, { "pid": "tel", "name": "Tel", "valueType": "STRING", "indexable": true, "orderNo": 80 }, { "pid": "fax", "name": "Fax", "valueType": "STRING", "indexable": true, "orderNo": 90 }, { "pid": "buyerCompany", "name": "Buyer Company", "valueType": "REFERENCE", "indexable": true, "referenceType": "buyerCompany", "orderNo": 100 }, { "pid": "owner", "name": "Owner", "valueType": "REFERENCE", "indexable": true, "referenceType": "user", "orderNo": 110 }, { "pid": "created", "name": "Created", "valueType": "DATE", "indexable": true, "orderNo": 120 }, { "pid": "modifier", "name": "Modifier", "valueType": "REFERENCE", "indexable": true, "referenceType": "user", "orderNo": 130 }, { "pid": "changed", "name": "Changed", "valueType": "DATE", "indexable": true, "orderNo": 140 }, { "pid": "buyerType", "name": "회원구분", "valueType": "CODE", "indexable": true, "orderNo": 150, "code": [ { "value": "general", "label": "일반회원" }, { "value": "easy", "label": "간편회원" } ], "defaultValue": "general" }, { "pid": "easyJoinType", "name": "간편회원유형", "valueType": "CODE", "indexable": true, "orderNo": 160, "code": [ { "value": "facebook", "label": "페이스북" }, { "value": "google", "label": "구글" } ] }, { "pid": "approvalStatus", "name": "Approval Status", "valueType": "CODE", "indexable": true, "orderNo": 170, "code": [ { "value": "approved", "label": "Approved" }, { "value": "reserved", "label": "Reserved" }, { "value": "disapproved", "label": "Disapproved" } ], "defaultValue": "reserved" }, { "pid": "joinDate", "name": "가입일시", "valueType": "DATE", "indexable": true, "orderNo": 180 }, { "pid": "buyerStatus", "name": "회원상태", "valueType": "CODE", "indexable": true, "orderNo": 190, "code": [ { "value": "joined", "label": "정상" }, { "value": "withdrawn", "label": "탈퇴" }, { "value": "deleted", "label": "삭제" } ], "defaultValue": "joined" }, { "pid": "deleteYn", "name": "Delete Y/N", "valueType": "BOOLEAN", "indexable": true, "defaultValue": "false", "orderNo": 200 }, { "pid": "withdrawalYn", "name": "Withdrawal Y/N", "valueType": "BOOLEAN", "indexable": true, "defaultValue": "false", "orderNo": 210 }, { "pid": "lastLoginTime", "name": "최근로그인", "valueType": "DATE", "indexable": true, "orderNo": 1220 } ], "events": [ { "event": "duplicateEmailCheck", "name": "[FO] E-mail Duplication Check API", "noneExecute": true, "eventActions": [ { "action": "duplicateEmailCheck", "actionType": "service", "actionBody": "buyerService.duplicateEmailCheck", "beforeAction": null, "orderNo": 1 } ] }, { "event": "join", "name": "[FO] Buyer Join API", "noneExecute": true, "eventActions": [ { "action": "join", "actionType": "service", "actionBody": "buyerService.join", "beforeAction": null, "orderNo": 1 } ] }, { "event": "changeApprovalStatus", "name": "[BO] buyer 승인 / 반려 API", "noneExecute": true, "eventActions": [ { "action": "changeApprovalStatus", "actionType": "service", "actionBody": "buyerService.changeApprovalStatus", "beforeAction": null, "orderNo": 1 } ] } ] } ]

 

 

Test Data 생성

[ { "typeId": "country", "code": "KR", "name": "대한민국", "countryDialingCode": "+82" }, { "typeId": "country", "code": "US", "name": "미국", "countryDialingCode": "+1" }, { "typeId": "country", "code": "FR", "name": "프랑스", "countryDialingCode": "+33" } ]

 

[ { "typeId": "buyerCompany", "id": 101, "name": "삼성SDS", "ceo": "황성우", "homepage": "https://www.samsungsds.com/", "address": "서울시 송파구 올림픽로 35길 125 삼성SDS (05510)", "establishedYear": "1984", "noOfEmployee": "over10000", "businessType": "", "annualSales": "over10000" }, { "typeId": "buyerCompany", "id": 102, "name": "아이온커뮤니케이션즈", "ceo": "오재철", "homepage": "https://www.i-on.net/", "address": "서울특별시 강남구 테헤란로10길 15", "establishedYear": "1998.06", "noOfEmployee": "upto1000", "businessType": "", "annualSales": "" } ]

 

[ { "typeId": "buyer", "id": 101, "buyerId": "jerry.cho@i-on.net", "password": "1ARVn2Auq2/WAqx2gNrL+q3RNjAzXpUfCXrzkA6d4Xa22yhRLy4AC50E+6UTPoscbo31nbOoq51gvkuXzJ6B2w==", "name": "조재호", "country": "KR", "jobPosition": "gm", "mobile": "010-1234-1234", "tel": "", "fax": "", "buyerCompany": 102, "buyerType": "general", "easyJoinType": "", "approvalStatus": "approved", "joinDate": "20210616135021", "buyerStatus": "joined", "deleteYn": false, "withdrawalYn": false, "lastLoginTime": "20210616135021" }, { "typeId": "buyer", "id": 102, "buyerId": "hannah@i-on.net", "password": "1ARVn2Auq2/WAqx2gNrL+q3RNjAzXpUfCXrzkA6d4Xa22yhRLy4AC50E+6UTPoscbo31nbOoq51gvkuXzJ6B2w==", "name": "이정아", "country": "KR", "jobPosition": "dgm", "mobile": "010-0000-0000", "tel": "", "fax": "", "buyerCompany": 102, "buyerType": "easy", "easyJoinType": "google", "approvalStatus": "reserved", "joinDate": "20210531093001", "buyerStatus": "joined", "deleteYn": false, "withdrawalYn": false, "lastLoginTime": "20210531093001" }, { "typeId": "buyer", "id": 103, "buyerId": "jade@i-on.net", "password": "1ARVn2Auq2/WAqx2gNrL+q3RNjAzXpUfCXrzkA6d4Xa22yhRLy4AC50E+6UTPoscbo31nbOoq51gvkuXzJ6B2w==", "name": "정재동", "country": "KR", "jobPosition": "dgm", "mobile": "010-8888-5555", "tel": "", "fax": "", "buyerCompany": 102, "buyerType": "easy", "easyJoinType": "facebook", "approvalStatus": "disapproved", "joinDate": "20210404210823", "buyerStatus": "joined", "deleteYn": false, "withdrawalYn": false, "lastLoginTime": "20210404210823" } ]

 

 

API 

GET {{protocol}}://{{hostname}}:{{port}}/svc/country/codes?_siteId=samsung

[ { "typeId": "apiCategory", "id": "country", "categoryName": "country API", "dateFormat": "yyyy-MM-dd HH:mm:ss", "fileUrlFormat": { "default": "{{:getEnvValue('core.cluster.api-url-prefix')}}" }, "commonParameters": [ { "parameter": "_siteId", "required": true } ], "commonResponse": [ ] }, { "typeId": "api", "category": "country", "apiId": "codes", "apiName": "[FO] Country code list API", "apiType": "service", "method": "GET", "parameters": [ ], "statistic": true, "aggregation": false, "root": { "configId": "root", "tid": "country", "type": "query", "allowParams": false, "orderNo": 1, "cacheable": false, "cacheTime": 60, "query": [ { "method": "sorting", "value": "code" } ], "response": [ { "field": "code", "type": "field", "value": "" }, { "field": "name", "type": "field", "value": "" }, { "field": "countryDialingCode", "type": "field", "value": "" } ] } } ]

 

GET {{protocol}}://{{hostname}}:{{port}}/svc/buyer/duplicateEmailCheck?_siteId=samsung&email=hannah@i-on.net2

{ "typeId": "api", "category": "buyer", "apiId": "duplicateEmailCheck", "apiName": "[FO] E-mail Duplication Check API", "apiType": "service", "method": "GET", "parameters": [ { "parameter": "email", "name": "Email", "valueType": "STRING", "required": true } ], "statistic": true, "aggregation": false, "root": { "configId": "root", "tid": "buyer", "type": "event", "allowParams": false, "orderNo": 1, "event": "duplicateEmailCheck", "data": [ ] } }

 

GET {{protocol}}://{{hostname}}:{{port}}/svc/buyerCompany/search?_siteId=samsung&searchValue=삼성

[ { "typeId": "apiCategory", "id": "buyerCompany", "categoryName": "buyerCompany API", "dateFormat": "yyyy-MM-dd HH:mm:ss", "fileUrlFormat": { "default": "{{:getEnvValue('core.cluster.api-url-prefix')}}" }, "commonParameters": [ { "parameter": "_siteId", "required": true } ], "commonResponse": [ ] }, { "typeId": "api", "category": "buyerCompany", "apiId": "search", "apiName": "[FO] Search Company API", "apiType": "service", "method": "GET", "parameters": [ { "parameter": "searchValue", "name": "Search Value", "valueType": "STRING", "required": false } ], "statistic": true, "aggregation": false, "root": { "configId": "root", "tid": "buyerCompany", "type": "query", "allowParams": false, "orderNo": 1, "cacheable": false, "cacheTime": 60, "query": [ { "method": "wildcard", "field": "name", "value": "{{:searchValue}}" }, { "method": "sorting", "value": "name" } ], "response": [ { "field": "id", "type": "field", "value": "" }, { "field": "name", "type": "field", "value": "" } ] } } ]

 

POST {{protocol}}://{{hostname}}:{{port}}/svc/buyer/join?_siteId=samsung

{ "typeId": "api", "category": "buyer", "apiId": "join", "apiName": "[FO] Buyer Join API", "method": "POST", "parameters": [ { "parameter": "buyerId", "name": "E-mail", "valueType": "STRING", "required": true }, { "parameter": "password", "name": "Password", "valueType": "STRING", "required": true }, { "parameter": "name", "name": "Buyer Name", "valueType": "STRING", "required": true }, { "parameter": "country", "name": "Country", "valueType": "STRING", "required": false }, { "parameter": "jobPosition", "name": "Job position", "valueType": "STRING", "required": false }, { "parameter": "mobile", "name": "Mobile", "valueType": "STRING", "required": false }, { "parameter": "tel", "name": "Tel", "valueType": "STRING", "required": false }, { "parameter": "fax", "name": "Fax", "valueType": "STRING", "required": false }, { "parameter": "buyerCompany", "name": "Buyer Company ID", "valueType": "STRING", "required": false } ], "statistic": true, "aggregation": true, "config": [ { "configId": "root", "tid": "buyer", "type": "event", "allowParams": false, "orderNo": 1, "event": "join", "data": [ ] } ] }

 

POST {{protocol}}://{{hostname}}:{{port}}/adm/buyer/changeApprovalStatus

[ { "parentId": "buyers", "typeId": "nodeType", "tid": "buyer", "typeName": "바이어", "repositoryType": "node", "standaloneIndex": false, "microservice": "customers", "eviction": 10000, "propertyTypes": [ ... ], "events": [ { "event": "changeApprovalStatus", "name": "[BO] buyer 승인 / 반려 API", "noneExecute": true, "eventActions": [ { "action": "changeApprovalStatus", "actionType": "service", "actionBody": "buyerService.changeApprovalStatus", "beforeAction": null, "orderNo": 1 } ] } ] } ]

 

 

 

POSTMAN TEST

download : 연습 Sample - buyer.postman_collection.json

 

Related content