From 1adc53ca05ba6de078006b2315a5884711aad3b5 Mon Sep 17 00:00:00 2001 From: fakerdeft Date: Fri, 14 Feb 2025 08:55:17 +0900 Subject: [PATCH 1/7] =?UTF-8?q?[TNT-253]=20refactor:=20nullable=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tnt/dto/trainer/response/ConnectWithTraineeResponse.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/tnt/dto/trainer/response/ConnectWithTraineeResponse.java b/src/main/java/com/tnt/dto/trainer/response/ConnectWithTraineeResponse.java index b7e3705..a9fcf05 100644 --- a/src/main/java/com/tnt/dto/trainer/response/ConnectWithTraineeResponse.java +++ b/src/main/java/com/tnt/dto/trainer/response/ConnectWithTraineeResponse.java @@ -31,10 +31,10 @@ public record ConnectTraineeInfo( @Schema(description = "트레이니 나이", example = "25", nullable = true) Integer traineeAge, - @Schema(description = "트레이니 키", example = "178.6cm", nullable = false) + @Schema(description = "트레이니 키", example = "178.6cm", nullable = true) Double height, - @Schema(description = "트레이니 몸무게", example = "70.2kg", nullable = false) + @Schema(description = "트레이니 몸무게", example = "70.2kg", nullable = true) Double weight, @Schema(description = "PT 목표", example = "체중 감량, 근력 향상, 건강 관리", nullable = false) From ad4cf93525f8fb52ce508655ee4ee37f9a331c6e Mon Sep 17 00:00:00 2001 From: fakerdeft Date: Fri, 14 Feb 2025 08:55:40 +0900 Subject: [PATCH 2/7] =?UTF-8?q?[TNT-253]=20refactor:=20=ED=83=88=ED=87=B4?= =?UTF-8?q?=20=EC=8B=9C=20=EC=8B=9D=EB=8B=A8=20=EB=8D=B0=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=20soft=20delete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tnt/application/member/WithdrawService.java | 14 +++++++++++--- .../com/tnt/application/trainee/DietService.java | 4 ++++ src/main/java/com/tnt/domain/trainee/Diet.java | 4 ++++ .../mysql/repository/trainee/DietRepository.java | 3 +++ .../application/member/WithdrawServiceTest.java | 12 ++++++++++++ 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/tnt/application/member/WithdrawService.java b/src/main/java/com/tnt/application/member/WithdrawService.java index c911137..5c96dbb 100644 --- a/src/main/java/com/tnt/application/member/WithdrawService.java +++ b/src/main/java/com/tnt/application/member/WithdrawService.java @@ -1,19 +1,23 @@ package com.tnt.application.member; +import static com.tnt.domain.member.MemberType.TRAINEE; +import static com.tnt.domain.member.MemberType.TRAINER; + import java.util.List; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.tnt.application.pt.PtService; +import com.tnt.application.trainee.DietService; import com.tnt.application.trainee.PtGoalService; import com.tnt.application.trainee.TraineeService; import com.tnt.application.trainer.TrainerService; import com.tnt.common.error.exception.NotFoundException; import com.tnt.domain.member.Member; -import com.tnt.domain.member.MemberType; import com.tnt.domain.pt.PtLesson; import com.tnt.domain.pt.PtTrainerTrainee; +import com.tnt.domain.trainee.Diet; import com.tnt.domain.trainee.PtGoal; import com.tnt.domain.trainee.Trainee; import com.tnt.domain.trainer.Trainer; @@ -31,6 +35,7 @@ public class WithdrawService { private final TrainerService trainerService; private final TraineeService traineeService; private final PtGoalService ptGoalService; + private final DietService dietService; private final PtService ptService; @Transactional @@ -45,7 +50,7 @@ public WithdrawDto withdraw(Long memberId) { } private void deleteMemberData(Member member) { - if (member.getMemberType() == MemberType.TRAINER) { + if (member.getMemberType() == TRAINER) { Trainer trainer = trainerService.getTrainerWithMemberId(member.getId()); if (ptService.isPtTrainerTraineeExistWithTrainerId(trainer.getId())) { @@ -65,9 +70,10 @@ private void deleteMemberData(Member member) { } trainer.softDelete(); - } else if (member.getMemberType() == MemberType.TRAINEE) { + } else if (member.getMemberType() == TRAINEE) { Trainee trainee = traineeService.getTraineeWithMemberId(member.getId()); List ptGoals = ptGoalService.getAllPtGoalsWithTraineeId(trainee.getId()); + List diets = dietService.getAllDietsWithTraineeId(trainee.getId()); if (ptService.isPtTrainerTraineeExistWithTraineeId(trainee.getId())) { try { @@ -83,6 +89,8 @@ private void deleteMemberData(Member member) { ptGoals.forEach(PtGoal::softDelete); + diets.forEach(Diet::softDelete); + trainee.softDelete(); } diff --git a/src/main/java/com/tnt/application/trainee/DietService.java b/src/main/java/com/tnt/application/trainee/DietService.java index 42aeefa..93ac9f3 100644 --- a/src/main/java/com/tnt/application/trainee/DietService.java +++ b/src/main/java/com/tnt/application/trainee/DietService.java @@ -32,6 +32,10 @@ public Diet getDietWithTraineeIdAndDietId(Long dietId, Long traineeId) { .orElseThrow(() -> new NotFoundException(DIET_NOT_FOUND)); } + public List getAllDietsWithTraineeId(Long traineeId) { + return dietRepository.findAllByTraineeIdAndDeletedAtIsNull(traineeId); + } + public List getDietsWithTraineeIdForDaily(Long traineeId, LocalDate date) { return dietSearchRepository.findAllByTraineeIdForDaily(traineeId, date); } diff --git a/src/main/java/com/tnt/domain/trainee/Diet.java b/src/main/java/com/tnt/domain/trainee/Diet.java index 8426b75..4ed1e03 100644 --- a/src/main/java/com/tnt/domain/trainee/Diet.java +++ b/src/main/java/com/tnt/domain/trainee/Diet.java @@ -80,4 +80,8 @@ private String validateMemo(String memo) { return memo; } + + public void softDelete() { + this.deletedAt = LocalDateTime.now(); + } } diff --git a/src/main/java/com/tnt/infrastructure/mysql/repository/trainee/DietRepository.java b/src/main/java/com/tnt/infrastructure/mysql/repository/trainee/DietRepository.java index 26b26e9..87e2e11 100644 --- a/src/main/java/com/tnt/infrastructure/mysql/repository/trainee/DietRepository.java +++ b/src/main/java/com/tnt/infrastructure/mysql/repository/trainee/DietRepository.java @@ -1,5 +1,6 @@ package com.tnt.infrastructure.mysql.repository.trainee; +import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; @@ -9,4 +10,6 @@ public interface DietRepository extends JpaRepository { Optional findByIdAndTraineeIdAndDeletedAtIsNull(Long id, Long traineeId); + + List findAllByTraineeIdAndDeletedAtIsNull(Long traineeId); } diff --git a/src/test/java/com/tnt/application/member/WithdrawServiceTest.java b/src/test/java/com/tnt/application/member/WithdrawServiceTest.java index 0432efc..8bf4534 100644 --- a/src/test/java/com/tnt/application/member/WithdrawServiceTest.java +++ b/src/test/java/com/tnt/application/member/WithdrawServiceTest.java @@ -13,6 +13,7 @@ import org.mockito.junit.jupiter.MockitoExtension; import com.tnt.application.pt.PtService; +import com.tnt.application.trainee.DietService; import com.tnt.application.trainee.PtGoalService; import com.tnt.application.trainee.TraineeService; import com.tnt.application.trainer.TrainerService; @@ -20,9 +21,11 @@ import com.tnt.domain.member.Member; import com.tnt.domain.pt.PtLesson; import com.tnt.domain.pt.PtTrainerTrainee; +import com.tnt.domain.trainee.Diet; import com.tnt.domain.trainee.PtGoal; import com.tnt.domain.trainee.Trainee; import com.tnt.domain.trainer.Trainer; +import com.tnt.fixture.DietFixture; import com.tnt.fixture.MemberFixture; import com.tnt.fixture.PtLessonsFixture; import com.tnt.fixture.PtTrainerTraineeFixture; @@ -48,6 +51,9 @@ class WithdrawServiceTest { @Mock private PtGoalService ptGoalService; + @Mock + private DietService dietService; + @Mock private PtService ptService; @@ -79,10 +85,12 @@ void withdraw_trainee_success() { Trainee trainee = TraineeFixture.getTrainee1WithId(1L, traineeMember); List ptGoals = List.of(PtGoal.builder().id(1L).traineeId(trainee.getId()).content("test").build()); + List diets = List.of(DietFixture.getDiet1(trainee.getId()), DietFixture.getDiet2(trainee.getId())); given(memberService.getMemberWithMemberId(traineeMember.getId())).willReturn(traineeMember); given(traineeService.getTraineeWithMemberId(traineeMember.getId())).willReturn(trainee); given(ptGoalService.getAllPtGoalsWithTraineeId(trainee.getId())).willReturn(ptGoals); + given(dietService.getAllDietsWithTraineeId(trainee.getId())).willReturn(diets); // when withdrawService.withdraw(traineeMember.getId()); @@ -131,6 +139,7 @@ void withdraw_trainee_with_pt_success() { PtTrainerTrainee ptTrainerTrainee = PtTrainerTraineeFixture.getPtTrainerTrainee1(trainer, trainee); List ptGoals = List.of(PtGoal.builder().id(1L).traineeId(trainee.getId()).content("test").build()); + List diets = List.of(DietFixture.getDiet1(trainee.getId()), DietFixture.getDiet2(trainee.getId())); List ptLessons = PtLessonsFixture.getPtLessons1WithId(ptTrainerTrainee); @@ -138,6 +147,7 @@ void withdraw_trainee_with_pt_success() { given(traineeService.getTraineeWithMemberId(traineeMember.getId())).willReturn(trainee); given(ptService.isPtTrainerTraineeExistWithTraineeId(trainee.getId())).willReturn(true); given(ptGoalService.getAllPtGoalsWithTraineeId(trainee.getId())).willReturn(ptGoals); + given(dietService.getAllDietsWithTraineeId(trainee.getId())).willReturn(diets); given(ptService.getPtTrainerTraineeWithTraineeId(trainee.getId())).willReturn(ptTrainerTrainee); given(ptService.getPtLessonWithPtTrainerTrainee(ptTrainerTrainee)).willReturn(ptLessons); @@ -176,11 +186,13 @@ void withdraw_trainee_without_pt_success() { Trainee trainee = TraineeFixture.getTrainee1WithId(1L, traineeMember); List ptGoals = List.of(PtGoal.builder().id(1L).traineeId(trainee.getId()).content("test").build()); + List diets = List.of(DietFixture.getDiet1(trainee.getId()), DietFixture.getDiet2(trainee.getId())); given(memberService.getMemberWithMemberId(traineeMember.getId())).willReturn(traineeMember); given(traineeService.getTraineeWithMemberId(traineeMember.getId())).willReturn(trainee); given(ptService.isPtTrainerTraineeExistWithTraineeId(trainee.getId())).willReturn(true); given(ptGoalService.getAllPtGoalsWithTraineeId(trainee.getId())).willReturn(ptGoals); + given(dietService.getAllDietsWithTraineeId(trainee.getId())).willReturn(diets); given(ptService.getPtTrainerTraineeWithTraineeId(trainee.getId())).willThrow(NotFoundException.class); // when From 61a325cbd45c08e6e1d25d7bfe2a49b1b6104d35 Mon Sep 17 00:00:00 2001 From: fakerdeft Date: Fri, 14 Feb 2025 09:17:51 +0900 Subject: [PATCH 3/7] =?UTF-8?q?[TNT-253]=20refactor:=20ptInfo=20null=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tnt/application/pt/PtService.java | 17 ++++- .../com/tnt/fixture/PtLessonsFixture.java | 4 +- .../trainee/TraineeControllerTest.java | 63 +++++++++++++++++++ 3 files changed, 80 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/tnt/application/pt/PtService.java b/src/main/java/com/tnt/application/pt/PtService.java index 6e066d6..1d74070 100644 --- a/src/main/java/com/tnt/application/pt/PtService.java +++ b/src/main/java/com/tnt/application/pt/PtService.java @@ -277,8 +277,7 @@ public GetTraineeDailyRecordsResponse getDailyRecords(Long memberId, LocalDate d date).orElse(new TraineeProjection.PtInfoDto(null, null, null, null, null)); // PT 정보 Mapping to PtInfo - GetTraineeDailyRecordsResponse.PtInfo ptInfo = new GetTraineeDailyRecordsResponse.PtInfo(ptResult.trainerName(), - ptResult.trainerProfileImage(), ptResult.session(), ptResult.lessonStart(), ptResult.lessonEnd()); + GetTraineeDailyRecordsResponse.PtInfo ptInfo = toPtInfo(ptResult); // 식단 정보 조회 List diets = dietService.getDietsWithTraineeIdForDaily(trainee.getId(), date); @@ -377,4 +376,18 @@ private int validateAndGetNextSession(PtTrainerTrainee ptTrainerTrainee, LocalDa return ptTrainerTrainee.getFinishedPtCount() + 1 + temp; } + + private GetTraineeDailyRecordsResponse.PtInfo toPtInfo(TraineeProjection.PtInfoDto dto) { + if (isAllFieldsNull(dto)) { + return null; + } + + return new GetTraineeDailyRecordsResponse.PtInfo(dto.trainerName(), dto.trainerProfileImage(), dto.session(), + dto.lessonStart(), dto.lessonEnd()); + } + + private boolean isAllFieldsNull(TraineeProjection.PtInfoDto dto) { + return dto.trainerName() == null && dto.trainerProfileImage() == null && dto.session() == null + && dto.lessonStart() == null && dto.lessonEnd() == null; + } } diff --git a/src/test/java/com/tnt/fixture/PtLessonsFixture.java b/src/test/java/com/tnt/fixture/PtLessonsFixture.java index 54d522a..bf76a86 100644 --- a/src/test/java/com/tnt/fixture/PtLessonsFixture.java +++ b/src/test/java/com/tnt/fixture/PtLessonsFixture.java @@ -36,8 +36,8 @@ public static List getPtLessons1(PtTrainerTrainee ptTrainerTrainee) { LocalDateTime startDate1 = LocalDateTime.parse("2025-02-01T11:30"); LocalDateTime endDate1 = LocalDateTime.parse("2025-02-01T13:00"); - LocalDateTime startDate2 = LocalDateTime.parse("2025-02-02T11:30"); - LocalDateTime endDate2 = LocalDateTime.parse("2025-02-02T13:00"); + LocalDateTime startDate2 = LocalDateTime.parse("2025-02-05T11:30"); + LocalDateTime endDate2 = LocalDateTime.parse("2025-02-05T13:00"); return List.of(PtLesson.builder() .ptTrainerTrainee(ptTrainerTrainee) diff --git a/src/test/java/com/tnt/presentation/trainee/TraineeControllerTest.java b/src/test/java/com/tnt/presentation/trainee/TraineeControllerTest.java index 02a0128..f009409 100644 --- a/src/test/java/com/tnt/presentation/trainee/TraineeControllerTest.java +++ b/src/test/java/com/tnt/presentation/trainee/TraineeControllerTest.java @@ -444,4 +444,67 @@ void get_calendar_daily_records_success() throws Exception { .andExpect(jsonPath("$.diets[1].dietType").value(diet2.getDietType().toString())) .andDo(print()); } + + @Test + @DisplayName("통합 테스트 - 트레이니 PT 수업 없는 날 특정 날짜 기록 조회 성공") + void get_calendar_daily_records_without_pt_info_success() throws Exception { + // given + Member trainerMember = MemberFixture.getTrainerMember1(); + Member traineeMember = MemberFixture.getTraineeMember2(); + + trainerMember = memberRepository.save(trainerMember); + traineeMember = memberRepository.save(traineeMember); + + CustomUserDetails traineeUserDetails = new CustomUserDetails(traineeMember.getId(), + traineeMember.getId().toString(), + authoritiesMapper.mapAuthorities(List.of(new SimpleGrantedAuthority("ROLE_USER")))); + + Authentication authentication = new UsernamePasswordAuthenticationToken(traineeUserDetails, null, + authoritiesMapper.mapAuthorities(traineeUserDetails.getAuthorities())); + + SecurityContextHolder.getContext().setAuthentication(authentication); + + Trainer trainer = TrainerFixture.getTrainer2(trainerMember); + Trainee trainee = TraineeFixture.getTrainee1(traineeMember); + + trainerRepository.save(trainer); + traineeRepository.save(trainee); + + PtTrainerTrainee ptTrainerTrainee = PtTrainerTraineeFixture.getPtTrainerTrainee1(trainer, trainee); + + ptTrainerTraineeRepository.save(ptTrainerTrainee); + + PtLesson ptLesson = PtLessonsFixture.getPtLessons1(ptTrainerTrainee).getFirst(); + + ptLessonRepository.save(ptLesson); + + Diet diet3 = DietFixture.getDiet3(trainee.getId()); + Diet diet4 = DietFixture.getDiet4(trainee.getId()); + + List diets = List.of(diet3, diet4); + + dietRepository.saveAll(diets); + + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"); + LocalDate targetDate = diet3.getDate().toLocalDate(); + + // when & then + mockMvc.perform(get("/trainees/calendar/{date}", targetDate)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.date").value(targetDate.format(dateFormatter))) + .andExpect(jsonPath("$.ptInfo").doesNotExist()) + .andExpect(jsonPath("$.diets").isArray()) + .andExpect(jsonPath("$.diets[0].dietId").value(diet3.getId())) + .andExpect(jsonPath("$.diets[0].date").value(diet3.getDate().format(dateTimeFormatter))) + .andExpect(jsonPath("$.diets[0].dietImageUrl").value(diet3.getDietImageUrl())) + .andExpect(jsonPath("$.diets[0].memo").value(diet3.getMemo())) + .andExpect(jsonPath("$.diets[0].dietType").value(diet3.getDietType().toString())) + .andExpect(jsonPath("$.diets[1].dietId").value(diet4.getId())) + .andExpect(jsonPath("$.diets[1].date").value(diet4.getDate().format(dateTimeFormatter))) + .andExpect(jsonPath("$.diets[1].dietImageUrl").value(diet4.getDietImageUrl())) + .andExpect(jsonPath("$.diets[1].memo").value(diet4.getMemo())) + .andExpect(jsonPath("$.diets[1].dietType").value(diet4.getDietType().toString())) + .andDo(print()); + } } From 8ee22f456a8ccd343b4dc78ee056640843279ad7 Mon Sep 17 00:00:00 2001 From: fakerdeft Date: Fri, 14 Feb 2025 09:39:03 +0900 Subject: [PATCH 4/7] =?UTF-8?q?[TNT-253]=20fix:=20=EA=B2=80=EC=A6=9D=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 --- src/main/java/com/tnt/application/pt/PtService.java | 7 +------ .../tnt/presentation/trainee/TraineeControllerTest.java | 1 + 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/tnt/application/pt/PtService.java b/src/main/java/com/tnt/application/pt/PtService.java index 1d74070..b7d3ee8 100644 --- a/src/main/java/com/tnt/application/pt/PtService.java +++ b/src/main/java/com/tnt/application/pt/PtService.java @@ -378,16 +378,11 @@ private int validateAndGetNextSession(PtTrainerTrainee ptTrainerTrainee, LocalDa } private GetTraineeDailyRecordsResponse.PtInfo toPtInfo(TraineeProjection.PtInfoDto dto) { - if (isAllFieldsNull(dto)) { + if (dto.session() == null) { return null; } return new GetTraineeDailyRecordsResponse.PtInfo(dto.trainerName(), dto.trainerProfileImage(), dto.session(), dto.lessonStart(), dto.lessonEnd()); } - - private boolean isAllFieldsNull(TraineeProjection.PtInfoDto dto) { - return dto.trainerName() == null && dto.trainerProfileImage() == null && dto.session() == null - && dto.lessonStart() == null && dto.lessonEnd() == null; - } } diff --git a/src/test/java/com/tnt/presentation/trainee/TraineeControllerTest.java b/src/test/java/com/tnt/presentation/trainee/TraineeControllerTest.java index f009409..9b933df 100644 --- a/src/test/java/com/tnt/presentation/trainee/TraineeControllerTest.java +++ b/src/test/java/com/tnt/presentation/trainee/TraineeControllerTest.java @@ -428,6 +428,7 @@ void get_calendar_daily_records_success() throws Exception { .andExpect(status().isOk()) .andExpect(jsonPath("$.date").value(targetDate.format(dateFormatter))) .andExpect(jsonPath("$.ptInfo.trainerName").value(trainer.getMember().getName())) + .andExpect(jsonPath("$.ptInfo.trainerProfileImage").value(trainer.getMember().getProfileImageUrl())) .andExpect(jsonPath("$.ptInfo.session").value(ptLesson.getSession())) .andExpect(jsonPath("$.ptInfo.lessonStart").value(ptLesson.getLessonStart().format(dateTimeFormatter))) .andExpect(jsonPath("$.ptInfo.lessonEnd").value(ptLesson.getLessonEnd().format(dateTimeFormatter))) From c9ba0e7afa3b8be72c1543d5784effc6ac819311 Mon Sep 17 00:00:00 2001 From: fakerdeft Date: Fri, 14 Feb 2025 09:50:12 +0900 Subject: [PATCH 5/7] =?UTF-8?q?[TNT-253]=20fix:=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20try-catch=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/member/WithdrawService.java | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/tnt/application/member/WithdrawService.java b/src/main/java/com/tnt/application/member/WithdrawService.java index 5c96dbb..44d9925 100644 --- a/src/main/java/com/tnt/application/member/WithdrawService.java +++ b/src/main/java/com/tnt/application/member/WithdrawService.java @@ -54,19 +54,15 @@ private void deleteMemberData(Member member) { Trainer trainer = trainerService.getTrainerWithMemberId(member.getId()); if (ptService.isPtTrainerTraineeExistWithTrainerId(trainer.getId())) { - try { - List ptTrainerTrainee = ptService.getAllPtTrainerTraineeWithTrainerId( - trainer.getId()); + List ptTrainerTrainee = ptService.getAllPtTrainerTraineeWithTrainerId( + trainer.getId()); - List ptLessons = ptTrainerTrainee.stream().map(ptService::getPtLessonWithPtTrainerTrainee) - .flatMap(List::stream) - .toList(); + List ptLessons = ptTrainerTrainee.stream().map(ptService::getPtLessonWithPtTrainerTrainee) + .flatMap(List::stream) + .toList(); - ptLessons.forEach(PtLesson::softDelete); - ptTrainerTrainee.forEach(PtTrainerTrainee::softDelete); - } catch (NotFoundException e) { - // Do nothing - } + ptLessons.forEach(PtLesson::softDelete); + ptTrainerTrainee.forEach(PtTrainerTrainee::softDelete); } trainer.softDelete(); From d8f967fd7750dffde1a333abb7e7c8501df83a91 Mon Sep 17 00:00:00 2001 From: fakerdeft Date: Fri, 14 Feb 2025 09:56:22 +0900 Subject: [PATCH 6/7] =?UTF-8?q?[TNT-253]=20fix:=20else=20if=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/tnt/application/member/WithdrawService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/tnt/application/member/WithdrawService.java b/src/main/java/com/tnt/application/member/WithdrawService.java index 44d9925..e719e06 100644 --- a/src/main/java/com/tnt/application/member/WithdrawService.java +++ b/src/main/java/com/tnt/application/member/WithdrawService.java @@ -66,7 +66,9 @@ private void deleteMemberData(Member member) { } trainer.softDelete(); - } else if (member.getMemberType() == TRAINEE) { + } + + if (member.getMemberType() == TRAINEE) { Trainee trainee = traineeService.getTraineeWithMemberId(member.getId()); List ptGoals = ptGoalService.getAllPtGoalsWithTraineeId(trainee.getId()); List diets = dietService.getAllDietsWithTraineeId(trainee.getId()); From 0ce0b89f32c23ae2ac452e362dbd5974e3364cef Mon Sep 17 00:00:00 2001 From: fakerdeft Date: Fri, 14 Feb 2025 20:48:17 +0900 Subject: [PATCH 7/7] =?UTF-8?q?[TNT-253]=20refactor:=20=EC=82=BC=ED=95=AD?= =?UTF-8?q?=20=EC=97=B0=EC=82=B0=EC=9E=90=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/tnt/application/pt/PtService.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/tnt/application/pt/PtService.java b/src/main/java/com/tnt/application/pt/PtService.java index b7d3ee8..26fc805 100644 --- a/src/main/java/com/tnt/application/pt/PtService.java +++ b/src/main/java/com/tnt/application/pt/PtService.java @@ -277,7 +277,11 @@ public GetTraineeDailyRecordsResponse getDailyRecords(Long memberId, LocalDate d date).orElse(new TraineeProjection.PtInfoDto(null, null, null, null, null)); // PT 정보 Mapping to PtInfo - GetTraineeDailyRecordsResponse.PtInfo ptInfo = toPtInfo(ptResult); + GetTraineeDailyRecordsResponse.PtInfo ptInfo = + (ptResult.trainerName() == null && ptResult.trainerProfileImage() == null && ptResult.session() == null + && ptResult.lessonStart() == null && ptResult.lessonEnd() == null) ? null : + new GetTraineeDailyRecordsResponse.PtInfo(ptResult.trainerName(), ptResult.trainerProfileImage(), + ptResult.session(), ptResult.lessonStart(), ptResult.lessonEnd()); // 식단 정보 조회 List diets = dietService.getDietsWithTraineeIdForDaily(trainee.getId(), date); @@ -376,13 +380,4 @@ private int validateAndGetNextSession(PtTrainerTrainee ptTrainerTrainee, LocalDa return ptTrainerTrainee.getFinishedPtCount() + 1 + temp; } - - private GetTraineeDailyRecordsResponse.PtInfo toPtInfo(TraineeProjection.PtInfoDto dto) { - if (dto.session() == null) { - return null; - } - - return new GetTraineeDailyRecordsResponse.PtInfo(dto.trainerName(), dto.trainerProfileImage(), dto.session(), - dto.lessonStart(), dto.lessonEnd()); - } }