diff --git a/src/main/java/site/dogether/challengegroup/service/ChallengeGroupService.java b/src/main/java/site/dogether/challengegroup/service/ChallengeGroupService.java index 777d5fb..5422282 100644 --- a/src/main/java/site/dogether/challengegroup/service/ChallengeGroupService.java +++ b/src/main/java/site/dogether/challengegroup/service/ChallengeGroupService.java @@ -70,11 +70,11 @@ public void joinChallengeGroup(final String joinCode, final String authenticatio final ChallengeGroupJpaEntity challengeGroupJpaEntity = challengeGroupJpaRepository.findByJoinCode(joinCode) .orElseThrow(() -> new InvalidChallengeGroupException("존재하지 않는 그룹입니다.")); - final ChallengeGroup joinGroup = challengeGroupJpaEntity.toDomain(); + final ChallengeGroup joiningGroup = challengeGroupJpaEntity.toDomain(); - isGroupFinished(joinGroup); + isGroupFinished(joiningGroup); - final int maximumMemberCount = joinGroup.getMaximumMemberCount(); + final int maximumMemberCount = joiningGroup.getMaximumMemberCount(); final int currentMemberCount = challengeGroupMemberJpaRepository.countByChallengeGroup(challengeGroupJpaEntity); if (currentMemberCount >= maximumMemberCount) { throw new InvalidChallengeGroupException("그룹 인원이 가득 찼습니다."); @@ -88,7 +88,7 @@ public void joinChallengeGroup(final String joinCode, final String authenticatio notificationService.sendNotification( joinMember.getId(), "챌린지 그룹에 참여하였습니다.", - "그룹명 : " + joinGroup.getName() + "그룹명 : " + joiningGroup.getName() ); final List groupMembers = @@ -101,7 +101,7 @@ public void joinChallengeGroup(final String joinCode, final String authenticatio notificationService.sendNotification( groupMemberId, "새로운 멤버가 참여했습니다.", - joinMember.getName() + "님이 " + joinGroup.getName() + " 그룹에 새로 합류했습니다." + joinMember.getName() + "님이 " + joiningGroup.getName() + " 그룹에 새로 합류했습니다." ); } } @@ -116,7 +116,7 @@ public JoiningChallengeGroupInfo getJoiningChallengeGroupInfo(final String authe final ChallengeGroup joiningGroup = challengeGroupJpaEntity.toDomain(); isGroupFinished(joiningGroup); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // TODO : 도메인으로 이동 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yy.MM.dd"); // TODO : 도메인으로 이동 LocalDateTime endAt = challengeGroupJpaEntity.getEndAt(); String endAtFormatted = endAt.format(formatter); diff --git a/src/main/java/site/dogether/dailytodo/domain/GroupTodoSummary.java b/src/main/java/site/dogether/dailytodo/domain/GroupTodoSummary.java index 164c610..da0b977 100644 --- a/src/main/java/site/dogether/dailytodo/domain/GroupTodoSummary.java +++ b/src/main/java/site/dogether/dailytodo/domain/GroupTodoSummary.java @@ -15,7 +15,7 @@ public List getRanks() { final List allRanking = myTodoSummaries.stream() .map(myTodoSummary -> new Rank( 0, - myTodoSummary.getMyTodos().get(0).getMember().getName(), + myTodoSummary.getMemberName(), myTodoSummary.calculateCertificationRate() )) .sorted((o1, o2) -> (int) (o2.getCertificationRate() - o1.getCertificationRate())) diff --git a/src/main/java/site/dogether/dailytodo/domain/MyTodoSummary.java b/src/main/java/site/dogether/dailytodo/domain/MyTodoSummary.java index 3def3d5..526f541 100644 --- a/src/main/java/site/dogether/dailytodo/domain/MyTodoSummary.java +++ b/src/main/java/site/dogether/dailytodo/domain/MyTodoSummary.java @@ -7,9 +7,11 @@ public class MyTodoSummary { private final List myTodos; + private final String memberName; - public MyTodoSummary(final List myTodos) { + public MyTodoSummary(final List myTodos, String memberName) { this.myTodos = myTodos; + this.memberName = memberName; } public int calculateTotalTodoCount() { @@ -32,12 +34,18 @@ public int calculateTotalApprovedCount() { public double calculateCertificationRate() { final int totalTodoCount = calculateTotalTodoCount(); + if (totalTodoCount == 0) { + return 0; + } final int totalCertificatedCount = calculateTotalCertificatedCount(); return (double) totalCertificatedCount / totalTodoCount; } public double calculateApprovalRate() { final int totalTodoCount = calculateTotalTodoCount(); + if (totalTodoCount == 0) { + return 0; + } final int totalApprovedCount = calculateTotalApprovedCount(); return (double) totalApprovedCount / totalTodoCount; } diff --git a/src/main/java/site/dogether/dailytodo/service/DailyTodoService.java b/src/main/java/site/dogether/dailytodo/service/DailyTodoService.java index b39394b..3c3d760 100644 --- a/src/main/java/site/dogether/dailytodo/service/DailyTodoService.java +++ b/src/main/java/site/dogether/dailytodo/service/DailyTodoService.java @@ -1,5 +1,11 @@ package site.dogether.dailytodo.service; +import java.time.LocalDate; +import java.time.LocalTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -19,7 +25,11 @@ import site.dogether.dailytodo.infrastructure.repository.DailyTodoJpaRepository; import site.dogether.dailytodo.service.dto.DailyTodoAndDailyTodoCertificationDto; import site.dogether.dailytodo.service.dto.FindMyDailyTodosConditionDto; -import site.dogether.dailytodo.service.exception.*; +import site.dogether.dailytodo.service.exception.DailyTodoCreatedDateException; +import site.dogether.dailytodo.service.exception.DailyTodoNotFoundException; +import site.dogether.dailytodo.service.exception.DailyTodoStatusException; +import site.dogether.dailytodo.service.exception.NotDailyTodoOwnerException; +import site.dogether.dailytodo.service.exception.UnreviewedDailyTodoExistsException; import site.dogether.dailytodocertification.domain.DailyTodoCertification; import site.dogether.dailytodocertification.domain.DailyTodoCertificationMediaUrls; import site.dogether.dailytodocertification.infrastructure.entity.DailyTodoCertificationJpaEntity; @@ -32,13 +42,6 @@ import site.dogether.member.service.MemberService; import site.dogether.notification.service.NotificationService; -import java.time.LocalDate; -import java.time.LocalTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; -import java.util.stream.Collectors; - @Slf4j @RequiredArgsConstructor @Transactional(readOnly = true) @@ -203,7 +206,7 @@ public MyTodoSummary getMyTodoSummary(final MemberJpaEntity memberJpaEntity, fin .map(DailyTodoJpaEntity::toDomain) .toList(); - return new MyTodoSummary(dailyTodos); + return new MyTodoSummary(dailyTodos, memberJpaEntity.getName()); } public List getMyTodoSummaries(final List groupMembers, final ChallengeGroupJpaEntity joiningGroupEntity) { diff --git a/src/test/java/site/dogether/docs/challengegroup/ChallengeGroupControllerDocsTest.java b/src/test/java/site/dogether/docs/challengegroup/ChallengeGroupControllerDocsTest.java index 9b85eb7..71fc365 100644 --- a/src/test/java/site/dogether/docs/challengegroup/ChallengeGroupControllerDocsTest.java +++ b/src/test/java/site/dogether/docs/challengegroup/ChallengeGroupControllerDocsTest.java @@ -124,7 +124,7 @@ void joinChallengeGroup() throws Exception { @Test void getJoiningChallengeGroupInfo() throws Exception { given(challengeGroupService.getJoiningChallengeGroupInfo(any())) - .willReturn(new JoiningChallengeGroupInfo("성욱이와 친구들", 7, "Join Code", "2025-02-25", 5)); + .willReturn(new JoiningChallengeGroupInfo("성욱이와 친구들", 7, "Join Code", "25.02.25", 5)); mockMvc.perform( get("/api/groups/info/current")