From 46ab25f314de2d66055cf2bb21d525ed41eb195c Mon Sep 17 00:00:00 2001 From: ChaeRin-Im Date: Tue, 11 Jun 2024 01:47:03 +0900 Subject: [PATCH] =?UTF-8?q?Fix:=20=EC=9A=B4=EB=8F=99=EA=B8=B0=EB=A1=9D=20?= =?UTF-8?q?=EC=83=81=EC=84=B8=EC=A1=B0=ED=9A=8C=EC=8B=9C=20=EB=82=B4?= =?UTF-8?q?=EA=B0=80=20=EC=A2=8B=EC=95=84=EC=9A=94=ED=95=9C=20=EC=97=AC?= =?UTF-8?q?=EB=B6=80=20=ED=95=A8=EA=BB=98=20=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/DietRepositoryCustomImpl.java | 30 ++++++-- .../application/WorkoutHistoryService.java | 9 +-- .../WorkoutHistoryController.java | 5 +- .../WorkoutHistoryRepositoryCustom.java | 3 + .../WorkoutHistoryRepositoryCustomImpl.java | 69 +++++++++++++++---- 5 files changed, 89 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/tobe/healthy/diet/repository/DietRepositoryCustomImpl.java b/src/main/java/com/tobe/healthy/diet/repository/DietRepositoryCustomImpl.java index 20402b70..61fda570 100644 --- a/src/main/java/com/tobe/healthy/diet/repository/DietRepositoryCustomImpl.java +++ b/src/main/java/com/tobe/healthy/diet/repository/DietRepositoryCustomImpl.java @@ -134,19 +134,31 @@ private BooleanExpression isLiked() { } private BooleanExpression dietIdEq(Long dietId) { - return diet.dietId.eq(dietId); + if (!ObjectUtils.isEmpty(dietId)){ + return diet.dietId.eq(dietId); + } + return null; } private BooleanExpression dietTrainerIdEq(Member trainer) { - return diet.trainer.id.eq(trainer.getId()); + if (!ObjectUtils.isEmpty(trainer)){ + return diet.trainer.id.eq(trainer.getId()); + } + return null; } private BooleanExpression dietDeYnEq(boolean bool) { - return diet.delYn.eq(bool); + if (!ObjectUtils.isEmpty(bool)){ + return diet.delYn.eq(bool); + } + return null; } private BooleanExpression dietFileDeYnEq(boolean bool) { - return dietFiles.delYn.eq(bool); + if (!ObjectUtils.isEmpty(bool)){ + return dietFiles.delYn.eq(bool); + } + return null; } private BooleanExpression convertEatDate_YYYY_MM(String searchDate) { @@ -175,11 +187,17 @@ private BooleanExpression convertEatDate_YYYY_MM_DD(String searchDate) { } private BooleanExpression delYnEq(boolean bool) { - return diet.delYn.eq(bool); + if (!ObjectUtils.isEmpty(bool)){ + return diet.delYn.eq(bool); + } + return null; } private BooleanExpression memberIdEq(Long memberId) { - return diet.member.id.eq(memberId); + if (!ObjectUtils.isEmpty(memberId)){ + return diet.member.id.eq(memberId); + } + return null; } } diff --git a/src/main/java/com/tobe/healthy/workout/application/WorkoutHistoryService.java b/src/main/java/com/tobe/healthy/workout/application/WorkoutHistoryService.java index a928befc..35180d7d 100644 --- a/src/main/java/com/tobe/healthy/workout/application/WorkoutHistoryService.java +++ b/src/main/java/com/tobe/healthy/workout/application/WorkoutHistoryService.java @@ -84,14 +84,9 @@ public CustomPaging getWorkoutHistory(Member loginMember, Long memberId, Pageabl return customPaging; } - public WorkoutHistoryDto getWorkoutHistoryDetail(Long workoutHistoryId) { - WorkoutHistory history = workoutHistoryRepository.findByWorkoutHistoryIdAndDelYnFalse(workoutHistoryId) - .orElseThrow(() -> new CustomException(WORKOUT_HISTORY_NOT_FOUND)); + public WorkoutHistoryDto getWorkoutHistoryDetail(Member loginMember, Long workoutHistoryId) { + WorkoutHistoryDto historyDto = workoutHistoryRepository.findByWorkoutHistoryId(loginMember.getId(), workoutHistoryId); List ids = List.of(workoutHistoryId); - - Member member = memberRepository.findByIdAndDelYnFalse(history.getMember().getId()) - .orElseThrow(() -> new CustomException(MEMBER_NOT_FOUND)); - WorkoutHistoryDto historyDto = WorkoutHistoryDto.create(history, member.getMemberProfile()); setHistoryFile(historyDto, ids); setHistoryExercise(historyDto, ids); return historyDto; diff --git a/src/main/java/com/tobe/healthy/workout/presentation/WorkoutHistoryController.java b/src/main/java/com/tobe/healthy/workout/presentation/WorkoutHistoryController.java index c8045cd2..94baa863 100644 --- a/src/main/java/com/tobe/healthy/workout/presentation/WorkoutHistoryController.java +++ b/src/main/java/com/tobe/healthy/workout/presentation/WorkoutHistoryController.java @@ -65,9 +65,10 @@ public ResponseHandler addWorkoutHistory(@AuthenticationPrinc @ApiResponse(responseCode = "200", description = "운동기록 상세정보를 반환한다.") }) @GetMapping("/{workoutHistoryId}") - public ResponseHandler getWorkoutHistoryDetail(@Parameter(description = "운동기록 ID") @PathVariable("workoutHistoryId") Long workoutHistoryId) { + public ResponseHandler getWorkoutHistoryDetail(@AuthenticationPrincipal CustomMemberDetails customMemberDetails, + @Parameter(description = "운동기록 ID") @PathVariable("workoutHistoryId") Long workoutHistoryId) { return ResponseHandler.builder() - .data(workoutService.getWorkoutHistoryDetail(workoutHistoryId)) + .data(workoutService.getWorkoutHistoryDetail(customMemberDetails.getMember(), workoutHistoryId)) .message("운동기록이 조회되었습니다.") .build(); } diff --git a/src/main/java/com/tobe/healthy/workout/repository/workoutHistory/WorkoutHistoryRepositoryCustom.java b/src/main/java/com/tobe/healthy/workout/repository/workoutHistory/WorkoutHistoryRepositoryCustom.java index c30300b1..a525bf24 100644 --- a/src/main/java/com/tobe/healthy/workout/repository/workoutHistory/WorkoutHistoryRepositoryCustom.java +++ b/src/main/java/com/tobe/healthy/workout/repository/workoutHistory/WorkoutHistoryRepositoryCustom.java @@ -7,9 +7,12 @@ import org.springframework.data.repository.query.Param; import java.util.List; +import java.util.Optional; public interface WorkoutHistoryRepositoryCustom { Page getWorkoutHistoryOfMonth(Long loginMemberId, Long memberId, Pageable pageable, String searchDate); Page getWorkoutHistoryByGym(Long loginMemberId, Long gymId, Pageable pageable, String searchDate); List getWorkoutHistoryFile(@Param("ids") List ids); + WorkoutHistoryDto findByWorkoutHistoryId(Long loginMemberId, Long workoutHistoryId); + } diff --git a/src/main/java/com/tobe/healthy/workout/repository/workoutHistory/WorkoutHistoryRepositoryCustomImpl.java b/src/main/java/com/tobe/healthy/workout/repository/workoutHistory/WorkoutHistoryRepositoryCustomImpl.java index 2e62d3ec..c09b65db 100644 --- a/src/main/java/com/tobe/healthy/workout/repository/workoutHistory/WorkoutHistoryRepositoryCustomImpl.java +++ b/src/main/java/com/tobe/healthy/workout/repository/workoutHistory/WorkoutHistoryRepositoryCustomImpl.java @@ -6,6 +6,7 @@ import com.querydsl.core.types.dsl.Expressions; import com.querydsl.core.types.dsl.StringTemplate; import com.querydsl.jpa.impl.JPAQueryFactory; +import com.tobe.healthy.diet.domain.dto.QDietDto; import com.tobe.healthy.member.domain.entity.QMemberProfile; import com.tobe.healthy.workout.domain.dto.out.QWorkoutHistoryDto; import com.tobe.healthy.workout.domain.dto.out.WorkoutHistoryDto; @@ -18,7 +19,10 @@ import org.springframework.util.ObjectUtils; import java.util.List; +import java.util.Optional; +import static com.tobe.healthy.diet.domain.entity.QDiet.diet; +import static com.tobe.healthy.diet.domain.entity.QDietLike.dietLike; import static com.tobe.healthy.member.domain.entity.QMember.member; import static com.tobe.healthy.workout.domain.entity.workoutHistory.QWorkoutHistory.workoutHistory; import static com.tobe.healthy.workout.domain.entity.workoutHistory.QWorkoutHistoryFiles.workoutHistoryFiles; @@ -56,10 +60,6 @@ public Page getWorkoutHistoryOfMonth(Long loginMemberId, Long return PageableExecutionUtils.getPage(workoutHistories, pageable, ()-> totalCnt ); } - private BooleanExpression memberIdEq(Long memberId) { - return workoutHistory.member.id.eq(memberId); - } - @Override public Page getWorkoutHistoryByGym(Long loginMemberId, Long gymId, Pageable pageable, String searchDate) { QMemberProfile profileId = new QMemberProfile("profileId"); @@ -92,10 +92,6 @@ public Page getWorkoutHistoryByGym(Long loginMemberId, Long g return PageableExecutionUtils.getPage(workoutHistories, pageable, ()-> totalCnt ); } - private BooleanExpression gymIdEq(Long gymId) { - return workoutHistory.gym.id.eq(gymId); - } - @Override public List getWorkoutHistoryFile(List ids) { return queryFactory.select(workoutHistoryFiles) @@ -105,8 +101,48 @@ public List getWorkoutHistoryFile(List ids) { .fetch(); } + @Override + public WorkoutHistoryDto findByWorkoutHistoryId(Long loginMemberId, Long workoutHistoryId) { + QMemberProfile profileId = new QMemberProfile("profileId"); + return queryFactory.select(new QWorkoutHistoryDto(workoutHistory.workoutHistoryId, workoutHistory.content, workoutHistory.member + , isLiked() + , workoutHistory.likeCnt, workoutHistory.commentCnt, workoutHistory.viewMySelf, workoutHistory.createdAt, member.memberProfile)) + .from(workoutHistory) + .leftJoin(workoutHistory.member, member) + .leftJoin(member.memberProfile, profileId) + .leftJoin(workoutHistoryLike) + .on(workoutHistory.workoutHistoryId.eq(workoutHistoryLike.workoutHistoryLikePK.workoutHistory.workoutHistoryId) + , workoutHistoryLike.workoutHistoryLikePK.member.id.eq(loginMemberId)) + .where(workoutHistoryIdEq(workoutHistoryId), historyDeYnEq(false)) + .fetchOne(); + } + + private BooleanExpression gymIdEq(Long gymId) { + if (!ObjectUtils.isEmpty(gymId)){ + return workoutHistory.gym.id.eq(gymId); + } + return null; + } + + private BooleanExpression memberIdEq(Long memberId) { + if (!ObjectUtils.isEmpty(memberId)){ + return workoutHistory.member.id.eq(memberId); + } + return null; + } + + private static BooleanExpression workoutHistoryIdEq(Long workoutHistoryId) { + if (!ObjectUtils.isEmpty(workoutHistoryId)){ + return workoutHistory.workoutHistoryId.eq(workoutHistoryId); + } + return null; + } + private BooleanExpression historyIdIn(List ids) { - return workoutHistoryFiles.workoutHistory.workoutHistoryId.in(ids); + if (!ObjectUtils.isEmpty(ids)){ + return workoutHistoryFiles.workoutHistory.workoutHistoryId.in(ids); + } + return null; } private BooleanExpression isLiked() { @@ -117,15 +153,24 @@ private BooleanExpression isLiked() { } private BooleanExpression historyDeYnEq(boolean bool) { - return workoutHistory.delYn.eq(bool); + if(!ObjectUtils.isEmpty(bool)){ + return workoutHistory.delYn.eq(bool); + } + return null; } private BooleanExpression viewMySelfEq(boolean bool) { - return workoutHistory.viewMySelf.eq(bool); + if(!ObjectUtils.isEmpty(bool)){ + return workoutHistory.viewMySelf.eq(bool); + } + return null; } private BooleanExpression historyFileDeYnEq(boolean bool) { - return workoutHistoryFiles.delYn.eq(bool); + if(!ObjectUtils.isEmpty(bool)){ + return workoutHistoryFiles.delYn.eq(bool); + } + return null; } private BooleanExpression convertDateFormat(String searchDate) {