From 9d604217be6a42fd32c2171f2ba5efdad76bec9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=AF=E1=86=AB=E1=84=8C=E1=85=A1=E1=86=BC?= =?UTF-8?q?=E1=84=89=E1=85=AE=E1=86=AB?= Date: Sun, 22 Sep 2024 23:06:50 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[=F0=9F=94=A8fix/#141]:=20SignUpService=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=20?= =?UTF-8?q?AuthService=EC=97=90=20=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=ED=86=B5=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 회원가입 실패 시 상태 코드를 401에서 400으로 변경 - 이미 존재하는 유저일 경우 상태 코드를 401에서 409로 변경 - 잘못된 리프레시 토큰 사용 시 예외 처리를 INVALID_USER에서 FAILED_TOKEN_REISSUE로 수정 --- .../terning/terningserver/exception/enums/ErrorMessage.java | 4 ++-- .../org/terning/terningserver/service/AuthServiceImpl.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/terning/terningserver/exception/enums/ErrorMessage.java b/src/main/java/org/terning/terningserver/exception/enums/ErrorMessage.java index 6be29ea..640a13b 100644 --- a/src/main/java/org/terning/terningserver/exception/enums/ErrorMessage.java +++ b/src/main/java/org/terning/terningserver/exception/enums/ErrorMessage.java @@ -16,8 +16,8 @@ public enum ErrorMessage { UNAUTHORIZED_JWT_EXCEPTION(401, "유효하지 않은 토큰입니다"), // 회원가입 - FAILED_SIGN_UP(401, "회원가입에 실패하였습니다"), - EXISTS_USER_ALREADY(401, "이미 존재하는 유저입니다"), + FAILED_SIGN_UP(400, "회원가입에 실패하였습니다"), + EXISTS_USER_ALREADY(409, "이미 존재하는 유저입니다"), // 사용자 필터링 정보 생성 FAILED_SIGN_UP_USER_FILTER_CREATION(404, "사용자 필터 생성에 실패하였습니다"), diff --git a/src/main/java/org/terning/terningserver/service/AuthServiceImpl.java b/src/main/java/org/terning/terningserver/service/AuthServiceImpl.java index d9595ff..b3b8a39 100644 --- a/src/main/java/org/terning/terningserver/service/AuthServiceImpl.java +++ b/src/main/java/org/terning/terningserver/service/AuthServiceImpl.java @@ -190,7 +190,7 @@ private User findUserById(long id) { private User findUserByRefreshToken(String refreshToken) { return userRepository.findByRefreshToken(getTokenFromBearerString(refreshToken)) - .orElseThrow(() -> new CustomException(INVALID_USER)); + .orElseThrow(() -> new CustomException(FAILED_TOKEN_REISSUE)); } From f7633439de815fb9f9ddcb691aef9da8043e9264 Mon Sep 17 00:00:00 2001 From: Willy Date: Mon, 23 Sep 2024 22:44:43 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[=F0=9F=94=A5!hotfix]=20=ED=99=88=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20>=20=EB=82=98=EC=97=90=EA=B2=8C=20=EB=94=B1=20?= =?UTF-8?q?=EB=A7=9E=EB=8A=94=20=EA=B3=B5=EA=B3=A0=20:=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=ED=98=95=EC=8B=9D=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terningserver/dto/user/response/HomeResponseDto.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/terning/terningserver/dto/user/response/HomeResponseDto.java b/src/main/java/org/terning/terningserver/dto/user/response/HomeResponseDto.java index 35e2235..378bb41 100644 --- a/src/main/java/org/terning/terningserver/dto/user/response/HomeResponseDto.java +++ b/src/main/java/org/terning/terningserver/dto/user/response/HomeResponseDto.java @@ -6,7 +6,7 @@ @Builder public record HomeResponseDto( - Long intershipAnnouncementId, + Long internshipAnnouncementId, String companyImage, String dDay, String title, @@ -22,7 +22,7 @@ public static HomeResponseDto of(final InternshipAnnouncement internshipAnnounce String deadline = DateUtil.convertDeadline(internshipAnnouncement.getDeadline()); return HomeResponseDto.builder() - .intershipAnnouncementId(internshipAnnouncement.getId()) + .internshipAnnouncementId(internshipAnnouncement.getId()) .companyImage(internshipAnnouncement.getCompany().getCompanyImage()) .dDay(dDay) .title(internshipAnnouncement.getTitle()) From 6621b035b28987f53e39f1453240fdf143b53c67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EC=9C=A4?= <63058347+JungYoonShin@users.noreply.github.com> Date: Tue, 24 Sep 2024 13:49:18 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[=F0=9F=94=A8fix/#140]:=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=20=EC=BF=BC=EB=A6=AC=20=EC=8B=9C=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=EC=A4=91=EB=B3=B5=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - OneToMany시에 fetchJoin()을 사용함으로써 발생하는 데이터 중복 문제를 해결하였습니다. --- .../InternshipRepositoryImpl.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java b/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java index bbcb248..d6ea2e6 100644 --- a/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java +++ b/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java @@ -4,11 +4,13 @@ import com.querydsl.core.types.dsl.BooleanExpression; import com.querydsl.core.types.dsl.Expressions; import com.querydsl.core.types.dsl.NumberTemplate; +import com.querydsl.jpa.impl.JPAQuery; import com.querydsl.jpa.impl.JPAQueryFactory; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; +import org.springframework.data.support.PageableExecutionUtils; import org.terning.terningserver.domain.InternshipAnnouncement; import org.terning.terningserver.domain.enums.Grade; import org.terning.terningserver.domain.enums.WorkingPeriod; @@ -63,24 +65,19 @@ public Page searchInternshipAnnouncement(String keyword, List internshipAnnouncements = jpaQueryFactory .selectFrom(internshipAnnouncement) - .leftJoin(internshipAnnouncement.scraps).fetchJoin() + .leftJoin(internshipAnnouncement.scraps) .where(contentLike(keyword)) .orderBy(sortAnnouncementsByDeadline().asc(), createOrderSpecifier(sortBy)) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch(); - Long count = jpaQueryFactory + JPAQuery count = jpaQueryFactory .select(internshipAnnouncement.count()) .from(internshipAnnouncement) - .leftJoin(internshipAnnouncement.scraps) - .where(contentLike(keyword)) - .fetchOne(); - - // 인턴공고가 없을 경우, 즉 count가 null일 경우 0L을 기본값으로 설정 - long announcementCount = (count != null) ? count : 0L; + .where(contentLike(keyword)); - return new PageImpl<>(internshipAnnouncements, pageable, announcementCount); + return PageableExecutionUtils.getPage(internshipAnnouncements, pageable, count::fetchOne); } private BooleanExpression contentLike(String keyword) { From 65a52da05ae732659cd6475494f6553a7dc5e945 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EC=9C=A4?= <63058347+JungYoonShin@users.noreply.github.com> Date: Tue, 24 Sep 2024 13:50:45 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[=E2=99=BB=EF=B8=8F=20refactor/#140]:=20?= =?UTF-8?q?=EA=B2=80=EC=83=89=20count=20=EC=BF=BC=EB=A6=AC=20=EC=84=B1?= =?UTF-8?q?=EB=8A=A5=20=EC=B5=9C=EC=A0=81=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 기존 PageIml 사용하던 것에서 PageableExecutionUtils.getPage()를 사용함으로써 성능 최적화를 하였습니다. --- .../internship_announcement/InternshipRepositoryImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java b/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java index d6ea2e6..691dbac 100644 --- a/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java +++ b/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java @@ -84,7 +84,6 @@ private BooleanExpression contentLike(String keyword) { return internshipAnnouncement.title.contains(keyword); } - //정렬 조건(5가지, 채용 마감 이른 순, 짧은 근무 기간 순, 긴 근무 기간 순, private OrderSpecifier createOrderSpecifier(String sortBy) { return switch (sortBy) {