Skip to content

Commit

Permalink
Merge pull request #360 from 6QuizOnTheBlock/be/feat/#359-isolation_rank
Browse files Browse the repository at this point in the history
Be/feat/#359 isolation rank
  • Loading branch information
HABINOH authored May 18, 2024
2 parents ca3f803 + 0f9c8fb commit 81e3282
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ public record MemberDetailResponse(
String name,
@Schema(description = "멀버 ν”„λ‘œν•„ 사진")
String photo,
@Schema(description = "멀버 인싸λ ₯")
@Schema(description = "멀버 인싸λ ₯ 점수")
double isolationPoint,
@Schema(description = "멀버 인싸λ ₯ λ“±μˆ˜")
int isolationRank,
@Schema(description = "멀버 포인트")
int exp,
@Schema(description = "ν•¨κ»˜λ‹¬λ¦¬κΈ° μ°Έμ—¬ 횟수")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ public class MemberOrganization {
@ManyToOne(fetch = FetchType.LAZY)
Member member;
double isolationPoint;
int isolationRank;
int exp;
int challengeCount;
int relayCount;
Expand All @@ -48,4 +49,8 @@ public void updateRelayCount() {
public void updateIsolationPoint(double isolationPoint) {
this.isolationPoint = isolationPoint;
}

public void updateIsolationRank(int isolationRank) {
this.isolationRank = isolationRank;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ public MemberDetailResponse getMemberDetail(long id, long memberId) {
.name(member.getName())
.photo(member.getProfileImage())
.isolationPoint(memberOrganization.getIsolationPoint())
.isolationRank(memberOrganization.getIsolationRank())
.exp(memberOrganization.getExp())
.challengeCount(challengeCount)
.relayCount(relayCount)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -62,7 +63,7 @@ protected void relationShipScore() {
}

@Transactional
@Scheduled(cron = "0 30 3 * * *")
@Scheduled(cron = "0 15 3 * * *")
protected void isolationScore() {
List<Organization> organizations = organizationRepository.findAll();

Expand Down Expand Up @@ -109,6 +110,40 @@ protected void isolationScore() {
}
}

@Transactional
@Scheduled(cron = "0 30 3 * * *")
public void isolationRank() {
List<Organization> organizations = organizationRepository.findAll();

for (Organization organization : organizations) {
// isolationPoint κΈ°μ€€μœΌλ‘œ λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬
List<MemberOrganization> memberOrganizations = memberOrganizationRepository
.findAllByOrganizationOrderByMemberId(organization)
.stream()
.sorted(
Comparator.comparingDouble(MemberOrganization::getIsolationPoint).reversed()
)
.toList();

// μˆœμœ„ 계산 및 μ—…λ°μ΄νŠΈ
int rank = 1; // ν˜„μž¬ μˆœμœ„
int actualRank = 1; // λ‹€μŒμ— 적용될 μ‹€μ œ μˆœμœ„
double lastPoint = Double.MAX_VALUE; // 이전 isolationPoint
for (MemberOrganization memberOrg : memberOrganizations) {
// μ μˆ˜κ°€ λ³€κ²½λ˜λ©΄ μˆœμœ„ μ—…λ°μ΄νŠΈ
if (memberOrg.getIsolationPoint() != lastPoint) {
lastPoint = memberOrg.getIsolationPoint();
rank = actualRank;
}
memberOrg.updateIsolationRank(rank);
memberOrganizationRepository.save(memberOrg);

// μ‹€μ œ μ‚¬μš©λ  λ‹€μŒ μˆœμœ„ μ—…λ°μ΄νŠΈ (동 μˆœμœ„ κ³ λ €)
actualRank++;
}
}
}

private List<Double> retrieveScores(
MemberOrganization member, List<MemberOrganization> memberOrganizations,
Organization organization
Expand Down

0 comments on commit 81e3282

Please sign in to comment.