👨🏻💻 프로젝트 기간 👨🏻💻
2023.10.12 ~ 2023.12.04
종류 | 기술 스택 |
---|---|
🚀 서비스 기술 |
|
🛠️ 인프라 | |
☁️ 클라우드 | |
🤝 협업도구 |
김혜민 | 이홍섭 | 정성현 | 한승원 | 고예성 |
---|---|---|---|---|
소상공인들의 당일 폐기 예정 식품의 할인 정보 공유 및 구매/판매 서비스
-
마트 및 가게에서 당일 폐기 예정 상품을 할인 가격으로 등록/판매합니다.
-
사용자들은 웹 사이트를 통해 할인된 상품 정보를 확인할 수 있습니다.
-
상품 주문 기능을 제공하여 저렴한 식품을 구매할 수 있습니다.
- 공통
- 환경보호와 지속가능성: 당일 폐기 예정 상품을 구매/판매함으로써 식재료 낭비를 줄이고 음식물 처리 비용을 절약하여 환경에 대한 부담을 감소시킵니다.
- 소비자
- 경제적 효과(비용 절감): 소비자 입장에서 할인된 가격으로 판매되는 제품을 구매함으로써, 일반적인 가격보다 저렴하게 필요한 식재료나 음식을 구입할 수 있습니다.
- 업체
- 매출 증대: 당일 폐기 예정인 식품을 할인하여 판매합니다. 고객들에게 더욱 합리적인 가격으로 제공함으로써 판매량을 늘리고 매출을 높일 수 있습니다.
- 음식물 폐기 비용 절감: 당일 판매 상품의 낭비가 없어져 폐기 비용을 절감할 수 있습니다.
패키지 구조
📦
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