From bb53889f9bcb567d61107d65850af4904cddc416 Mon Sep 17 00:00:00 2001 From: Ahn Su-gyeong Date: Tue, 28 May 2024 21:44:19 +0900 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Feature:=20=EA=B8=B0=EB=B3=B8=20?= =?UTF-8?q?=EC=B9=B4=ED=85=8C=EA=B3=A0=EB=A6=AC=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20(#80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * :sparkles: Feature: 회원가입 시 기본 카테고리 생성 * :sparkles: Feature: 스크랩 생성 시 기본 카테고리에 추가" * :sparkles: Feature: 스크랩 카테고리 목록 조회 API에서 기본 카테고리 제외 --- .../src/main/java/zzangdol/auth/business/AuthFacade.java | 5 +++++ .../zzangdol/scrap/implement/CategoryQueryServiceImpl.java | 2 ++ .../zzangdol/scrap/implement/ScrapCommandServiceImpl.java | 5 +++++ .../src/main/java/zzangdol/constant/Constants.java | 1 + .../src/main/java/zzangdol/scrap/dao/CategoryRepository.java | 3 +++ 5 files changed, 16 insertions(+) diff --git a/moodoodle-api/src/main/java/zzangdol/auth/business/AuthFacade.java b/moodoodle-api/src/main/java/zzangdol/auth/business/AuthFacade.java index e584ed6..29a9551 100644 --- a/moodoodle-api/src/main/java/zzangdol/auth/business/AuthFacade.java +++ b/moodoodle-api/src/main/java/zzangdol/auth/business/AuthFacade.java @@ -10,10 +10,13 @@ import zzangdol.auth.presentation.dto.request.SignInRequest; import zzangdol.auth.presentation.dto.request.SignUpRequest; import zzangdol.auth.presentation.dto.response.EmailVerificationTokenResponse; +import zzangdol.constant.Constants; import zzangdol.exception.custom.UserCredentialsException; import zzangdol.jwt.JwtResponse; import zzangdol.jwt.JwtService; import zzangdol.response.status.ErrorStatus; +import zzangdol.scrap.implement.CategoryCommandService; +import zzangdol.scrap.presentation.dto.request.CategoryCreateRequest; import zzangdol.ses.service.AwsSesService; import zzangdol.user.domain.User; @@ -26,6 +29,7 @@ public class AuthFacade { private final AwsSesService awsSesService; private final VerificationCodeService verificationCodeService; private final EmailVerificationTokenService emailVerificationTokenService; + private final CategoryCommandService categoryCommandService; public boolean sendVerificationEmail(String email) { if (!authService.isEmailAvailable(email)) { @@ -49,6 +53,7 @@ public JwtResponse signUp(String emailVerificationToken, SignUpRequest request) } emailVerificationTokenService.verifyToken(request.getEmail(), emailVerificationToken); User user = authService.signUp(request); + categoryCommandService.createCategory(user, new CategoryCreateRequest(Constants.DEFAULT_CATEGORY_NAME)); return jwtService.issueToken(user); } diff --git a/moodoodle-api/src/main/java/zzangdol/scrap/implement/CategoryQueryServiceImpl.java b/moodoodle-api/src/main/java/zzangdol/scrap/implement/CategoryQueryServiceImpl.java index 5936a2d..18c324a 100644 --- a/moodoodle-api/src/main/java/zzangdol/scrap/implement/CategoryQueryServiceImpl.java +++ b/moodoodle-api/src/main/java/zzangdol/scrap/implement/CategoryQueryServiceImpl.java @@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import zzangdol.constant.Constants; import zzangdol.diary.domain.Diary; import zzangdol.scrap.business.CategoryMapper; import zzangdol.scrap.dao.CategoryRepository; @@ -43,6 +44,7 @@ public List getCategoryResponsesByUser(User user) { public List getScrapCategoryResponsesByUser(User user, Long diaryId) { List categories = getCategoriesByUser(user); return categories.stream() + .filter(category -> !category.getName().equals(Constants.DEFAULT_CATEGORY_NAME)) .map(category -> { boolean isScrapped = scrapRepository.existsByCategoryAndUserAndDiary(category, user, diaryId); String latestImageUrl = categoryRepository.findLatestDiaryImageUrlByCategoryId(category.getId()); diff --git a/moodoodle-api/src/main/java/zzangdol/scrap/implement/ScrapCommandServiceImpl.java b/moodoodle-api/src/main/java/zzangdol/scrap/implement/ScrapCommandServiceImpl.java index 51eb0e9..eb89a32 100644 --- a/moodoodle-api/src/main/java/zzangdol/scrap/implement/ScrapCommandServiceImpl.java +++ b/moodoodle-api/src/main/java/zzangdol/scrap/implement/ScrapCommandServiceImpl.java @@ -4,6 +4,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import zzangdol.constant.Constants; import zzangdol.diary.dao.DiaryRepository; import zzangdol.diary.domain.Diary; import zzangdol.exception.custom.CategoryNotFoundException; @@ -33,6 +34,10 @@ public Scrap createScrap(User user, Long diaryId) { Diary diary = diaryRepository.findById(diaryId) .orElseThrow(() -> DiaryNotFoundException.EXCEPTION); Scrap scrap = buildScrap(user, diary); + + Category defaultCategory = categoryRepository.findCategoryByUserAndName(user, Constants.DEFAULT_CATEGORY_NAME) + .orElseThrow(() -> CategoryNotFoundException.EXCEPTION); + addCategoryToScrap(user, scrap.getId(), defaultCategory.getId()); return scrapRepository.save(scrap); } diff --git a/moodoodle-common/src/main/java/zzangdol/constant/Constants.java b/moodoodle-common/src/main/java/zzangdol/constant/Constants.java index 66be581..32a61c8 100644 --- a/moodoodle-common/src/main/java/zzangdol/constant/Constants.java +++ b/moodoodle-common/src/main/java/zzangdol/constant/Constants.java @@ -3,5 +3,6 @@ public class Constants { public static final String DEFAULT_IMAGE_URL = "https://moodoodle-dev.s3.ap-northeast-2.amazonaws.com/default_category_image.png"; + public static final String DEFAULT_CATEGORY_NAME = "모든 카테고리"; } \ No newline at end of file diff --git a/moodoodle-domain/src/main/java/zzangdol/scrap/dao/CategoryRepository.java b/moodoodle-domain/src/main/java/zzangdol/scrap/dao/CategoryRepository.java index 06ca07d..d25e1ad 100644 --- a/moodoodle-domain/src/main/java/zzangdol/scrap/dao/CategoryRepository.java +++ b/moodoodle-domain/src/main/java/zzangdol/scrap/dao/CategoryRepository.java @@ -1,6 +1,7 @@ package zzangdol.scrap.dao; import java.util.List; +import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import zzangdol.scrap.dao.querydsl.CategoryQueryRepository; import zzangdol.scrap.domain.Category; @@ -12,4 +13,6 @@ public interface CategoryRepository extends JpaRepository, Categ void deleteByUser(User user); + Optional findCategoryByUserAndName(User user, String name); + }