Skip to content

prgrms-web-devcourse/Team-PalPalHae-Dealight-BE

Repository files navigation


🌱 Dealight - 즐거운 가격, 함께하는 맛의 기쁨


👨🏻‍💻 프로젝트 기간 👨🏻‍💻
2023.10.12 ~ 2023.12.04


종류 기술 스택
🚀 서비스
기술
🛠️ 인프라
☁️ 클라우드
🤝 협업도구

🔗 배포 링크



🎬 주요 기능 소개 (시연 영상)

고객
메인화면 회원가입 가게 검색
고객-메인 고객-회원가입 업체 검색
장바구니 주문 리뷰 작성
장바구니 주문 고객-리뷰
업체
업체 등록 상품 등록 마이페이지 업체 정보 수정
업체등록 상품등록 업체 마이페이지 업체 마이페이지-업체관리
업체 & 고객 - 주문 관련
주문 승인
주문 승인
주문 완료(상품 수령 후)
주문 완료
주문 거절
주문 거절

👨🏻‍💻 팀원 소개

🌟 Dealight 백엔드 멤버

김혜민 이홍섭 정성현 한승원 고예성

💡 프로젝트 소개

소상공인들의 당일 폐기 예정 식품의 할인 정보 공유 및 구매/판매 서비스


💪🏻 핵심 기능

  • 마트 및 가게에서 당일 폐기 예정 상품을 할인 가격으로 등록/판매합니다.

  • 사용자들은 웹 사이트를 통해 할인된 상품 정보를 확인할 수 있습니다.

  • 상품 주문 기능을 제공하여 저렴한 식품을 구매할 수 있습니다.


🔫 타겟층

  • 공통
    • 환경보호와 지속가능성: 당일 폐기 예정 상품을 구매/판매함으로써 식재료 낭비를 줄이고 음식물 처리 비용을 절약하여 환경에 대한 부담을 감소시킵니다.
  • 소비자
    • 경제적 효과(비용 절감): 소비자 입장에서 할인된 가격으로 판매되는 제품을 구매함으로써, 일반적인 가격보다 저렴하게 필요한 식재료나 음식을 구입할 수 있습니다.
  • 업체
    • 매출 증대: 당일 폐기 예정인 식품을 할인하여 판매합니다. 고객들에게 더욱 합리적인 가격으로 제공함으로써 판매량을 늘리고 매출을 높일 수 있습니다.
    • 음식물 폐기 비용 절감: 당일 판매 상품의 낭비가 없어져 폐기 비용을 절감할 수 있습니다.

📄 프로젝트 문서


💌 API 명세

API 명세 예시 (업체 등록 API) API 명세 예시

🧱 Backend 기술 스택

backend architecture


🤝🏻 CI/CD

image

🌌 유저 요청 Flow

유저 요청 Flow


👀 Monitoring Architecture

image



📈 플로우 차트

업체

업체 Flow Chart

고객

고객 Flow Chart


💻 ERD

dealight BE ERD


🗂️ 패키지 구조

