프로젝트명

    • 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