# SERVER

## **U.O.S-Server**

### **프로젝트 정보**

U.O.S-Server 프로젝트는 아래 링크에서 확인할 수 있다.

* Github: <https://github.com/UOS2021/U.O.S-Server>

### 환경

* nodejs (10.16.3)
* express (4.17.1)
* http (0.0.1-security)
* fcm-node (1.6.1)
* mysql (2.18.1)
* sync-mysql (3.0.1)
* qrcode (1.4.4)
* body-parser (1.19.0)
* fs (0.0.1-security)
* ip (1.1.5)
* path (0.12.7)
* server-static (2.0.5)

### 테스팅

U.O.S-Server는 아래 환경에서 테스팅을 완료했다.

* 운영체제: Windows 10.0.19042 빌드 19042

## 통신

> #### 데이터 형식
>
> > { request\_code: 0000, message: { data1: "true", data2: "false", ... } }
> >
> > * request\_code: 요청 코드
> > * message: 데이터<br>
> >
> > { response\_code: 0000, message: { data1: "true", data2: "false", ... } }
> >
> > * response\_code: 결과 코드
> > * message: 데이터<br>
>
> #### 요청 코드값
>
> > * JSON에서 request\_code의 값에 대한 정의

<table><thead><tr><th width="150" align="center">request_code</th><th width="150" align="center">mean</th><th width="150" align="center">from</th><th width="150" align="center">to</th><th align="center">format</th></tr></thead><tbody><tr><td align="center">0000</td><td align="center">example</td><td align="center">Client</td><td align="center">Server</td><td align="center">{ request_code: "0000", message: "none" }</td></tr><tr><td align="center">0001</td><td align="center">회원가입-일반고객</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0001", message: { customer_id: "id", pw: "pw", name: "name", phone: "010-0000-0000" } }</td></tr><tr><td align="center">0002</td><td align="center">회원가입-UOS파트너</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0002", message: { uospartner_id: "id", pw: "pw", name: "name", phone: "010-0000-0000", company: { name: "company", license_num: "0000000000", type: "restaurant/pc/movie", address: "Seoul", license_img: "imgdata" } } }</td></tr><tr><td align="center">0003</td><td align="center">로그인</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0003", message: { id: "id", pw: "pw", fcm_token: "fcm_token", type: "customer/uospartner" } }</td></tr><tr><td align="center">0004</td><td align="center">비밀번호 변경</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0004", message: { id : "id", pw: "pw", change_pw: "changepw", type: "customer/uospartner" } }</td></tr><tr><td align="center">0005</td><td align="center">휴대폰 번호 수정</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0005", message: { id : "id", change_phone: "010-0000-0000", type: "customer/uospartner" } }</td></tr><tr><td align="center">0006</td><td align="center">회원 탈퇴</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0006", message: { id : "id", pw: "pw", type: "customer/uospartnet" } }</td></tr><tr><td align="center">0007</td><td align="center">카드정보</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0007", message: { customer_id: "id" } }</td></tr><tr><td align="center">0008</td><td align="center">카드 추가</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0008", message: { customer_id: "id", card: { num: "0000-0000-0000-0000", cvc: "000", pw: "0000", due_date: "00/00" } } }</td></tr><tr><td align="center">0009</td><td align="center">카드 제거</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0009", message: { customer_id : "id" } }</td></tr><tr><td align="center">0010</td><td align="center">주문</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0010", message: { uospartner_id: "id", customer_id: "id", card: { num: "0000-0000-0000-0000", cvc: "000", pw: "cardpw", due_date: "00/00" }, order: [{ type: 0/1/2(product, set, ticket), menu: "productname", submenu: "submenu", count: 3, price: 1000 }] } }</td></tr><tr><td align="center">0011</td><td align="center">주문취소</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0011", message: { order_code: 0 } }</td></tr><tr><td align="center">0012</td><td align="center">주문내역</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0012", message: { customer_id : "id" } }</td></tr><tr><td align="center">0013</td><td align="center">매장정보 및 주문가능목록</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0013", uospartner_id: "id" }</td></tr><tr><td align="center">0014</td><td align="center">주문 수락/거절 여부</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0014" }</td></tr><tr><td align="center">0015</td><td align="center">주문대기내역</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0015", message: { customer_id: "id" } }</td></tr><tr><td align="center">0016</td><td align="center">상품수령완료</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0016", message: { order_code: "0" } }</td></tr><tr><td align="center">0017</td><td align="center">로그아웃 - 일반고객</td><td align="center">Mobile</td><td align="center">Server</td><td align="center">{ request_code: "0017", message: { customer_id: "id" } }</td></tr><tr><td align="center">000A</td><td align="center">페이지 로드 주문 내역 요청</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "000A", message: { id: "uospartner_id" } }</td></tr><tr><td align="center">000B</td><td align="center">주문조회 - 음식점, PC방</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "000B", message: { id: "uospartner_id", state0_num: 0, state4_num: 0 } }</td></tr><tr><td align="center">000C</td><td align="center">주문 수락 버튼</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "000C", message: { order_code: 1 } }</td></tr><tr><td align="center">000D</td><td align="center">주문 거절</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "000D", message: { order_code: 1 } }</td></tr><tr><td align="center">000E</td><td align="center">조리 완료</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "000E", message: { order_code: 1 } }</td></tr><tr><td align="center">000F</td><td align="center">수령 완료</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "000F", message: { order_code: 1 } }</td></tr><tr><td align="center">000G</td><td align="center">코로나 데이터 보내기</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "000G", message: { id: "uospartner_id } }</td></tr><tr><td align="center">000H</td><td align="center">코로나 알림 보내기</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "000H", message: { id: "uospartner_id", order_code: 1 } }</td></tr><tr><td align="center">000I</td><td align="center">주문 조회 - 영화관</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "000I", message: { id: "uospartner_id", state0_num: 0, state3_num: 0, state4_num: 0 } }</td></tr><tr><td align="center">000J</td><td align="center">정산 정보 전송</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "000J", message: { uospartner_id: "id", date: "2021-01-01 12:00:00" } }</td></tr><tr><td align="center">00A1</td><td align="center">음식점 데이터 전송</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00A1", message: { id: "uospartner_id" } }</td></tr><tr><td align="center">00A2</td><td align="center">음식점 메뉴 추가</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00A2", message: { id: "uospartner_id", category: "category", name: "name", type: "type", price: "price", description: "description", image_src: "image_src", conf: "conf", category_list: "category_list" } }</td></tr><tr><td align="center">00A3</td><td align="center">음식점 메뉴 삭제</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00A3", message: { id: "uospartner_id", num: menu_num } }</td></tr><tr><td align="center">00A4</td><td align="center">음식점 카테고리 삭제</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00A4", message: { id: "uospartner_id", category: "category" } }</td></tr><tr><td align="center">00A5</td><td align="center">음식점 카테고리 변경</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00A5", message: { id: "uospartner_id", category: "category", change: "change_category" } }</td></tr><tr><td align="center">00B1</td><td align="center">피시방 데이터 전송</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00B1", message: { id: "uospartner_id" } }</td></tr><tr><td align="center">00B2</td><td align="center">피시방 메뉴 추가</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00B2", message: { id: "uospartner_id", category: "category", name: "name", type: "type", price: "price", description: "description", image_src: "image_src", conf: "conf", category_list: "category_list"} }</td></tr><tr><td align="center">00B3</td><td align="center">피시방 메뉴 삭제</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00B3", message: { id: "uospartner_id", num: menu_num } }</td></tr><tr><td align="center">00B4</td><td align="center">피시방 카테고리 삭제</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00B4", message: { id: "uospartner_id", category: "category" } }</td></tr><tr><td align="center">00B5</td><td align="center">피시방 카테고리 변경</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00B5", message: { id: "uospartner_id", category: "category", change: "change_category" } }</td></tr><tr><td align="center">00C1</td><td align="center">영화관 데이터 전송</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00C1", message: { id: "uospartner_id" } }</td></tr><tr><td align="center">00C2</td><td align="center">영화관 영화 추가</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00C2", message: { id: "uospartner_id", movie: "movie_name", theater: "theater", time: "time", width: width, height: height, price: "price" } }</td></tr><tr><td align="center">00C3</td><td align="center">영화관 영화 삭제</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00C3", message: { } }</td></tr><tr><td align="center">00C4</td><td align="center">화관 음식 메뉴 추가</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00C4", message: { id: "uospartner_id", category: "category", type: "type", name: "name", price: 1000, description: "description", conf: "conf", category_list: "category_list", image_src: "image src" } }</td></tr><tr><td align="center">00C5</td><td align="center">영화관 음식 메뉴 삭제</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00C5", message: { id: "uospartner_id", num: 1 } }</td></tr><tr><td align="center">00C6</td><td align="center">영화관 음식 카테고리 삭제</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00C6", message: { id: "uospartner_id", category: "category" } }</td></tr><tr><td align="center">00C7</td><td align="center">영화관 음식 카테고리 변경</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00C7", message: { id: "uospartner_id", category: "category", change: "change_category" } }</td></tr><tr><td align="center">00C8</td><td align="center">영화관 영화 좌석 업데이트</td><td align="center">Web Client</td><td align="center">Server</td><td align="center">{ request_code: "00C8", message: { id: "uospartner_id", seat_arr: total_seat_arr } }</td></tr></tbody></table>

