Skip to content

Commit 856a00d

Browse files
committed
feat: USER commit에 따른 update 메소드 작성
1 parent 161ab08 commit 856a00d

File tree

5 files changed

+56
-7
lines changed

5 files changed

+56
-7
lines changed

src/main/java/cmf/commitField/CommitFieldApplication.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
// 테스트시에만 주석 풀기
1212
@EnableScheduling
1313
public class CommitFieldApplication {
14-
1514
public static void main(String[] args) {
1615
SpringApplication.run(CommitFieldApplication.class, args);
1716
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package cmf.commitField.domain.commit.scheduler;
2+
3+
import cmf.commitField.domain.commit.totalCommit.service.TotalCommitService;
4+
import cmf.commitField.domain.user.entity.User;
5+
import cmf.commitField.domain.user.repository.UserRepository;
6+
import lombok.RequiredArgsConstructor;
7+
import org.springframework.security.oauth2.core.user.OAuth2User;
8+
import org.springframework.stereotype.Service;
9+
import org.springframework.web.bind.annotation.GetMapping;
10+
11+
import java.time.LocalDateTime;
12+
13+
@Service
14+
@RequiredArgsConstructor
15+
public class CommitUpdateService {
16+
TotalCommitService totalCommitService;
17+
UserRepository userRepository;
18+
@GetMapping("commit/tier")
19+
public User updateUserTier(OAuth2User oAuth2User){
20+
User user = userRepository.findByEmail(oAuth2User.getName()).get();
21+
long seasonCommitCount;
22+
seasonCommitCount = totalCommitService.getSeasonCommits(user.getUsername(), LocalDateTime.of(2024,12,01,0,0), LocalDateTime.of(2025,2,28,23,59)).getTotalCommitContributions();
23+
// seasonCommitCount = totalCommitService.getSeasonCommits(user.getUsername(), LocalDateTime.of(2025,03,01,0,0), LocalDateTime.of(2025,05,31,23,59)).getTotalCommitContributions();
24+
user.setTier(User.Tier.getLevelByExp((int)seasonCommitCount));
25+
return user;
26+
}
27+
}

src/main/java/cmf/commitField/domain/commit/totalCommit/controller/TotalCommitController.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ public class TotalCommitController {
2525
@GetMapping("/api/commits")
2626
public TotalCommitResponseDto getTotalCommits(@AuthenticationPrincipal CustomOAuth2User oAuth2User) {
2727
String username = oAuth2User.getName(); // CustomOAuth2User의 getName()은 user.getUsername()을 반환
28-
2928
return totalCommitService.getTotalCommitCount(username);
3029
}
3130

src/main/java/cmf/commitField/domain/user/entity/User.java

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,32 @@ public enum Role {
4343
private Tier tier;
4444

4545
public enum Tier {
46-
SEED, // 씨앗
47-
SPROUT, // 새싹
48-
FLOWER, // 꽃
49-
FRUIT, // 열매
50-
TREE // 나무
46+
SEED(94), // 씨앗
47+
SPROUT(188), // 새싹
48+
FLOWER(282), // 꽃
49+
FRUIT(376), // 열매
50+
TREE(377); // 나무
51+
52+
private final int requiredExp;
53+
54+
Tier(int requiredExp) {
55+
this.requiredExp = requiredExp;
56+
}
57+
58+
public int getRequiredExp() {
59+
return requiredExp;
60+
}
61+
62+
// 현재 경험치에 맞는 레벨 찾기
63+
public static Tier getLevelByExp(int exp) {
64+
Tier currentLevel = SEED;
65+
for (Tier level : values()) {
66+
if (exp >= level.getRequiredExp()) {
67+
currentLevel = level;
68+
}
69+
}
70+
return currentLevel;
71+
}
5172
}
5273

5374

src/main/java/cmf/commitField/domain/user/service/CustomOAuth2UserService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import org.springframework.security.oauth2.core.user.OAuth2User;
1616
import org.springframework.stereotype.Service;
1717

18+
import java.time.LocalDateTime;
1819
import java.util.ArrayList;
1920
import java.util.Map;
2021
import java.util.Optional;
@@ -63,9 +64,11 @@ public OAuth2User loadUser(OAuth2UserRequest userRequest) {
6364
pet = new Pet("알알", user); // 변경 필요
6465
petRepository.save(pet);
6566

67+
long commitCount;
6668
user.addPets(pet);
6769
user.setCommitCount(totalCommitService.getTotalCommitCount(user.getUsername()).getTotalCommitContributions());
6870

71+
6972
// 회원가입한 유저는 커밋 기록에 상관없이 Redis에 입력해둔다.
7073
commitCacheService.updateCachedCommitCount(user.getUsername(),0);
7174
}

0 commit comments

Comments
 (0)