From 45219106c961640edb7dbbbeba515373cfa5228f Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Thu, 22 Feb 2024 18:17:26 +0900 Subject: [PATCH 1/5] =?UTF-8?q?feat=20:=20=EC=A4=91=EB=B3=B5=20=ED=9A=8C?= =?UTF-8?q?=EC=9B=90=20=EA=B0=80=EC=9E=85=20=EB=B6=88=EA=B0=80=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=B6=94=EA=B0=80=20#45?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sendback/domain/user/exception/UserExceptionType.java | 3 ++- .../java/com/sendback/domain/user/service/UserService.java | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sendback/domain/user/exception/UserExceptionType.java b/src/main/java/com/sendback/domain/user/exception/UserExceptionType.java index 15cb48a..409f795 100644 --- a/src/main/java/com/sendback/domain/user/exception/UserExceptionType.java +++ b/src/main/java/com/sendback/domain/user/exception/UserExceptionType.java @@ -13,7 +13,8 @@ public enum UserExceptionType implements ExceptionType { NOT_FOUND_LEVEL(2040, "유효하지 않은 level 형식입니다."), INVALID_NICKNAME(2050, "닉네임은 한글, 영어(2~8자) 이내로 입력해주세요."), NOT_FOUND_USER(2060, "유저를 찾을 수 없습니다."), - DUPLICATED_NICKNAME(2070, "중복된 유저 닉네임입니다."); + DUPLICATED_NICKNAME(2070, "중복된 유저 닉네임입니다."), + PREVIOUS_REGISTERED_USER(2080, "이전에 회원 가입한 내역이 있습니다."); private final int statusCode; private final String message; diff --git a/src/main/java/com/sendback/domain/user/service/UserService.java b/src/main/java/com/sendback/domain/user/service/UserService.java index 6fea64a..01b9066 100644 --- a/src/main/java/com/sendback/domain/user/service/UserService.java +++ b/src/main/java/com/sendback/domain/user/service/UserService.java @@ -53,6 +53,9 @@ public Token signUpUser(@RequestBody SignUpRequestDto signUpRequestDto) { } jwtProvider.validateSignToken(signUpRequestDto.signToken()); SigningAccount signingAccount = jwtProvider.getSignUserInfo(signUpRequestDto.signToken()); + if(userRepository.findBySocialId(signingAccount.socialId()).isPresent()){ + throw new BadRequestException(PREVIOUS_REGISTERED_USER); + } User user = User.of(signingAccount, signUpRequestDto); User savedUser = userRepository.save(user); List fieldList = signUpRequestDto.fields().stream() From 9e6519de8ba2af2d6a68e0cb9b975ccddc41440f Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Thu, 22 Feb 2024 18:20:53 +0900 Subject: [PATCH 2/5] =?UTF-8?q?refactor=20:=20=ED=94=84=EB=A1=9C=EC=A0=9D?= =?UTF-8?q?=ED=8A=B8=20=EC=B6=94=EC=B2=9C=20=EC=A1=B0=ED=9A=8C=20=EB=B9=84?= =?UTF-8?q?=EC=A6=88=EB=8B=88=EC=8A=A4=20=EB=A1=9C=EC=A7=81=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81=20#45?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/repository/ProjectRepository.java | 1 - .../repository/ProjectRepositoryCustom.java | 3 +-- .../repository/ProjectRepositoryImpl.java | 20 +++++++++++++++++-- .../project/service/ProjectService.java | 10 ++++++---- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/sendback/domain/project/repository/ProjectRepository.java b/src/main/java/com/sendback/domain/project/repository/ProjectRepository.java index 601ad64..8d38c5f 100644 --- a/src/main/java/com/sendback/domain/project/repository/ProjectRepository.java +++ b/src/main/java/com/sendback/domain/project/repository/ProjectRepository.java @@ -8,7 +8,6 @@ public interface ProjectRepository extends JpaRepository, ProjectRepositoryCustom { Long countByUserId(Long userId); List findByUserId(Long userId); - List findTop12ByOrderByLikeCountDesc(); List findAllByEndedAtBeforeAndIsDeletedIsFalse(LocalDate localDate); } diff --git a/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryCustom.java b/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryCustom.java index 29c2567..172f3ef 100644 --- a/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryCustom.java +++ b/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryCustom.java @@ -7,7 +7,6 @@ import com.sendback.global.common.constants.FieldName; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; - import java.util.List; public interface ProjectRepositoryCustom { @@ -17,7 +16,7 @@ public interface ProjectRepositoryCustom { Page findAllScrappedProjectsByMe(Pageable pageable, Long userId, Boolean isFinished); List findRecommendedProjects(List fieldNameList, int size); - + List findRecommendedProjects(int size); Page findAllByPageableAndFieldAndIsFinishedAndSort( Pageable pageable, String keyword, String field, Boolean isFinished, Long sort); Page findAllSubmittedProjectsByMe(Pageable pageable, Long userId, Boolean isFinished); diff --git a/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryImpl.java b/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryImpl.java index 67055ef..a1edf3d 100644 --- a/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryImpl.java +++ b/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryImpl.java @@ -135,13 +135,29 @@ public List findRecommendedProjects(List filedNameList, int List content = queryFactory .selectFrom(project) .join(project.likes, like) - .groupBy(project) + .groupBy(project.id) .where( like.isDeleted.eq(false), project.isDeleted.eq(false), project.fieldName.in(filedNameList) ) - .orderBy(like.count().desc()) + .orderBy(project.id.count().desc()) + .limit(size) + .fetch(); + return content; + } + + @Override + public List findRecommendedProjects(int size) { + List content = queryFactory + .selectFrom(project) + .join(project.likes, like) + .groupBy(project.id) + .where( + like.isDeleted.eq(false), + project.isDeleted.eq(false) + ) + .orderBy(project.id.count().desc()) .limit(size) .fetch(); return content; diff --git a/src/main/java/com/sendback/domain/project/service/ProjectService.java b/src/main/java/com/sendback/domain/project/service/ProjectService.java index fb8275f..4d3c063 100644 --- a/src/main/java/com/sendback/domain/project/service/ProjectService.java +++ b/src/main/java/com/sendback/domain/project/service/ProjectService.java @@ -31,12 +31,10 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.Optional; import static com.sendback.domain.project.exception.ProjectExceptionType.*; -import static com.sendback.global.common.constants.FieldName.*; @Service @RequiredArgsConstructor @@ -124,10 +122,14 @@ public List getRecommendedProject(Long userId){ List fieldNameList = fieldList.stream().map(Field::getName).collect(Collectors.toList()); List projects = projectRepository.findRecommendedProjects(fieldNameList, 12); responseDtos.addAll(projects.stream().map(project -> RecommendedProjectResponseDto.of(project)).collect(Collectors.toList())); + if(projects.size()<12) { + List extraProject = projectRepository.findRecommendedProjects(12 - projects.size()); + responseDtos.addAll(extraProject.stream().map(project -> RecommendedProjectResponseDto.of(project)).collect(Collectors.toList())); + } } else{ - List projects = projectRepository.findTop12ByOrderByLikeCountDesc(); - responseDtos = projects.stream().map(project -> RecommendedProjectResponseDto.of(project)).collect(Collectors.toList()); + List projects = projectRepository.findRecommendedProjects(12); + responseDtos.addAll(projects.stream().map(project -> RecommendedProjectResponseDto.of(project)).collect(Collectors.toList())); } return responseDtos; } From 515ba50767565d5133325341ce056b4756d281db Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Thu, 22 Feb 2024 19:16:44 +0900 Subject: [PATCH 3/5] =?UTF-8?q?feat=20:=20=EB=82=B4=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=20=EC=A1=B0=ED=9A=8C=EC=97=90=EC=84=9C=20count=20=EA=B0=92=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EB=B3=80=EA=B2=BD=20#45?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feedback/repository/FeedbackSubmitRepository.java | 2 -- .../sendback/domain/like/repository/LikeRepository.java | 2 +- .../domain/project/repository/ProjectRepository.java | 5 +++-- .../com/sendback/domain/user/service/UserService.java | 9 ++++----- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/sendback/domain/feedback/repository/FeedbackSubmitRepository.java b/src/main/java/com/sendback/domain/feedback/repository/FeedbackSubmitRepository.java index 698211e..2587024 100644 --- a/src/main/java/com/sendback/domain/feedback/repository/FeedbackSubmitRepository.java +++ b/src/main/java/com/sendback/domain/feedback/repository/FeedbackSubmitRepository.java @@ -11,6 +11,4 @@ public interface FeedbackSubmitRepository extends JpaRepository { Optional findByUserAndProject(User user, Project project); boolean existsByUserAndProjectAndIsDeletedIsFalse(User user, Project project); - Long countByProjectIn(List projects); + Long countByProjectInAndIsDeletedIsFalse(List projects); } diff --git a/src/main/java/com/sendback/domain/project/repository/ProjectRepository.java b/src/main/java/com/sendback/domain/project/repository/ProjectRepository.java index 8d38c5f..505f20c 100644 --- a/src/main/java/com/sendback/domain/project/repository/ProjectRepository.java +++ b/src/main/java/com/sendback/domain/project/repository/ProjectRepository.java @@ -1,13 +1,14 @@ package com.sendback.domain.project.repository; import com.sendback.domain.project.entity.Project; +import com.sendback.domain.user.entity.User; import org.springframework.data.jpa.repository.JpaRepository; import java.time.LocalDate; import java.util.List; public interface ProjectRepository extends JpaRepository, ProjectRepositoryCustom { - Long countByUserId(Long userId); - List findByUserId(Long userId); + Long countByUserAndIsDeletedIsFalse(User user); + List findByUserAndIsDeletedIsFalse(User user); List findAllByEndedAtBeforeAndIsDeletedIsFalse(LocalDate localDate); } diff --git a/src/main/java/com/sendback/domain/user/service/UserService.java b/src/main/java/com/sendback/domain/user/service/UserService.java index 01b9066..827aefa 100644 --- a/src/main/java/com/sendback/domain/user/service/UserService.java +++ b/src/main/java/com/sendback/domain/user/service/UserService.java @@ -30,7 +30,6 @@ import java.util.List; import java.util.Optional; import java.util.stream.Collectors; - import static com.sendback.domain.user.exception.UserExceptionType.*; @Service @@ -77,10 +76,10 @@ public UserInfoResponseDto getUserInfo(Long userId){ User user = userRepository.findById(userId).orElseThrow( () -> new NotFoundException(NOT_FOUND_USER) ); - Long projectCount = projectRepository.countByUserId(userId); - Long feedbackCount = feedbackSubmitRepository.countByUserId(userId); - List projectList = projectRepository.findByUserId(userId); - Long likeCount = likeRepository.countByProjectIn(projectList); + Long projectCount = projectRepository.countByUserAndIsDeletedIsFalse(user); + Long feedbackCount = feedbackSubmitRepository.countByUserAndIsDeletedIsFalse(user); + List projectList = projectRepository.findByUserAndIsDeletedIsFalse(user); + Long likeCount = likeRepository.countByProjectInAndIsDeletedIsFalse(projectList); List fieldList = fieldRepository.findAllByUserId(userId); List fieldNameList = fieldList.stream() .map(Field::getName) From 9c834300bb01ec563bd2d30c72ad4d6663df69f3 Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Thu, 22 Feb 2024 20:14:10 +0900 Subject: [PATCH 4/5] =?UTF-8?q?refactor=20:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95=20#45?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feedback/repository/FeedbackSubmitRepositoryTest.java | 3 ++- .../domain/like/repository/LikeRepositoryTest.java | 2 +- .../domain/project/repository/ProjectRepositoryTest.java | 4 ++-- .../com/sendback/domain/user/service/UserServiceTest.java | 8 ++++---- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/test/java/com/sendback/domain/feedback/repository/FeedbackSubmitRepositoryTest.java b/src/test/java/com/sendback/domain/feedback/repository/FeedbackSubmitRepositoryTest.java index 7e89959..5a468b0 100644 --- a/src/test/java/com/sendback/domain/feedback/repository/FeedbackSubmitRepositoryTest.java +++ b/src/test/java/com/sendback/domain/feedback/repository/FeedbackSubmitRepositoryTest.java @@ -2,6 +2,7 @@ import com.sendback.domain.feedback.entity.FeedbackSubmit; import com.sendback.global.RepositoryTest; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -59,7 +60,7 @@ public void success_true() { FeedbackSubmit feedbackSubmit = feedbackSubmitTestPersister.builder().save(); // when - Long feedBackCount = feedbackSubmitRepository.countByUserId(feedbackSubmit.getUser().getId()); + Long feedBackCount = feedbackSubmitRepository.countByUserAndIsDeletedIsFalse(feedbackSubmit.getUser()); // then assertThat(feedBackCount).isEqualTo(1); diff --git a/src/test/java/com/sendback/domain/like/repository/LikeRepositoryTest.java b/src/test/java/com/sendback/domain/like/repository/LikeRepositoryTest.java index 675dfe8..07285fc 100644 --- a/src/test/java/com/sendback/domain/like/repository/LikeRepositoryTest.java +++ b/src/test/java/com/sendback/domain/like/repository/LikeRepositoryTest.java @@ -99,7 +99,7 @@ public void success() { Like like = likeTestPersister.builder().user(user).project(project).save(); // when - Long feedBackCount = likeRepository.countByProjectIn(projectList); + Long feedBackCount = likeRepository.countByProjectInAndIsDeletedIsFalse(projectList); // then assertThat(feedBackCount).isEqualTo(1); diff --git a/src/test/java/com/sendback/domain/project/repository/ProjectRepositoryTest.java b/src/test/java/com/sendback/domain/project/repository/ProjectRepositoryTest.java index b74b3c4..65a4ac5 100644 --- a/src/test/java/com/sendback/domain/project/repository/ProjectRepositoryTest.java +++ b/src/test/java/com/sendback/domain/project/repository/ProjectRepositoryTest.java @@ -33,7 +33,7 @@ public void countByUserId() { Project project = projectTestPersister.builder().save(); //when - Long projectCount = projectRepository.countByUserId(project.getUser().getId()); + Long projectCount = projectRepository.countByUserAndIsDeletedIsFalse(project.getUser()); //then assertThat(projectCount).isEqualTo(1); @@ -46,7 +46,7 @@ public void findByUserId() { Project project = projectTestPersister.builder().save(); //when - List findProject = projectRepository.findByUserId(project.getUser().getId()); + List findProject = projectRepository.findByUserAndIsDeletedIsFalse(project.getUser()); //then assertThat(findProject.size()).isEqualTo(1); diff --git a/src/test/java/com/sendback/domain/user/service/UserServiceTest.java b/src/test/java/com/sendback/domain/user/service/UserServiceTest.java index b6ad6e8..bf4c7c1 100644 --- a/src/test/java/com/sendback/domain/user/service/UserServiceTest.java +++ b/src/test/java/com/sendback/domain/user/service/UserServiceTest.java @@ -178,12 +178,12 @@ void getUserInfo_success() { Long needToFeedbackCount = Level.getRemainCountUntilNextLevel(feedbackCount); given(userRepository.findById(mockUserId)).willReturn(Optional.of(user)); - given(projectRepository.countByUserId(mockUserId)).willReturn(projectCount); - given(feedbackSubmitRepository.countByUserId(mockUserId)).willReturn(feedbackCount); + given(projectRepository.countByUserAndIsDeletedIsFalse(user)).willReturn(projectCount); + given(feedbackSubmitRepository.countByUserAndIsDeletedIsFalse(user)).willReturn(feedbackCount); List projectList = new ArrayList<>(); projectList.add(project); - given(projectRepository.findByUserId(mockUserId)).willReturn(projectList); - given(likeRepository.countByProjectIn(projectList)).willReturn(likeCount); + given(projectRepository.findByUserAndIsDeletedIsFalse(user)).willReturn(projectList); + given(likeRepository.countByProjectInAndIsDeletedIsFalse(projectList)).willReturn(likeCount); given(fieldRepository.findAllByUserId(mockUserId)).willReturn(mock_Fields); List mock_fieldNameList = mock_Fields.stream() .map(Field::getName) From d41e765a92d43738929941d39bc711ec4496eb2b Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Thu, 22 Feb 2024 22:32:08 +0900 Subject: [PATCH 5/5] =?UTF-8?q?refactor=20:=20=EC=A4=91=EB=B3=B5=20?= =?UTF-8?q?=ED=9A=8C=EC=9B=90=20=EA=B0=80=EC=9E=85=20=EB=B6=88=EA=B0=80=20?= =?UTF-8?q?=EC=B2=B4=ED=81=AC=20=EB=A1=9C=EC=A7=81=20=EC=9E=A0=EC=8B=9C=20?= =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=B2=98=EB=A6=AC=20#45?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sendback/domain/user/service/UserService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/sendback/domain/user/service/UserService.java b/src/main/java/com/sendback/domain/user/service/UserService.java index 827aefa..becdda2 100644 --- a/src/main/java/com/sendback/domain/user/service/UserService.java +++ b/src/main/java/com/sendback/domain/user/service/UserService.java @@ -52,9 +52,9 @@ public Token signUpUser(@RequestBody SignUpRequestDto signUpRequestDto) { } jwtProvider.validateSignToken(signUpRequestDto.signToken()); SigningAccount signingAccount = jwtProvider.getSignUserInfo(signUpRequestDto.signToken()); - if(userRepository.findBySocialId(signingAccount.socialId()).isPresent()){ - throw new BadRequestException(PREVIOUS_REGISTERED_USER); - } +// if(userRepository.findBySocialId(signingAccount.socialId()).isPresent()){ +// throw new BadRequestException(PREVIOUS_REGISTERED_USER); +// } User user = User.of(signingAccount, signUpRequestDto); User savedUser = userRepository.save(user); List fieldList = signUpRequestDto.fields().stream()