diff --git a/src/main/java/kr/co/conceptbe/idea/application/response/BranchCategoryResponse.java b/src/main/java/kr/co/conceptbe/idea/application/response/BranchCategoryResponse.java index ebe5d41..28eec9f 100644 --- a/src/main/java/kr/co/conceptbe/idea/application/response/BranchCategoryResponse.java +++ b/src/main/java/kr/co/conceptbe/idea/application/response/BranchCategoryResponse.java @@ -12,18 +12,20 @@ public record BranchCategoryResponse( @Schema(description = "분야 이름(세부분야)") List branchResponses ) { + public static BranchCategoryResponse of( - Branch branch, - List branches + Branch branch, + List branches ) { - return new BranchCategoryResponse( - branch.getId(), - branch.getName(), - branches.stream() - .filter(childBranch -> !childBranch.isParentBranch()) - .filter(childBranch -> childBranch.isChildBranch(branch)) - .map(BranchResponse::from) - .toList() - ); + return new BranchCategoryResponse( + branch.getId(), + branch.getName(), + branches.stream() + .filter(childBranch -> !childBranch.isParentBranch()) + .filter(childBranch -> childBranch.isChildBranch(branch)) + .map(BranchResponse::from) + .toList() + ); } + } diff --git a/src/main/java/kr/co/conceptbe/idea/application/response/MemberResponse.java b/src/main/java/kr/co/conceptbe/idea/application/response/MemberResponse.java index bf8c3d7..0d26b47 100644 --- a/src/main/java/kr/co/conceptbe/idea/application/response/MemberResponse.java +++ b/src/main/java/kr/co/conceptbe/idea/application/response/MemberResponse.java @@ -4,22 +4,22 @@ import kr.co.conceptbe.member.domain.Member; public record MemberResponse( - @Schema(description = "멤버 ID", example = "1") - Long id, - @Schema(description = "프로필 이미지 URL", example = "https://conceptbe.png") - String profileImageUrl, - @Schema(description = "닉네임", example = "conceptbe") - String nickname, - @Schema(description = "세부스킬", example = "서버개발") - String mainSkill + @Schema(description = "멤버 ID", example = "1") + Long id, + @Schema(description = "프로필 이미지 URL", example = "https://conceptbe.png") + String profileImageUrl, + @Schema(description = "닉네임", example = "conceptbe") + String nickname, + @Schema(description = "세부스킬", example = "서버개발") + String mainSkill ) { public static MemberResponse from(Member member) { return new MemberResponse( - member.getId(), - member.getProfileImageUrl(), - member.getNickname(), - member.getMainSkill().getName() + member.getId(), + member.getProfileImageUrl(), + member.getNickname(), + member.getMainSkill().getName() ); } diff --git a/src/main/java/kr/co/conceptbe/idea/dto/IdeaDetailResponse.java b/src/main/java/kr/co/conceptbe/idea/dto/IdeaDetailResponse.java index a7b0fca..069a5bf 100644 --- a/src/main/java/kr/co/conceptbe/idea/dto/IdeaDetailResponse.java +++ b/src/main/java/kr/co/conceptbe/idea/dto/IdeaDetailResponse.java @@ -2,57 +2,77 @@ import java.time.LocalDateTime; import java.util.List; +import kr.co.conceptbe.branch.domain.Branch; import kr.co.conceptbe.comment.Comment; +import kr.co.conceptbe.idea.application.response.BranchCategoryResponse; import kr.co.conceptbe.idea.domain.Idea; +import kr.co.conceptbe.idea.domain.IdeaBranch; import kr.co.conceptbe.image.application.response.ImageResponse; public record IdeaDetailResponse( - Long memberId, - String imageUrl, - String nickname, - String mainSkill, - String title, - LocalDateTime date, - String introduce, - List branchList, - List purposeList, - String cooperationWay, - String recruitmentPlace, - List skillCategories, - Integer likesCount, - Integer commentsCount, - Integer bookmarksCount, - Integer hits, - Boolean owner, - Boolean ownerLike, - Boolean ownerScrap, - List imageResponses + Long memberId, + String imageUrl, + String nickname, + String mainSkill, + String title, + LocalDateTime date, + String introduce, + List branchList, + List purposeList, + String cooperationWay, + String recruitmentPlace, + List skillCategories, + Integer likesCount, + Integer commentsCount, + Integer bookmarksCount, + Integer hits, + Boolean owner, + Boolean ownerLike, + Boolean ownerScrap, + List imageResponses ) { - public static IdeaDetailResponse of(Long tokenMemberId, Idea idea, - List imageResponses) { + public static IdeaDetailResponse of( + Long tokenMemberId, + Idea idea, + List imageResponses + ) { + List branches = idea.getBranches() + .stream() + .map(IdeaBranch::getBranch) + .toList(); + List parentBranches = branches + .stream() + .map(Branch::getParentBranch) + .distinct() + .toList(); + List branchResponses = parentBranches.stream() + .map(parentBranch -> BranchCategoryResponse.of(parentBranch, branches)) + .toList(); + return new IdeaDetailResponse( - idea.getCreator().getId(), - idea.getCreator().getProfileImageUrl(), - idea.getCreator().getNickname(), - idea.getCreator().getMainSkill().getName(), - idea.getTitle(), - idea.getCreatedAt(), - idea.getIntroduce(), - idea.getBranches().stream().map(e -> e.getBranch().getName()).toList(), - idea.getPurposes().stream().map(e -> e.getPurpose().getName()).toList(), - idea.getCooperationWay(), - idea.getRecruitmentPlace(), - idea.getSkillCategories().stream().map(e -> e.getSkillCategory().getName()).toList(), - idea.getLikesCount(), - idea.getComments().stream().filter(Comment::isParentComment) - .mapToInt(e -> e.getCommentsCount() + 1).sum(), - idea.getBookmarksCount(), - idea.getHitsCount(), - idea.isOwner(tokenMemberId), - idea.isOwnerLike(tokenMemberId), - idea.isOwnerScrap(tokenMemberId), - imageResponses + idea.getCreator().getId(), + idea.getCreator().getProfileImageUrl(), + idea.getCreator().getNickname(), + idea.getCreator().getMainSkill().getName(), + idea.getTitle(), + idea.getCreatedAt(), + idea.getIntroduce(), + branchResponses, + idea.getPurposes().stream().map(e -> e.getPurpose().getName()).toList(), + idea.getCooperationWay(), + idea.getRecruitmentPlace(), + idea.getSkillCategories().stream().map(e -> e.getSkillCategory().getName()).toList(), + idea.getLikesCount(), + idea.getComments().stream().filter(Comment::isParentComment) + .mapToInt(e -> e.getCommentsCount() + 1).sum(), + idea.getBookmarksCount(), + idea.getHitsCount(), + idea.isOwner(tokenMemberId), + idea.isOwnerLike(tokenMemberId), + idea.isOwnerScrap(tokenMemberId), + imageResponses ); } + } diff --git a/src/main/java/kr/co/conceptbe/idea/presentation/IdeaController.java b/src/main/java/kr/co/conceptbe/idea/presentation/IdeaController.java index 200c4f2..7e93dc1 100644 --- a/src/main/java/kr/co/conceptbe/idea/presentation/IdeaController.java +++ b/src/main/java/kr/co/conceptbe/idea/presentation/IdeaController.java @@ -97,7 +97,7 @@ public ResponseEntity removeIdea( return ResponseEntity.noContent().build(); } - @GetMapping("writing") + @GetMapping("/writing") public ResponseEntity getIdeaWriteResponses() { FindIdeaWriteResponse response = ideaService.getFindIdeaWriteResponse(); @@ -199,4 +199,5 @@ public ResponseEntity> getIdeaHitsResponse( List ideaCommentResponse = ideaService.getIdeaHitsResponse(ideaId); return ResponseEntity.ok(ideaCommentResponse); } + } diff --git a/src/main/java/kr/co/conceptbe/member/application/MemberService.java b/src/main/java/kr/co/conceptbe/member/application/MemberService.java index b851265..85df9a0 100644 --- a/src/main/java/kr/co/conceptbe/member/application/MemberService.java +++ b/src/main/java/kr/co/conceptbe/member/application/MemberService.java @@ -7,8 +7,10 @@ import kr.co.conceptbe.auth.presentation.dto.AuthCredentials; import kr.co.conceptbe.bookmark.Bookmark; import kr.co.conceptbe.bookmark.repository.BookmarkRepository; +import kr.co.conceptbe.branch.domain.Branch; import kr.co.conceptbe.comment.Comment; import kr.co.conceptbe.comment.repository.CommentRepository; +import kr.co.conceptbe.idea.application.response.BranchCategoryResponse; import kr.co.conceptbe.idea.application.response.IdeaResponse; import kr.co.conceptbe.idea.domain.persistence.HitRepository; import kr.co.conceptbe.idea.domain.persistence.IdeaRepository; @@ -23,6 +25,9 @@ import kr.co.conceptbe.member.exception.NotFoundMemberException; import kr.co.conceptbe.member.exception.NotOwnerException; import kr.co.conceptbe.member.persistence.MemberRepository; +import kr.co.conceptbe.notification_setting.domain.IdeaNotificationSetting; +import kr.co.conceptbe.notification_setting.domain.repository.NotificationSettingRepository; +import kr.co.conceptbe.notification_setting.domain.vo.NotificationSettingBranch; import kr.co.conceptbe.purpose.domain.Purpose; import kr.co.conceptbe.purpose.domain.persistence.PurposeRepository; import kr.co.conceptbe.region.domain.presentation.RegionRepository; @@ -47,6 +52,7 @@ public class MemberService { private final CommentRepository commentRepository; private final RegionRepository regionRepository; private final HitRepository hitRepository; + private final NotificationSettingRepository notificationSettingRepository; @Transactional(readOnly = true) public boolean validateDuplicatedNickName(String nickname) { @@ -57,62 +63,79 @@ public boolean validateDuplicatedNickName(String nickname) { public GetMemberProfileResponse getMemberProfileBy(AuthCredentials authCredentials, Long id) { Member authMember = memberRepository.getById(authCredentials.id()); Member member = memberRepository.findById(id).orElseThrow(() -> new NotFoundMemberException(id)); + return new GetMemberProfileResponse( - member.getProfileImageUrl(), - member.getNickname(), - member.getEmail(), - Objects.equals(authMember.getId(), id), - member.getMainSkill().getName(), - member.getLivingPlace().getName(), - member.getWorkingPlace(), - member.getIntroduce(), - mapToMemberSkills(member), - mapToMemberPurposes(member), - mapToMemberBranches(member) + member.getProfileImageUrl(), + member.getNickname(), + member.getEmail(), + Objects.equals(authMember.getId(), id), + member.getMainSkill().getName(), + member.getLivingPlace().getName(), + member.getWorkingPlace(), + member.getIntroduce(), + mapToMemberSkills(member), + mapToMemberPurposes(member), + mapToMemberBranches(member) ); } private List mapToMemberPurposes(Member member) { return member.getPurposes().stream() - .map(purpose -> purpose.getPurpose().getName()) - .collect(Collectors.toList()); + .map(purpose -> purpose.getPurpose().getName()) + .collect(Collectors.toList()); } private List mapToMemberSkills(Member member) { return member.getSkills().getValues().stream() - .map(skill -> new MemberProfileSkillResponse( - skill.getSkillCategory().getId(), - skill.getSkillCategory().getName(), - skill.getSkillLevel().getName() - )) - .collect(Collectors.toList()); + .map(skill -> new MemberProfileSkillResponse( + skill.getSkillCategory().getId(), + skill.getSkillCategory().getName(), + skill.getSkillLevel().getName() + )) + .collect(Collectors.toList()); } - private List mapToMemberBranches(Member member) { - return member.getBranches().stream() - .map(branch -> branch.getBranch().getName()) + private List mapToMemberBranches(Member member) { + IdeaNotificationSetting ideaNotificationSetting = notificationSettingRepository.findByMemberId( + member.getId() + ); + + List branches = ideaNotificationSetting.getBranches() + .getNotificationSettingBranches() + .stream() + .map(NotificationSettingBranch::getBranch) + .toList(); + + List parentBranches = branches + .stream() + .map(Branch::getParentBranch) + .distinct() + .toList(); + + return parentBranches.stream() + .map(parentBranch -> BranchCategoryResponse.of(parentBranch, branches)) .toList(); } @Transactional(readOnly = true) public List findMemberIdeas(AuthCredentials authCredentials, Long id, - Pageable pageable) { + Pageable pageable) { if (isMyMemberIdeas(authCredentials, id)) { return ideaRepository.findAllByCreatorIdOrderByCreatedAtDesc(authCredentials.id(), - pageable) - .stream() - .map(idea -> MemberIdeaResponse.ofMember(idea, MemberIdeaResponseOption.IS_MINE)) - .toList(); + pageable) + .stream() + .map(idea -> MemberIdeaResponse.ofMember(idea, MemberIdeaResponseOption.IS_MINE)) + .toList(); } Set guestBookmarkedIdeaIds = findGuestBookmarkedIdeaIds(authCredentials); return ideaRepository.findAllByCreatorIdOrderByCreatedAtDesc(id, pageable).stream() - .map(idea -> { - if (guestBookmarkedIdeaIds.contains(idea.getId())) { - return MemberIdeaResponse.ofMember(idea, MemberIdeaResponseOption.IS_BOOKMARKED); - } - return MemberIdeaResponse.ofMember(idea, MemberIdeaResponseOption.IS_NOT_BOOKMARKED); - }).collect(Collectors.toList()); + .map(idea -> { + if (guestBookmarkedIdeaIds.contains(idea.getId())) { + return MemberIdeaResponse.ofMember(idea, MemberIdeaResponseOption.IS_BOOKMARKED); + } + return MemberIdeaResponse.ofMember(idea, MemberIdeaResponseOption.IS_NOT_BOOKMARKED); + }).collect(Collectors.toList()); } private boolean isMyMemberIdeas(AuthCredentials authCredentials, Long id) { @@ -122,24 +145,24 @@ private boolean isMyMemberIdeas(AuthCredentials authCredentials, Long id) { private Set findGuestBookmarkedIdeaIds(AuthCredentials authCredentials) { Member guest = memberRepository.getById(authCredentials.id()); return guest.getBookmarks().stream() - .map(bookmark -> bookmark.getIdea().getId()) - .collect(Collectors.toSet()); + .map(bookmark -> bookmark.getIdea().getId()) + .collect(Collectors.toSet()); } @Transactional(readOnly = true) public List findMemberBookMarks(AuthCredentials authCredentials, - Pageable pageable) { + Pageable pageable) { List bookmarks = bookmarkRepository.findAllByMemberIdOrderByIdeaCreatedAtDesc( - authCredentials.id(), pageable); + authCredentials.id(), pageable); return bookmarks.stream() - .map(bookmark -> IdeaResponse.ofMember(bookmark.getIdea(), true)) - .toList(); + .map(bookmark -> IdeaResponse.ofMember(bookmark.getIdea(), true)) + .toList(); } public void updateMemberProfile( - UpdateMemberProfileRequest updateMemberProfileRequest, - AuthCredentials authCredentials, - Long id + UpdateMemberProfileRequest updateMemberProfileRequest, + AuthCredentials authCredentials, + Long id ) { if (!Objects.equals(authCredentials.id(), id)) { throw new NotOwnerException(authCredentials.id()); @@ -147,14 +170,14 @@ public void updateMemberProfile( Member member = memberRepository.getById(authCredentials.id()); SkillCategory mainSkill = skillCategoryRepository.getById( - updateMemberProfileRequest.mainSkillId()); + updateMemberProfileRequest.mainSkillId()); member.updateProfile( - updateMemberProfileRequest.nickname(), - mainSkill, - updateMemberProfileRequest.profileImageUrl(), - regionRepository.getById(updateMemberProfileRequest.livingPlaceId()), - updateMemberProfileRequest.workingPlace(), - updateMemberProfileRequest.introduction() + updateMemberProfileRequest.nickname(), + mainSkill, + updateMemberProfileRequest.profileImageUrl(), + regionRepository.getById(updateMemberProfileRequest.livingPlaceId()), + updateMemberProfileRequest.workingPlace(), + updateMemberProfileRequest.introduction() ); List skillCategories = mapToSkillCategories(updateMemberProfileRequest); @@ -162,35 +185,35 @@ public void updateMemberProfile( member.updateSkills(member, skillCategories, skillLevels); List memberPurposes = mapToMemberPurposes(updateMemberProfileRequest, - member); + member); member.updateJoinPurposes(memberPurposes); } private List mapToSkillCategories( - UpdateMemberProfileRequest updateMemberProfileRequest + UpdateMemberProfileRequest updateMemberProfileRequest ) { return updateMemberProfileRequest.skills().stream() - .map(skillRequest -> skillCategoryRepository.getById(skillRequest.skillId())) - .toList(); + .map(skillRequest -> skillCategoryRepository.getById(skillRequest.skillId())) + .toList(); } private static List mapToSkillLevels( - UpdateMemberProfileRequest updateMemberProfileRequest + UpdateMemberProfileRequest updateMemberProfileRequest ) { return updateMemberProfileRequest.skills().stream() - .map(skillRequest -> SkillLevel.from(skillRequest.level())) - .toList(); + .map(skillRequest -> SkillLevel.from(skillRequest.level())) + .toList(); } private List mapToMemberPurposes( - UpdateMemberProfileRequest updateMemberProfileRequest, Member member) { + UpdateMemberProfileRequest updateMemberProfileRequest, Member member) { return updateMemberProfileRequest.joinPurposes() - .stream() - .map(purposeId -> { - Purpose purpose = purposeRepository.getById(purposeId); - return new MemberPurpose(member, purpose); - }) - .toList(); + .stream() + .map(purposeId -> { + Purpose purpose = purposeRepository.getById(purposeId); + return new MemberPurpose(member, purpose); + }) + .toList(); } public void deleteMember(AuthCredentials authCredentials, Long id) { @@ -200,7 +223,7 @@ public void deleteMember(AuthCredentials authCredentials, Long id) { Member member = memberRepository.getById(authCredentials.id()); List comments = commentRepository - .findByCreator(member); + .findByCreator(member); for (Comment comment : comments) { comment.deleteWithMember(); @@ -217,4 +240,5 @@ public void deleteMemberProfileImage(AuthCredentials authCredentials, Long id) { Member member = memberRepository.getById(authCredentials.id()); member.deleteProfileImage(); } + } diff --git a/src/main/java/kr/co/conceptbe/member/application/dto/GetMemberProfileResponse.java b/src/main/java/kr/co/conceptbe/member/application/dto/GetMemberProfileResponse.java index 7dee95a..3c74eb8 100644 --- a/src/main/java/kr/co/conceptbe/member/application/dto/GetMemberProfileResponse.java +++ b/src/main/java/kr/co/conceptbe/member/application/dto/GetMemberProfileResponse.java @@ -3,33 +3,35 @@ import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Schema; import java.util.List; +import kr.co.conceptbe.idea.application.response.BranchCategoryResponse; public record GetMemberProfileResponse( - @Schema(description = "프로필 이미지 URL", example = "https://conceptbe.png") - String profileImageUrl, - @Schema(description = "닉네임", example = "conceptbe") - String nickname, - @Schema(description = "이메일", example = "conceptbe@gmail.com") - String email, - @Schema(description = "프로필 수정 가능 여부", example = "true") - boolean isMyProfile, - @Schema(description = "대표스킬", example = "개발") - String mainSkill, - @Schema(description = "지역명", example = "서울") - String livingPlace, - @Schema(description = "직장명", example = "네이버") - String workingPlace, - @Schema(description = "자기소개", example = "안녕하세요 31살 백엔드 개발자입니다.") - String introduction, - @ArraySchema( arraySchema = @Schema(description = "세부 스킬")) - List skills, - @ArraySchema( arraySchema = @Schema( - description = "가입목적", - example ="[\"사이드프로젝트\", \"공모전\"]")) - List joinPurposes, - @ArraySchema( arraySchema = @Schema( - description = "목적", - example ="[\"쇼핑\", \"금융/앱테크\"]")) - List branchList + @Schema(description = "프로필 이미지 URL", example = "https://conceptbe.png") + String profileImageUrl, + @Schema(description = "닉네임", example = "conceptbe") + String nickname, + @Schema(description = "이메일", example = "conceptbe@gmail.com") + String email, + @Schema(description = "프로필 수정 가능 여부", example = "true") + boolean isMyProfile, + @Schema(description = "대표스킬", example = "개발") + String mainSkill, + @Schema(description = "지역명", example = "서울") + String livingPlace, + @Schema(description = "직장명", example = "네이버") + String workingPlace, + @Schema(description = "자기소개", example = "안녕하세요 31살 백엔드 개발자입니다.") + String introduction, + @ArraySchema(arraySchema = @Schema(description = "세부 스킬")) + List skills, + @ArraySchema(arraySchema = @Schema( + description = "가입목적", + example = "[\"사이드프로젝트\", \"공모전\"]")) + List joinPurposes, + @ArraySchema(arraySchema = @Schema( + description = "목적", + example = "[\"쇼핑\", \"금융/앱테크\"]")) + List branchList ) { + } diff --git a/src/main/java/kr/co/conceptbe/member/controller/MemberController.java b/src/main/java/kr/co/conceptbe/member/controller/MemberController.java index 61a12fc..58e5c25 100644 --- a/src/main/java/kr/co/conceptbe/member/controller/MemberController.java +++ b/src/main/java/kr/co/conceptbe/member/controller/MemberController.java @@ -32,25 +32,28 @@ public class MemberController implements MemberApi { @GetMapping("/nickname") public ResponseEntity checkDuplicatedNickName( - @RequestParam String nickname + @RequestParam String nickname ) { return ResponseEntity.ok(memberService.validateDuplicatedNickName(nickname)); } @GetMapping("/{id}") public ResponseEntity getMemberProfile( - @Auth AuthCredentials authCredentials, - @PathVariable Long id + @Auth AuthCredentials authCredentials, + @PathVariable Long id ) { - GetMemberProfileResponse memberProfileResponse = memberService.getMemberProfileBy(authCredentials, id); + GetMemberProfileResponse memberProfileResponse = memberService.getMemberProfileBy( + authCredentials, + id + ); return ResponseEntity.ok(memberProfileResponse); } @PutMapping("/{id}") public ResponseEntity updateMemberProfile( - @RequestBody @Valid UpdateMemberProfileRequest updateMemberProfileRequest, - @Auth AuthCredentials authCredentials, - @PathVariable Long id + @RequestBody @Valid UpdateMemberProfileRequest updateMemberProfileRequest, + @Auth AuthCredentials authCredentials, + @PathVariable Long id ) { memberService.updateMemberProfile(updateMemberProfileRequest, authCredentials, id); return ResponseEntity.noContent().build(); @@ -58,20 +61,19 @@ public ResponseEntity updateMemberProfile( @DeleteMapping("/{id}/profile-image") public ResponseEntity deleteMemberProfileImage( - @Auth AuthCredentials authCredentials, - @PathVariable Long id + @Auth AuthCredentials authCredentials, + @PathVariable Long id ) { memberService.deleteMemberProfileImage(authCredentials, id); return ResponseEntity.noContent().build(); } - @GetMapping("/{id}/ideas") public ResponseEntity> findMemberIdeas( - @Auth AuthCredentials authCredentials, - @PathVariable Long id, - @RequestParam int page, - @RequestParam int size + @Auth AuthCredentials authCredentials, + @PathVariable Long id, + @RequestParam int page, + @RequestParam int size ) { Pageable pageable = PageRequest.of(page, size); List memberIdeas = memberService.findMemberIdeas(authCredentials, id, pageable); @@ -81,9 +83,9 @@ public ResponseEntity> findMemberIdeas( @GetMapping("/{id}/bookmarks") public ResponseEntity> findMemberBookmarks( - @Auth AuthCredentials authCredentials, - @RequestParam int page, - @RequestParam int size + @Auth AuthCredentials authCredentials, + @RequestParam int page, + @RequestParam int size ) { Pageable pageable = PageRequest.of(page, size); List memberBookMarks = memberService.findMemberBookMarks(authCredentials, pageable); @@ -93,10 +95,11 @@ public ResponseEntity> findMemberBookmarks( @DeleteMapping("/{id}") public ResponseEntity deleteMember( - @Auth AuthCredentials authCredentials, - @PathVariable Long id + @Auth AuthCredentials authCredentials, + @PathVariable Long id ) { memberService.deleteMember(authCredentials, id); return ResponseEntity.noContent().build(); } + } diff --git a/src/main/java/kr/co/conceptbe/notification_setting/domain/vo/NotificationSettingBranches.java b/src/main/java/kr/co/conceptbe/notification_setting/domain/vo/NotificationSettingBranches.java index ff242d5..3fa19cc 100644 --- a/src/main/java/kr/co/conceptbe/notification_setting/domain/vo/NotificationSettingBranches.java +++ b/src/main/java/kr/co/conceptbe/notification_setting/domain/vo/NotificationSettingBranches.java @@ -57,14 +57,14 @@ public void update( notificationSettingBranches.clear(); notificationSettingBranches.addAll( - branches.stream() - .map(branch -> NotificationSettingBranch.of(ideaNotificationSetting, branch)) - .toList() + branches.stream() + .map(branch -> NotificationSettingBranch.of(ideaNotificationSetting, branch)) + .toList() ); } private static void validateBranch(HashSet branches) { - if (branches.isEmpty() || branches.size() > 10) { + if (branches.isEmpty()) { throw new InvalidBranchException(); } }