|
2 | 2 |
|
3 | 3 | import java.time.Duration; |
4 | 4 | import java.time.LocalDateTime; |
| 5 | +import java.time.LocalTime; |
5 | 6 |
|
6 | 7 | import org.springframework.data.redis.core.RedisTemplate; |
7 | 8 | import org.springframework.stereotype.Service; |
@@ -43,21 +44,27 @@ public boolean isChatAvailable(Long concertId) { |
43 | 44 |
|
44 | 45 | // 정책 기간 계산 |
45 | 46 | LocalDateTime now = LocalDateTime.now(); |
| 47 | + |
| 48 | + LocalDateTime policyStart = ticketTime.toLocalDate() |
| 49 | + .minusDays(3) |
| 50 | + .atStartOfDay(); |
| 51 | + |
| 52 | + LocalDateTime policyEnd = ticketTime.toLocalDate() |
| 53 | + .plusDays(3) |
| 54 | + .atTime(LocalTime.MAX); |
| 55 | + |
46 | 56 | boolean available = |
47 | | - now.isAfter(ticketTime.minusDays(3)) && |
48 | | - now.isBefore(ticketTime.plusDays(3)); |
| 57 | + now.isAfter(policyStart) && |
| 58 | + now.isBefore(policyEnd); |
49 | 59 |
|
50 | 60 | // TTL 계산 후 캐싱 |
51 | | - Duration ttl = calculateTtl(now, ticketTime); |
| 61 | + Duration ttl = calculateTtl(now, policyStart, policyEnd); |
52 | 62 | redisTemplate.opsForValue().set(key, available, ttl); |
53 | 63 |
|
54 | 64 | return available; |
55 | 65 | } |
56 | 66 |
|
57 | | - private Duration calculateTtl(LocalDateTime now, LocalDateTime ticketTime) { |
58 | | - |
59 | | - LocalDateTime policyStart = ticketTime.minusDays(3); |
60 | | - LocalDateTime policyEnd = ticketTime.plusDays(3); |
| 67 | + private Duration calculateTtl(LocalDateTime now, LocalDateTime policyStart, LocalDateTime policyEnd) { |
61 | 68 |
|
62 | 69 | // 아직 정책 시작 전 |
63 | 70 | if (now.isBefore(policyStart)) { |
|
0 commit comments