Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BE] 그룹 기능 변경 사항 반영 #52

Merged
merged 4 commits into from
Feb 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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("그룹 인원이 가득 찼습니다.");
Expand All @@ -88,7 +88,7 @@ public void joinChallengeGroup(final String joinCode, final String authenticatio
notificationService.sendNotification(
joinMember.getId(),
"챌린지 그룹에 참여하였습니다.",
"그룹명 : " + joinGroup.getName()
"그룹명 : " + joiningGroup.getName()
);

final List<ChallengeGroupMemberJpaEntity> groupMembers =
Expand All @@ -101,7 +101,7 @@ public void joinChallengeGroup(final String joinCode, final String authenticatio
notificationService.sendNotification(
groupMemberId,
"새로운 멤버가 참여했습니다.",
joinMember.getName() + "님이 " + joinGroup.getName() + " 그룹에 새로 합류했습니다."
joinMember.getName() + "님이 " + joiningGroup.getName() + " 그룹에 새로 합류했습니다."
);
}
}
Expand All @@ -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);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public List<Rank> getRanks() {
final List<Rank> 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()))
Expand Down
10 changes: 9 additions & 1 deletion src/main/java/site/dogether/dailytodo/domain/MyTodoSummary.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@
public class MyTodoSummary {

private final List<DailyTodo> myTodos;
private final String memberName;

public MyTodoSummary(final List<DailyTodo> myTodos) {
public MyTodoSummary(final List<DailyTodo> myTodos, String memberName) {
this.myTodos = myTodos;
this.memberName = memberName;
}

public int calculateTotalTodoCount() {
Expand All @@ -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;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;
Expand All @@ -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)
Expand Down Expand Up @@ -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<MyTodoSummary> getMyTodoSummaries(final List<MemberJpaEntity> groupMembers, final ChallengeGroupJpaEntity joiningGroupEntity) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down