Skip to content

Commit 3703f8a

Browse files
committed
feat: 랭크 관련 수정
1 parent 856a00d commit 3703f8a

File tree

5 files changed

+86
-10
lines changed

5 files changed

+86
-10
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package cmf.commitField.domain.commit.scheduler;
2+
3+
import cmf.commitField.domain.user.dto.UserInfoDto;
4+
import cmf.commitField.domain.user.entity.CustomOAuth2User;
5+
import lombok.RequiredArgsConstructor;
6+
import org.springframework.http.ResponseEntity;
7+
import org.springframework.security.core.annotation.AuthenticationPrincipal;
8+
import org.springframework.web.bind.annotation.GetMapping;
9+
import org.springframework.web.bind.annotation.RequestMapping;
10+
import org.springframework.web.bind.annotation.RestController;
11+
12+
@RestController
13+
@RequiredArgsConstructor
14+
@RequestMapping("/api/commits")
15+
public class CommitUpdateController {
16+
private final CommitUpdateService commitUpdateService;
17+
@GetMapping("/tier")
18+
public ResponseEntity<UserInfoDto> getUserTier(@AuthenticationPrincipal CustomOAuth2User oAuth2User){
19+
String username = oAuth2User.getName(); // CustomOAuth2User의 getName()은 user.getUsername()을 반환
20+
21+
System.out.println("/tier, Username: "+username);
22+
UserInfoDto userInfoDto = commitUpdateService.updateUserTier(username);
23+
return ResponseEntity.ok(userInfoDto);
24+
}
25+
26+
}
Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,50 @@
11
package cmf.commitField.domain.commit.scheduler;
22

33
import cmf.commitField.domain.commit.totalCommit.service.TotalCommitService;
4+
import cmf.commitField.domain.pet.service.PetService;
5+
import cmf.commitField.domain.user.dto.UserInfoDto;
46
import cmf.commitField.domain.user.entity.User;
57
import cmf.commitField.domain.user.repository.UserRepository;
68
import lombok.RequiredArgsConstructor;
7-
import org.springframework.security.oauth2.core.user.OAuth2User;
89
import org.springframework.stereotype.Service;
9-
import org.springframework.web.bind.annotation.GetMapping;
1010

1111
import java.time.LocalDateTime;
1212

1313
@Service
1414
@RequiredArgsConstructor
1515
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();
16+
private final TotalCommitService totalCommitService;
17+
private final UserRepository userRepository;
18+
private final PetService petService;
19+
20+
public UserInfoDto updateUserTier(String username){
21+
User user = userRepository.findByUsername(username).get();
2122
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();
23+
// seasonCommitCount = totalCommitService.getSeasonCommits(user.getUsername(), LocalDateTime.of(2024,12,01,0,0), LocalDateTime.of(2025,2,28,23,59)).getTotalCommitContributions();
24+
seasonCommitCount = totalCommitService.getSeasonCommits(user.getUsername(), LocalDateTime.of(2025,03,01,0,0), LocalDateTime.of(2025,05,31,23,59)).getTotalCommitContributions();
2425
user.setTier(User.Tier.getLevelByExp((int)seasonCommitCount));
26+
userRepository.save(user);
27+
28+
return UserInfoDto.builder()
29+
.userId(user.getId())
30+
.username(user.getUsername())
31+
.email(user.getEmail())
32+
.avatarUrl(user.getAvatarUrl())
33+
.createdAt(user.getCreatedAt())
34+
.lastCommitted(user.getLastCommitted())
35+
.commitCount(user.getCommitCount())
36+
.tier(user.getTier().name())
37+
.build();
38+
}
39+
40+
public User updateUserPet(String username){
41+
User user = userRepository.findByUsername(username).get();
42+
43+
//추가된 펫 경험치
44+
long totalcommits;
45+
totalcommits = totalCommitService.getUpdateCommits(user.getUsername(), user.getCreatedAt(), LocalDateTime.now()).getTotalCommitContributions();
46+
47+
petService.getExpPet(user, (int)totalcommits);
2548
return user;
2649
}
2750
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package cmf.commitField.domain.user.dto;
2+
3+
import lombok.Builder;
4+
import lombok.Getter;
5+
6+
import java.time.LocalDateTime;
7+
8+
@Builder
9+
@Getter
10+
public class UserInfoDto {
11+
12+
private Long userId;
13+
private String username;
14+
private String email;
15+
private String avatarUrl;
16+
private LocalDateTime createdAt;
17+
private LocalDateTime lastCommitted;
18+
private long commitCount;
19+
private String tier;
20+
21+
// 펫 생략, 차후 필요시 추가
22+
}

src/main/java/cmf/commitField/domain/user/repository/UserRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
import org.springframework.data.jpa.repository.Modifying;
66
import org.springframework.data.jpa.repository.Query;
77
import org.springframework.data.repository.query.Param;
8+
import org.springframework.stereotype.Repository;
89

910
import java.util.Optional;
1011

12+
@Repository
1113
public interface UserRepository extends JpaRepository<User, Long> {
1214
Optional<User> findByUsername(String username);
1315
Optional<User> findById(Long id);

src/main/java/cmf/commitField/global/security/SecurityConfig.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ public SecurityConfig(CustomOAuth2UserService customOAuth2UserService) {
2929
@Bean
3030
protected SecurityFilterChain config(HttpSecurity http) throws Exception {
3131
http
32+
.authorizeHttpRequests(auth -> auth
33+
.requestMatchers("**").permitAll() // TODO: 차후 인증 관련 추가 필요
34+
)
35+
3236
.cors(cors -> cors.configurationSource(corsConfigurationSource())) // CORS 설정 추가
3337
.csrf(AbstractHttpConfigurer::disable) // CSRF 보호 비활성화
3438
.sessionManagement(session -> session
@@ -47,7 +51,6 @@ protected SecurityFilterChain config(HttpSecurity http) throws Exception {
4751

4852
// 디버깅 로그
4953
System.out.println("OAuth2 로그인 성공: " + username);
50-
5154
response.sendRedirect("http://localhost:5173/home"); // 로그인 성공 후 리다이렉트
5255
})
5356
)

0 commit comments

Comments
 (0)