From 0a3a174f1426d65e4feb71a7d82715876af1595e Mon Sep 17 00:00:00 2001 From: whale22 Date: Thu, 6 Mar 2025 17:04:54 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=EC=8A=A4=ED=94=84=EB=A7=81=20?= =?UTF-8?q?=EC=9D=B4=EB=B2=A4=ED=8A=B8=20/=20=EC=9B=B9=EC=86=8C=EC=BC=93?= =?UTF-8?q?=20=EC=97=B0=EA=B2=B0=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cmf/commitField/CommitFieldApplication.java | 2 -- .../commit/scheduler/CommitUpdateListener.java | 12 ++++++++++++ .../domain/commit/scheduler/CommitUpdateService.java | 6 ++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/main/java/cmf/commitField/CommitFieldApplication.java b/src/main/java/cmf/commitField/CommitFieldApplication.java index 722658a..65dc6ae 100644 --- a/src/main/java/cmf/commitField/CommitFieldApplication.java +++ b/src/main/java/cmf/commitField/CommitFieldApplication.java @@ -7,8 +7,6 @@ @SpringBootApplication @EnableJpaAuditing -// 스케쥴링 활성화 -// 테스트시에만 주석 풀기 @EnableScheduling public class CommitFieldApplication { public static void main(String[] args) { diff --git a/src/main/java/cmf/commitField/domain/commit/scheduler/CommitUpdateListener.java b/src/main/java/cmf/commitField/domain/commit/scheduler/CommitUpdateListener.java index 7a19371..10e31e2 100644 --- a/src/main/java/cmf/commitField/domain/commit/scheduler/CommitUpdateListener.java +++ b/src/main/java/cmf/commitField/domain/commit/scheduler/CommitUpdateListener.java @@ -4,6 +4,7 @@ import cmf.commitField.domain.user.service.UserService; import lombok.RequiredArgsConstructor; import org.springframework.context.event.EventListener; +import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.stereotype.Component; @Component @@ -12,6 +13,7 @@ public class CommitUpdateListener { private final UserService userService; private final PetService petService; private final CommitUpdateService commitUpdateService; + private final SimpMessagingTemplate messagingTemplate; @EventListener public void handleCommitUserUpdateEvent(CommitUpdateEvent event) { @@ -41,4 +43,14 @@ public void handleCommitPetUpdateEvent(CommitUpdateEvent event) { // 커밋 갱신 후에 다른 서비스에서 필요한 작업 수행 (예: DB 업데이트, 상태 갱신 등) System.out.println("유저명: " + username + "'s pet has updated " + commitCount + " commits."); } + + @EventListener + public void onCommitCountUpdate(CommitUpdateEvent event) { + // 커밋 수 업데이트가 있을 때 메시지 발송 + String username = event.getUsername(); + long newCommitCount = event.getNewCommitCount(); + + // 메시지를 WebSocket을 통해 전송 + messagingTemplate.convertAndSend("/topic/commit/" + username, newCommitCount); + } } diff --git a/src/main/java/cmf/commitField/domain/commit/scheduler/CommitUpdateService.java b/src/main/java/cmf/commitField/domain/commit/scheduler/CommitUpdateService.java index 7f7e292..42f0b55 100644 --- a/src/main/java/cmf/commitField/domain/commit/scheduler/CommitUpdateService.java +++ b/src/main/java/cmf/commitField/domain/commit/scheduler/CommitUpdateService.java @@ -1,11 +1,11 @@ package cmf.commitField.domain.commit.scheduler; import cmf.commitField.domain.commit.totalCommit.service.TotalCommitService; -import cmf.commitField.domain.pet.service.PetService; import cmf.commitField.domain.user.dto.UserInfoDto; import cmf.commitField.domain.user.entity.User; import cmf.commitField.domain.user.repository.UserRepository; import lombok.RequiredArgsConstructor; +import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.stereotype.Service; import java.time.LocalDateTime; @@ -15,8 +15,9 @@ public class CommitUpdateService { private final TotalCommitService totalCommitService; private final UserRepository userRepository; - private final PetService petService; + private final SimpMessagingTemplate messagingTemplate; + // 유저 랭킹 상승 로짓 public UserInfoDto updateUserTier(String username){ User user = userRepository.findByUsername(username).get(); long seasonCommitCount; @@ -35,4 +36,5 @@ public UserInfoDto updateUserTier(String username){ .tier(user.getTier().name()) .build(); } + } From d1ceca99e116c088c59a3a77593ebb46a2afd3b9 Mon Sep 17 00:00:00 2001 From: whale22 Date: Fri, 7 Mar 2025 09:53:16 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=EC=9D=BC=EB=B6=80=20active=20user?= =?UTF-8?q?=20=EB=A0=88=EB=94=94=EC=8A=A4=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?3=EC=8B=9C=EA=B0=84=20=EA=B8=B0=ED=95=9C=20=EB=88=84=EB=9D=BD?= =?UTF-8?q?=EB=90=98=EC=96=B4=20=EC=9E=AC=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/cmf/commitField/CommitFieldApplication.java | 1 - .../commit/sinceCommit/controller/SinceCommitController.java | 2 +- .../commit/totalCommit/controller/TotalCommitController.java | 2 +- .../domain/user/service/CustomOAuth2UserService.java | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/cmf/commitField/CommitFieldApplication.java b/src/main/java/cmf/commitField/CommitFieldApplication.java index 65dc6ae..48e8c27 100644 --- a/src/main/java/cmf/commitField/CommitFieldApplication.java +++ b/src/main/java/cmf/commitField/CommitFieldApplication.java @@ -12,5 +12,4 @@ public class CommitFieldApplication { public static void main(String[] args) { SpringApplication.run(CommitFieldApplication.class, args); } - } diff --git a/src/main/java/cmf/commitField/domain/commit/sinceCommit/controller/SinceCommitController.java b/src/main/java/cmf/commitField/domain/commit/sinceCommit/controller/SinceCommitController.java index 6780543..b81f4e2 100644 --- a/src/main/java/cmf/commitField/domain/commit/sinceCommit/controller/SinceCommitController.java +++ b/src/main/java/cmf/commitField/domain/commit/sinceCommit/controller/SinceCommitController.java @@ -94,7 +94,7 @@ public ResponseEntity getWinterSeasonCommits( ) { int currentYear = LocalDateTime.now().getYear(); LocalDateTime since = LocalDateTime.of(2024, 12, 1, 0, 0); - LocalDateTime until = LocalDateTime.of(2024 + 1, 2, 1, 23, 59, 59) + LocalDateTime until = LocalDateTime.of(2024 + 1, 2, 28, 23, 59, 59) .with(TemporalAdjusters.lastDayOfMonth()); CommitAnalysisResponseDto analysis = sinceCommitService.getCommitAnalysis(owner, repo, since, until); diff --git a/src/main/java/cmf/commitField/domain/commit/totalCommit/controller/TotalCommitController.java b/src/main/java/cmf/commitField/domain/commit/totalCommit/controller/TotalCommitController.java index 6086adf..de438a1 100644 --- a/src/main/java/cmf/commitField/domain/commit/totalCommit/controller/TotalCommitController.java +++ b/src/main/java/cmf/commitField/domain/commit/totalCommit/controller/TotalCommitController.java @@ -75,7 +75,7 @@ public TotalCommitResponseDto getWinterSeasonCommits(@AuthenticationPrincipal Cu String username = oAuth2User.getName(); int currentYear = LocalDateTime.now().getYear(); // 2024.12 ~ 2025.2 대입 LocalDateTime since = LocalDateTime.of(2025 - 1, 12, 1, 0, 0); - LocalDateTime until = LocalDateTime.of(2025, 2, 1, 23, 59, 59) + LocalDateTime until = LocalDateTime.of(2025, 2, 28, 23, 59, 59) .with(TemporalAdjusters.lastDayOfMonth()); return totalCommitService.getSeasonCommits(username, since, until); } diff --git a/src/main/java/cmf/commitField/domain/user/service/CustomOAuth2UserService.java b/src/main/java/cmf/commitField/domain/user/service/CustomOAuth2UserService.java index ad1a1c6..0e8fa46 100644 --- a/src/main/java/cmf/commitField/domain/user/service/CustomOAuth2UserService.java +++ b/src/main/java/cmf/commitField/domain/user/service/CustomOAuth2UserService.java @@ -123,7 +123,7 @@ public Optional getUserByEmail(String email) { public void setUserActive(String username) { String count = String.valueOf(userRepository.findByUsername(username).get().getCommitCount()); - redisTemplate.opsForValue().set("commit_active:" + username, count); + redisTemplate.opsForValue().set("commit_active:" + username, count, 3, TimeUnit.HOURS); redisTemplate.opsForValue().set("commit_lastCommitted:" + username, LocalDateTime.now().toString(),3, TimeUnit.HOURS); }