From 888ade1eb0216183ef6bfa810db565f859c0e811 Mon Sep 17 00:00:00 2001 From: Parkgeonmoo Date: Fri, 26 Jan 2024 10:03:34 +0900 Subject: [PATCH 1/6] Update README.md --- README.md | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 83 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3fd9a4b..2059db5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,83 @@ -# BE_CatchRoom -캐치룸 백엔드 레파지토리 -- 개발 브랜치는 develop이며 운영 브랜치는 main입니다. -- develop에 바로 작업해주시는 것이 아니라 브랜치를 하나 따셔서 작업 후 PR 이후 develop에 머지해주세요. -- 이후 main 브랜치로 PR을 날리고 해당 부분 Approve가 1명 이상 될 시 머지할 수 있도록 할 예정입니다. 이후 자동 배포가 되므로 5분 정도 대기 후 실제 서버에 잘 적용되었는지 API 엔드포인트를 통해 확인 부탁드리겠습니다. +💡 Topic +여행 여정을 기록과 관리하는 SNS 서비스 +회원이 서비스를 로그인하여 자신의 정보 관리 및 자신의 여행에 대한 정보와 여정들에 대한 정보를 작성할 수 있으며 다른 회원이 작성한 여행글을 조회 및 댓글,좋아요를 달 수 있는 서비스 +📝 Summary +여행에 대한 정보를 나누는 SNS들처럼 회원으로 가입을 하게 되면 다른 사람들이 작성한 여행글을 볼 수 있으며 여행글에 대해 댓글과 좋아요 표시를 남길 수 있다. 또한, 자신이 다녀온 여행에 대한 정보와 여정들에 대한 정보를 작성할 수 있으며 회원 자신만의 정보를 조회,수정을 할 수 있도록 하는 SNS 서비스이다. + +⭐️ Key Function +회원 +사람들이 자신의 아이디를 만들어 로그인할 수 있다. +로그인 시간에 만료 시간을 두어 일정 시간이 지나면 서비스 사용을 위해 재로그인을 해야 한다. +아이디와,비밀번호를 통하여 인증을 진행하며 일치하지 않을 경우 서비스 사용을 할 수 없다. +자신의 정보를 조회 및 수정을 할 수 있다. +여행 +여행글을 등록할 수 있다. +여행글들을 검색할 수 있다. +여행을 조회하면서 여정들을 조회할 수 있다. +여행글을 일부분 또는 전부를 수정할 수 있다. +다른 사람의 여행글에 댓글 및 좋아요를 남길 수 있다. +여정 +여행에 여정을 등록할 수 있다. +여행의 여정들을 조회할 수 있다. +여정의 정보를 수정할 수 있다. +🛠 Tech Stack +JAVA,Spring Boot,Spring Security,Docker,MySQL, Github,Git,Slack,Redis + +🧑🏻‍💻 Team +백엔드 개발자 4명 +🤚🏻 Part +JWT 토큰을 이용한 로그인 구현 +회원 CRU API 개발 +여행 CU API 개발 +공통 예외 처리 구현 +공통 API Response 처리 구현 +시큐리티를 이용한 패스워드 암호화 +회원 단위테스트 코드 작성 +🤔 Learned +시큐리티를 적용해봄으로써 Dispatcher Servlet 이전에 작동하는 시큐리티 Filter에 대해 이해하게 되었다 +로그인 인증을 위해 JWT 토큰을 사용하였는데 JWT 토큰이 쿠키/세션에 비해 왜 효율적인지에 대해 이해하게 되었다. +Exception Handler를 통한 공통 예외 처리를 직접 해봄으로써 예외 처리의 집중화 및 @Valid를 통한 유효성 체크에 대한 흐름을 알게 되었다. ERRORCODE 및 VALIDATIONCODE를 ENUM 타입으로 관리하여 유지보수를 편하게 할 수 있다는 것을 알게 되었다. +API를 호출하였을때 공통 API RESPONSE를 적용하여 공통적으로 결과값을 받을 수 있도록 처리할 수 있게 되었다. +직접 DB 설계를 해봄으로써 DB에 대해서 어떻게 설계를 해야되는지에 대해 이해하게 되었다. +단위 테스트 코드를 작성하고 통과시킴으💡 Topic +여행 여정을 기록과 관리하는 SNS 서비스 +회원이 서비스를 로그인하여 자신의 정보 관리 및 자신의 여행에 대한 정보와 여정들에 대한 정보를 작성할 수 있으며 다른 회원이 작성한 여행글을 조회 및 댓글,좋아요를 달 수 있는 서비스 +📝 Summary +여행에 대한 정보를 나누는 SNS들처럼 회원으로 가입을 하게 되면 다른 사람들이 작성한 여행글을 볼 수 있으며 여행글에 대해 댓글과 좋아요 표시를 남길 수 있다. 또한, 자신이 다녀온 여행에 대한 정보와 여정들에 대한 정보를 작성할 수 있으며 회원 자신만의 정보를 조회,수정을 할 수 있도록 하는 SNS 서비스이다. + +⭐️ Key Function +회원 +사람들이 자신의 아이디를 만들어 로그인할 수 있다. +로그인 시간에 만료 시간을 두어 일정 시간이 지나면 서비스 사용을 위해 재로그인을 해야 한다. +아이디와,비밀번호를 통하여 인증을 진행하며 일치하지 않을 경우 서비스 사용을 할 수 없다. +자신의 정보를 조회 및 수정을 할 수 있다. +여행 +여행글을 등록할 수 있다. +여행글들을 검색할 수 있다. +여행을 조회하면서 여정들을 조회할 수 있다. +여행글을 일부분 또는 전부를 수정할 수 있다. +다른 사람의 여행글에 댓글 및 좋아요를 남길 수 있다. +여정 +여행에 여정을 등록할 수 있다. +여행의 여정들을 조회할 수 있다. +여정의 정보를 수정할 수 있다. +🛠 Tech Stack +JAVA,Spring Boot,Spring Security,Docker,MySQL, Github,Git,Slack,Redis + +🧑🏻‍💻 Team +백엔드 개발자 4명 +🤚🏻 Part +JWT 토큰을 이용한 로그인 구현 +회원 CRU API 개발 +여행 CU API 개발 +공통 예외 처리 구현 +공통 API Response 처리 구현 +시큐리티를 이용한 패스워드 암호화 +회원 단위테스트 코드 작성 +🤔 Learned +시큐리티를 적용해봄으로써 Dispatcher Servlet 이전에 작동하는 시큐리티 Filter에 대해 이해하게 되었다 +로그인 인증을 위해 JWT 토큰을 사용하였는데 JWT 토큰이 쿠키/세션에 비해 왜 효율적인지에 대해 이해하게 되었다. +Exception Handler를 통한 공통 예외 처리를 직접 해봄으로써 예외 처리의 집중화 및 @Valid를 통한 유효성 체크에 대한 흐름을 알게 되었다. ERRORCODE 및 VALIDATIONCODE를 ENUM 타입으로 관리하여 유지보수를 편하게 할 수 있다는 것을 알게 되었다. +API를 호출하였을때 공통 API RESPONSE를 적용하여 공통적으로 결과값을 받을 수 있도록 처리할 수 있게 되었다. +직접 DB 설계를 해봄으로써 DB에 대해서 어떻게 설계를 해야되는지에 대해 이해하게 되었다. +단위 테스트 코드를 작성하고 통과시킴으 From f2f4b734d0489cb91e3b5b84fb1202117c819f2e Mon Sep 17 00:00:00 2001 From: Parkgeonmoo Date: Fri, 26 Jan 2024 10:06:06 +0900 Subject: [PATCH 2/6] Update README.md --- README.md | 116 +++++++++++++++++------------------------------------- 1 file changed, 37 insertions(+), 79 deletions(-) diff --git a/README.md b/README.md index 2059db5..9d1796d 100644 --- a/README.md +++ b/README.md @@ -1,83 +1,41 @@ -💡 Topic -여행 여정을 기록과 관리하는 SNS 서비스 -회원이 서비스를 로그인하여 자신의 정보 관리 및 자신의 여행에 대한 정보와 여정들에 대한 정보를 작성할 수 있으며 다른 회원이 작성한 여행글을 조회 및 댓글,좋아요를 달 수 있는 서비스 -📝 Summary -여행에 대한 정보를 나누는 SNS들처럼 회원으로 가입을 하게 되면 다른 사람들이 작성한 여행글을 볼 수 있으며 여행글에 대해 댓글과 좋아요 표시를 남길 수 있다. 또한, 자신이 다녀온 여행에 대한 정보와 여정들에 대한 정보를 작성할 수 있으며 회원 자신만의 정보를 조회,수정을 할 수 있도록 하는 SNS 서비스이다. +# 미니 프로젝트 : 숙박 예약 API 서비스 -⭐️ Key Function -회원 -사람들이 자신의 아이디를 만들어 로그인할 수 있다. -로그인 시간에 만료 시간을 두어 일정 시간이 지나면 서비스 사용을 위해 재로그인을 해야 한다. -아이디와,비밀번호를 통하여 인증을 진행하며 일치하지 않을 경우 서비스 사용을 할 수 없다. -자신의 정보를 조회 및 수정을 할 수 있다. -여행 -여행글을 등록할 수 있다. -여행글들을 검색할 수 있다. -여행을 조회하면서 여정들을 조회할 수 있다. -여행글을 일부분 또는 전부를 수정할 수 있다. -다른 사람의 여행글에 댓글 및 좋아요를 남길 수 있다. -여정 -여행에 여정을 등록할 수 있다. -여행의 여정들을 조회할 수 있다. -여정의 정보를 수정할 수 있다. -🛠 Tech Stack -JAVA,Spring Boot,Spring Security,Docker,MySQL, Github,Git,Slack,Redis +## 💡 프로젝트 주제 -🧑🏻‍💻 Team -백엔드 개발자 4명 -🤚🏻 Part -JWT 토큰을 이용한 로그인 구현 -회원 CRU API 개발 -여행 CU API 개발 -공통 예외 처리 구현 -공통 API Response 처리 구현 -시큐리티를 이용한 패스워드 암호화 -회원 단위테스트 코드 작성 -🤔 Learned -시큐리티를 적용해봄으로써 Dispatcher Servlet 이전에 작동하는 시큐리티 Filter에 대해 이해하게 되었다 -로그인 인증을 위해 JWT 토큰을 사용하였는데 JWT 토큰이 쿠키/세션에 비해 왜 효율적인지에 대해 이해하게 되었다. -Exception Handler를 통한 공통 예외 처리를 직접 해봄으로써 예외 처리의 집중화 및 @Valid를 통한 유효성 체크에 대한 흐름을 알게 되었다. ERRORCODE 및 VALIDATIONCODE를 ENUM 타입으로 관리하여 유지보수를 편하게 할 수 있다는 것을 알게 되었다. -API를 호출하였을때 공통 API RESPONSE를 적용하여 공통적으로 결과값을 받을 수 있도록 처리할 수 있게 되었다. -직접 DB 설계를 해봄으로써 DB에 대해서 어떻게 설계를 해야되는지에 대해 이해하게 되었다. -단위 테스트 코드를 작성하고 통과시킴으💡 Topic -여행 여정을 기록과 관리하는 SNS 서비스 -회원이 서비스를 로그인하여 자신의 정보 관리 및 자신의 여행에 대한 정보와 여정들에 대한 정보를 작성할 수 있으며 다른 회원이 작성한 여행글을 조회 및 댓글,좋아요를 달 수 있는 서비스 -📝 Summary -여행에 대한 정보를 나누는 SNS들처럼 회원으로 가입을 하게 되면 다른 사람들이 작성한 여행글을 볼 수 있으며 여행글에 대해 댓글과 좋아요 표시를 남길 수 있다. 또한, 자신이 다녀온 여행에 대한 정보와 여정들에 대한 정보를 작성할 수 있으며 회원 자신만의 정보를 조회,수정을 할 수 있도록 하는 SNS 서비스이다. +- **숙박 예약 서비스 API 서버 개발** +- 회원이 서비스를 로그인하여 상품의 숙소들을 확인할 수 있으며 주문하고 싶은 상품들을 장바구니에 담을 수도 있으며 ,주문을 할 수 있도록 만든 서비스 -⭐️ Key Function -회원 -사람들이 자신의 아이디를 만들어 로그인할 수 있다. -로그인 시간에 만료 시간을 두어 일정 시간이 지나면 서비스 사용을 위해 재로그인을 해야 한다. -아이디와,비밀번호를 통하여 인증을 진행하며 일치하지 않을 경우 서비스 사용을 할 수 없다. -자신의 정보를 조회 및 수정을 할 수 있다. -여행 -여행글을 등록할 수 있다. -여행글들을 검색할 수 있다. -여행을 조회하면서 여정들을 조회할 수 있다. -여행글을 일부분 또는 전부를 수정할 수 있다. -다른 사람의 여행글에 댓글 및 좋아요를 남길 수 있다. -여정 -여행에 여정을 등록할 수 있다. -여행의 여정들을 조회할 수 있다. -여정의 정보를 수정할 수 있다. -🛠 Tech Stack -JAVA,Spring Boot,Spring Security,Docker,MySQL, Github,Git,Slack,Redis +## 📝 프로젝트 요약 -🧑🏻‍💻 Team -백엔드 개발자 4명 -🤚🏻 Part -JWT 토큰을 이용한 로그인 구현 -회원 CRU API 개발 -여행 CU API 개발 -공통 예외 처리 구현 -공통 API Response 처리 구현 -시큐리티를 이용한 패스워드 암호화 -회원 단위테스트 코드 작성 -🤔 Learned -시큐리티를 적용해봄으로써 Dispatcher Servlet 이전에 작동하는 시큐리티 Filter에 대해 이해하게 되었다 -로그인 인증을 위해 JWT 토큰을 사용하였는데 JWT 토큰이 쿠키/세션에 비해 왜 효율적인지에 대해 이해하게 되었다. -Exception Handler를 통한 공통 예외 처리를 직접 해봄으로써 예외 처리의 집중화 및 @Valid를 통한 유효성 체크에 대한 흐름을 알게 되었다. ERRORCODE 및 VALIDATIONCODE를 ENUM 타입으로 관리하여 유지보수를 편하게 할 수 있다는 것을 알게 되었다. -API를 호출하였을때 공통 API RESPONSE를 적용하여 공통적으로 결과값을 받을 수 있도록 처리할 수 있게 되었다. -직접 DB 설계를 해봄으로써 DB에 대해서 어떻게 설계를 해야되는지에 대해 이해하게 되었다. -단위 테스트 코드를 작성하고 통과시킴으 +실제 숙박 예약을 하는 어플로서 로그인하여 주문 및 장바구니 담기 등을 진행할 수 있으며, 상품 전체 리스트 조회와 숙소 하나의 상세 정보도 보여줄 수 있다. +비회원인 경우 어떤 숙소가 있는지 구경할 수 있다. + +## ⭐️ 핵심 기능 + +### 회원 + +- 사람들이 자신의 아이디를 만들어 로그인할 수 있다. +- 로그인 시간에 만료 시간을 두어 일정 시간이 지나면 서비스 사용을 위해 재로그인을 해야 한다. +- 아이디와,비밀번호를 통하여 인증을 진행하며 일치하지 않을 경우 서비스 사용을 할 수 없다. + +### 주문 + +- 숙소들을 주문하여 예약할 수 있다. +- 나의 예약 내역을 불러와 확인할 수 있다. +- 숙소의 지정 날짜가 예약이 가능한지 확인할 수 있다. + +### 숙소 + +- OPEN API를 통하여 데이터를 가져와 필요한 숙소의 정보들을 데이터베이스에 파싱하여 저장한다. +- 메인화면에 카테고리(지역)별 숙박 정보를 제공한다. +- 숙박에 대한 상세정보 페이지를 제공한다. + +### 장바구니 + +- 장바구니에 숙소 내역을 담을 수 있다. +- 장바구니에 담은 내역을 삭제할 수 있다. +- 장바구니에 담은 내역이 품절이 된 지 아닌지를 알 수 있다. + +## 🎢 실행 결과 화면 + +[실행 결과 화면 링크](/docs/RUNNING_SCREEN.md) From 6479b7930d325df9c723713abcd891f9f4968b29 Mon Sep 17 00:00:00 2001 From: Parkgeonmoo Date: Fri, 26 Jan 2024 10:07:37 +0900 Subject: [PATCH 3/6] Update README.md --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index 9d1796d..33bfdd1 100644 --- a/README.md +++ b/README.md @@ -39,3 +39,25 @@ ## 🎢 실행 결과 화면 [실행 결과 화면 링크](/docs/RUNNING_SCREEN.md) + + +-------------------------| +| 임경민 | 조장, 주문 도메인 개발, 팀 내 이슈 관리 | +| 한상우 | 회원 도메인 개발, 서버와 DevOps 설정 관리 | +| 박건우 | 장바구니 도메인 개발, Swagger API 문서 관리 | +| 문창호 | 숙박 도메인 개발, OpenAPI 데이터 관리 | + +## 🚀 프로젝트 일정 + +- **프로젝트 기간**: 11월 20일(월) ~ 11월 30일(목) + +## 📐 ERD 설계도 + +[ERDCloud 사이트 링크](https://www.erdcloud.com/d/jvAPuL7Xrpk3Cnysf) 에서도 확인해보실 수 있습니다. + +![ERD.png](./docs/images/ERD.png) + +## 🏗 API 서버 구조 & CI/CD 구조 + +![SERVER_STRUCTURE.png](./docs/images/SERVER_STRUCTURE.png) + From df098faa3be0a6128bcc9cf568c278bba1cfad93 Mon Sep 17 00:00:00 2001 From: Parkgeonmoo Date: Fri, 26 Jan 2024 10:10:13 +0900 Subject: [PATCH 4/6] Update README.md --- README.md | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 33bfdd1..54fc9e1 100644 --- a/README.md +++ b/README.md @@ -40,8 +40,27 @@ [실행 결과 화면 링크](/docs/RUNNING_SCREEN.md) +## 🛠️ 개발 환경 --------------------------| +- 자바 버전 : **17** +- 스프링 버전 : **Spring Boot 3** +- 데이터베이스 : Mysql, Redis (+ docker-compose) +- 문서화 도구 : Swagger +- 의존성(자세한 내용은 [build.gradle](./build.gradle)을 참고해주세요!) + - Data-JPA + - Data-Redis + - QueryDSL + - Validation + - Security + - Lombok + - jjwt + + + +## 🧑‍🤝‍🧑 조원 & 역할 + +| 이름 | 역할 | +|-----|--------------------------------| | 임경민 | 조장, 주문 도메인 개발, 팀 내 이슈 관리 | | 한상우 | 회원 도메인 개발, 서버와 DevOps 설정 관리 | | 박건우 | 장바구니 도메인 개발, Swagger API 문서 관리 | @@ -53,11 +72,10 @@ ## 📐 ERD 설계도 -[ERDCloud 사이트 링크](https://www.erdcloud.com/d/jvAPuL7Xrpk3Cnysf) 에서도 확인해보실 수 있습니다. +[ERDCloud 사이트 링크](https://www.erdcloud.com/d/jvAPuL7Xrpk3Cnysf) -![ERD.png](./docs/images/ERD.png) ## 🏗 API 서버 구조 & CI/CD 구조 -![SERVER_STRUCTURE.png](./docs/images/SERVER_STRUCTURE.png) +[SERVER_STRUCTURE.png](./docs/images/SERVER_STRUCTURE.png) From a38dc6fbecf817d2c4e208a164fadbfaea46c9a8 Mon Sep 17 00:00:00 2001 From: YongHyunHong Date: Fri, 26 Jan 2024 10:26:08 +0900 Subject: [PATCH 5/6] =?UTF-8?q?HotFix:=20=EA=B5=AC=EB=A7=A4=EB=82=B4?= =?UTF-8?q?=EC=97=AD=20=EC=83=81=EC=84=B8=EB=B3=B4=EA=B8=B0=20=EC=A0=95?= =?UTF-8?q?=EB=A0=AC=20=EC=A1=B0=EA=B1=B4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/ReviewSearchListResponse.java | 5 +++-- .../repository/ReviewRepositoryImpl.java | 21 +++++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/example/catchroom_be/domain/review/dto/response/ReviewSearchListResponse.java b/src/main/java/com/example/catchroom_be/domain/review/dto/response/ReviewSearchListResponse.java index a28bef3..167a2f0 100644 --- a/src/main/java/com/example/catchroom_be/domain/review/dto/response/ReviewSearchListResponse.java +++ b/src/main/java/com/example/catchroom_be/domain/review/dto/response/ReviewSearchListResponse.java @@ -11,6 +11,7 @@ import lombok.NoArgsConstructor; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.List; @Getter @@ -36,7 +37,7 @@ public static class ReviewSearchResponse { private String userName; - private LocalDateTime date; + private String date; private String content; @@ -52,7 +53,7 @@ public static ReviewSearchResponse fromEntity(Review review) { .productName(accommodation.getName()) .image(accommodation.getThumbnailUrl()) .userName(user.getNickName()) - .date(review.getCreatedAt()) + .date(review.getCreatedAt().format(DateTimeFormatter.ofPattern("MM-dd"))) .content(review.getContent()) .region(accommodation.getRegion()) .build(); diff --git a/src/main/java/com/example/catchroom_be/domain/review/repository/ReviewRepositoryImpl.java b/src/main/java/com/example/catchroom_be/domain/review/repository/ReviewRepositoryImpl.java index 60d5fba..8b9dfe0 100644 --- a/src/main/java/com/example/catchroom_be/domain/review/repository/ReviewRepositoryImpl.java +++ b/src/main/java/com/example/catchroom_be/domain/review/repository/ReviewRepositoryImpl.java @@ -3,10 +3,13 @@ import com.example.catchroom_be.domain.product.dto.response.ProductSearchListResponse; import com.example.catchroom_be.domain.review.enumlist.ReviewSearchListResponse; import com.example.catchroom_be.domain.review.enumlist.ReviewSearchListResponse.ReviewSearchResponse; +import com.querydsl.core.types.ConstantImpl; +import com.querydsl.core.types.dsl.Expressions; import com.querydsl.jpa.impl.JPAQueryFactory; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Pageable; +import java.time.LocalDate; import java.util.ArrayList; import java.util.List; @@ -48,18 +51,24 @@ public ReviewSearchListResponse getReviewMain() { @Override public ReviewSearchListResponse getReviewAll(Pageable pageable) { + LocalDate sixMonthsAgo = LocalDate.now().minusMonths(6); + List result = queryFactory.selectFrom(review) .innerJoin(review.product,product).fetchJoin() .innerJoin(review.user,user).fetchJoin() .innerJoin(product.orderHistory,orderHistory).fetchJoin() .innerJoin(orderHistory.accommodation,accommodation).fetchJoin() - .offset(pageable.getOffset()) - .limit(pageable.getPageSize()) - .fetch() - .stream() - .map(ReviewSearchResponse::fromEntity) - .toList(); + .where(review.createdAt.after(sixMonthsAgo.atStartOfDay())) + .orderBy(Expressions.stringTemplate("DATE_FORMAT({0}, {1})", review.createdAt, ConstantImpl.create("MM-dd")) + .desc(), + review.content.length().desc()) + .offset(pageable.getOffset()) + .limit(pageable.getPageSize()) + .fetch() + .stream() + .map(ReviewSearchResponse::fromEntity) + .toList(); long totalSize = queryFactory.selectFrom(review) .fetchCount(); From 67ca477354c9776dd3cef82ecea1984b7644493a Mon Sep 17 00:00:00 2001 From: Parkgeonmoo Date: Fri, 26 Jan 2024 10:26:14 +0900 Subject: [PATCH 6/6] Update README.md --- README.md | 61 +++++++++++++++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 54fc9e1..3f28599 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,38 @@ -# 미니 프로젝트 : 숙박 예약 API 서비스 - +# 파이널 프로젝트 : 무료 예약 취소 불가한 숙소의 양도/거래 서비스 ## 💡 프로젝트 주제 -- **숙박 예약 서비스 API 서버 개발** -- 회원이 서비스를 로그인하여 상품의 숙소들을 확인할 수 있으며 주문하고 싶은 상품들을 장바구니에 담을 수도 있으며 ,주문을 할 수 있도록 만든 서비스 +- **숙소의 양도/거래 서비스 API 서버 개발** +- ## 📝 프로젝트 요약 -실제 숙박 예약을 하는 어플로서 로그인하여 주문 및 장바구니 담기 등을 진행할 수 있으며, 상품 전체 리스트 조회와 숙소 하나의 상세 정보도 보여줄 수 있다. -비회원인 경우 어떤 숙소가 있는지 구경할 수 있다. + ## ⭐️ 핵심 기능 ### 회원 -- 사람들이 자신의 아이디를 만들어 로그인할 수 있다. -- 로그인 시간에 만료 시간을 두어 일정 시간이 지나면 서비스 사용을 위해 재로그인을 해야 한다. -- 아이디와,비밀번호를 통하여 인증을 진행하며 일치하지 않을 경우 서비스 사용을 할 수 없다. +- + +### 마이페이지 -### 주문 +- -- 숙소들을 주문하여 예약할 수 있다. -- 나의 예약 내역을 불러와 확인할 수 있다. -- 숙소의 지정 날짜가 예약이 가능한지 확인할 수 있다. +### 찜 -### 숙소 +- -- OPEN API를 통하여 데이터를 가져와 필요한 숙소의 정보들을 데이터베이스에 파싱하여 저장한다. -- 메인화면에 카테고리(지역)별 숙박 정보를 제공한다. -- 숙박에 대한 상세정보 페이지를 제공한다. +### 리뷰 +- -### 장바구니 +### 구매내역 +- -- 장바구니에 숙소 내역을 담을 수 있다. -- 장바구니에 담은 내역을 삭제할 수 있다. -- 장바구니에 담은 내역이 품절이 된 지 아닌지를 알 수 있다. +### 판매내역 +- + +### 채팅 +- ## 🎢 실행 결과 화면 @@ -44,16 +42,16 @@ - 자바 버전 : **17** - 스프링 버전 : **Spring Boot 3** -- 데이터베이스 : Mysql, Redis (+ docker-compose) +- 데이터베이스 : Mysql, Redis , MongoDB - 문서화 도구 : Swagger -- 의존성(자세한 내용은 [build.gradle](./build.gradle)을 참고해주세요!) +- 의존성 - Data-JPA - Data-Redis - QueryDSL - Validation - Security - Lombok - - jjwt + - jwt @@ -61,21 +59,22 @@ | 이름 | 역할 | |-----|--------------------------------| -| 임경민 | 조장, 주문 도메인 개발, 팀 내 이슈 관리 | -| 한상우 | 회원 도메인 개발, 서버와 DevOps 설정 관리 | -| 박건우 | 장바구니 도메인 개발, Swagger API 문서 관리 | -| 문창호 | 숙박 도메인 개발, OpenAPI 데이터 관리 | +| 박건우 | 조장, 회원 도메인 개발 , 마이페이지 도메인 개발 , 찜 도메인 개발, 리뷰 도메인 개발,구매/판매 도메인 개발, 서버와 DevOps 설정관리| +| 성지운 | | +| 정혜민 | | +| 홍용현 | | ## 🚀 프로젝트 일정 -- **프로젝트 기간**: 11월 20일(월) ~ 11월 30일(목) +- **프로젝트 기간**: 12월 11일(월) ~ 1월 30일(화) ## 📐 ERD 설계도 -[ERDCloud 사이트 링크](https://www.erdcloud.com/d/jvAPuL7Xrpk3Cnysf) +[ERDCloud 사이트 링크](https://www.erdcloud.com/d/eoDe4Y9aag2Eerjxw) ## 🏗 API 서버 구조 & CI/CD 구조 -[SERVER_STRUCTURE.png](./docs/images/SERVER_STRUCTURE.png) +![캡처](https://github.com/catchroom/BE_CatchRoom/assets/50697545/f15ab45d-4626-4e02-a85e-74bac12ed312) +