프로젝트명

  • Gourmate

프로젝트 인원

  • 이소현, 김지수, 연제민, 이서영

 

1. API 명세서

도메인 기능 Method URL 권한 request response 추가 설명
유저 회원가입 POST /users/signup ALL {
”username”: “이름”,
”email”: “이메일”,
”password”: “비밀번호”,
”role”: “owner”
}
{
”userId”: 1,
”username”: “이름”,
”email”: “이메일”
”role”: “owner”
}
 
유저 로그인 POST /users/login ALL {
”username”: “이름”,
”password”: “비밀번호”
}
{
”accessToken”: “액세스 토큰”,
”refreshToken”: “리프레시 토큰”
}
 
유저 회원조회 GET /users/{userId} ALL - {
”userId”: 1,
”username”: “이름”,
”email”: “이메일”
”role”: “owner”
}
 
유저 회원목록조회 GET /users?username=name&sortBy=createdAt&isAsc=true&page=1&size=10 MANAGER - [
  {
  ”userId”: 1,
  ”username”: “이름”,
  ”email”: “이메일”
  ”role”: “owner”
  },
  
]
 
유저 회원정보수정 PUT /users/{userId} ALL {
”username”: “이름”,
”email”: “이메일”,
”password”: “비밀번호”
”role”: “owner”
}
{
”userId”: 1,
”username”: “이름”,
”email”: “이메일”
”role”: “owner”
}
 
유저 회원탈퇴 DELETE /users/{userId} ALL - -  
유저 주소등록 POST /users/{userId}/addresses CUSTOMER {
”address”: “배송지”
}
{
”addressId” 1,
”address”: “배송지”
}
 
유저 주소조회 GET /users/{userId}/addresses CUSTOMER - {
”addressId” 1,
”address”: “배송지”
}
 
유저 주소수정 PUT /users/{userId}/addresses/{addressId} CUSTOMER {
”address”: “배송지”
}
{
”addressId” 1,
”address”: “배송지”
}
 
유저 주소삭제 DELETE /users/{userId}/addresses/{addressId} CUSTOMER - -  
               
