Skip to content

Commit fa648b2

Browse files
authored
Merge pull request #60 from Nexters/dev
#48 월별 요약에서 열린 달 기록없어도 0으로 내려주도록 변경 + 푸시 쿼리 수정
2 parents ac31ef0 + bf2d188 commit fa648b2

File tree

3 files changed

+20
-30
lines changed

3 files changed

+20
-30
lines changed

src/main/java/donmani/donmani_server/expense/service/ExpenseService.java

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.time.YearMonth;
66
import java.util.*;
77
import java.util.stream.Collectors;
8+
import java.util.stream.IntStream;
89
import java.util.stream.Stream;
910

1011
import donmani.donmani_server.expense.dto.*;
@@ -156,29 +157,19 @@ public ExpenseSummaryDTO getYearlyExpenseSummary(String userKey, int year) {
156157
Collectors.counting()
157158
));
158159

159-
// RecordInfoDTO 변환
160-
Map<Integer, RecordInfoDTO> monthlyRecords = monthlyCounts.entrySet().stream()
161-
.collect(Collectors.toMap(
162-
Map.Entry::getKey, // 월(MonthValue)
163-
entry -> new RecordInfoDTO(
164-
entry.getValue(), // 해당 월의 기록이 있는 날짜 수
165-
YearMonth.of(year, entry.getKey()).lengthOfMonth() // 해당 월의 총 날짜 수
166-
)
167-
));
168-
169-
// Map<Integer, RecordInfoDTO> monthlyRecords = expenses.stream()
170-
// .filter(exp -> exp.getCreatedAt().getYear() == year)
171-
// .collect(Collectors.groupingBy(
172-
// exp -> exp.getCreatedAt().getMonthValue(),
173-
// Collectors.collectingAndThen(
174-
// Collectors.toList(),
175-
// list -> {
176-
// long recordCount = list.size();
177-
// int totalDaysInMonth = YearMonth.of(year, list.get(0).getCreatedAt().getMonthValue()).lengthOfMonth();
178-
// return new RecordInfoDTO(recordCount, totalDaysInMonth);
179-
// }
180-
// )
181-
// ));
160+
// 현재 월 계산
161+
int currentMonth = (year == LocalDate.now().getYear()) ? LocalDate.now().getMonthValue() : 12;
162+
163+
// RecordInfoDTO 변환 : 1월부터 현재 월까지 반복
164+
Map<Integer, RecordInfoDTO> monthlyRecords = IntStream.rangeClosed(1, currentMonth)
165+
.boxed()
166+
.collect(Collectors.toMap(
167+
month -> month,
168+
month -> new RecordInfoDTO(
169+
monthlyCounts.getOrDefault(month, 0L),
170+
YearMonth.of(year, month).lengthOfMonth()
171+
)
172+
));
182173

183174
return ExpenseSummaryDTO.builder()
184175
.year(year)

src/main/java/donmani/donmani_server/fcm/reposiory/PushExpenseRepository.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.springframework.data.jpa.repository.Query;
66
import org.springframework.data.repository.query.Param;
77

8+
import java.time.LocalDateTime;
89
import java.util.List;
910

1011
public interface PushExpenseRepository extends JpaRepository<Expense, Long> {
@@ -16,7 +17,7 @@ public interface PushExpenseRepository extends JpaRepository<Expense, Long> {
1617
// 어제 소비 기록이 없는 유저의 FCM 토큰 조회
1718
@Query("SELECT f.token FROM FCMToken f WHERE NOT EXISTS " +
1819
"(SELECT e FROM Expense e WHERE e.userId = f.user.id " +
19-
"AND e.createdAt >= FUNCTION('DATE_SUB', CURRENT_DATE, 1))")
20-
List<String> findTokensWithoutExpenseYesterday();
20+
"AND e.createdAt >= :yesterday)")
21+
List<String> findTokensWithoutExpenseSince(@Param("yesterday") LocalDateTime yesterday);
2122

2223
}

src/main/java/donmani/donmani_server/fcm/service/FCMService.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package donmani.donmani_server.fcm.service;
22

3-
import com.google.auth.oauth2.GoogleCredentials;
4-
import com.google.firebase.auth.FirebaseAuth;
5-
import com.google.firebase.auth.FirebaseToken;
3+
64
import com.google.firebase.messaging.FirebaseMessaging;
75
import com.google.firebase.messaging.FirebaseMessagingException;
86
import com.google.firebase.messaging.Message;
@@ -16,7 +14,7 @@
1614
import org.springframework.stereotype.Service;
1715
import org.springframework.transaction.annotation.Transactional;
1816

19-
import java.io.FileInputStream;
17+
import java.time.LocalDateTime;
2018
import java.util.List;
2119

2220
@Service
@@ -81,7 +79,7 @@ public List<String> getTokenNoExpenseToday() {
8179

8280
@Transactional
8381
public List<String> getTokenNoExpenseYesterday() {
84-
return expenseRepository.findTokensWithoutExpenseYesterday();
82+
return expenseRepository.findTokensWithoutExpenseSince(LocalDateTime.now().minusDays(1));
8583
}
8684

8785
}

0 commit comments

Comments
 (0)