Skip to content

Commit ccb46ec

Browse files
authored
Merge pull request #40 from eureca-final-capstone-project/develop
main 배포
2 parents de5e923 + d4ed10f commit ccb46ec

8 files changed

Lines changed: 49 additions & 50 deletions

File tree

src/main/java/eureca/capstone/project/batch/BatchApplication.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
import org.springframework.cache.annotation.EnableCaching;
56
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
67
import org.springframework.scheduling.annotation.EnableScheduling;
78

89
@SpringBootApplication
910
@EnableScheduling
1011
@EnableJpaAuditing
12+
@EnableCaching
1113
public class BatchApplication {
1214

1315
public static void main(String[] args) {

src/main/java/eureca/capstone/project/batch/common/schedule/ExpireDataCouponScheduler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class ExpireDataCouponScheduler {
1818
private final JobLauncher jobLauncher;
1919
private final Job expireDataCouponJob;
2020

21-
@Scheduled(cron = "0 10 0 * * *", zone = "Asia/Seoul")
21+
@Scheduled(cron = "30 0 0 * * *", zone = "Asia/Seoul")
2222
public void runExpireDataCouponBatch() {
2323
try {
2424
log.info("[runExpireDataCouponBatch] 데이터 충전권 기간만료 배치 실행");

src/main/java/eureca/capstone/project/batch/common/schedule/ExpireEventCouponScheduler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class ExpireEventCouponScheduler {
1818
private final JobLauncher jobLauncher;
1919
private final Job expireEventCouponJob;
2020

21-
@Scheduled(cron = "0 5 0 * * *", zone = "Asia/Seoul")
21+
@Scheduled(cron = "30 0 0 * * *", zone = "Asia/Seoul")
2222
public void runExpireEventCouponBatch() {
2323
try {
2424
log.info("[runExpireEventCouponBatch] 이벤트 쿠폰 기간만료 배치 실행");
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package eureca.capstone.project.batch.common.service;
2+
3+
import eureca.capstone.project.batch.common.entity.Status;
4+
import eureca.capstone.project.batch.common.repository.StatusRepository;
5+
import lombok.RequiredArgsConstructor;
6+
import lombok.extern.slf4j.Slf4j;
7+
import org.springframework.cache.annotation.Cacheable;
8+
import org.springframework.stereotype.Service;
9+
10+
@Service
11+
@RequiredArgsConstructor
12+
@Slf4j
13+
public class StatusService {
14+
15+
private final StatusRepository statusRepository;
16+
17+
@Cacheable(value = "statusByDomainCode", key = "#domain + ':' + #code")
18+
public Status getStatus(String domain, String code){
19+
log.info("[getStatus] domain: {}, code: {}",domain,code);
20+
return statusRepository.findByDomainAndCode(domain,code)
21+
.orElseThrow(() -> new IllegalArgumentException(domain + ":" + code + " Status not found"));
22+
}
23+
}

src/main/java/eureca/capstone/project/batch/job/AuctionJobConfig.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public class AuctionJobConfig {
5252
private final CustomRetryListener customRetryListener;
5353
private final TransactionFeedSearchRepository transactionFeedSearchRepository;
5454
private final NotificationService notificationService;
55+
private final EntityManager entityManager;
5556

5657
private static final int CHUNK_SIZE = 100;
5758

@@ -89,6 +90,8 @@ public JpaPagingItemReader<TransactionFeed> auctionFeedReader(
8990
SELECT tf FROM TransactionFeed tf
9091
JOIN FETCH tf.status
9192
JOIN FETCH tf.salesType
93+
JOIN FETCH tf.user
94+
JOIN FETCH tf.telecomCompany
9295
WHERE tf.salesType.salesTypeId = :salesTypeId
9396
AND tf.status.code = 'ON_SALE'
9497
AND tf.isDeleted = false
@@ -137,7 +140,6 @@ public ItemProcessor<TransactionFeed, AuctionResult> auctionFeedProcessor() {
137140
@Bean
138141
public ItemWriter<AuctionResult> auctionFeedWriter() {
139142
return chunk -> {
140-
EntityManager entityManager = entityManagerFactory.createEntityManager();
141143
for (AuctionResult result : chunk.getItems()) {
142144
TransactionFeed managedFeed = entityManager.merge(result.getTransactionFeed());
143145
if (result.getType() == AuctionResult.Type.WINNING) {

src/main/java/eureca/capstone/project/batch/job/ExpireDataCouponJobConfig.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import eureca.capstone.project.batch.alarm.service.NotificationService;
55
import eureca.capstone.project.batch.common.entity.Status;
6+
import eureca.capstone.project.batch.common.service.StatusService;
67
import eureca.capstone.project.batch.component.listener.ExecutionListener;
78
import eureca.capstone.project.batch.component.retry.RetryPolicy;
89
import eureca.capstone.project.batch.transaction_feed.entity.UserDataCoupon;
@@ -46,6 +47,7 @@ public class ExpireDataCouponJobConfig {
4647
private final DataSource dataSource;
4748
private final ExecutionListener executionListener;
4849
private final RetryPolicy retryPolicy;
50+
private final StatusService statusService;
4951

5052
@Bean
5153
public Job expireDataCouponJob(Step expireDataCouponStep) {
@@ -75,11 +77,10 @@ public Step expireDataCouponStep(
7577
@Bean
7678
@StepScope
7779
public JpaPagingItemReader<UserDataCoupon> expireDataCouponReader(
78-
@Value("#{jobParameters['currentTime']}") String currentTime,
79-
@Qualifier("getStatuses") Map<String, Status> statusMap) {
80+
@Value("#{jobParameters['currentTime']}") String currentTime) {
8081
LocalDateTime today = LocalDateTime.parse(currentTime);
81-
Status expiredStatus = statusMap.get("EXPIRED");
82-
Status usedStatus = statusMap.get("USED");
82+
Status expiredStatus = statusService.getStatus("COUPON", "EXPIRED");
83+
Status usedStatus = statusService.getStatus("COUPON", "USED");
8384
List<Status> excludedStatuses = List.of(expiredStatus, usedStatus);
8485

8586
Map<String, Object> params = new HashMap<>();
@@ -99,9 +100,8 @@ public JpaPagingItemReader<UserDataCoupon> expireDataCouponReader(
99100

100101

101102
@Bean
102-
public ItemProcessor<UserDataCoupon, UserDataCoupon> expireDataCouponProcessor(
103-
@Qualifier("getStatuses") Map<String, Status> statusMap) {
104-
Status expiredStatus = statusMap.get("EXPIRED");
103+
public ItemProcessor<UserDataCoupon, UserDataCoupon> expireDataCouponProcessor() {
104+
Status expiredStatus = statusService.getStatus("COUPON", "EXPIRED");
105105

106106
return coupon ->{
107107
coupon.changeStatus(expiredStatus);

src/main/java/eureca/capstone/project/batch/job/ExpireEventCouponJobConfig.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import eureca.capstone.project.batch.alarm.dto.AlarmCreationDto;
44
import eureca.capstone.project.batch.alarm.service.NotificationService;
55
import eureca.capstone.project.batch.common.entity.Status;
6+
import eureca.capstone.project.batch.common.service.StatusService;
67
import eureca.capstone.project.batch.component.listener.ExecutionListener;
78
import eureca.capstone.project.batch.component.retry.RetryPolicy;
89
import eureca.capstone.project.batch.pay.entity.UserEventCoupon;
@@ -46,6 +47,7 @@ public class ExpireEventCouponJobConfig {
4647
private final DataSource dataSource;
4748
private final ExecutionListener executionListener;
4849
private final RetryPolicy retryPolicy;
50+
private final StatusService statusService;
4951

5052
@Bean
5153
public Job expireEventCouponJob(Step expireEventCouponStep) {
@@ -75,11 +77,10 @@ public Step expireEventCouponStep(
7577
@Bean
7678
@StepScope
7779
public JpaPagingItemReader<UserEventCoupon> expireEventCouponReader(
78-
@Value("#{jobParameters['currentTime']}") String currentTime,
79-
@Qualifier("getStatuses") Map<String, Status> statusMap) {
80+
@Value("#{jobParameters['currentTime']}") String currentTime) {
8081
LocalDateTime today = LocalDateTime.parse(currentTime);
81-
Status expiredStatus = statusMap.get("EXPIRED");
82-
Status usedStatus = statusMap.get("USED");
82+
Status expiredStatus = statusService.getStatus("COUPON", "EXPIRED");
83+
Status usedStatus = statusService.getStatus("COUPON", "USED");
8384
List<Status> excludedStatuses = List.of(expiredStatus, usedStatus);
8485

8586
Map<String, Object> params = new HashMap<>();
@@ -99,14 +100,13 @@ public JpaPagingItemReader<UserEventCoupon> expireEventCouponReader(
99100

100101

101102
@Bean
102-
public ItemProcessor<UserEventCoupon, UserEventCoupon> expireEventCouponProcessor(
103-
@Qualifier("getStatuses") Map<String, Status> statusMap) {
104-
Status expiredStatus = statusMap.get("EXPIRED");
105-
106-
return coupon ->{
107-
coupon.changeStatus(expiredStatus);
108-
return coupon;
109-
};
103+
public ItemProcessor<UserEventCoupon, UserEventCoupon> expireEventCouponProcessor() {
104+
Status expiredStatus = statusService.getStatus("COUPON", "EXPIRED");
105+
106+
return coupon ->{
107+
coupon.changeStatus(expiredStatus);
108+
return coupon;
109+
};
110110
}
111111

112112
@Bean

src/main/java/eureca/capstone/project/batch/job/StatusConfig.java

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)