패키지 구조
📦
Team-PalPalHae-Dealight-BE [dealight-be]
├─ 
│  ├─ CODEOWNERS
│  ├─ ISSUE_TEMPLATE
│  │  └─ 
│  ├─ pull_request_template.md
│  └─ workflows
│     ├─ script-dev.yml
│     ├─ script-prod.yml
│     └─ sonarcloud.yml
├─ .gitignore
├─ README.md
├─ appspec.yml
├─ build.gradle
├─ dealight.Dockerfile
├─ docker-compose.blue.yml
├─ docker-compose.green.yml
├─ docker-compose.infra.yml
├─ gradle
│  └─ wrapper
│     ├─ gradle-wrapper.jar
│     └─ gradle-wrapper.properties
├─ gradlew
├─ gradlew.bat
├─ lombok.config
├─ scripts
│  ├─ deploy.sh
│  └─ infra.sh
├─ settings.gradle
└─ src
   ├─ docs
   │  └─ asciidoc
   │     ├─ Auth.adoc
   │     ├─ Cart.adoc
   │     ├─ Item.adoc
   │     ├─ Member.adoc
   │     ├─ Order.adoc
   │     ├─ Review.adoc
   │     └─ Store.adoc
   ├─ main
   │  ├─ java
   │  │  └─ com
   │  │     └─ palpal
   │  │        └─ dealightbe
   │  │           ├─ DealightBeApplication.java
   │  │           ├─ config
   │  │           │  ├─ AbstractElasticsearchConfiguration.java
   │  │           │  ├─ ElasticSearchConfig.java
   │  │           │  ├─ ElasticSearchProperty.java
   │  │           │  ├─ JpaConfig.java
   │  │           │  ├─ JwtConfig.java
   │  │           │  ├─ OAuth2KakaoRegistrationProperty.java
   │  │           │  ├─ RedisConfig.java
   │  │           │  ├─ RestTemplateConfig.java
   │  │           │  ├─ S3Config.java
   │  │           │  ├─ SchedulerConfig.java
   │  │           │  ├─ SecurityConfig.java
   │  │           │  └─ WebMvcConfig.java
   │  │           ├─ domain
   │  │           │  ├─ address
   │  │           │  │  ├─ application
   │  │           │  │  │  ├─ AddressService.java
   │  │           │  │  │  └─ dto
   │  │           │  │  │     ├─ request
   │  │           │  │  │     │  └─ AddressReq.java
   │  │           │  │  │     └─ response
   │  │           │  │  │        └─ AddressRes.java
   │  │           │  │  └─ domain
   │  │           │  │     ├─ Address.java
   │  │           │  │     └─ AddressRepository.java
   │  │           │  ├─ auth
   │  │           │  │  ├─ application
   │  │           │  │  │  ├─ AuthService.java
   │  │           │  │  │  ├─ CustomAuthAccessDeniedHandler.java
   │  │           │  │  │  ├─ CustomAuthenticationEntryPoint.java
   │  │           │  │  │  ├─ OAuth2AuthorizationService.java
   │  │           │  │  │  └─ dto
   │  │           │  │  │     ├─ request
   │  │           │  │  │     │  ├─ MemberNickNameCheckReq.java
   │  │           │  │  │     │  └─ MemberSignupAuthReq.java
   │  │           │  │  │     └─ response
   │  │           │  │  │        ├─ KakaoTokenRes.java
   │  │           │  │  │        ├─ KakaoUserInfoRes.java
   │  │           │  │  │        ├─ MemberAuthRes.java
   │  │           │  │  │        ├─ OAuthLoginRes.java
   │  │           │  │  │        └─ OAuthUserInfoRes.java
   │  │           │  │  ├─ domain
   │  │           │  │  │  ├─ Jwt.java
   │  │           │  │  │  ├─ JwtAuthentication.java
   │  │           │  │  │  └─ JwtAuthenticationToken.java
   │  │           │  │  ├─ exception
   │  │           │  │  │  ├─ InvalidRoleException.java
   │  │           │  │  │  ├─ OAuth2AuthorizationException.java
   │  │           │  │  │  └─ RequiredAuthenticationException.java
   │  │           │  │  ├─ filter
   │  │           │  │  │  └─ JwtAuthenticationFilter.java
   │  │           │  │  ├─ infra
   │  │           │  │  │  └─ HttpCookieAuth2AuthorizationRequestRepository.java
   │  │           │  │  └─ presentation
   │  │           │  │     └─ AuthController.java
   │  │           │  ├─ cart
   │  │           │  │  ├─ application
   │  │           │  │  │  ├─ CartService.java
   │  │           │  │  │  └─ dto
   │  │           │  │  │     ├─ request
   │  │           │  │  │     │  ├─ CartReq.java
   │  │           │  │  │     │  └─ CartsReq.java
   │  │           │  │  │     └─ response
   │  │           │  │  │        ├─ CartRes.java
   │  │           │  │  │        └─ CartsRes.java
   │  │           │  │  ├─ domain
   │  │           │  │  │  ├─ Cart.java
   │  │           │  │  │  ├─ CartAdditionType.java
   │  │           │  │  │  └─ CartRepository.java
   │  │           │  │  └─ presentation
   │  │           │  │     └─ CartController.java
   │  │           │  ├─ image
   │  │           │  │  ├─ ImageService.java
   │  │           │  │  ├─ application
   │  │           │  │  │  └─ dto
   │  │           │  │  │     ├─ request
   │  │           │  │  │     │  └─ ImageUploadReq.java
   │  │           │  │  │     └─ response
   │  │           │  │  │        └─ ImageRes.java
   │  │           │  │  ├─ exception
   │  │           │  │  │  ├─ ImageIOException.java
   │  │           │  │  │  └─ InvalidFileTypeException.java
   │  │           │  │  └─ infrastructure
   │  │           │  │     └─ S3ImageService.java
   │  │           │  ├─ item
   │  │           │  │  ├─ application
   │  │           │  │  │  ├─ ItemService.java
   │  │           │  │  │  └─ dto
   │  │           │  │  │     ├─ request
   │  │           │  │  │     │  └─ ItemReq.java
   │  │           │  │  │     └─ response
   │  │           │  │  │        ├─ ItemRes.java
   │  │           │  │  │        └─ ItemsRes.java
   │  │           │  │  ├─ domain
   │  │           │  │  │  ├─ Item.java
   │  │           │  │  │  ├─ ItemDocument.java
   │  │           │  │  │  ├─ ItemRepository.java
   │  │           │  │  │  ├─ ItemRepositoryCustom.java
   │  │           │  │  │  ├─ ItemRepositoryImpl.java
   │  │           │  │  │  └─ ItemSearchRepository.java
   │  │           │  │  └─ presentation
   │  │           │  │     └─ ItemController.java
   │  │           │  ├─ member
   │  │           │  │  ├─ application
   │  │           │  │  │  ├─ MemberService.java
   │  │           │  │  │  └─ dto
   │  │           │  │  │     ├─ request
   │  │           │  │  │     │  └─ MemberUpdateReq.java
   │  │           │  │  │     └─ response
   │  │           │  │  │        ├─ MemberProfileRes.java
   │  │           │  │  │        └─ MemberUpdateRes.java
   │  │           │  │  ├─ domain
   │  │           │  │  │  ├─ Member.java
   │  │           │  │  │  ├─ MemberRepository.java
   │  │           │  │  │  ├─ MemberRole.java
   │  │           │  │  │  ├─ MemberRoleRepository.java
   │  │           │  │  │  ├─ Role.java
   │  │           │  │  │  ├─ RoleRepository.java
   │  │           │  │  │  └─ RoleType.java
   │  │           │  │  └─ presentation
   │  │           │  │     └─ MemberController.java
   │  │           │  ├─ notification
   │  │           │  │  ├─ application
   │  │           │  │  │  ├─ NotificationService.java
   │  │           │  │  │  └─ dto
   │  │           │  │  │     ├─ NotificationUserInfo.java
   │  │           │  │  │     └─ response
   │  │           │  │  │        ├─ NotificationRes.java
   │  │           │  │  │        └─ NotificationsRes.java
   │  │           │  │  ├─ domain
   │  │           │  │  │  ├─ EmitterRepository.java
   │  │           │  │  │  ├─ Notification.java
   │  │           │  │  │  ├─ NotificationRepository.java
   │  │           │  │  │  └─ NotificationType.java
   │  │           │  │  ├─ presentation
   │  │           │  │  │  └─ NotificationController.java
   │  │           │  │  └─ util
   │  │           │  │     └─ NotificationUtil.java
   │  │           │  ├─ order
   │  │           │  │  ├─ application
   │  │           │  │  │  ├─ OrderService.java
   │  │           │  │  │  └─ dto
   │  │           │  │  │     ├─ request
   │  │           │  │  │     │  ├─ OrderCreateReq.java
   │  │           │  │  │     │  ├─ OrderProductReq.java
   │  │           │  │  │     │  ├─ OrderProductsReq.java
   │  │           │  │  │     │  └─ OrderStatusUpdateReq.java
   │  │           │  │  │     └─ response
   │  │           │  │  │        ├─ OrderProductRes.java
   │  │           │  │  │        ├─ OrderProductsRes.java
   │  │           │  │  │        ├─ OrderRes.java
   │  │           │  │  │        ├─ OrderStatusUpdateRes.java
   │  │           │  │  │        └─ OrdersRes.java
   │  │           │  │  ├─ domain
   │  │           │  │  │  ├─ Order.java
   │  │           │  │  │  ├─ OrderItem.java
   │  │           │  │  │  ├─ OrderItemRepository.java
   │  │           │  │  │  ├─ OrderRepository.java
   │  │           │  │  │  └─ OrderStatus.java
   │  │           │  │  └─ presentation
   │  │           │  │     └─ OrderController.java
   │  │           │  ├─ review
   │  │           │  │  ├─ application
   │  │           │  │  │  ├─ ReviewService.java
   │  │           │  │  │  └─ dto
   │  │           │  │  │     ├─ request
   │  │           │  │  │     │  └─ ReviewCreateReq.java
   │  │           │  │  │     └─ response
   │  │           │  │  │        ├─ ReviewContentRes.java
   │  │           │  │  │        ├─ ReviewCreateRes.java
   │  │           │  │  │        ├─ ReviewRes.java
   │  │           │  │  │        ├─ ReviewStatistics.java
   │  │           │  │  │        ├─ StoreReviewRes.java
   │  │           │  │  │        └─ StoreReviewsRes.java
   │  │           │  │  ├─ domain
   │  │           │  │  │  ├─ Review.java
   │  │           │  │  │  ├─ ReviewContent.java
   │  │           │  │  │  └─ ReviewRepository.java
   │  │           │  │  └─ presentation
   │  │           │  │     └─ ReviewController.java
   │  │           │  └─ store
   │  │           │     ├─ application
   │  │           │     │  ├─ StoreService.java
   │  │           │     │  └─ dto
   │  │           │     │     ├─ request
   │  │           │     │     │  ├─ StoreCreateReq.java
   │  │           │     │     │  ├─ StoreStatusReq.java
   │  │           │     │     │  └─ StoreUpdateReq.java
   │  │           │     │     └─ response
   │  │           │     │        ├─ StoreByMemberRes.java
   │  │           │     │        ├─ StoreCreateRes.java
   │  │           │     │        ├─ StoreInfoRes.java
   │  │           │     │        ├─ StoreInfoSliceRes.java
   │  │           │     │        ├─ StoreStatusRes.java
   │  │           │     │        └─ StoresInfoSliceRes.java
   │  │           │     ├─ domain
   │  │           │     │  ├─ DayOff.java
   │  │           │     │  ├─ Store.java
   │  │           │     │  ├─ StoreDocument.java
   │  │           │     │  ├─ StoreRepository.java
   │  │           │     │  ├─ StoreRepositoryCustom.java
   │  │           │     │  ├─ StoreRepositoryImpl.java
   │  │           │     │  ├─ StoreSearchRepository.java
   │  │           │     │  └─ StoreStatus.java
   │  │           │     └─ presentation
   │  │           │        └─ StoreController.java
   │  │           └─ global
   │  │              ├─ BaseEntity.java
   │  │              ├─ ListSortType.java
   │  │              ├─ aop
   │  │              │  ├─ ProviderId.java
   │  │              │  ├─ ProviderIdAop.java
   │  │              │  ├─ RefreshToken.java
   │  │              │  └─ RefreshTokenAop.java
   │  │              └─ error
   │  │                 ├─ ErrorCode.java
   │  │                 ├─ ErrorResponse.java
   │  │                 ├─ GlobalExceptionHandler.java
   │  │                 └─ exception
   │  │                    ├─ BusinessException.java
   │  │                    ├─ EntityNotFoundException.java
   │  │                    └─ InvalidValueException.java
   │  └─ resources
   │     ├─ application.yml
   │     ├─ console-appender.xml
   │     ├─ data.sql
   │     ├─ elastic
   │     │  ├─ item-mapping.json
   │     │  ├─ store-mapping.json
   │     │  └─ store-setting.json
   │     ├─ error-appender.xml
   │     ├─ info-appender.xml
   │     ├─ logback.xml
   │     └─ warn-appender.xml
   └─ test
      └─ java
         └─ com
            └─ palpal
               └─ dealightbe
                  ├─ config
                  │  └─ ElasticTestContainer.java
                  └─ domain
                     ├─ address
                     │  └─ application
                     │     └─ AddressServiceTest.java
                     ├─ auth
                     │  ├─ application
                     │  │  └─ AuthServiceTest.java
                     │  ├─ domain
                     │  │  └─ JwtTest.java
                     │  ├─ filter
                     │  │  └─ JwtAuthenticationFilterTest.java
                     │  └─ presentation
                     │     └─ AuthControllerTest.java
                     ├─ cart
                     │  └─ presentation
                     │     └─ CartControllerTest.java
                     ├─ item
                     │  ├─ application
                     │  │  └─ ItemServiceTest.java
                     │  ├─ domain
                     │  │  └─ ItemRepositoryTest.java
                     │  └─ presentation
                     │     └─ ItemControllerTest.java
                     ├─ member
                     │  ├─ application
                     │  │  └─ MemberServiceTest.java
                     │  └─ presentation
                     │     └─ MemberControllerTest.java
                     ├─ order
                     │  ├─ application
                     │  │  ├─ OrderServiceIntegrationTest.java
                     │  │  └─ OrderServiceTest.java
                     │  ├─ domain
                     │  │  ├─ OrderRepositoryTest.java
                     │  │  └─ OrderTest.java
                     │  └─ presentation
                     │     └─ OrderControllerTest.java
                     ├─ review
                     │  ├─ application
                     │  │  └─ ReviewServiceIntegrationTest.java
                     │  ├─ domain
                     │  │  └─ ReviewRepositoryTest.java
                     │  └─ presentation
                     │     └─ ReviewControllerTest.java
                     └─ store
                        ├─ application
                        │  └─ StoreServiceTest.java
                        └─ presentation
                           └─ StoreControllerTest.java

About

즐거운 가격, 함께하는 맛의 기쁨 Dealight 🌱 - Server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages