이 프로젝트는 가게를 대상으로 배달, 포장 주문을 효율적으로 관리하는 플랫폼입니다. 이를 통해 고객은 편하게 가게 상품을 주문할 수 있습니다. 그리고 매장 주인은 플랫폼을 통해서 주문 접수부터 결제 내역 및 리뷰 등 운영하는데 편리한 기능을 제공받을 수 있습니다. 현재는 서비스 출시 초기라 광화문에서 시작하지만, 이후 확장성을 고려하여 전국적으로 이용할 수 있는 플랫폼을 제공하는 것이 목표입니다.
- CRUD 기능
- 검색 기능
- 정렬: 생성일순, 수정일순
- 페이지 노출 건수 : 10건/30건/50건 (기본 10건)
- 접근 권한 관리
- 고객, 가게 주인, 관리자, 마스터
- 데이터 감사 로그
- 모든 정보에 생성일, 생성 아이디, 수정일, 수정 아이디, 삭제일, 삭제 아이디를 포함
- 회원가입
- username은 최소 4자 이상, 10자 이하이며 알파벳 소문자(a
z), 숫자(09)로 구성 - password는 최소 8자 이상, 15자 이하이며 알파벳 대소문자(a
z, AZ), 숫자(0~9), 특수문자 - 사용자 권한 (CUSTOMER, OWNER, MANAGER, MASTER)
- username은 최소 4자 이상, 10자 이하이며 알파벳 소문자(a
- 로그인
- JWT 인증 : Acess Token, Refresh Token 발급 및 관리
- 관리자 권한만 가게 등록
- 이후 가게 주인 지정 가능
- 가게 주인이 자신이 소유한 가게의 주문 내역 조회 가능
- 가게 검색 시 평점이 같이 조회되도록 구현
- 주문 기반 리뷰 저장(주문 상태 COMPLETED)
- 평점 저장(1~5점 평점)
- 주문 한 건당 한 건의 리뷰 생성 가능
- 특정 가게 및 사용자의 리뷰 조회 가능
- 상품
- 단일 상품에 대한 등록, 수정, 삭제 기능(권한 : OWNER, ADMIN, MASTER)
- 단일 상품 조회는 2가지 경우가 있습니다(ALL 권한)
- 고객이 상품을 장바구니에 담기 위한 개별 상품 조회
- 가게 주인이 상품 변경을 위한 개별 상품 조회
- 상품 검색 기능(ALL)
- 앱에서 검색어 입력 → 관련 가게 목록 반환 → 특정 가게 조회 → 검색어가 포함된 상품 리스트 반환
- 페이징 및 정렬 처리
- 상품 다중 상태 변경 기능(OWNER, ADMIN, MASTER)
- 가게 주인이 내 가게 상품 목록 조회 → 상품별 판매 상태 변경
- DB에서 in절을 통해 한번에 가져와서 순차적으로 상태 변경 후 저장.
- 내 가게 전체 상품 조회(OWNER)
- 장바구니(권한 : USER, ADMIN, MASTER)
- 장바구니 추가
- 장바구니 추가는 한 번에 한 종류의 상품만 담을 수 있고, 수량만 변경 가능
- 수량에 대한 검증.
- 처음 넣는 상품일 때 : 상품 수량 ≥ 선택한 수량
- 이미 넣은 상품일 때 : 상품 수량 ≥ 선택한 수량 + 기존에 담긴 수량
- 다른 가게 상품을 넣으려고 하면 장바구니를 먼저 비워야함.
- 장바구니 수정
- 수정은 다중 상품 변경 가능.
- 이미 넣은 상품이면 수량을 누적하고, 처음 넣으면 추가. 이때 장바구니 추가랑 같은 수량 검증
- 장바구니 조회
- 장바구니에 있는 모든 상품을 조회
- 장바구니 삭제
- 장바구니 추가
- 주문 상태 관리(COMPLETED, CANCELED, PENDING)
- 주문 취소(COMPLETED -> CANCELED)
- 카드 결제만 지원(PG사 연동 통해 결제 정보 저장)
- 결제 내역 관리를 위해 결제 테이블 운영
- Google Ai Gemini API를 활용
- 가게 주인이 상품 설명 쉽게 작성 가능
- 사용자별 응답 내역 조회 가능
- 응답 로그 DB 저장
* API 명세서 https://teamsparta.notion.site/API-1a52dc3ef51480ed84e3efb6f288a58c
💻 사용 기술 스택
- Backend : Spring Boot 3.3.8, JPA, QueryDSL, JWT, Spring Security
- DB : PostgreSQL, Redis
- AI : Google Generative Language API(Gemini-1.5)
- Development Tools : Git/GitHub, IntelliJ IDEA
- Cloud : AWS EC2, RDS
- 🔧요구 사항:
- Java 17
- Redis (Redis 7.xx 버전)
- PostgreSQL
- Gradle
- 🔧설치 및 실행 방법
- 저장소 클론
git clone https://github.com/sparta-i4/i4-be.git
- 프로젝트 디렉토리 이동
cd i4-be
- Gradle을 이용해 의존성 설치 및 빌드
./gradlew build
- 애플리케이션 실행
./gradlew bootRun
- application.yml 파일 설정
spring:
datasource:
url: jdbc:postgresql://localhost:5432/your_database_name
username: your_username
password: your_password
driver-class-name: org.postgresql.Driver
jpa:
database-platform: org.hibernate.dialect.PostgreSQLDialect
hibernate:
ddl-auto: create
show-sql: true
data:
redis:
host: localhost
port: 6379
jwt:
secret:
key: "jwt 시크릿 키 입력"
google:
api:
key: "Gemini API Key 입력"
| 기능 | 담당자 |
|---|---|
| 가게, 리뷰, AI 추천 | 김채원 |
| 유저, 주소 | 송예지 |
| 상품, 장바구니, 배포 | 박상욱 |
| 주문, 결제 | 박준혁 |