주문 주문등록 POST /orders CUSTOMER {
”address”: “배송지”,
”request”: “요청사항”,
”storeId”: 1,
”type”: “현장주문”,
”items”: [
    {
        “menuId: 1,
        “quantity: 2,
        “price”: 100
    },
    
]
{
”orderId”: 1,
”paymentId: 1,
”totalPrice”: 10000,
”address”: “배송지”,
”request”: “요청사항”,
”storeId”: 1,
”type”: “현장주문”,
”items”: [
    {
        “menuId: 1,
        “quantity: 2
        “price”: 100
    },
    
]
결제 요청 결과에 따른 상태값
- 결제 실패
- 결제 완료
주문 주문상세조회 GET /orders/{orderId} ALL - {
”orderId”: 1,
”orderStatus”: “배달완료”,
”paymentId: 1,
”totalPrice”: 10000,
”address”: “배송지”,
”request”: “요청사항”,
”storeId”: 1,
”type”: “현장주문”,
”items”: [
    {
        “menuId: 1,
        “quantity: 2
        “price”: 100
    },
    
]
[질문] 목록에서 가져온걸사용해도 될것 같은데 어떤가요?
주문 주문목록조회 GET /orders?query=query&sortBy=createdAt&isAsc=true&page=1&size=10 ALL - “orderList”: [
  {
  ”orderId”: 1,
  ”orderStatus”: “배달완료”,
  ”paymentId: 1,
  ”total_price”: 10000,
  ”address”: “배송지”,
  ”request”: “요청사항”,
  ”storeId”: 1,
  ”type”: “현장주문”,
  ”items”: [
      {
          “menuId: 1,
          “quantity: 2
          “price”: 100
      },
      
  ],
  …,
],
"pageable": {…}
query: 메뉴이름, 가게이름
주문 주문취소 PUT /orders/{orderId} ALL - - 환불 요청 결과에 따른 상태값
- 환불 실패
- 환불 완료


가게에서 수락에 따른 상태값
- 주문 취소대기
- 주문 취소완료
주문 주문내역삭제 DELETE /orders/{orderId} CUSTOMER, MANAGER - -  
주문 결제요청 POST /orders/{orderId}/payments CUSTOMER, MANAGER - {
”pg_info”: “~”,
”price”: 11111
}
PG사 결제연동
주문 환불요청 PUT /orders/{orderId}/payments CUSTOMER, MANAGER - - PG사 결제연동
               
가게 가게등록 POST /stores MANAGER {
"categoryId" : 1,
"storeName" : "storeName”,
"location" : "location”
}
{
”storeId” : 1,
"userId" : 1,
"categoryId" : 1,
"storeName" : "storeName”,
"location" : "location”,
”averageRating” : null
}
 
가게 가게조회 GET /stores/{storeId} ALL - {
”storeId” : 1,
"userId" : 1,
"categoryId" : 1,
"storeName" : "storeName”,
"location" : "location”,
”averageRating” : 4.8
}
 
가게 가게목록조회 GET /stores?query=query&categoryId=1&sortBy=createdAt&isAsc=true&page=1&size=10 ALL - "storeList": [
        {
            "storeId" : 1,
            "categoryId" : 1,  
            "name" : 1         
        },
        {
            "storeId" : 1,
            "categoryId" : 1,  
            "name" : 1         
        },
        
    ],
            "pageable": {
            
            },
          }
query: 메뉴이름, 가게이름
가게 가게정보수정 PUT /stores/{storeId} MANAGER {
"categoryId" : 1,
"storeName" : "storeName",
"location" : "location”
}
{
"storeId" : 1,
"categoryId" : 1,
"storeName" : "storeName”,
"location" : "location”
}
 
가게 가게삭제 DELETE /stores/{storeId} MANAGER - -  
가게 리뷰조회 GET /stores/{storeId}/reviews?sortBy=createdAt&isAsc=true&page=1&size=10 ALL - "reviewList": [
        {
           "storeId” : 1,
           "reviewId” : 1,
           "rating" : 4,
           "content" : "content”
        },
        {
           "storeId” : 1,
           "reviewId” : 2,
           "rating" : 4,
           "content" : "content”   
        },
        
    ],
            "pageable": {
            
            },
          }
 
               
상품 상품등록 POST /menu OWNER {
"storeId” : 1,
"menuName" : "menuName",
"description" : "description”,
"price" : 15000,
”isExcluded” : false
}
{
"storeId” : 1,
"menuId” : 1,
"menuName" : "menuName",
"description" : "description”,
"price" : 15000,
”isExcluded” : false
}
 
상품 상품상세조회 GET /menu/{menuId} ALL - {
"menuId” : 1,
"menuName" : "menuName",
"description" : "description”,
"price" : 15000,
”isExcluded” : false
}
 
상품 상품목록조회 GET /menu ALL - "menuList": [
        {
           "menuId” : 1,
           "menuName" : "menuName",
           "price" : 15000
        },
        {
           "menuId” : 1,
           "menuName" : "menuName",
           "price" : 15000 
        },
        
    ]
 
상품 상품정보수정 PUT /menu/{menuId} OWNER {
"storeId” : 1,
"menuName" : "menuName",
"description" : "description”,
"price" : 15000,
"isExcluded" : true
}
{
"storeId” : 1,
"menuId” : 1,
"menuName" : "menuName",
"description" : "description”,
"price" : 15000,
"isExcluded" : true
}
 
상품 상품삭제 DELETE /menu/{menuId} OWNER - -  
               
리뷰 리뷰등록 POST /reviews CUSTOMER {
"ordeId” : 1,
"storeId” : 1,
"rating" : 4,
"content" : "content”
}
{
"ordeId" : 1,
"storeId" : 1,
"reviewId" : 1,
"rating" : 4,
"content" : "content”
}
 
리뷰 리뷰조회 GET /reviews/{reviewId} ALL - {
"ordeId" : 1,
"storeId" : 1,
"reviewId" : 1,
"rating" : 4,
"content" : "content”
}
 
리뷰 리뷰목록조회 GET /reviews CUSTOMER - “reviewList”: [
  {
  "ordeId" : 1,
  "storeId" : 1,
  "reviewId" : 1,
  "rating" : 4,
  "content" : "content”
  },
  
]
 
리뷰 리뷰수정 PUT /reviews/{reviewId} CUSTOMER {
"ordeId” : 1,
"storeId” : 1,
"rating" : 4,
"content" : "content”
}
{
"ordeId" : 1,
"storeId" : 1,
"reviewId" : 1,
"rating" : 4,
"content" : "content”
}
 
리뷰 리뷰삭제 DELETE /reviews/{reviewId} CUSTOMER - -  
               
카테고리 카테고리생성 POST /categories MANAGER {
"categoryName" : "한식”
}
{
"categoryId" : 1,
"categoryName" : "한식”
}
 
카테고리 카테고리목록조회 GET /categories ALL - "categoryList": [
        {
           "categoryId" : 1,
           "categoryName" : "한식"
        },
        {
           "categoryId" : 2,
           "categoryName" : "중식"
        },
        
    ]
 
카테고리 카테고리수정 PUT /categories/{categoryId} MANAGER {
"content" : "치킨"
}
{
"categoryId" : 2,
"categoryName" : "치킨"
}
 
카테고리 카테고리삭제 DELETE /categories/{categoryId} MANAGER - -  
               
AI_API ai 요청 POST /ai-api MANAGER, OWNER {
"text" : "~~50자 이내로 추천해줘"
}
{
"text" : ""
}
 

2. 테이블 명세서

1. 사용자 테이블(p_users)

필드 이름 데이터 타입 NULL 설명
user_id bigint NOT NULL 사용자 ID, PK
username VARCHAR NOT NULL 사용자 이름
password VARCHAR NOT NULL 비밀번호
email VARCHAR NOT NULL 이메일
role VARCHAR NOT NULL 사용자 역할 (CUSTOMER, OWNER, MANAGER, MASTER)
created_at TIMESTAMP   생성 시간
created_by bigint   생성자 
updated_at TIMESTAMP   수정 시간
updated_by bigint   수정자
deleted_at TIMESTAMP   삭제 시간
deleted_by bigint   삭제자 

 

2. 가게 테이블(p_stores)

필드 이름 데이터 타입 NULL 설명
store_id UUID NOT NULL 가게 ID, PK
user_id bigint NOT NULL 사용자 ID, FK
category_id UUID NOT NULL 카테고리 ID, FK
store_name VARCHAR NOT NULL 가게 이름
location VARCHAR   지역
average_rating DECIMAL   평점
created_at TIMESTAMP   생성 시간
created_by bigint   생성자
updated_at TIMESTAMP   수정 시간
updated_by bigint   수정자 
deleted_at TIMESTAMP   삭제 시간
deleted_by bigint   삭제자

 

3. 주소 테이블(p_addresses)

필드 이름 데이터 타입 NULL 설명
address_id UUID NOT NULL 주소 ID, PK
user_id bigint NOT NULL 사용자 ID, FK
address VARCHAR NOT NULL 주소
address_request VARCHAR   요청사항
created_at TIMESTAMP   생성 시간
created_by bigint   생성자 
updated_at TIMESTAMP   수정 시간
updated_by bigint   수정자 
deleted_at TIMESTAMP   삭제 시간
deleted_by bigint   삭제자

 

4. 리뷰 테이블(p_reviews)

필드 이름 데이터 타입 NULL 설명
review_id UUID NOT NULL 리뷰 ID, PK
user_id bigint NOT NULL 사용자 ID, FK
order_id UUID NOT NULL 주문 ID, FK
store_id UUID NOT NULL 가게 ID, FK
rating INT NOT NULL 별점
review_content TEXT   리뷰 내용
created_at TIMESTAMP   생성 시간
created_by bigint   생성자 
updated_at TIMESTAMP   수정 시간
updated_by bigint   수정자
deleted_at TIMESTAMP   삭제 시간
deleted_by bigint   삭제자

 

5. 카테고리 테이블(p_categories)

필드 이름 데이터 타입 NULL 설명
category_id UUID NOT NULL 카테고리 ID, PK
category_name VARCHAR(100) NOT NULL 카테고리 이름
created_at TIMESTAMP   생성 시간
created_by bigint   생성자
updated_at TIMESTAMP   수정 시간
updated_by bigint   수정자 
deleted_at TIMESTAMP   삭제 시간
deleted_by bigint   삭제자 

 

6. 메뉴 테이블(p_menu)

필드 이름 데이터 타입 NULL 여부 설명
menu_id UUID NOT NULL 메뉴 id, PK
store_id UUID NOT NULL 가게 id, FK
menu_name VARCHAR(20) NOT NULL 메뉴 이름
description VARCHAR(255)   메뉴 설명
price int NOT NULL 메뉴 가격
is_excluded BOOLEAN NOT NULL 메뉴 숨김 여부, false
created_at TIMESTAMP   생성 시간
created_by bigint   생성 아이디
updated_at TIMESTAMP   수정 시간
updated_by bigint   수정 아이디
deleted_at TIMESTAMP   삭제 시간
deleted_by bigint   삭제 아이디

 

7. 주문 테이블(p_orders)

필드 이름 데이터 타입 NULL 설명
order_id UUID NOT NULL 주문 id, PK
user_id bigint NOT NULL 사용자 id, FK
store_id UUID NOT NULL 가게 id, FK
address VARCHAR(255) NOT NULL 배송지
order_request VARCHAR(255) NOT NULL 요청 사항
order_type VARCHAR(20) NOT NULL 주문 유형 (ONLINE, OFFLINE)
order_status VARCHAR(20) NOT NULL 주문 상태 (PENDING, CONFIRMED, CANCELLED)
total_price int NOT NULL  가격
created_at TIMESTAMP   생성일
created_by bigint   생성 아이디
updated_at TIMESTAMP   수정일
updated_by bigint   수정 아이디
deleted_at TIMESTAMP   삭제일
deleted_by bigint   삭제 아이디

 

8. 주문항목 테이블(p_order_items)

필드 이름 데이터 타입 NULL 설명
order_item_id UUID NOT NULL 주문 항목 id, PK
order_id UUID NOT NULL 주문 id, FK
menu_id UUID NOT NULL 메뉴 id, FK
quantity int NOT NULL 주문 수량
created_at TIMESTAMP   생성일
created_by bigint   생성 아이디
updated_at TIMESTAMP   수정일
updated_by bigint   수정 아이디
deleted_at TIMESTAMP   삭제일
deleted_by bigint   삭제 아이디

 

9. 결제 테이블(p_payments)

필드 이름 데이터 타입 NULL 설명
payment_id UUID NOT NULL 결제 id, PK
order_id UUID NOT NULL 주문 id, FK
amount int NOT NULL 결제 금액
payment_status VARCHAR(20) NOT NULL 결제 상태 (SUCCESS, FAIL)
pg_info VARCHAR(20) NOT NULL PG사 결제내역
created_at TIMESTAMP   생성일
created_by bigint   생성 아이디

 

10. AI 테이블(p_ai_api)

필드 이름 데이터 타입 NULL 설명
ai_api_id UUID NOT NULL api 요청 id, PK
user_id bigint NOT NULL 사용자 id, FK
response VARCHAR(255) NOT NULL 대답
created_at TIMESTAMP   생성일
created_by bigint   생성 아이디

 

3. ERD 명세서

4. 인프라 설계서

 

+ Recent posts