> <br>
>
> #### 응답 코드값
>
> > * JSON에서 response\_code의 값에 대한 정의

<table><thead><tr><th width="150" align="center">response_code</th><th width="150" align="center">mean</th><th width="150" align="center">from</th><th width="150" align="center">to</th><th align="center">format</th></tr></thead><tbody><tr><td align="center">0000</td><td align="center">example</td><td align="center">Server</td><td align="center">Client</td><td align="center">{ response_code: "0000", message: "none" }</td></tr><tr><td align="center">0001</td><td align="center">회원가입 성공</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0001" }</td></tr><tr><td align="center">0002</td><td align="center">회원가입 실패 - 아이디 중복</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0002" }</td></tr><tr><td align="center">0003</td><td align="center">로그인 성공 -일반고객</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0003", message: { name: "name", phone: "010-0000-0000" } }</td></tr><tr><td align="center">0004</td><td align="center">로그인 성공 - UOS 파트너</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0004", message: { name: "name", phone: "010-0000-0000", company_name: "company", qr_img: "imagedata" }</td></tr><tr><td align="center">0005</td><td align="center">로그인 실패 - 아이디 없음</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0005" }</td></tr><tr><td align="center">0006</td><td align="center">로그인 실패 - 비밀번호 부적합</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0006" }</td></tr><tr><td align="center">0007</td><td align="center">매장정보 및 주문가능목록 (음식점, PC방)</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0007", message: { company: { name: "company", type: "restaurant/pc/movie" }, category_list: [{ category: "category", product_list:[{ name: "productname", price: 1000, desc: "desc", image: "img" }], set_list: [{ name: "setname", price: 1000, desc: "desc", conf: "conf", image: "img", category_list: [{ category: "category", product_list:[{ name: "productname", price: 1000, desc: "desc" }] }] }] }] } }</td></tr><tr><td align="center">0008</td><td align="center">매장정보 및 주문가능목록 (영화관)</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0008", message:{ company: { name: "company", type: "restaurant/pc/movie" }, movie_list: [{ movie: "movie", time: "10:00", theater: "1관", width: 10, height: 10, seat_list: [{ code: "A1", state: 0/1/2, price: 1000 }]}], category_list: [{ category: "category", product_list:[{ name: "productname", price: 1000, desc: "desc", image: "img" }], set_list: [{ name: "setname", price: 1000, desc: "desc", conf: "conf", image: "img", category_list: [{ category: "category", product_list:[{ name: "productname", price: 1000, desc: "desc" }] }] }] }] } }</td></tr><tr><td align="center">0009</td><td align="center">주문접수 성공</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0009" }</td></tr><tr><td align="center">0010</td><td align="center">FCM 주문 수락</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0010", company_name: "company", order_code: 0 }</td></tr><tr><td align="center">0011</td><td align="center">FCM 주문 거부</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0010", company_name: "company", order_code: 0 }</td></tr><tr><td align="center">0012</td><td align="center">주문내역</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0012", message: { order_list: [{ state: 0/1/2/3, date: "2021-01-01 00:00:00", company_name: "company", total_price: 0, order_code: 0, product_list: [{ type: 0/1/2(product, set, ticket), menu: "menu", submenu: "submenu", count: 3, price: 1000}] }] } }</td></tr><tr><td align="center">0013</td><td align="center">비밀번호 변경 성공</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0013" }</td></tr><tr><td align="center">0014</td><td align="center">비밀번호 변경 실패 - 비밀번호 불일치</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0014" }</td></tr><tr><td align="center">0015</td><td align="center">휴대폰 번호 수정-성공</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0015" }</td></tr><tr><td align="center">0016</td><td align="center">회원탈퇴 성공</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0016" }</td></tr><tr><td align="center">0017</td><td align="center">회원탈퇴 실패 - 비밀번호 불일치</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0017" }</td></tr><tr><td align="center">0018</td><td align="center">카드 등록 성공</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0018" }</td></tr><tr><td align="center">0019</td><td align="center">카드 제거 성공</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0019" }</td></tr><tr><td align="center">0020</td><td align="center">등록된 카드정보</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0020", message: { num: "0000-0000-0000-0000", cvc: "000", due_date: "00/00" } }</td></tr><tr><td align="center">0021</td><td align="center">등록된 카드정보 없음</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0021" }</td></tr><tr><td align="center">0022</td><td align="center">주문취소 성공</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0022" }</td></tr><tr><td align="center">0023</td><td align="center">결제 성공</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0023" }</td></tr><tr><td align="center">0024</td><td align="center">결제 실패 - 카드비밀번호 틀림</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0024" }</td></tr><tr><td align="center">0025</td><td align="center">주문대기내역</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0025", message: { order_list: [{ state: 0/1/2/3, date: "2021-01-01 00:00:00", company_name: "company", total_price: 0, order_code: 0, product_list: [{ type: 0/1/2(product, set, ticket), menu: "menu", submenu: "submenu", count: 3, price: 1000}] }] } }</td></tr><tr><td align="center">0026</td><td align="center">주문 상태 변경 성공</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0026" }</td></tr><tr><td align="center">0027</td><td align="center">로그아웃 성공 - 일반고객</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0027" }</td></tr><tr><td align="center">0028</td><td align="center">FCM 상품 준비 알림</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0028", company_name: "company", order_code: 0 }</td></tr><tr><td align="center">0029</td><td align="center">FCM 방역 알림</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0029", company_name: "company", message: "message" }</td></tr><tr><td align="center">0030</td><td align="center">주문취소 실패 - 매장에서 주문 수락</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0030" }</td></tr><tr><td align="center">0031</td><td align="center">주문취소 실패 - 매장에서 주문 거절</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0031" }</td></tr><tr><td align="center">0032</td><td align="center">FCM 상품 수령 완료 알림</td><td align="center">Server</td><td align="center">Mobile</td><td align="center">{ response_code: "0032" }</td></tr><tr><td align="center">A000</td><td align="center">페이지 로드 주문 내역 전송</td><td align="center">Server</td><td align="center">Web Client</td><td align="center">{ response_code: "A000 " }</td></tr><tr><td align="center">B000</td><td align="center">음식점, PC방 신규 주문 내역 정보 송신</td><td align="center">Server</td><td align="center">Web Client</td><td align="center">{ response_code: "B000 " }</td></tr><tr><td align="center">C000</td><td align="center">음식점, PC방 신규 주문 내역 없음</td><td align="center">Server</td><td align="center">Web Client</td><td align="center">{ response_code: "C000 " }</td></tr><tr><td align="center">D000</td><td align="center">F거절 주문 내역 전송</td><td align="center">Server</td><td align="center">Web Client</td><td align="center">{ response_code: "D000 " }</td></tr></tbody></table>

## DB 구성&#x20;

{% content-ref url="/pages/zs2V8ChUmRevLjAuhsAH" %}
[DB 구성](/u-o-f/advanced/db.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://2021uos.gitbook.io/u-o-f/technical-note/server.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
