Skip to content

Commit 1ec05d5

Browse files
authored
Merge pull request #26 from Leets-Official/25-fix-랭킹-유저-도메인-저장
25 fix 랭킹기능에 순위 추가
2 parents 2e19983 + 3606cdc commit 1ec05d5

File tree

4 files changed

+22
-2
lines changed

4 files changed

+22
-2
lines changed

src/main/java/com/leets/commitatobe/domain/commit/usecase/ExpService.java

+13
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.leets.commitatobe.domain.user.domain.repository.UserRepository;
99
import jakarta.transaction.Transactional;
1010
import lombok.RequiredArgsConstructor;
11+
import org.springframework.data.domain.Pageable;
1112
import org.springframework.security.core.userdetails.UsernameNotFoundException;
1213
import org.springframework.stereotype.Service;
1314

@@ -69,6 +70,18 @@ public void calculateAndSaveExp(String githubId){
6970
user.updateTotalCommitCount(totalCommitCount);
7071
user.updateTodayCommitCount(todayCommitCount);
7172

73+
List<User> allUsers = userRepository.findAllByOrderByExpDesc(Pageable.unpaged()).getContent();
74+
int ranking = 0;
75+
int previousExp = -1;
76+
for (User userToUpdate : allUsers){
77+
if (userToUpdate.getExp()!=previousExp) {
78+
ranking += 1;
79+
previousExp=userToUpdate.getExp();//만약 경험치 같으면 동일한 랭킹부여.
80+
}
81+
userToUpdate.updateRank(ranking);//랭킹 업데이트
82+
userRepository.save(userToUpdate);//데이터베이스에 저장
83+
}
84+
7285
commitRepository.saveAll(commits);//변경된 커밋 정보 데이터베이스에 저장
7386
userRepository.save(user);//변경된 사용자 정보 데이터베이스에 저장
7487
}

src/main/java/com/leets/commitatobe/domain/user/domain/User.java

+5
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ public class User extends BaseTimeEntity {
5050
@Column
5151
private Integer todayCommitCount;
5252

53+
@Column
54+
private Integer ranking;// 랭킹 추가
55+
5356
@OneToMany(mappedBy = "user")
5457
@JsonManagedReference
5558
private List<Commit> commitList;
@@ -77,4 +80,6 @@ public void updateTotalCommitCount(Integer totalCommitCount){
7780
public void updateTodayCommitCount(Integer todayCommitCount){
7881
this.todayCommitCount=todayCommitCount;
7982
}
83+
84+
public void updateRank(Integer ranking) { this.ranking = ranking; }
8085
}

src/main/java/com/leets/commitatobe/domain/user/presentation/dto/response/UserRankResponse.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ public record UserRankResponse(
66
String username,
77
Integer exp,
88
Integer consecutiveCommitDays,
9-
String tierName
9+
String tierName,
10+
Integer ranking//랭킹 추가
1011
) {
1112
}

src/main/java/com/leets/commitatobe/domain/user/usecase/UserQueryServiceImpl.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@ public Page<UserRankResponse> getUsersByExp(Pageable pageable){//경험치 순
6060
user.getUsername(),
6161
user.getExp(),
6262
user.getConsecutiveCommitDays(),
63-
tier!=null?tier.getTierName():"Unranked");
63+
tier!=null?tier.getTierName():"Unranked",
64+
user.getRanking());//랭킹 추가
6465
});
6566
}
6667

0 commit comments

Comments
 (0)