diff --git a/src/main/java/until/the/eternity/auctionhistory/application/scheduler/AuctionHistoryScheduler.java b/src/main/java/until/the/eternity/auctionhistory/application/scheduler/AuctionHistoryScheduler.java index 2ef0398a..141e6b1a 100644 --- a/src/main/java/until/the/eternity/auctionhistory/application/scheduler/AuctionHistoryScheduler.java +++ b/src/main/java/until/the/eternity/auctionhistory/application/scheduler/AuctionHistoryScheduler.java @@ -1,5 +1,7 @@ package until.the.eternity.auctionhistory.application.scheduler; +import java.util.*; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; @@ -12,11 +14,10 @@ import until.the.eternity.auctionhistory.domain.entity.AuctionHistory; import until.the.eternity.auctionhistory.domain.event.AuctionHistorySavedEvent; import until.the.eternity.auctionhistory.interfaces.external.dto.OpenApiAuctionHistoryResponse; +import until.the.eternity.batchlog.domain.enums.BatchType; +import until.the.eternity.common.annotation.BatchLog; import until.the.eternity.common.enums.ItemCategory; -import java.util.*; -import java.util.stream.Collectors; - @Slf4j @Component @RequiredArgsConstructor @@ -30,8 +31,9 @@ public class AuctionHistoryScheduler { @Value("${openapi.auction-history.delay-ms}") private long delayMs; + @BatchLog(type = BatchType.AUCTION_HISTORY_BATCH) @Scheduled(cron = "${openapi.auction-history.cron:0 0 * * * *}", zone = "Asia/Seoul") - public void fetchAndSaveAuctionHistoryAll() { + public int fetchAndSaveAuctionHistoryAll() { // ItemCategory를 topCategory별로 그룹화 Map> categoriesByTopCategory = Arrays.stream(ItemCategory.values()) @@ -117,5 +119,7 @@ public void fetchAndSaveAuctionHistoryAll() { "> [SCHEDULE] Publishing AuctionHistorySavedEvent with {} records", totalSavedCount); eventPublisher.publishEvent(new AuctionHistorySavedEvent(totalSavedCount)); + + return totalSavedCount; } } diff --git a/src/main/java/until/the/eternity/auctionhistory/application/service/AuctionHistoryService.java b/src/main/java/until/the/eternity/auctionhistory/application/service/AuctionHistoryService.java index 07a7ed6f..cc15bfd1 100644 --- a/src/main/java/until/the/eternity/auctionhistory/application/service/AuctionHistoryService.java +++ b/src/main/java/until/the/eternity/auctionhistory/application/service/AuctionHistoryService.java @@ -1,6 +1,7 @@ package until.the.eternity.auctionhistory.application.service; import jakarta.persistence.EntityManager; +import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; @@ -15,8 +16,6 @@ import until.the.eternity.common.request.PageRequestDto; import until.the.eternity.common.response.PageResponseDto; -import java.util.List; - @Service @RequiredArgsConstructor @Slf4j diff --git a/src/main/java/until/the/eternity/auctionhistory/application/service/fetcher/AuctionHistoryFetcher.java b/src/main/java/until/the/eternity/auctionhistory/application/service/fetcher/AuctionHistoryFetcher.java index 3aa40844..4c0e05ad 100644 --- a/src/main/java/until/the/eternity/auctionhistory/application/service/fetcher/AuctionHistoryFetcher.java +++ b/src/main/java/until/the/eternity/auctionhistory/application/service/fetcher/AuctionHistoryFetcher.java @@ -1,5 +1,8 @@ package until.the.eternity.auctionhistory.application.service.fetcher; +import java.util.ArrayList; +import java.util.List; +import java.util.OptionalInt; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -9,10 +12,6 @@ import until.the.eternity.auctionhistory.interfaces.external.dto.OpenApiAuctionHistoryResponse; import until.the.eternity.common.enums.ItemCategory; -import java.util.ArrayList; -import java.util.List; -import java.util.OptionalInt; - @Slf4j @Component @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/auctionhistory/application/service/persister/AuctionHistoryPersister.java b/src/main/java/until/the/eternity/auctionhistory/application/service/persister/AuctionHistoryPersister.java index ee426dd5..8112b804 100644 --- a/src/main/java/until/the/eternity/auctionhistory/application/service/persister/AuctionHistoryPersister.java +++ b/src/main/java/until/the/eternity/auctionhistory/application/service/persister/AuctionHistoryPersister.java @@ -1,5 +1,6 @@ package until.the.eternity.auctionhistory.application.service.persister; +import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -10,8 +11,6 @@ import until.the.eternity.auctionhistory.interfaces.external.dto.OpenApiAuctionHistoryResponse; import until.the.eternity.common.enums.ItemCategory; -import java.util.List; - @Slf4j @RequiredArgsConstructor @Component diff --git a/src/main/java/until/the/eternity/auctionhistory/domain/entity/AuctionHistory.java b/src/main/java/until/the/eternity/auctionhistory/domain/entity/AuctionHistory.java index 6f4cd7d8..af355e14 100644 --- a/src/main/java/until/the/eternity/auctionhistory/domain/entity/AuctionHistory.java +++ b/src/main/java/until/the/eternity/auctionhistory/domain/entity/AuctionHistory.java @@ -1,11 +1,10 @@ package until.the.eternity.auctionhistory.domain.entity; import jakarta.persistence.*; -import lombok.*; -import until.the.eternity.auctionitemoption.domain.entity.AuctionHistoryItemOption; - import java.time.Instant; import java.util.List; +import lombok.*; +import until.the.eternity.auctionitemoption.domain.entity.AuctionHistoryItemOption; @Entity @Table(name = "auction_history") diff --git a/src/main/java/until/the/eternity/auctionhistory/domain/event/AuctionHistorySavedEvent.java b/src/main/java/until/the/eternity/auctionhistory/domain/event/AuctionHistorySavedEvent.java index fe8f771f..213706e6 100644 --- a/src/main/java/until/the/eternity/auctionhistory/domain/event/AuctionHistorySavedEvent.java +++ b/src/main/java/until/the/eternity/auctionhistory/domain/event/AuctionHistorySavedEvent.java @@ -1,8 +1,7 @@ package until.the.eternity.auctionhistory.domain.event; -import lombok.Getter; - import java.time.LocalDateTime; +import lombok.Getter; /** 경매장 거래 내역 저장 완료 이벤트 AuctionHistoryScheduler가 거래 내역을 성공적으로 저장한 후 발행됩니다. */ @Getter diff --git a/src/main/java/until/the/eternity/auctionhistory/domain/mapper/AuctionHistoryMapper.java b/src/main/java/until/the/eternity/auctionhistory/domain/mapper/AuctionHistoryMapper.java index 083ea00f..93a6fcaa 100644 --- a/src/main/java/until/the/eternity/auctionhistory/domain/mapper/AuctionHistoryMapper.java +++ b/src/main/java/until/the/eternity/auctionhistory/domain/mapper/AuctionHistoryMapper.java @@ -1,5 +1,6 @@ package until.the.eternity.auctionhistory.domain.mapper; +import java.util.List; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import until.the.eternity.auctionhistory.domain.entity.AuctionHistory; @@ -7,8 +8,6 @@ import until.the.eternity.auctionhistory.interfaces.rest.dto.response.ItemOptionResponse; import until.the.eternity.auctionitemoption.domain.entity.AuctionHistoryItemOption; -import java.util.List; - /** * AuctionHistory Entity to internal.responseDto transfer mapper class 데이터 흐름은 external.responseDto * -> entity -> internal.responseDto 단방향으로 흐름 diff --git a/src/main/java/until/the/eternity/auctionhistory/domain/mapper/OpenApiAuctionHistoryMapper.java b/src/main/java/until/the/eternity/auctionhistory/domain/mapper/OpenApiAuctionHistoryMapper.java index 0b2b3bf9..51f3748e 100644 --- a/src/main/java/until/the/eternity/auctionhistory/domain/mapper/OpenApiAuctionHistoryMapper.java +++ b/src/main/java/until/the/eternity/auctionhistory/domain/mapper/OpenApiAuctionHistoryMapper.java @@ -1,13 +1,12 @@ package until.the.eternity.auctionhistory.domain.mapper; +import java.time.Instant; +import java.util.List; import org.mapstruct.*; import until.the.eternity.auctionhistory.domain.entity.AuctionHistory; import until.the.eternity.auctionhistory.interfaces.external.dto.OpenApiAuctionHistoryResponse; import until.the.eternity.common.enums.ItemCategory; -import java.time.Instant; -import java.util.List; - @Mapper(componentModel = "spring", uses = OpenApiItemOptionMapper.class) public interface OpenApiAuctionHistoryMapper { diff --git a/src/main/java/until/the/eternity/auctionhistory/domain/repository/AuctionHistoryRepositoryPort.java b/src/main/java/until/the/eternity/auctionhistory/domain/repository/AuctionHistoryRepositoryPort.java index f8a19073..ca490fa1 100644 --- a/src/main/java/until/the/eternity/auctionhistory/domain/repository/AuctionHistoryRepositoryPort.java +++ b/src/main/java/until/the/eternity/auctionhistory/domain/repository/AuctionHistoryRepositoryPort.java @@ -1,16 +1,15 @@ package until.the.eternity.auctionhistory.domain.repository; +import java.time.Instant; +import java.util.List; +import java.util.Optional; +import java.util.Set; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import until.the.eternity.auctionhistory.domain.entity.AuctionHistory; import until.the.eternity.auctionhistory.interfaces.rest.dto.request.AuctionHistorySearchRequest; import until.the.eternity.common.enums.ItemCategory; -import java.time.Instant; -import java.util.List; -import java.util.Optional; -import java.util.Set; - /** 경매장 거래 내역 POJO Repository - Mock 또는 Stub 으로 대체해 단위 테스트 용이성 확보 */ public interface AuctionHistoryRepositoryPort { diff --git a/src/main/java/until/the/eternity/auctionhistory/domain/service/AuctionHistoryDuplicateChecker.java b/src/main/java/until/the/eternity/auctionhistory/domain/service/AuctionHistoryDuplicateChecker.java index dd43726c..bb844332 100644 --- a/src/main/java/until/the/eternity/auctionhistory/domain/service/AuctionHistoryDuplicateChecker.java +++ b/src/main/java/until/the/eternity/auctionhistory/domain/service/AuctionHistoryDuplicateChecker.java @@ -1,5 +1,9 @@ package until.the.eternity.auctionhistory.domain.service; +import java.time.Instant; +import java.util.List; +import java.util.OptionalInt; +import java.util.Set; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -8,11 +12,6 @@ import until.the.eternity.auctionhistory.interfaces.external.dto.OpenApiAuctionHistoryResponse; import until.the.eternity.common.enums.ItemCategory; -import java.time.Instant; -import java.util.List; -import java.util.OptionalInt; -import java.util.Set; - @Slf4j @Component @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/auctionhistory/domain/service/fetcher/AuctionHistoryFetcherPort.java b/src/main/java/until/the/eternity/auctionhistory/domain/service/fetcher/AuctionHistoryFetcherPort.java index cf00412a..5b649be4 100644 --- a/src/main/java/until/the/eternity/auctionhistory/domain/service/fetcher/AuctionHistoryFetcherPort.java +++ b/src/main/java/until/the/eternity/auctionhistory/domain/service/fetcher/AuctionHistoryFetcherPort.java @@ -1,10 +1,9 @@ package until.the.eternity.auctionhistory.domain.service.fetcher; +import java.util.List; import until.the.eternity.auctionhistory.interfaces.external.dto.OpenApiAuctionHistoryResponse; import until.the.eternity.common.enums.ItemCategory; -import java.util.List; - public interface AuctionHistoryFetcherPort { List fetch(ItemCategory category); } diff --git a/src/main/java/until/the/eternity/auctionhistory/domain/service/persister/AuctionHistoryPersisterPort.java b/src/main/java/until/the/eternity/auctionhistory/domain/service/persister/AuctionHistoryPersisterPort.java index 44f59205..636f4c2d 100644 --- a/src/main/java/until/the/eternity/auctionhistory/domain/service/persister/AuctionHistoryPersisterPort.java +++ b/src/main/java/until/the/eternity/auctionhistory/domain/service/persister/AuctionHistoryPersisterPort.java @@ -1,11 +1,10 @@ package until.the.eternity.auctionhistory.domain.service.persister; +import java.util.List; import until.the.eternity.auctionhistory.domain.entity.AuctionHistory; import until.the.eternity.auctionhistory.interfaces.external.dto.OpenApiAuctionHistoryResponse; import until.the.eternity.common.enums.ItemCategory; -import java.util.List; - public interface AuctionHistoryPersisterPort { List filterOutExisting( diff --git a/src/main/java/until/the/eternity/auctionhistory/infrastructure/persistence/AuctionHistoryJpaRepository.java b/src/main/java/until/the/eternity/auctionhistory/infrastructure/persistence/AuctionHistoryJpaRepository.java index bdb982ab..4215b1f2 100644 --- a/src/main/java/until/the/eternity/auctionhistory/infrastructure/persistence/AuctionHistoryJpaRepository.java +++ b/src/main/java/until/the/eternity/auctionhistory/infrastructure/persistence/AuctionHistoryJpaRepository.java @@ -1,5 +1,8 @@ package until.the.eternity.auctionhistory.infrastructure.persistence; +import java.time.Instant; +import java.util.List; +import java.util.Optional; import org.springframework.data.jpa.repository.EntityGraph; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; @@ -7,10 +10,6 @@ import org.springframework.stereotype.Repository; import until.the.eternity.auctionhistory.domain.entity.AuctionHistory; -import java.time.Instant; -import java.util.List; -import java.util.Optional; - @Repository public interface AuctionHistoryJpaRepository extends JpaRepository, JpaSpecificationExecutor { diff --git a/src/main/java/until/the/eternity/auctionhistory/infrastructure/persistence/AuctionHistoryQueryDslRepository.java b/src/main/java/until/the/eternity/auctionhistory/infrastructure/persistence/AuctionHistoryQueryDslRepository.java index e26045ba..2bcfcadb 100644 --- a/src/main/java/until/the/eternity/auctionhistory/infrastructure/persistence/AuctionHistoryQueryDslRepository.java +++ b/src/main/java/until/the/eternity/auctionhistory/infrastructure/persistence/AuctionHistoryQueryDslRepository.java @@ -8,6 +8,11 @@ import com.querydsl.core.types.dsl.NumberTemplate; import com.querydsl.jpa.JPAExpressions; import com.querydsl.jpa.impl.JPAQueryFactory; +import java.time.Instant; +import java.time.LocalDate; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -23,12 +28,6 @@ import until.the.eternity.auctionhistory.interfaces.rest.dto.request.PriceSearchRequest; import until.the.eternity.auctionitemoption.domain.entity.QAuctionHistoryItemOption; -import java.time.Instant; -import java.time.LocalDate; -import java.time.ZoneId; -import java.util.ArrayList; -import java.util.List; - @Component @RequiredArgsConstructor class AuctionHistoryQueryDslRepository { diff --git a/src/main/java/until/the/eternity/auctionhistory/infrastructure/persistence/AuctionHistoryRepositoryPortImpl.java b/src/main/java/until/the/eternity/auctionhistory/infrastructure/persistence/AuctionHistoryRepositoryPortImpl.java index 65428ed2..2b0cdf4d 100644 --- a/src/main/java/until/the/eternity/auctionhistory/infrastructure/persistence/AuctionHistoryRepositoryPortImpl.java +++ b/src/main/java/until/the/eternity/auctionhistory/infrastructure/persistence/AuctionHistoryRepositoryPortImpl.java @@ -1,6 +1,10 @@ package until.the.eternity.auctionhistory.infrastructure.persistence; import jakarta.persistence.EntityManager; +import java.time.Instant; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; @@ -12,11 +16,6 @@ import until.the.eternity.auctionhistory.interfaces.rest.dto.request.AuctionHistorySearchRequest; import until.the.eternity.common.enums.ItemCategory; -import java.time.Instant; -import java.util.HashSet; -import java.util.List; -import java.util.Optional; - /** AuctionHistoryRepository Interface 구현체 */ @Repository @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/auctionhistory/interfaces/external/dto/OpenApiAuctionHistoryListResponse.java b/src/main/java/until/the/eternity/auctionhistory/interfaces/external/dto/OpenApiAuctionHistoryListResponse.java index c49a6b2b..e194aeb7 100644 --- a/src/main/java/until/the/eternity/auctionhistory/interfaces/external/dto/OpenApiAuctionHistoryListResponse.java +++ b/src/main/java/until/the/eternity/auctionhistory/interfaces/external/dto/OpenApiAuctionHistoryListResponse.java @@ -1,7 +1,6 @@ package until.the.eternity.auctionhistory.interfaces.external.dto; import com.fasterxml.jackson.annotation.JsonProperty; - import java.util.List; public record OpenApiAuctionHistoryListResponse( diff --git a/src/main/java/until/the/eternity/auctionhistory/interfaces/external/dto/OpenApiAuctionHistoryResponse.java b/src/main/java/until/the/eternity/auctionhistory/interfaces/external/dto/OpenApiAuctionHistoryResponse.java index 65b73ca5..f41eb460 100644 --- a/src/main/java/until/the/eternity/auctionhistory/interfaces/external/dto/OpenApiAuctionHistoryResponse.java +++ b/src/main/java/until/the/eternity/auctionhistory/interfaces/external/dto/OpenApiAuctionHistoryResponse.java @@ -2,10 +2,9 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; -import until.the.eternity.auctionitemoption.domain.dto.external.OpenApiAuctionItemOptionResponse; - import java.time.Instant; import java.util.List; +import until.the.eternity.auctionitemoption.domain.dto.external.OpenApiAuctionItemOptionResponse; public record OpenApiAuctionHistoryResponse( @JsonProperty("item_name") String itemName, diff --git a/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/controller/AuctionHistoryController.java b/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/controller/AuctionHistoryController.java index f85cdcec..c67abc80 100644 --- a/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/controller/AuctionHistoryController.java +++ b/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/controller/AuctionHistoryController.java @@ -50,7 +50,8 @@ public ResponseEntity> findById @PreAuthorize("hasAnyRole('ADMIN', 'SUPER_ADMIN')") @Operation( summary = "경매장 거래 내역 배치 실행", - description = "Nexon Open API 경매장 거래 내역 모든 카테고리 데이터 INSERT 배치 실행. **[ADMIN, SUPER_ADMIN 전용]**") + description = + "Nexon Open API 경매장 거래 내역 모든 카테고리 데이터 INSERT 배치 실행. **[ADMIN, SUPER_ADMIN 전용]**") @ApiResponse(responseCode = "403", description = "권한 없음 (ADMIN, SUPER_ADMIN 전용)") public ResponseEntity triggerMinPriceBatch() { scheduler.fetchAndSaveAuctionHistoryAll(); diff --git a/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/dto/enums/SearchStandard.java b/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/dto/enums/SearchStandard.java index feb2c35e..ef005676 100644 --- a/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/dto/enums/SearchStandard.java +++ b/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/dto/enums/SearchStandard.java @@ -3,7 +3,6 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.v3.oas.annotations.media.Schema; - import java.util.Arrays; /** 검색 기준 (이상/이하/같음) */ diff --git a/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/dto/enums/SortDirection.java b/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/dto/enums/SortDirection.java index e6aacf98..82666061 100644 --- a/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/dto/enums/SortDirection.java +++ b/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/dto/enums/SortDirection.java @@ -3,7 +3,6 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.v3.oas.annotations.media.Schema; - import java.util.Arrays; /** 정렬 방향 (오름차순/내림차순) */ diff --git a/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/dto/response/AuctionHistoryDetailResponse.java b/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/dto/response/AuctionHistoryDetailResponse.java index d694c60c..082c562f 100644 --- a/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/dto/response/AuctionHistoryDetailResponse.java +++ b/src/main/java/until/the/eternity/auctionhistory/interfaces/rest/dto/response/AuctionHistoryDetailResponse.java @@ -1,7 +1,6 @@ package until.the.eternity.auctionhistory.interfaces.rest.dto.response; import com.fasterxml.jackson.annotation.JsonFormat; - import java.time.Instant; import java.util.List; diff --git a/src/main/java/until/the/eternity/auctionitem/domain/entity/AuctionRealtimeItem.java b/src/main/java/until/the/eternity/auctionitem/domain/entity/AuctionRealtimeItem.java index d93c2eab..ff498a80 100644 --- a/src/main/java/until/the/eternity/auctionitem/domain/entity/AuctionRealtimeItem.java +++ b/src/main/java/until/the/eternity/auctionitem/domain/entity/AuctionRealtimeItem.java @@ -1,10 +1,9 @@ package until.the.eternity.auctionitem.domain.entity; import jakarta.persistence.*; -import lombok.*; - import java.time.Instant; import java.util.List; +import lombok.*; /** 실시간 경매장에서 판매 중인 아이템 정보. V15 마이그레이션에서 auction_item → auction_realtime_item으로 변경됨. */ @Entity diff --git a/src/main/java/until/the/eternity/auctionitem/domain/entity/AuctionRealtimeItemOption.java b/src/main/java/until/the/eternity/auctionitem/domain/entity/AuctionRealtimeItemOption.java index 28ba2905..b0a651bf 100644 --- a/src/main/java/until/the/eternity/auctionitem/domain/entity/AuctionRealtimeItemOption.java +++ b/src/main/java/until/the/eternity/auctionitem/domain/entity/AuctionRealtimeItemOption.java @@ -1,13 +1,12 @@ package until.the.eternity.auctionitem.domain.entity; import jakarta.persistence.*; +import java.util.UUID; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; -import java.util.UUID; - /** 실시간 경매장 아이템(auction_realtime_item)에 연결된 아이템 옵션 정보. */ @Entity @Table(name = "auction_realtime_item_option") diff --git a/src/main/java/until/the/eternity/auctionitemoption/domain/entity/AuctionHistoryItemOption.java b/src/main/java/until/the/eternity/auctionitemoption/domain/entity/AuctionHistoryItemOption.java index 332605de..dddac912 100644 --- a/src/main/java/until/the/eternity/auctionitemoption/domain/entity/AuctionHistoryItemOption.java +++ b/src/main/java/until/the/eternity/auctionitemoption/domain/entity/AuctionHistoryItemOption.java @@ -1,14 +1,13 @@ package until.the.eternity.auctionitemoption.domain.entity; import jakarta.persistence.*; +import java.util.UUID; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import until.the.eternity.auctionhistory.domain.entity.AuctionHistory; -import java.util.UUID; - /** * 경매장 거래 내역(auction_history)에 연결된 아이템 옵션 정보. V15 마이그레이션에서 auction_item_option → * auction_history_item_option으로 변경됨. diff --git a/src/main/java/until/the/eternity/auctionrealtime/application/scheduler/AuctionRealtimeScheduler.java b/src/main/java/until/the/eternity/auctionrealtime/application/scheduler/AuctionRealtimeScheduler.java index 3b6c8486..1adc8e93 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/application/scheduler/AuctionRealtimeScheduler.java +++ b/src/main/java/until/the/eternity/auctionrealtime/application/scheduler/AuctionRealtimeScheduler.java @@ -1,5 +1,8 @@ package until.the.eternity.auctionrealtime.application.scheduler; +import java.time.Instant; +import java.util.*; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; @@ -12,10 +15,6 @@ import until.the.eternity.auctionrealtime.domain.service.fetcher.AuctionRealtimeFetcherPort.FetchResult; import until.the.eternity.common.enums.ItemCategory; -import java.time.Instant; -import java.util.*; -import java.util.stream.Collectors; - /** * 실시간 경매장 데이터 수집 스케줄러. * diff --git a/src/main/java/until/the/eternity/auctionrealtime/application/service/AuctionRealtimeService.java b/src/main/java/until/the/eternity/auctionrealtime/application/service/AuctionRealtimeService.java index c393adf3..c34da333 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/application/service/AuctionRealtimeService.java +++ b/src/main/java/until/the/eternity/auctionrealtime/application/service/AuctionRealtimeService.java @@ -1,5 +1,7 @@ package until.the.eternity.auctionrealtime.application.service; +import java.time.Instant; +import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; @@ -15,9 +17,6 @@ import until.the.eternity.common.enums.ItemCategory; import until.the.eternity.common.response.PageResponseDto; -import java.time.Instant; -import java.util.List; - /** 실시간 경매장 데이터 Service. */ @Slf4j @Service diff --git a/src/main/java/until/the/eternity/auctionrealtime/application/service/fetcher/AuctionRealtimeFetcher.java b/src/main/java/until/the/eternity/auctionrealtime/application/service/fetcher/AuctionRealtimeFetcher.java index 132e9d16..b2da4f82 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/application/service/fetcher/AuctionRealtimeFetcher.java +++ b/src/main/java/until/the/eternity/auctionrealtime/application/service/fetcher/AuctionRealtimeFetcher.java @@ -1,5 +1,7 @@ package until.the.eternity.auctionrealtime.application.service.fetcher; +import java.util.ArrayList; +import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -9,9 +11,6 @@ import until.the.eternity.auctionrealtime.interfaces.external.dto.OpenApiAuctionRealtimeResponse; import until.the.eternity.common.enums.ItemCategory; -import java.util.ArrayList; -import java.util.List; - /** * 실시간 경매장 데이터 Fetcher 구현체. * diff --git a/src/main/java/until/the/eternity/auctionrealtime/application/service/persister/AuctionRealtimePersister.java b/src/main/java/until/the/eternity/auctionrealtime/application/service/persister/AuctionRealtimePersister.java index 81a73e29..10e0a9fc 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/application/service/persister/AuctionRealtimePersister.java +++ b/src/main/java/until/the/eternity/auctionrealtime/application/service/persister/AuctionRealtimePersister.java @@ -1,5 +1,6 @@ package until.the.eternity.auctionrealtime.application.service.persister; +import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -9,8 +10,6 @@ import until.the.eternity.auctionrealtime.interfaces.external.dto.OpenApiAuctionRealtimeResponse; import until.the.eternity.common.enums.ItemCategory; -import java.util.List; - /** 실시간 경매장 데이터 Persister 구현체. */ @Slf4j @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/auctionrealtime/domain/mapper/AuctionRealtimeMapper.java b/src/main/java/until/the/eternity/auctionrealtime/domain/mapper/AuctionRealtimeMapper.java index f292d803..e373ae9c 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/domain/mapper/AuctionRealtimeMapper.java +++ b/src/main/java/until/the/eternity/auctionrealtime/domain/mapper/AuctionRealtimeMapper.java @@ -1,5 +1,6 @@ package until.the.eternity.auctionrealtime.domain.mapper; +import java.util.List; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import until.the.eternity.auctionitem.domain.entity.AuctionRealtimeItem; @@ -7,8 +8,6 @@ import until.the.eternity.auctionrealtime.interfaces.rest.dto.response.AuctionRealtimeDetailResponse; import until.the.eternity.auctionrealtime.interfaces.rest.dto.response.RealtimeItemOptionResponse; -import java.util.List; - /** AuctionRealtimeItem Entity to DTO mapper class. */ @Mapper(componentModel = "spring") public interface AuctionRealtimeMapper { diff --git a/src/main/java/until/the/eternity/auctionrealtime/domain/mapper/OpenApiAuctionRealtimeMapper.java b/src/main/java/until/the/eternity/auctionrealtime/domain/mapper/OpenApiAuctionRealtimeMapper.java index 8f65de6b..1409ba29 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/domain/mapper/OpenApiAuctionRealtimeMapper.java +++ b/src/main/java/until/the/eternity/auctionrealtime/domain/mapper/OpenApiAuctionRealtimeMapper.java @@ -1,14 +1,13 @@ package until.the.eternity.auctionrealtime.domain.mapper; +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.util.List; import org.mapstruct.*; import until.the.eternity.auctionitem.domain.entity.AuctionRealtimeItem; import until.the.eternity.auctionrealtime.interfaces.external.dto.OpenApiAuctionRealtimeResponse; import until.the.eternity.common.enums.ItemCategory; -import java.time.Instant; -import java.time.temporal.ChronoUnit; -import java.util.List; - /** OpenApiAuctionRealtimeResponse → AuctionRealtimeItem Entity 변환 Mapper. */ @Mapper(componentModel = "spring", uses = OpenApiRealtimeItemOptionMapper.class) public interface OpenApiAuctionRealtimeMapper { diff --git a/src/main/java/until/the/eternity/auctionrealtime/domain/repository/AuctionRealtimeItemRepositoryPort.java b/src/main/java/until/the/eternity/auctionrealtime/domain/repository/AuctionRealtimeItemRepositoryPort.java index 373499f7..1ff1e35a 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/domain/repository/AuctionRealtimeItemRepositoryPort.java +++ b/src/main/java/until/the/eternity/auctionrealtime/domain/repository/AuctionRealtimeItemRepositoryPort.java @@ -1,15 +1,14 @@ package until.the.eternity.auctionrealtime.domain.repository; +import java.time.Instant; +import java.util.List; +import java.util.Optional; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import until.the.eternity.auctionitem.domain.entity.AuctionRealtimeItem; import until.the.eternity.auctionrealtime.interfaces.rest.dto.request.AuctionRealtimeSearchRequest; import until.the.eternity.common.enums.ItemCategory; -import java.time.Instant; -import java.util.List; -import java.util.Optional; - /** AuctionRealtimeItem Repository Port (Hexagonal Architecture). */ public interface AuctionRealtimeItemRepositoryPort { diff --git a/src/main/java/until/the/eternity/auctionrealtime/domain/service/fetcher/AuctionRealtimeFetcherPort.java b/src/main/java/until/the/eternity/auctionrealtime/domain/service/fetcher/AuctionRealtimeFetcherPort.java index 161e47ea..31220874 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/domain/service/fetcher/AuctionRealtimeFetcherPort.java +++ b/src/main/java/until/the/eternity/auctionrealtime/domain/service/fetcher/AuctionRealtimeFetcherPort.java @@ -1,10 +1,9 @@ package until.the.eternity.auctionrealtime.domain.service.fetcher; +import java.util.List; import until.the.eternity.auctionrealtime.interfaces.external.dto.OpenApiAuctionRealtimeResponse; import until.the.eternity.common.enums.ItemCategory; -import java.util.List; - /** 실시간 경매장 데이터 Fetcher Port. */ public interface AuctionRealtimeFetcherPort { diff --git a/src/main/java/until/the/eternity/auctionrealtime/domain/service/persister/AuctionRealtimePersisterPort.java b/src/main/java/until/the/eternity/auctionrealtime/domain/service/persister/AuctionRealtimePersisterPort.java index f5b6201e..41357a28 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/domain/service/persister/AuctionRealtimePersisterPort.java +++ b/src/main/java/until/the/eternity/auctionrealtime/domain/service/persister/AuctionRealtimePersisterPort.java @@ -1,11 +1,10 @@ package until.the.eternity.auctionrealtime.domain.service.persister; +import java.util.List; import until.the.eternity.auctionitem.domain.entity.AuctionRealtimeItem; import until.the.eternity.auctionrealtime.interfaces.external.dto.OpenApiAuctionRealtimeResponse; import until.the.eternity.common.enums.ItemCategory; -import java.util.List; - /** 실시간 경매장 데이터 Persister Port. */ public interface AuctionRealtimePersisterPort { diff --git a/src/main/java/until/the/eternity/auctionrealtime/infrastructure/persistence/AuctionRealtimeItemRepository.java b/src/main/java/until/the/eternity/auctionrealtime/infrastructure/persistence/AuctionRealtimeItemRepository.java index be29cbf2..53cbdbf4 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/infrastructure/persistence/AuctionRealtimeItemRepository.java +++ b/src/main/java/until/the/eternity/auctionrealtime/infrastructure/persistence/AuctionRealtimeItemRepository.java @@ -1,13 +1,12 @@ package until.the.eternity.auctionrealtime.infrastructure.persistence; +import java.time.Instant; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import until.the.eternity.auctionitem.domain.entity.AuctionRealtimeItem; -import java.time.Instant; - /** AuctionRealtimeItem JPA Repository. */ public interface AuctionRealtimeItemRepository extends JpaRepository { diff --git a/src/main/java/until/the/eternity/auctionrealtime/infrastructure/persistence/AuctionRealtimeItemRepositoryPortImpl.java b/src/main/java/until/the/eternity/auctionrealtime/infrastructure/persistence/AuctionRealtimeItemRepositoryPortImpl.java index b1b7c333..6da0da26 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/infrastructure/persistence/AuctionRealtimeItemRepositoryPortImpl.java +++ b/src/main/java/until/the/eternity/auctionrealtime/infrastructure/persistence/AuctionRealtimeItemRepositoryPortImpl.java @@ -1,6 +1,9 @@ package until.the.eternity.auctionrealtime.infrastructure.persistence; import jakarta.persistence.EntityManager; +import java.time.Instant; +import java.util.List; +import java.util.Optional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; @@ -11,10 +14,6 @@ import until.the.eternity.auctionrealtime.interfaces.rest.dto.request.AuctionRealtimeSearchRequest; import until.the.eternity.common.enums.ItemCategory; -import java.time.Instant; -import java.util.List; -import java.util.Optional; - /** AuctionRealtimeItemRepositoryPort 구현체. */ @Slf4j @Repository diff --git a/src/main/java/until/the/eternity/auctionrealtime/infrastructure/persistence/AuctionRealtimeQueryDslRepository.java b/src/main/java/until/the/eternity/auctionrealtime/infrastructure/persistence/AuctionRealtimeQueryDslRepository.java index 6df0b688..14e39bb1 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/infrastructure/persistence/AuctionRealtimeQueryDslRepository.java +++ b/src/main/java/until/the/eternity/auctionrealtime/infrastructure/persistence/AuctionRealtimeQueryDslRepository.java @@ -8,6 +8,8 @@ import com.querydsl.core.types.dsl.NumberTemplate; import com.querydsl.jpa.JPAExpressions; import com.querydsl.jpa.impl.JPAQueryFactory; +import java.util.ArrayList; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -22,9 +24,6 @@ import until.the.eternity.auctionitem.domain.entity.QAuctionRealtimeItemOption; import until.the.eternity.auctionrealtime.interfaces.rest.dto.request.AuctionRealtimeSearchRequest; -import java.util.ArrayList; -import java.util.List; - @Component @RequiredArgsConstructor class AuctionRealtimeQueryDslRepository { diff --git a/src/main/java/until/the/eternity/auctionrealtime/interfaces/external/dto/OpenApiAuctionRealtimeListResponse.java b/src/main/java/until/the/eternity/auctionrealtime/interfaces/external/dto/OpenApiAuctionRealtimeListResponse.java index 114de80e..980fc9e3 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/interfaces/external/dto/OpenApiAuctionRealtimeListResponse.java +++ b/src/main/java/until/the/eternity/auctionrealtime/interfaces/external/dto/OpenApiAuctionRealtimeListResponse.java @@ -1,7 +1,6 @@ package until.the.eternity.auctionrealtime.interfaces.external.dto; import com.fasterxml.jackson.annotation.JsonProperty; - import java.util.List; /** Nexon Open API /auction/list 응답 리스트 DTO. */ diff --git a/src/main/java/until/the/eternity/auctionrealtime/interfaces/external/dto/OpenApiAuctionRealtimeResponse.java b/src/main/java/until/the/eternity/auctionrealtime/interfaces/external/dto/OpenApiAuctionRealtimeResponse.java index 2b337bfe..28d59235 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/interfaces/external/dto/OpenApiAuctionRealtimeResponse.java +++ b/src/main/java/until/the/eternity/auctionrealtime/interfaces/external/dto/OpenApiAuctionRealtimeResponse.java @@ -2,10 +2,9 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; -import until.the.eternity.auctionitemoption.domain.dto.external.OpenApiAuctionItemOptionResponse; - import java.time.Instant; import java.util.List; +import until.the.eternity.auctionitemoption.domain.dto.external.OpenApiAuctionItemOptionResponse; /** Nexon Open API /auction/list 응답 DTO. 현재 경매장에서 판매 중인 아이템 정보. */ public record OpenApiAuctionRealtimeResponse( diff --git a/src/main/java/until/the/eternity/auctionrealtime/interfaces/rest/dto/request/RealtimeSortField.java b/src/main/java/until/the/eternity/auctionrealtime/interfaces/rest/dto/request/RealtimeSortField.java index 06e233cf..d59ce5dd 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/interfaces/rest/dto/request/RealtimeSortField.java +++ b/src/main/java/until/the/eternity/auctionrealtime/interfaces/rest/dto/request/RealtimeSortField.java @@ -3,7 +3,6 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.v3.oas.annotations.media.Schema; - import java.util.Arrays; /** 실시간 경매장 정렬 필드 */ diff --git a/src/main/java/until/the/eternity/auctionrealtime/interfaces/rest/dto/response/AuctionRealtimeDetailResponse.java b/src/main/java/until/the/eternity/auctionrealtime/interfaces/rest/dto/response/AuctionRealtimeDetailResponse.java index a3d5a9e0..ba184764 100644 --- a/src/main/java/until/the/eternity/auctionrealtime/interfaces/rest/dto/response/AuctionRealtimeDetailResponse.java +++ b/src/main/java/until/the/eternity/auctionrealtime/interfaces/rest/dto/response/AuctionRealtimeDetailResponse.java @@ -1,7 +1,6 @@ package until.the.eternity.auctionrealtime.interfaces.rest.dto.response; import com.fasterxml.jackson.annotation.JsonFormat; - import java.time.Instant; import java.util.List; diff --git a/src/main/java/until/the/eternity/auctionsearchoption/application/service/AuctionSearchOptionService.java b/src/main/java/until/the/eternity/auctionsearchoption/application/service/AuctionSearchOptionService.java index 28e70a27..aec4e464 100644 --- a/src/main/java/until/the/eternity/auctionsearchoption/application/service/AuctionSearchOptionService.java +++ b/src/main/java/until/the/eternity/auctionsearchoption/application/service/AuctionSearchOptionService.java @@ -2,6 +2,8 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.List; +import java.util.Map; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -11,9 +13,6 @@ import until.the.eternity.auctionsearchoption.interfaces.rest.dto.response.FieldMetadata; import until.the.eternity.auctionsearchoption.interfaces.rest.dto.response.SearchOptionMetadataResponse; -import java.util.List; -import java.util.Map; - @Slf4j @Service @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/auctionsearchoption/domain/entity/AuctionSearchOptionMetadata.java b/src/main/java/until/the/eternity/auctionsearchoption/domain/entity/AuctionSearchOptionMetadata.java index 5356db73..21a9e82b 100644 --- a/src/main/java/until/the/eternity/auctionsearchoption/domain/entity/AuctionSearchOptionMetadata.java +++ b/src/main/java/until/the/eternity/auctionsearchoption/domain/entity/AuctionSearchOptionMetadata.java @@ -1,14 +1,13 @@ package until.the.eternity.auctionsearchoption.domain.entity; import jakarta.persistence.*; +import java.time.LocalDateTime; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import org.hibernate.annotations.JdbcTypeCode; import org.hibernate.type.SqlTypes; -import java.time.LocalDateTime; - @Entity @Table(name = "auction_search_option_metadata") @Getter diff --git a/src/main/java/until/the/eternity/auctionsearchoption/domain/repository/AuctionSearchOptionRepositoryPort.java b/src/main/java/until/the/eternity/auctionsearchoption/domain/repository/AuctionSearchOptionRepositoryPort.java index fe4e89b0..971be29e 100644 --- a/src/main/java/until/the/eternity/auctionsearchoption/domain/repository/AuctionSearchOptionRepositoryPort.java +++ b/src/main/java/until/the/eternity/auctionsearchoption/domain/repository/AuctionSearchOptionRepositoryPort.java @@ -1,8 +1,7 @@ package until.the.eternity.auctionsearchoption.domain.repository; -import until.the.eternity.auctionsearchoption.domain.entity.AuctionSearchOptionMetadata; - import java.util.List; +import until.the.eternity.auctionsearchoption.domain.entity.AuctionSearchOptionMetadata; public interface AuctionSearchOptionRepositoryPort { diff --git a/src/main/java/until/the/eternity/auctionsearchoption/infrastructure/persistence/AuctionSearchOptionJpaRepository.java b/src/main/java/until/the/eternity/auctionsearchoption/infrastructure/persistence/AuctionSearchOptionJpaRepository.java index c18fd9e5..e7074578 100644 --- a/src/main/java/until/the/eternity/auctionsearchoption/infrastructure/persistence/AuctionSearchOptionJpaRepository.java +++ b/src/main/java/until/the/eternity/auctionsearchoption/infrastructure/persistence/AuctionSearchOptionJpaRepository.java @@ -1,11 +1,10 @@ package until.the.eternity.auctionsearchoption.infrastructure.persistence; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import until.the.eternity.auctionsearchoption.domain.entity.AuctionSearchOptionMetadata; -import java.util.List; - @Repository interface AuctionSearchOptionJpaRepository extends JpaRepository { diff --git a/src/main/java/until/the/eternity/auctionsearchoption/infrastructure/persistence/AuctionSearchOptionRepositoryPortImpl.java b/src/main/java/until/the/eternity/auctionsearchoption/infrastructure/persistence/AuctionSearchOptionRepositoryPortImpl.java index 2440e821..850f43f4 100644 --- a/src/main/java/until/the/eternity/auctionsearchoption/infrastructure/persistence/AuctionSearchOptionRepositoryPortImpl.java +++ b/src/main/java/until/the/eternity/auctionsearchoption/infrastructure/persistence/AuctionSearchOptionRepositoryPortImpl.java @@ -1,12 +1,11 @@ package until.the.eternity.auctionsearchoption.infrastructure.persistence; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import until.the.eternity.auctionsearchoption.domain.entity.AuctionSearchOptionMetadata; import until.the.eternity.auctionsearchoption.domain.repository.AuctionSearchOptionRepositoryPort; -import java.util.List; - @Component @RequiredArgsConstructor class AuctionSearchOptionRepositoryPortImpl implements AuctionSearchOptionRepositoryPort { diff --git a/src/main/java/until/the/eternity/auctionsearchoption/interfaces/rest/AuctionSearchOptionController.java b/src/main/java/until/the/eternity/auctionsearchoption/interfaces/rest/AuctionSearchOptionController.java index 0231a36a..8ad6484b 100644 --- a/src/main/java/until/the/eternity/auctionsearchoption/interfaces/rest/AuctionSearchOptionController.java +++ b/src/main/java/until/the/eternity/auctionsearchoption/interfaces/rest/AuctionSearchOptionController.java @@ -2,6 +2,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -11,8 +12,6 @@ import until.the.eternity.auctionsearchoption.interfaces.rest.dto.response.SearchOptionMetadataResponse; import until.the.eternity.common.response.ApiResponse; -import java.util.List; - @Tag(name = "Auction Search Option", description = "경매 검색 옵션 API") @RestController @RequestMapping("/api/search-option") diff --git a/src/main/java/until/the/eternity/auctionsearchoption/interfaces/rest/dto/response/FieldMetadata.java b/src/main/java/until/the/eternity/auctionsearchoption/interfaces/rest/dto/response/FieldMetadata.java index 43e5d916..8b8b6ca1 100644 --- a/src/main/java/until/the/eternity/auctionsearchoption/interfaces/rest/dto/response/FieldMetadata.java +++ b/src/main/java/until/the/eternity/auctionsearchoption/interfaces/rest/dto/response/FieldMetadata.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.v3.oas.annotations.media.Schema; - import java.util.List; @Schema(description = "검색 조건 필드 메타데이터") diff --git a/src/main/java/until/the/eternity/auctionsearchoption/interfaces/rest/dto/response/SearchOptionMetadataResponse.java b/src/main/java/until/the/eternity/auctionsearchoption/interfaces/rest/dto/response/SearchOptionMetadataResponse.java index 02c318fb..04581ef7 100644 --- a/src/main/java/until/the/eternity/auctionsearchoption/interfaces/rest/dto/response/SearchOptionMetadataResponse.java +++ b/src/main/java/until/the/eternity/auctionsearchoption/interfaces/rest/dto/response/SearchOptionMetadataResponse.java @@ -1,7 +1,6 @@ package until.the.eternity.auctionsearchoption.interfaces.rest.dto.response; import io.swagger.v3.oas.annotations.media.Schema; - import java.util.Map; @Schema(description = "검색 옵션 메타데이터 응답") diff --git a/src/main/java/until/the/eternity/batchlog/application/service/BatchExecutionLogService.java b/src/main/java/until/the/eternity/batchlog/application/service/BatchExecutionLogService.java new file mode 100644 index 00000000..7f108b64 --- /dev/null +++ b/src/main/java/until/the/eternity/batchlog/application/service/BatchExecutionLogService.java @@ -0,0 +1,67 @@ +package until.the.eternity.batchlog.application.service; + +import java.time.LocalDateTime; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import until.the.eternity.batchlog.domain.entity.BatchExecutionLog; +import until.the.eternity.batchlog.domain.enums.BatchType; +import until.the.eternity.batchlog.domain.enums.TriggerType; +import until.the.eternity.batchlog.domain.repository.BatchExecutionLogRepositoryPort; + +@Service +@RequiredArgsConstructor +public class BatchExecutionLogService { + + private final BatchExecutionLogRepositoryPort repository; + + @Transactional(propagation = Propagation.REQUIRES_NEW) + public void saveSuccess( + BatchType batchType, + TriggerType triggerType, + LocalDateTime startedAt, + int recordCount, + String message) { + BatchExecutionLog log = + BatchExecutionLog.builder() + .batchType(batchType) + .triggerType(triggerType) + .startedAt(startedAt) + .completedAt(LocalDateTime.now()) + .isSuccess(true) + .recordCount(recordCount) + .message(message) + .build(); + repository.save(log); + } + + @Transactional(propagation = Propagation.REQUIRES_NEW) + public void saveFailure( + BatchType batchType, TriggerType triggerType, LocalDateTime startedAt, String message) { + BatchExecutionLog log = + BatchExecutionLog.builder() + .batchType(batchType) + .triggerType(triggerType) + .startedAt(startedAt) + .completedAt(LocalDateTime.now()) + .isSuccess(false) + .recordCount(0) + .message(message) + .build(); + repository.save(log); + } + + @Transactional(readOnly = true) + public Page findByBatchType(BatchType batchType, int page, int size) { + return repository.findByBatchType(batchType, PageRequest.of(page - 1, size)); + } + + @Transactional(readOnly = true) + public List findLatestPerBatchType() { + return repository.findLatestPerBatchType(); + } +} diff --git a/src/main/java/until/the/eternity/batchlog/domain/entity/BatchExecutionLog.java b/src/main/java/until/the/eternity/batchlog/domain/entity/BatchExecutionLog.java new file mode 100644 index 00000000..2eb8c424 --- /dev/null +++ b/src/main/java/until/the/eternity/batchlog/domain/entity/BatchExecutionLog.java @@ -0,0 +1,61 @@ +package until.the.eternity.batchlog.domain.entity; + +import jakarta.persistence.*; +import java.time.LocalDateTime; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import until.the.eternity.batchlog.domain.enums.BatchType; +import until.the.eternity.batchlog.domain.enums.TriggerType; + +@Entity +@Table(name = "batch_execution_log") +@Getter +@NoArgsConstructor +public class BatchExecutionLog { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Enumerated(EnumType.STRING) + @Column(name = "batch_type", nullable = false, length = 50) + private BatchType batchType; + + @Enumerated(EnumType.ORDINAL) + @Column(name = "trigger_type", nullable = false) + private TriggerType triggerType; + + @Column(name = "started_at", nullable = false) + private LocalDateTime startedAt; + + @Column(name = "completed_at") + private LocalDateTime completedAt; + + @Column(name = "is_success", nullable = false) + private boolean isSuccess; + + @Column(name = "record_count", nullable = false) + private int recordCount; + + @Column(name = "message", length = 1000) + private String message; + + @Builder + public BatchExecutionLog( + BatchType batchType, + TriggerType triggerType, + LocalDateTime startedAt, + LocalDateTime completedAt, + boolean isSuccess, + int recordCount, + String message) { + this.batchType = batchType; + this.triggerType = triggerType; + this.startedAt = startedAt; + this.completedAt = completedAt; + this.isSuccess = isSuccess; + this.recordCount = recordCount; + this.message = message; + } +} diff --git a/src/main/java/until/the/eternity/batchlog/domain/enums/BatchType.java b/src/main/java/until/the/eternity/batchlog/domain/enums/BatchType.java new file mode 100644 index 00000000..c0122db2 --- /dev/null +++ b/src/main/java/until/the/eternity/batchlog/domain/enums/BatchType.java @@ -0,0 +1,7 @@ +package until.the.eternity.batchlog.domain.enums; + +public enum BatchType { + AUCTION_HISTORY_BATCH, + ITEM_INFO_SYNC, + METALWARE_ATTRIBUTE_SYNC +} diff --git a/src/main/java/until/the/eternity/batchlog/domain/enums/TriggerType.java b/src/main/java/until/the/eternity/batchlog/domain/enums/TriggerType.java new file mode 100644 index 00000000..064f90a6 --- /dev/null +++ b/src/main/java/until/the/eternity/batchlog/domain/enums/TriggerType.java @@ -0,0 +1,6 @@ +package until.the.eternity.batchlog.domain.enums; + +public enum TriggerType { + AUTO, // 0: 스케줄러 자동 실행 + MANUAL // 1: API 수동 실행 +} diff --git a/src/main/java/until/the/eternity/batchlog/domain/repository/BatchExecutionLogRepositoryPort.java b/src/main/java/until/the/eternity/batchlog/domain/repository/BatchExecutionLogRepositoryPort.java new file mode 100644 index 00000000..694bbde8 --- /dev/null +++ b/src/main/java/until/the/eternity/batchlog/domain/repository/BatchExecutionLogRepositoryPort.java @@ -0,0 +1,16 @@ +package until.the.eternity.batchlog.domain.repository; + +import java.util.List; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import until.the.eternity.batchlog.domain.entity.BatchExecutionLog; +import until.the.eternity.batchlog.domain.enums.BatchType; + +public interface BatchExecutionLogRepositoryPort { + + void save(BatchExecutionLog log); + + Page findByBatchType(BatchType batchType, Pageable pageable); + + List findLatestPerBatchType(); +} diff --git a/src/main/java/until/the/eternity/batchlog/infrastructure/persistence/BatchExecutionLogJpaRepository.java b/src/main/java/until/the/eternity/batchlog/infrastructure/persistence/BatchExecutionLogJpaRepository.java new file mode 100644 index 00000000..0def2940 --- /dev/null +++ b/src/main/java/until/the/eternity/batchlog/infrastructure/persistence/BatchExecutionLogJpaRepository.java @@ -0,0 +1,16 @@ +package until.the.eternity.batchlog.infrastructure.persistence; + +import java.util.Optional; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import until.the.eternity.batchlog.domain.entity.BatchExecutionLog; +import until.the.eternity.batchlog.domain.enums.BatchType; + +public interface BatchExecutionLogJpaRepository extends JpaRepository { + + Page findByBatchTypeOrderByStartedAtDesc( + BatchType batchType, Pageable pageable); + + Optional findTopByBatchTypeOrderByStartedAtDesc(BatchType batchType); +} diff --git a/src/main/java/until/the/eternity/batchlog/infrastructure/persistence/BatchExecutionLogRepositoryPortImpl.java b/src/main/java/until/the/eternity/batchlog/infrastructure/persistence/BatchExecutionLogRepositoryPortImpl.java new file mode 100644 index 00000000..7ece29b3 --- /dev/null +++ b/src/main/java/until/the/eternity/batchlog/infrastructure/persistence/BatchExecutionLogRepositoryPortImpl.java @@ -0,0 +1,38 @@ +package until.the.eternity.batchlog.infrastructure.persistence; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Repository; +import until.the.eternity.batchlog.domain.entity.BatchExecutionLog; +import until.the.eternity.batchlog.domain.enums.BatchType; +import until.the.eternity.batchlog.domain.repository.BatchExecutionLogRepositoryPort; + +@Repository +@RequiredArgsConstructor +public class BatchExecutionLogRepositoryPortImpl implements BatchExecutionLogRepositoryPort { + + private final BatchExecutionLogJpaRepository jpaRepository; + + @Override + public void save(BatchExecutionLog log) { + jpaRepository.save(log); + } + + @Override + public Page findByBatchType(BatchType batchType, Pageable pageable) { + return jpaRepository.findByBatchTypeOrderByStartedAtDesc(batchType, pageable); + } + + @Override + public List findLatestPerBatchType() { + return Arrays.stream(BatchType.values()) + .map(jpaRepository::findTopByBatchTypeOrderByStartedAtDesc) + .filter(java.util.Optional::isPresent) + .map(java.util.Optional::get) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/until/the/eternity/batchlog/interfaces/rest/controller/BatchExecutionLogController.java b/src/main/java/until/the/eternity/batchlog/interfaces/rest/controller/BatchExecutionLogController.java new file mode 100644 index 00000000..3e44b8e5 --- /dev/null +++ b/src/main/java/until/the/eternity/batchlog/interfaces/rest/controller/BatchExecutionLogController.java @@ -0,0 +1,57 @@ +package until.the.eternity.batchlog.interfaces.rest.controller; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import until.the.eternity.batchlog.application.service.BatchExecutionLogService; +import until.the.eternity.batchlog.domain.entity.BatchExecutionLog; +import until.the.eternity.batchlog.domain.enums.BatchType; +import until.the.eternity.batchlog.interfaces.rest.dto.response.BatchExecutionLogResponse; +import until.the.eternity.common.response.PageResponseDto; + +@RestController +@RequestMapping("/api/batch-logs") +@RequiredArgsConstructor +@Tag(name = "Batch Execution Log", description = "배치 실행 로그 조회 API") +public class BatchExecutionLogController { + + private final BatchExecutionLogService batchExecutionLogService; + + @GetMapping + @PreAuthorize("hasAnyRole('ADMIN', 'SUPER_ADMIN')") + @Operation( + summary = "배치 종류별 실행 로그 페이지네이션 조회", + description = "특정 배치 종류의 실행 로그를 최신순으로 페이지네이션하여 조회합니다. **[ADMIN, SUPER_ADMIN 전용]**") + @ApiResponse(responseCode = "403", description = "권한 없음 (ADMIN, SUPER_ADMIN 전용)") + public ResponseEntity> getBatchLogs( + @RequestParam BatchType batchType, + @RequestParam(defaultValue = "1") @Min(1) int page, + @RequestParam(defaultValue = "20") @Min(10) @Max(50) int size) { + Page result = + batchExecutionLogService.findByBatchType(batchType, page, size); + return ResponseEntity.ok(PageResponseDto.of(result.map(BatchExecutionLogResponse::from))); + } + + @GetMapping("/latest") + @PreAuthorize("hasAnyRole('ADMIN', 'SUPER_ADMIN')") + @Operation( + summary = "배치 종류별 최신 실행 로그 조회", + description = + "각 배치 종류(AUCTION_HISTORY_BATCH, ITEM_INFO_SYNC, METALWARE_ATTRIBUTE_SYNC)의 가장 최근 실행 로그를 하나씩 조회합니다. **[ADMIN, SUPER_ADMIN 전용]**") + @ApiResponse(responseCode = "403", description = "권한 없음 (ADMIN, SUPER_ADMIN 전용)") + public ResponseEntity> getLatestBatchLogs() { + List result = batchExecutionLogService.findLatestPerBatchType(); + return ResponseEntity.ok(result.stream().map(BatchExecutionLogResponse::from).toList()); + } +} diff --git a/src/main/java/until/the/eternity/batchlog/interfaces/rest/dto/response/BatchExecutionLogResponse.java b/src/main/java/until/the/eternity/batchlog/interfaces/rest/dto/response/BatchExecutionLogResponse.java new file mode 100644 index 00000000..edb134f8 --- /dev/null +++ b/src/main/java/until/the/eternity/batchlog/interfaces/rest/dto/response/BatchExecutionLogResponse.java @@ -0,0 +1,31 @@ +package until.the.eternity.batchlog.interfaces.rest.dto.response; + +import io.swagger.v3.oas.annotations.media.Schema; +import java.time.LocalDateTime; +import until.the.eternity.batchlog.domain.entity.BatchExecutionLog; +import until.the.eternity.batchlog.domain.enums.BatchType; +import until.the.eternity.batchlog.domain.enums.TriggerType; + +@Schema(description = "배치 실행 로그 응답 DTO") +public record BatchExecutionLogResponse( + @Schema(description = "로그 ID") Long id, + @Schema(description = "배치 종류") BatchType batchType, + @Schema(description = "실행 유형 (AUTO: 자동, MANUAL: 수동)") TriggerType triggerType, + @Schema(description = "실행 시작 시각") LocalDateTime startedAt, + @Schema(description = "실행 완료 시각 (null이면 미완료)") LocalDateTime completedAt, + @Schema(description = "성공 여부") boolean isSuccess, + @Schema(description = "처리 건수") int recordCount, + @Schema(description = "결과 메시지") String message) { + + public static BatchExecutionLogResponse from(BatchExecutionLog entity) { + return new BatchExecutionLogResponse( + entity.getId(), + entity.getBatchType(), + entity.getTriggerType(), + entity.getStartedAt(), + entity.getCompletedAt(), + entity.isSuccess(), + entity.getRecordCount(), + entity.getMessage()); + } +} diff --git a/src/main/java/until/the/eternity/common/annotation/BatchLog.java b/src/main/java/until/the/eternity/common/annotation/BatchLog.java new file mode 100644 index 00000000..09776641 --- /dev/null +++ b/src/main/java/until/the/eternity/common/annotation/BatchLog.java @@ -0,0 +1,12 @@ +package until.the.eternity.common.annotation; + +import java.lang.annotation.*; +import until.the.eternity.batchlog.domain.enums.BatchType; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface BatchLog { + + BatchType type(); +} diff --git a/src/main/java/until/the/eternity/common/aspect/BatchExecutionLoggingAspect.java b/src/main/java/until/the/eternity/common/aspect/BatchExecutionLoggingAspect.java new file mode 100644 index 00000000..6644d3b3 --- /dev/null +++ b/src/main/java/until/the/eternity/common/aspect/BatchExecutionLoggingAspect.java @@ -0,0 +1,81 @@ +package until.the.eternity.common.aspect; + +import java.time.LocalDateTime; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.springframework.core.annotation.Order; +import org.springframework.security.authentication.AnonymousAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Component; +import until.the.eternity.batchlog.application.service.BatchExecutionLogService; +import until.the.eternity.batchlog.domain.enums.BatchType; +import until.the.eternity.batchlog.domain.enums.TriggerType; +import until.the.eternity.common.annotation.BatchLog; +import until.the.eternity.iteminfo.interfaces.rest.dto.response.ItemInfoSyncResponse; + +@Slf4j +@Aspect +@Order(1) +@Component +@RequiredArgsConstructor +public class BatchExecutionLoggingAspect { + + private static final int MESSAGE_MAX_LENGTH = 1000; + + private final BatchExecutionLogService batchExecutionLogService; + + @Around("@annotation(batchLog)") + public Object log(ProceedingJoinPoint pjp, BatchLog batchLog) throws Throwable { + TriggerType triggerType = detectTriggerType(); + LocalDateTime startedAt = LocalDateTime.now(); + + try { + Object result = pjp.proceed(); + int count = extractCount(result); + String message = buildSuccessMessage(batchLog.type(), count); + batchExecutionLogService.saveSuccess( + batchLog.type(), triggerType, startedAt, count, message); + return result; + } catch (Exception e) { + String rawMessage = "실패 사유: " + e.getMessage(); + String message = + rawMessage.length() > MESSAGE_MAX_LENGTH + ? rawMessage.substring(0, MESSAGE_MAX_LENGTH) + : rawMessage; + batchExecutionLogService.saveFailure(batchLog.type(), triggerType, startedAt, message); + throw e; + } + } + + private TriggerType detectTriggerType() { + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + if (auth != null + && auth.isAuthenticated() + && !(auth instanceof AnonymousAuthenticationToken)) { + return TriggerType.MANUAL; + } + return TriggerType.AUTO; + } + + private int extractCount(Object result) { + if (result instanceof Integer i) { + return i; + } + if (result instanceof ItemInfoSyncResponse r) { + return r.syncedCount(); + } + return 0; + } + + private String buildSuccessMessage(BatchType batchType, int count) { + return switch (batchType) { + case AUCTION_HISTORY_BATCH -> String.format("경매 내역 총 %,d건 저장 완료", count); + case ITEM_INFO_SYNC -> String.format("아이템 정보 %,d건 동기화 완료", count); + case METALWARE_ATTRIBUTE_SYNC -> String.format("세공 능력치 정보 %,d건 동기화 완료", count); + }; + } +} diff --git a/src/main/java/until/the/eternity/common/enums/ItemCategory.java b/src/main/java/until/the/eternity/common/enums/ItemCategory.java index ca9ee313..6b8ab078 100644 --- a/src/main/java/until/the/eternity/common/enums/ItemCategory.java +++ b/src/main/java/until/the/eternity/common/enums/ItemCategory.java @@ -1,12 +1,11 @@ package until.the.eternity.common.enums; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - import java.util.Arrays; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; +import lombok.Getter; +import lombok.RequiredArgsConstructor; @Getter @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/common/enums/SortDirection.java b/src/main/java/until/the/eternity/common/enums/SortDirection.java index 4a797556..5e688da2 100644 --- a/src/main/java/until/the/eternity/common/enums/SortDirection.java +++ b/src/main/java/until/the/eternity/common/enums/SortDirection.java @@ -3,9 +3,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.v3.oas.annotations.media.Schema; -import org.springframework.data.domain.Sort; - import java.util.Arrays; +import org.springframework.data.domain.Sort; /** 정렬 방향 (오름차순/내림차순) */ @Schema(description = "정렬 방향", enumAsRef = true) diff --git a/src/main/java/until/the/eternity/common/enums/SortField.java b/src/main/java/until/the/eternity/common/enums/SortField.java index 3c26de2b..704d79d5 100644 --- a/src/main/java/until/the/eternity/common/enums/SortField.java +++ b/src/main/java/until/the/eternity/common/enums/SortField.java @@ -3,7 +3,6 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.v3.oas.annotations.media.Schema; - import java.util.Arrays; /** 정렬 필드 */ diff --git a/src/main/java/until/the/eternity/common/exception/GlobalExceptionCode.java b/src/main/java/until/the/eternity/common/exception/GlobalExceptionCode.java index 1169e930..21c217b0 100644 --- a/src/main/java/until/the/eternity/common/exception/GlobalExceptionCode.java +++ b/src/main/java/until/the/eternity/common/exception/GlobalExceptionCode.java @@ -1,11 +1,11 @@ package until.the.eternity.common.exception; +import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR; + import lombok.Getter; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; -import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR; - @Getter @RequiredArgsConstructor public enum GlobalExceptionCode implements ExceptionCode { diff --git a/src/main/java/until/the/eternity/common/exception/GlobalExceptionHandler.java b/src/main/java/until/the/eternity/common/exception/GlobalExceptionHandler.java index bc069d00..4cf5af10 100644 --- a/src/main/java/until/the/eternity/common/exception/GlobalExceptionHandler.java +++ b/src/main/java/until/the/eternity/common/exception/GlobalExceptionHandler.java @@ -1,5 +1,7 @@ package until.the.eternity.common.exception; +import static until.the.eternity.common.exception.GlobalExceptionCode.SERVER_ERROR; + import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ExceptionHandler; @@ -7,8 +9,6 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; import until.the.eternity.common.response.ApiResponse; -import static until.the.eternity.common.exception.GlobalExceptionCode.SERVER_ERROR; - @Slf4j @RestControllerAdvice public class GlobalExceptionHandler extends ResponseEntityExceptionHandler { diff --git a/src/main/java/until/the/eternity/common/response/ApiResponse.java b/src/main/java/until/the/eternity/common/response/ApiResponse.java index c7b99b00..c7f83b13 100644 --- a/src/main/java/until/the/eternity/common/response/ApiResponse.java +++ b/src/main/java/until/the/eternity/common/response/ApiResponse.java @@ -1,10 +1,9 @@ package until.the.eternity.common.response; +import java.time.Instant; import lombok.Builder; import lombok.Getter; -import java.time.Instant; - @Getter public class ApiResponse { diff --git a/src/main/java/until/the/eternity/common/response/PageResponseDto.java b/src/main/java/until/the/eternity/common/response/PageResponseDto.java index 0919ce20..c142faac 100644 --- a/src/main/java/until/the/eternity/common/response/PageResponseDto.java +++ b/src/main/java/until/the/eternity/common/response/PageResponseDto.java @@ -1,7 +1,6 @@ package until.the.eternity.common.response; import io.swagger.v3.oas.annotations.media.Schema; - import java.util.List; @Schema(description = "페이지 응답 객체") diff --git a/src/main/java/until/the/eternity/common/util/SegongOptionParser.java b/src/main/java/until/the/eternity/common/util/SegongOptionParser.java index 55fd9a26..3b362769 100644 --- a/src/main/java/until/the/eternity/common/util/SegongOptionParser.java +++ b/src/main/java/until/the/eternity/common/util/SegongOptionParser.java @@ -1,9 +1,8 @@ package until.the.eternity.common.util; -import lombok.extern.slf4j.Slf4j; - import java.util.regex.Matcher; import java.util.regex.Pattern; +import lombok.extern.slf4j.Slf4j; /** * 세공 옵션의 option_value를 파싱하여 스킬명(option_value), 레벨(option_value2), 설명(option_desc)을 분리하는 유틸리티. diff --git a/src/main/java/until/the/eternity/config/openapi/OpenApiFilters.java b/src/main/java/until/the/eternity/config/openapi/OpenApiFilters.java index 29ca38fe..af0147a8 100644 --- a/src/main/java/until/the/eternity/config/openapi/OpenApiFilters.java +++ b/src/main/java/until/the/eternity/config/openapi/OpenApiFilters.java @@ -1,13 +1,12 @@ package until.the.eternity.config.openapi; +import java.time.Duration; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.reactive.function.client.ExchangeFilterFunction; import reactor.core.publisher.Mono; -import java.time.Duration; - @Slf4j @Component @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/config/openapi/OpenApiRetryPolicy.java b/src/main/java/until/the/eternity/config/openapi/OpenApiRetryPolicy.java index a419df7c..8c9d0cff 100644 --- a/src/main/java/until/the/eternity/config/openapi/OpenApiRetryPolicy.java +++ b/src/main/java/until/the/eternity/config/openapi/OpenApiRetryPolicy.java @@ -1,12 +1,11 @@ package until.the.eternity.config.openapi; +import java.time.Duration; import org.springframework.stereotype.Component; import org.springframework.web.reactive.function.client.WebClientResponseException; import reactor.util.retry.Retry; import reactor.util.retry.RetryBackoffSpec; -import java.time.Duration; - /** Nexon OPEN API 전용 재시도(Back-off) 정책. */ @Component public class OpenApiRetryPolicy { diff --git a/src/main/java/until/the/eternity/config/openapi/OpenApiWebClientProperties.java b/src/main/java/until/the/eternity/config/openapi/OpenApiWebClientProperties.java index f8d79043..9d51746d 100644 --- a/src/main/java/until/the/eternity/config/openapi/OpenApiWebClientProperties.java +++ b/src/main/java/until/the/eternity/config/openapi/OpenApiWebClientProperties.java @@ -2,11 +2,10 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Positive; +import java.time.Duration; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.validation.annotation.Validated; -import java.time.Duration; - /** 외부 API용 WebClient 설정값 홀더 application.yml 사용) */ @Validated @ConfigurationProperties(prefix = "openapi.nexon") diff --git a/src/main/java/until/the/eternity/hornBugle/application/runner/HornBugleIndexRunner.java b/src/main/java/until/the/eternity/hornBugle/application/runner/HornBugleIndexRunner.java index f96534ff..f4da3691 100644 --- a/src/main/java/until/the/eternity/hornBugle/application/runner/HornBugleIndexRunner.java +++ b/src/main/java/until/the/eternity/hornBugle/application/runner/HornBugleIndexRunner.java @@ -1,5 +1,6 @@ package until.the.eternity.hornBugle.application.runner; +import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; @@ -13,8 +14,6 @@ import until.the.eternity.hornBugle.domain.repository.HornBugleRepositoryPort; import until.the.eternity.hornBugle.infrastructure.elasticsearch.HornBugleIndexService; -import java.util.List; - /** * 서버 재기동 시 DB 데이터를 Elasticsearch에 일괄 색인하는 Runner. application.yml에서 * elasticsearch.index.enabled=true로 설정 시 활성화됩니다. diff --git a/src/main/java/until/the/eternity/hornBugle/application/scheduler/HornBugleScheduler.java b/src/main/java/until/the/eternity/hornBugle/application/scheduler/HornBugleScheduler.java index 1fe31492..aaa6f55e 100644 --- a/src/main/java/until/the/eternity/hornBugle/application/scheduler/HornBugleScheduler.java +++ b/src/main/java/until/the/eternity/hornBugle/application/scheduler/HornBugleScheduler.java @@ -1,5 +1,10 @@ package until.the.eternity.hornBugle.application.scheduler; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; @@ -15,12 +20,6 @@ import until.the.eternity.hornBugle.kafka.application.HornBugleKafkaProducerService; import until.the.eternity.hornBugle.kafka.dto.UserVerificationVerifyEvent; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.CompletableFuture; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - @Slf4j @Component @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/hornBugle/application/service/HornBugleService.java b/src/main/java/until/the/eternity/hornBugle/application/service/HornBugleService.java index dc650089..ed11102f 100644 --- a/src/main/java/until/the/eternity/hornBugle/application/service/HornBugleService.java +++ b/src/main/java/until/the/eternity/hornBugle/application/service/HornBugleService.java @@ -1,5 +1,8 @@ package until.the.eternity.hornBugle.application.service; +import java.time.Instant; +import java.util.List; +import java.util.Optional; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; @@ -16,10 +19,6 @@ import until.the.eternity.hornBugle.interfaces.rest.dto.request.HornBuglePageRequestDto; import until.the.eternity.hornBugle.interfaces.rest.dto.response.HornBugleHistoryResponse; -import java.time.Instant; -import java.util.List; -import java.util.Optional; - @Slf4j @Service public class HornBugleService { diff --git a/src/main/java/until/the/eternity/hornBugle/domain/entity/HornBugleWorldHistory.java b/src/main/java/until/the/eternity/hornBugle/domain/entity/HornBugleWorldHistory.java index 05ca8dff..482c8572 100644 --- a/src/main/java/until/the/eternity/hornBugle/domain/entity/HornBugleWorldHistory.java +++ b/src/main/java/until/the/eternity/hornBugle/domain/entity/HornBugleWorldHistory.java @@ -1,9 +1,8 @@ package until.the.eternity.hornBugle.domain.entity; import jakarta.persistence.*; -import lombok.*; - import java.time.Instant; +import lombok.*; @Entity @Table( diff --git a/src/main/java/until/the/eternity/hornBugle/domain/enums/HornBugleServer.java b/src/main/java/until/the/eternity/hornBugle/domain/enums/HornBugleServer.java index 51bd034f..fe361d09 100644 --- a/src/main/java/until/the/eternity/hornBugle/domain/enums/HornBugleServer.java +++ b/src/main/java/until/the/eternity/hornBugle/domain/enums/HornBugleServer.java @@ -1,11 +1,10 @@ package until.the.eternity.hornBugle.domain.enums; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.Arrays; +import lombok.Getter; +import lombok.RequiredArgsConstructor; @Getter @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/hornBugle/domain/mapper/HornBugleMapper.java b/src/main/java/until/the/eternity/hornBugle/domain/mapper/HornBugleMapper.java index c2bb9e73..a24aee75 100644 --- a/src/main/java/until/the/eternity/hornBugle/domain/mapper/HornBugleMapper.java +++ b/src/main/java/until/the/eternity/hornBugle/domain/mapper/HornBugleMapper.java @@ -1,5 +1,6 @@ package until.the.eternity.hornBugle.domain.mapper; +import java.time.Instant; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import until.the.eternity.hornBugle.domain.entity.HornBugleWorldHistory; @@ -8,8 +9,6 @@ import until.the.eternity.hornBugle.interfaces.external.dto.OpenApiHornBugleHistoryResponse; import until.the.eternity.hornBugle.interfaces.rest.dto.response.HornBugleHistoryResponse; -import java.time.Instant; - @Mapper(componentModel = "spring") public interface HornBugleMapper { diff --git a/src/main/java/until/the/eternity/hornBugle/domain/repository/HornBugleRepositoryPort.java b/src/main/java/until/the/eternity/hornBugle/domain/repository/HornBugleRepositoryPort.java index 75dfd277..8e85b756 100644 --- a/src/main/java/until/the/eternity/hornBugle/domain/repository/HornBugleRepositoryPort.java +++ b/src/main/java/until/the/eternity/hornBugle/domain/repository/HornBugleRepositoryPort.java @@ -1,12 +1,11 @@ package until.the.eternity.hornBugle.domain.repository; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import until.the.eternity.hornBugle.domain.entity.HornBugleWorldHistory; - import java.time.Instant; import java.util.List; import java.util.Optional; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import until.the.eternity.hornBugle.domain.entity.HornBugleWorldHistory; public interface HornBugleRepositoryPort { diff --git a/src/main/java/until/the/eternity/hornBugle/domain/service/HornBugleDuplicateChecker.java b/src/main/java/until/the/eternity/hornBugle/domain/service/HornBugleDuplicateChecker.java index 4d8be4d3..846ea39a 100644 --- a/src/main/java/until/the/eternity/hornBugle/domain/service/HornBugleDuplicateChecker.java +++ b/src/main/java/until/the/eternity/hornBugle/domain/service/HornBugleDuplicateChecker.java @@ -1,5 +1,10 @@ package until.the.eternity.hornBugle.domain.service; +import java.time.Instant; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -8,12 +13,6 @@ import until.the.eternity.hornBugle.domain.repository.HornBugleRepositoryPort; import until.the.eternity.hornBugle.interfaces.external.dto.OpenApiHornBugleHistoryResponse; -import java.time.Instant; -import java.util.HashSet; -import java.util.List; -import java.util.Optional; -import java.util.Set; - @Slf4j @Component @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/hornBugle/infrastructure/elasticsearch/HornBugleDocument.java b/src/main/java/until/the/eternity/hornBugle/infrastructure/elasticsearch/HornBugleDocument.java index 98bb7864..7c0ceb37 100644 --- a/src/main/java/until/the/eternity/hornBugle/infrastructure/elasticsearch/HornBugleDocument.java +++ b/src/main/java/until/the/eternity/hornBugle/infrastructure/elasticsearch/HornBugleDocument.java @@ -1,5 +1,6 @@ package until.the.eternity.hornBugle.infrastructure.elasticsearch; +import java.time.Instant; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -11,8 +12,6 @@ import org.springframework.data.elasticsearch.annotations.Setting; import until.the.eternity.hornBugle.domain.entity.HornBugleWorldHistory; -import java.time.Instant; - @Document(indexName = "horn_bugle_world_history") @Setting(settingPath = "elasticsearch/horn-bugle-settings.json") @Getter diff --git a/src/main/java/until/the/eternity/hornBugle/infrastructure/elasticsearch/HornBugleIndexService.java b/src/main/java/until/the/eternity/hornBugle/infrastructure/elasticsearch/HornBugleIndexService.java index 52f59505..d439bfb8 100644 --- a/src/main/java/until/the/eternity/hornBugle/infrastructure/elasticsearch/HornBugleIndexService.java +++ b/src/main/java/until/the/eternity/hornBugle/infrastructure/elasticsearch/HornBugleIndexService.java @@ -2,6 +2,7 @@ import co.elastic.clients.elasticsearch._types.query_dsl.BoolQuery; import co.elastic.clients.elasticsearch._types.query_dsl.Query; +import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -17,8 +18,6 @@ import org.springframework.stereotype.Service; import until.the.eternity.hornBugle.domain.entity.HornBugleWorldHistory; -import java.util.List; - @Slf4j @Service @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/hornBugle/infrastructure/persistence/HornBugleJpaRepository.java b/src/main/java/until/the/eternity/hornBugle/infrastructure/persistence/HornBugleJpaRepository.java index e68b01eb..2e6acde1 100644 --- a/src/main/java/until/the/eternity/hornBugle/infrastructure/persistence/HornBugleJpaRepository.java +++ b/src/main/java/until/the/eternity/hornBugle/infrastructure/persistence/HornBugleJpaRepository.java @@ -1,5 +1,8 @@ package until.the.eternity.hornBugle.infrastructure.persistence; +import java.time.Instant; +import java.util.List; +import java.util.Optional; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; @@ -7,10 +10,6 @@ import org.springframework.stereotype.Repository; import until.the.eternity.hornBugle.domain.entity.HornBugleWorldHistory; -import java.time.Instant; -import java.util.List; -import java.util.Optional; - @Repository public interface HornBugleJpaRepository extends JpaRepository { diff --git a/src/main/java/until/the/eternity/hornBugle/infrastructure/persistence/HornBugleRepositoryPortImpl.java b/src/main/java/until/the/eternity/hornBugle/infrastructure/persistence/HornBugleRepositoryPortImpl.java index 706bc05b..52366b65 100644 --- a/src/main/java/until/the/eternity/hornBugle/infrastructure/persistence/HornBugleRepositoryPortImpl.java +++ b/src/main/java/until/the/eternity/hornBugle/infrastructure/persistence/HornBugleRepositoryPortImpl.java @@ -1,6 +1,9 @@ package until.the.eternity.hornBugle.infrastructure.persistence; import jakarta.persistence.EntityManager; +import java.time.Instant; +import java.util.List; +import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; @@ -10,10 +13,6 @@ import until.the.eternity.hornBugle.domain.entity.HornBugleWorldHistory; import until.the.eternity.hornBugle.domain.repository.HornBugleRepositoryPort; -import java.time.Instant; -import java.util.List; -import java.util.Optional; - @Repository @RequiredArgsConstructor public class HornBugleRepositoryPortImpl implements HornBugleRepositoryPort { diff --git a/src/main/java/until/the/eternity/hornBugle/interfaces/external/dto/OpenApiHornBugleHistoryListResponse.java b/src/main/java/until/the/eternity/hornBugle/interfaces/external/dto/OpenApiHornBugleHistoryListResponse.java index adea275a..4090a2d4 100644 --- a/src/main/java/until/the/eternity/hornBugle/interfaces/external/dto/OpenApiHornBugleHistoryListResponse.java +++ b/src/main/java/until/the/eternity/hornBugle/interfaces/external/dto/OpenApiHornBugleHistoryListResponse.java @@ -1,7 +1,6 @@ package until.the.eternity.hornBugle.interfaces.external.dto; import com.fasterxml.jackson.annotation.JsonProperty; - import java.util.List; public record OpenApiHornBugleHistoryListResponse( diff --git a/src/main/java/until/the/eternity/hornBugle/interfaces/external/dto/OpenApiHornBugleHistoryResponse.java b/src/main/java/until/the/eternity/hornBugle/interfaces/external/dto/OpenApiHornBugleHistoryResponse.java index 78f67772..1a11eb0f 100644 --- a/src/main/java/until/the/eternity/hornBugle/interfaces/external/dto/OpenApiHornBugleHistoryResponse.java +++ b/src/main/java/until/the/eternity/hornBugle/interfaces/external/dto/OpenApiHornBugleHistoryResponse.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; - import java.time.Instant; public record OpenApiHornBugleHistoryResponse( diff --git a/src/main/java/until/the/eternity/hornBugle/interfaces/rest/controller/HornBugleController.java b/src/main/java/until/the/eternity/hornBugle/interfaces/rest/controller/HornBugleController.java index 1e26a003..43531fbf 100644 --- a/src/main/java/until/the/eternity/hornBugle/interfaces/rest/controller/HornBugleController.java +++ b/src/main/java/until/the/eternity/hornBugle/interfaces/rest/controller/HornBugleController.java @@ -52,7 +52,9 @@ public ResponseEntity> search( @PostMapping("/batch") @PreAuthorize("hasAnyRole('ADMIN', 'SUPER_ADMIN')") - @Operation(summary = "뿔피리 히스토리 배치 실행", description = "모든 서버의 거대한 외침의 뿔피리 내역을 수집하여 저장합니다. **[ADMIN, SUPER_ADMIN 전용]**") + @Operation( + summary = "뿔피리 히스토리 배치 실행", + description = "모든 서버의 거대한 외침의 뿔피리 내역을 수집하여 저장합니다. **[ADMIN, SUPER_ADMIN 전용]**") @ApiResponse(responseCode = "403", description = "권한 없음 (ADMIN, SUPER_ADMIN 전용)") public ResponseEntity triggerBatch() { log.info("[HornBugle] Batch API triggered"); diff --git a/src/main/java/until/the/eternity/hornBugle/interfaces/rest/dto/response/HornBugleHistoryResponse.java b/src/main/java/until/the/eternity/hornBugle/interfaces/rest/dto/response/HornBugleHistoryResponse.java index 7660ff1a..cd47b1c0 100644 --- a/src/main/java/until/the/eternity/hornBugle/interfaces/rest/dto/response/HornBugleHistoryResponse.java +++ b/src/main/java/until/the/eternity/hornBugle/interfaces/rest/dto/response/HornBugleHistoryResponse.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; - import java.time.Instant; @Schema(description = "뿔피리 히스토리 응답") diff --git a/src/main/java/until/the/eternity/hornBugle/kafka/application/HornBugleKafkaProducerService.java b/src/main/java/until/the/eternity/hornBugle/kafka/application/HornBugleKafkaProducerService.java index df662e9b..6a5d854a 100644 --- a/src/main/java/until/the/eternity/hornBugle/kafka/application/HornBugleKafkaProducerService.java +++ b/src/main/java/until/the/eternity/hornBugle/kafka/application/HornBugleKafkaProducerService.java @@ -1,5 +1,6 @@ package until.the.eternity.hornBugle.kafka.application; +import java.util.concurrent.CompletableFuture; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.kafka.core.KafkaTemplate; @@ -8,8 +9,6 @@ import until.the.eternity.common.constant.KafkaTopicConstant; import until.the.eternity.hornBugle.kafka.dto.UserVerificationVerifyEvent; -import java.util.concurrent.CompletableFuture; - @Service @RequiredArgsConstructor public class HornBugleKafkaProducerService { diff --git a/src/main/java/until/the/eternity/iteminfo/application/service/ItemInfoService.java b/src/main/java/until/the/eternity/iteminfo/application/service/ItemInfoService.java index 68d49361..f1022c51 100644 --- a/src/main/java/until/the/eternity/iteminfo/application/service/ItemInfoService.java +++ b/src/main/java/until/the/eternity/iteminfo/application/service/ItemInfoService.java @@ -1,5 +1,9 @@ package until.the.eternity.iteminfo.application.service; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; @@ -7,6 +11,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import until.the.eternity.auctionhistory.domain.repository.AuctionHistoryRepositoryPort; +import until.the.eternity.batchlog.domain.enums.BatchType; +import until.the.eternity.common.annotation.BatchLog; import until.the.eternity.iteminfo.domain.entity.ItemInfo; import until.the.eternity.iteminfo.domain.entity.ItemInfoId; import until.the.eternity.iteminfo.domain.repository.ItemInfoRepositoryPort; @@ -16,11 +22,6 @@ import until.the.eternity.iteminfo.interfaces.rest.dto.response.ItemInfoSummaryResponse; import until.the.eternity.iteminfo.interfaces.rest.dto.response.ItemInfoSyncResponse; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - @Slf4j @Service @Transactional(readOnly = true) @@ -69,6 +70,7 @@ public List findAllSummary( return ItemInfoSummaryResponse.from(itemInfos); } + @BatchLog(type = BatchType.ITEM_INFO_SYNC) @Transactional public ItemInfoSyncResponse syncItemInfoFromAuctionHistory() { log.info("Starting to sync ItemInfo from AuctionHistory"); diff --git a/src/main/java/until/the/eternity/iteminfo/domain/entity/ItemInfoId.java b/src/main/java/until/the/eternity/iteminfo/domain/entity/ItemInfoId.java index 6293e4ee..d53cd3b3 100644 --- a/src/main/java/until/the/eternity/iteminfo/domain/entity/ItemInfoId.java +++ b/src/main/java/until/the/eternity/iteminfo/domain/entity/ItemInfoId.java @@ -2,9 +2,8 @@ import jakarta.persistence.Column; import jakarta.persistence.Embeddable; -import lombok.*; - import java.io.Serializable; +import lombok.*; @Embeddable @Getter diff --git a/src/main/java/until/the/eternity/iteminfo/domain/exception/ItemInfoExceptionCode.java b/src/main/java/until/the/eternity/iteminfo/domain/exception/ItemInfoExceptionCode.java index f870031a..a7ffd4c2 100644 --- a/src/main/java/until/the/eternity/iteminfo/domain/exception/ItemInfoExceptionCode.java +++ b/src/main/java/until/the/eternity/iteminfo/domain/exception/ItemInfoExceptionCode.java @@ -1,12 +1,12 @@ package until.the.eternity.iteminfo.domain.exception; +import static org.springframework.http.HttpStatus.BAD_REQUEST; + import lombok.Getter; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import until.the.eternity.common.exception.ExceptionCode; -import static org.springframework.http.HttpStatus.BAD_REQUEST; - @Getter @RequiredArgsConstructor public enum ItemInfoExceptionCode implements ExceptionCode { diff --git a/src/main/java/until/the/eternity/iteminfo/domain/repository/ItemInfoRepositoryPort.java b/src/main/java/until/the/eternity/iteminfo/domain/repository/ItemInfoRepositoryPort.java index c9f85ea3..b540fc66 100644 --- a/src/main/java/until/the/eternity/iteminfo/domain/repository/ItemInfoRepositoryPort.java +++ b/src/main/java/until/the/eternity/iteminfo/domain/repository/ItemInfoRepositoryPort.java @@ -1,13 +1,12 @@ package until.the.eternity.iteminfo.domain.repository; +import java.util.List; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import until.the.eternity.iteminfo.domain.entity.ItemInfo; import until.the.eternity.iteminfo.domain.entity.ItemInfoId; import until.the.eternity.iteminfo.interfaces.rest.dto.request.ItemInfoSearchRequest; -import java.util.List; - public interface ItemInfoRepositoryPort { List findAll(); diff --git a/src/main/java/until/the/eternity/iteminfo/infrastructure/persistence/ItemInfoJpaRepository.java b/src/main/java/until/the/eternity/iteminfo/infrastructure/persistence/ItemInfoJpaRepository.java index c6838467..2be98732 100644 --- a/src/main/java/until/the/eternity/iteminfo/infrastructure/persistence/ItemInfoJpaRepository.java +++ b/src/main/java/until/the/eternity/iteminfo/infrastructure/persistence/ItemInfoJpaRepository.java @@ -1,13 +1,12 @@ package until.the.eternity.iteminfo.infrastructure.persistence; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; import until.the.eternity.iteminfo.domain.entity.ItemInfo; import until.the.eternity.iteminfo.domain.entity.ItemInfoId; -import java.util.List; - public interface ItemInfoJpaRepository extends JpaRepository, JpaSpecificationExecutor { diff --git a/src/main/java/until/the/eternity/iteminfo/infrastructure/persistence/ItemInfoQueryDslRepository.java b/src/main/java/until/the/eternity/iteminfo/infrastructure/persistence/ItemInfoQueryDslRepository.java index e13e45f9..266b2303 100644 --- a/src/main/java/until/the/eternity/iteminfo/infrastructure/persistence/ItemInfoQueryDslRepository.java +++ b/src/main/java/until/the/eternity/iteminfo/infrastructure/persistence/ItemInfoQueryDslRepository.java @@ -3,6 +3,7 @@ import com.querydsl.core.BooleanBuilder; import com.querydsl.jpa.impl.JPAQuery; import com.querydsl.jpa.impl.JPAQueryFactory; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -12,8 +13,6 @@ import until.the.eternity.iteminfo.domain.entity.QItemInfo; import until.the.eternity.iteminfo.interfaces.rest.dto.request.ItemInfoSearchRequest; -import java.util.List; - @Repository @RequiredArgsConstructor public class ItemInfoQueryDslRepository { diff --git a/src/main/java/until/the/eternity/iteminfo/infrastructure/persistence/ItemInfoRepositoryPortImpl.java b/src/main/java/until/the/eternity/iteminfo/infrastructure/persistence/ItemInfoRepositoryPortImpl.java index 497ad7d1..66481cac 100644 --- a/src/main/java/until/the/eternity/iteminfo/infrastructure/persistence/ItemInfoRepositoryPortImpl.java +++ b/src/main/java/until/the/eternity/iteminfo/infrastructure/persistence/ItemInfoRepositoryPortImpl.java @@ -1,5 +1,6 @@ package until.the.eternity.iteminfo.infrastructure.persistence; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -9,8 +10,6 @@ import until.the.eternity.iteminfo.domain.repository.ItemInfoRepositoryPort; import until.the.eternity.iteminfo.interfaces.rest.dto.request.ItemInfoSearchRequest; -import java.util.List; - @Repository @RequiredArgsConstructor public class ItemInfoRepositoryPortImpl implements ItemInfoRepositoryPort { diff --git a/src/main/java/until/the/eternity/iteminfo/interfaces/rest/controller/ItemInfoController.java b/src/main/java/until/the/eternity/iteminfo/interfaces/rest/controller/ItemInfoController.java index 874e8fbd..33463e87 100644 --- a/src/main/java/until/the/eternity/iteminfo/interfaces/rest/controller/ItemInfoController.java +++ b/src/main/java/until/the/eternity/iteminfo/interfaces/rest/controller/ItemInfoController.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.http.ResponseEntity; @@ -19,8 +20,6 @@ import until.the.eternity.iteminfo.interfaces.rest.dto.response.ItemInfoSummaryResponse; import until.the.eternity.iteminfo.interfaces.rest.dto.response.ItemInfoSyncResponse; -import java.util.List; - @RestController @RequestMapping("/api/item-infos") @RequiredArgsConstructor @@ -81,7 +80,9 @@ public ResponseEntity>> getItemInfosSu "AuctionHistory 테이블에서 아이템 정보를 조회하여 ItemInfo 테이블에 동기화합니다. " + "이미 존재하는 아이템은 제외하고 새로운 아이템만 추가합니다. " + "**[ADMIN, SUPER_ADMIN 전용]**") - @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "403", description = "권한 없음 (ADMIN, SUPER_ADMIN 전용)") + @io.swagger.v3.oas.annotations.responses.ApiResponse( + responseCode = "403", + description = "권한 없음 (ADMIN, SUPER_ADMIN 전용)") @PreAuthorize("hasAnyRole('ADMIN', 'SUPER_ADMIN')") @PostMapping("/sync") public ResponseEntity> syncItemInfoFromAuctionHistory() { diff --git a/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemCategoryResponse.java b/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemCategoryResponse.java index 0b1e6817..065d209e 100644 --- a/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemCategoryResponse.java +++ b/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemCategoryResponse.java @@ -1,12 +1,11 @@ package until.the.eternity.iteminfo.interfaces.rest.dto.response; -import lombok.Builder; -import lombok.Getter; -import until.the.eternity.common.enums.ItemCategory; - import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; +import lombok.Builder; +import lombok.Getter; +import until.the.eternity.common.enums.ItemCategory; @Getter @Builder diff --git a/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemInfoResponse.java b/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemInfoResponse.java index 70897793..be9d890b 100644 --- a/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemInfoResponse.java +++ b/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemInfoResponse.java @@ -1,11 +1,10 @@ package until.the.eternity.iteminfo.interfaces.rest.dto.response; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; -import until.the.eternity.iteminfo.domain.entity.ItemInfo; - import java.util.List; import java.util.stream.Collectors; +import lombok.Builder; +import until.the.eternity.iteminfo.domain.entity.ItemInfo; @Builder @Schema(description = "아이템 정보 응답 DTO") diff --git a/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemInfoSummaryResponse.java b/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemInfoSummaryResponse.java index 4b9da91b..98e5cfd5 100644 --- a/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemInfoSummaryResponse.java +++ b/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemInfoSummaryResponse.java @@ -1,11 +1,10 @@ package until.the.eternity.iteminfo.interfaces.rest.dto.response; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; -import until.the.eternity.iteminfo.domain.entity.ItemInfo; - import java.util.List; import java.util.stream.Collectors; +import lombok.Builder; +import until.the.eternity.iteminfo.domain.entity.ItemInfo; @Builder @Schema(description = "아이템 정보 요약 응답 DTO") diff --git a/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemInfoSyncResponse.java b/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemInfoSyncResponse.java index 02016f52..e98fce37 100644 --- a/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemInfoSyncResponse.java +++ b/src/main/java/until/the/eternity/iteminfo/interfaces/rest/dto/response/ItemInfoSyncResponse.java @@ -1,9 +1,8 @@ package until.the.eternity.iteminfo.interfaces.rest.dto.response; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; - import java.util.List; +import lombok.Builder; @Builder @Schema(description = "아이템 정보 동기화 응답 DTO") diff --git a/src/main/java/until/the/eternity/itemoptioninfo/application/service/ItemOptionInfoService.java b/src/main/java/until/the/eternity/itemoptioninfo/application/service/ItemOptionInfoService.java index 8595e38c..e4f5da74 100644 --- a/src/main/java/until/the/eternity/itemoptioninfo/application/service/ItemOptionInfoService.java +++ b/src/main/java/until/the/eternity/itemoptioninfo/application/service/ItemOptionInfoService.java @@ -1,5 +1,6 @@ package until.the.eternity.itemoptioninfo.application.service; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -7,8 +8,6 @@ import until.the.eternity.itemoptioninfo.domain.entity.ItemOptionInfoId; import until.the.eternity.itemoptioninfo.domain.repository.ItemOptionInfoRepositoryPort; -import java.util.List; - @Service @RequiredArgsConstructor @Transactional(readOnly = true) diff --git a/src/main/java/until/the/eternity/itemoptioninfo/domain/entity/ItemOptionInfoId.java b/src/main/java/until/the/eternity/itemoptioninfo/domain/entity/ItemOptionInfoId.java index 5bbcdaf9..17634464 100644 --- a/src/main/java/until/the/eternity/itemoptioninfo/domain/entity/ItemOptionInfoId.java +++ b/src/main/java/until/the/eternity/itemoptioninfo/domain/entity/ItemOptionInfoId.java @@ -2,13 +2,12 @@ import jakarta.persistence.Column; import jakarta.persistence.Embeddable; +import java.io.Serializable; +import java.util.Objects; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; -import java.io.Serializable; -import java.util.Objects; - @Embeddable @Getter @NoArgsConstructor diff --git a/src/main/java/until/the/eternity/itemoptioninfo/domain/repository/ItemOptionInfoRepositoryPort.java b/src/main/java/until/the/eternity/itemoptioninfo/domain/repository/ItemOptionInfoRepositoryPort.java index 37076dd7..904949d5 100644 --- a/src/main/java/until/the/eternity/itemoptioninfo/domain/repository/ItemOptionInfoRepositoryPort.java +++ b/src/main/java/until/the/eternity/itemoptioninfo/domain/repository/ItemOptionInfoRepositoryPort.java @@ -1,10 +1,9 @@ package until.the.eternity.itemoptioninfo.domain.repository; -import until.the.eternity.itemoptioninfo.domain.entity.ItemOptionInfo; -import until.the.eternity.itemoptioninfo.domain.entity.ItemOptionInfoId; - import java.util.List; import java.util.Optional; +import until.the.eternity.itemoptioninfo.domain.entity.ItemOptionInfo; +import until.the.eternity.itemoptioninfo.domain.entity.ItemOptionInfoId; public interface ItemOptionInfoRepositoryPort { List findAll(); diff --git a/src/main/java/until/the/eternity/itemoptioninfo/infrastructure/persistence/ItemOptionInfoRepositoryPortImpl.java b/src/main/java/until/the/eternity/itemoptioninfo/infrastructure/persistence/ItemOptionInfoRepositoryPortImpl.java index 0d5c1247..f8f7f1cc 100644 --- a/src/main/java/until/the/eternity/itemoptioninfo/infrastructure/persistence/ItemOptionInfoRepositoryPortImpl.java +++ b/src/main/java/until/the/eternity/itemoptioninfo/infrastructure/persistence/ItemOptionInfoRepositoryPortImpl.java @@ -1,14 +1,13 @@ package until.the.eternity.itemoptioninfo.infrastructure.persistence; +import java.util.List; +import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import until.the.eternity.itemoptioninfo.domain.entity.ItemOptionInfo; import until.the.eternity.itemoptioninfo.domain.entity.ItemOptionInfoId; import until.the.eternity.itemoptioninfo.domain.repository.ItemOptionInfoRepositoryPort; -import java.util.List; -import java.util.Optional; - @Repository @RequiredArgsConstructor public class ItemOptionInfoRepositoryPortImpl implements ItemOptionInfoRepositoryPort { diff --git a/src/main/java/until/the/eternity/itemoptioninfo/interfaces/rest/controller/ItemOptionInfoController.java b/src/main/java/until/the/eternity/itemoptioninfo/interfaces/rest/controller/ItemOptionInfoController.java index f7e1124b..e36b5213 100644 --- a/src/main/java/until/the/eternity/itemoptioninfo/interfaces/rest/controller/ItemOptionInfoController.java +++ b/src/main/java/until/the/eternity/itemoptioninfo/interfaces/rest/controller/ItemOptionInfoController.java @@ -4,6 +4,8 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; +import java.util.List; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.security.access.prepost.PreAuthorize; @@ -15,9 +17,6 @@ import until.the.eternity.itemoptioninfo.interfaces.rest.dto.request.ItemOptionInfoRequest; import until.the.eternity.itemoptioninfo.interfaces.rest.dto.response.ItemOptionInfoResponse; -import java.util.List; -import java.util.stream.Collectors; - @RestController @RequestMapping("/api/v1/item-option-infos") @RequiredArgsConstructor @@ -38,7 +37,9 @@ public List findAll() { @PostMapping @ResponseStatus(HttpStatus.CREATED) @PreAuthorize("hasAnyRole('ADMIN', 'SUPER_ADMIN')") - @Operation(summary = "아이템 옵션 정보 생성", description = "새로운 아이템 옵션 정보를 생성합니다. **[ADMIN, SUPER_ADMIN 전용]**") + @Operation( + summary = "아이템 옵션 정보 생성", + description = "새로운 아이템 옵션 정보를 생성합니다. **[ADMIN, SUPER_ADMIN 전용]**") @ApiResponse(responseCode = "403", description = "권한 없음 (ADMIN, SUPER_ADMIN 전용)") public ItemOptionInfoResponse create(@Valid @RequestBody ItemOptionInfoRequest request) { ItemOptionInfo itemOptionInfo = itemOptionInfoMapper.toEntity(request); diff --git a/src/main/java/until/the/eternity/metalwareinfo/application/service/MetalwareAttributeInfoService.java b/src/main/java/until/the/eternity/metalwareinfo/application/service/MetalwareAttributeInfoService.java index edf08164..2816d4fa 100644 --- a/src/main/java/until/the/eternity/metalwareinfo/application/service/MetalwareAttributeInfoService.java +++ b/src/main/java/until/the/eternity/metalwareinfo/application/service/MetalwareAttributeInfoService.java @@ -4,6 +4,8 @@ import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import until.the.eternity.batchlog.domain.enums.BatchType; +import until.the.eternity.common.annotation.BatchLog; import until.the.eternity.metalwareinfo.domain.repository.MetalwareAttributeInfoRepositoryPort; import until.the.eternity.metalwareinfo.interfaces.rest.dto.request.MetalwareAttributeInfoSearchRequest; import until.the.eternity.metalwareinfo.interfaces.rest.dto.response.MetalwareAttributeInfoResponse; @@ -14,9 +16,15 @@ public class MetalwareAttributeInfoService { private final MetalwareAttributeInfoRepositoryPort metalwareAttributeInfoRepository; + @BatchLog(type = BatchType.METALWARE_ATTRIBUTE_SYNC) @Transactional public int sync() { - return metalwareAttributeInfoRepository.syncFromAuctionHistory(); + long before = metalwareAttributeInfoRepository.count(); + int raw = metalwareAttributeInfoRepository.syncFromAuctionHistory(); + long after = metalwareAttributeInfoRepository.count(); + int inserted = (int) (after - before); + int updated = (raw - inserted) / 2; + return inserted + updated; } @Transactional(readOnly = true) diff --git a/src/main/java/until/the/eternity/metalwareinfo/application/service/MetalwareInfoService.java b/src/main/java/until/the/eternity/metalwareinfo/application/service/MetalwareInfoService.java index 8bc05200..fdc99fbd 100644 --- a/src/main/java/until/the/eternity/metalwareinfo/application/service/MetalwareInfoService.java +++ b/src/main/java/until/the/eternity/metalwareinfo/application/service/MetalwareInfoService.java @@ -1,5 +1,6 @@ package until.the.eternity.metalwareinfo.application.service; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -7,8 +8,6 @@ import until.the.eternity.metalwareinfo.interfaces.rest.dto.response.MetalwareInfoResponse; import until.the.eternity.metalwareinfo.interfaces.rest.dto.response.MetalwareInfoSyncResponse; -import java.util.List; - @Service @Transactional(readOnly = true) @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/metalwareinfo/domain/repository/MetalwareAttributeInfoRepositoryPort.java b/src/main/java/until/the/eternity/metalwareinfo/domain/repository/MetalwareAttributeInfoRepositoryPort.java index f76d7cf7..b562670b 100644 --- a/src/main/java/until/the/eternity/metalwareinfo/domain/repository/MetalwareAttributeInfoRepositoryPort.java +++ b/src/main/java/until/the/eternity/metalwareinfo/domain/repository/MetalwareAttributeInfoRepositoryPort.java @@ -8,5 +8,7 @@ public interface MetalwareAttributeInfoRepositoryPort { int syncFromAuctionHistory(); + long count(); + Page searchByMetalware(String metalware, Pageable pageable); } diff --git a/src/main/java/until/the/eternity/metalwareinfo/infrastructure/persistence/MetalwareAttributeInfoRepositoryPortImpl.java b/src/main/java/until/the/eternity/metalwareinfo/infrastructure/persistence/MetalwareAttributeInfoRepositoryPortImpl.java index 10ff8cf8..8e05b207 100644 --- a/src/main/java/until/the/eternity/metalwareinfo/infrastructure/persistence/MetalwareAttributeInfoRepositoryPortImpl.java +++ b/src/main/java/until/the/eternity/metalwareinfo/infrastructure/persistence/MetalwareAttributeInfoRepositoryPortImpl.java @@ -18,6 +18,11 @@ public int syncFromAuctionHistory() { return jpaRepository.syncFromAuctionHistory(); } + @Override + public long count() { + return jpaRepository.count(); + } + @Override public Page searchByMetalware( String metalware, Pageable pageable) { diff --git a/src/main/java/until/the/eternity/metalwareinfo/infrastructure/persistence/MetalwareInfoJpaRepository.java b/src/main/java/until/the/eternity/metalwareinfo/infrastructure/persistence/MetalwareInfoJpaRepository.java index bcb58052..b0610721 100644 --- a/src/main/java/until/the/eternity/metalwareinfo/infrastructure/persistence/MetalwareInfoJpaRepository.java +++ b/src/main/java/until/the/eternity/metalwareinfo/infrastructure/persistence/MetalwareInfoJpaRepository.java @@ -1,11 +1,10 @@ package until.the.eternity.metalwareinfo.infrastructure.persistence; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; -import java.util.List; - public interface MetalwareInfoJpaRepository extends JpaRepository { @Query("SELECT m.metalware FROM MetalwareInfoEntity m") diff --git a/src/main/java/until/the/eternity/metalwareinfo/infrastructure/persistence/MetalwareInfoRepositoryPortImpl.java b/src/main/java/until/the/eternity/metalwareinfo/infrastructure/persistence/MetalwareInfoRepositoryPortImpl.java index 60ccfde6..9355cf37 100644 --- a/src/main/java/until/the/eternity/metalwareinfo/infrastructure/persistence/MetalwareInfoRepositoryPortImpl.java +++ b/src/main/java/until/the/eternity/metalwareinfo/infrastructure/persistence/MetalwareInfoRepositoryPortImpl.java @@ -1,11 +1,10 @@ package until.the.eternity.metalwareinfo.infrastructure.persistence; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import until.the.eternity.metalwareinfo.domain.repository.MetalwareInfoRepositoryPort; -import java.util.List; - @Repository @RequiredArgsConstructor public class MetalwareInfoRepositoryPortImpl implements MetalwareInfoRepositoryPort { diff --git a/src/main/java/until/the/eternity/metalwareinfo/interfaces/rest/controller/MetalwareAttributeInfoController.java b/src/main/java/until/the/eternity/metalwareinfo/interfaces/rest/controller/MetalwareAttributeInfoController.java index ecc57760..260a703e 100644 --- a/src/main/java/until/the/eternity/metalwareinfo/interfaces/rest/controller/MetalwareAttributeInfoController.java +++ b/src/main/java/until/the/eternity/metalwareinfo/interfaces/rest/controller/MetalwareAttributeInfoController.java @@ -22,7 +22,9 @@ public class MetalwareAttributeInfoController { private final MetalwareAttributeInfoService metalwareAttributeInfoService; - @Operation(summary = "세공 능력치 정보 동기화", description = "경매 기록에서 세공 능력치 정보를 추출하여 동기화합니다. **[ADMIN, SUPER_ADMIN 전용]**") + @Operation( + summary = "세공 능력치 정보 동기화", + description = "경매 기록에서 세공 능력치 정보를 추출하여 동기화합니다. **[ADMIN, SUPER_ADMIN 전용]**") @ApiResponse(responseCode = "403", description = "권한 없음 (ADMIN, SUPER_ADMIN 전용)") @PreAuthorize("hasAnyRole('ADMIN', 'SUPER_ADMIN')") @PostMapping("/sync") diff --git a/src/main/java/until/the/eternity/metalwareinfo/interfaces/rest/controller/MetalwareInfoController.java b/src/main/java/until/the/eternity/metalwareinfo/interfaces/rest/controller/MetalwareInfoController.java index 5917ed61..7047ad96 100644 --- a/src/main/java/until/the/eternity/metalwareinfo/interfaces/rest/controller/MetalwareInfoController.java +++ b/src/main/java/until/the/eternity/metalwareinfo/interfaces/rest/controller/MetalwareInfoController.java @@ -3,6 +3,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; @@ -14,8 +15,6 @@ import until.the.eternity.metalwareinfo.interfaces.rest.dto.response.MetalwareInfoResponse; import until.the.eternity.metalwareinfo.interfaces.rest.dto.response.MetalwareInfoSyncResponse; -import java.util.List; - @RestController @RequestMapping("/api/metalware-infos") @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/metalwareinfo/interfaces/rest/dto/response/MetalwareInfoResponse.java b/src/main/java/until/the/eternity/metalwareinfo/interfaces/rest/dto/response/MetalwareInfoResponse.java index 4e8d9d1e..a3122710 100644 --- a/src/main/java/until/the/eternity/metalwareinfo/interfaces/rest/dto/response/MetalwareInfoResponse.java +++ b/src/main/java/until/the/eternity/metalwareinfo/interfaces/rest/dto/response/MetalwareInfoResponse.java @@ -1,10 +1,9 @@ package until.the.eternity.metalwareinfo.interfaces.rest.dto.response; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; - import java.util.List; import java.util.stream.Collectors; +import lombok.Builder; @Builder @Schema(description = "세공 정보 응답 DTO") diff --git a/src/main/java/until/the/eternity/ranking/application/service/AllTimeRankingService.java b/src/main/java/until/the/eternity/ranking/application/service/AllTimeRankingService.java index a90b5a3e..1fb59d6d 100644 --- a/src/main/java/until/the/eternity/ranking/application/service/AllTimeRankingService.java +++ b/src/main/java/until/the/eternity/ranking/application/service/AllTimeRankingService.java @@ -1,5 +1,6 @@ package until.the.eternity.ranking.application.service; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -7,8 +8,6 @@ import until.the.eternity.ranking.interfaces.rest.dto.response.AllTimeRankingResponse; import until.the.eternity.ranking.repository.RankingRepository; -import java.util.List; - @Service @RequiredArgsConstructor @Transactional(readOnly = true) diff --git a/src/main/java/until/the/eternity/ranking/application/service/CategoryRankingService.java b/src/main/java/until/the/eternity/ranking/application/service/CategoryRankingService.java index 7c1a4217..f70c98e0 100644 --- a/src/main/java/until/the/eternity/ranking/application/service/CategoryRankingService.java +++ b/src/main/java/until/the/eternity/ranking/application/service/CategoryRankingService.java @@ -1,5 +1,6 @@ package until.the.eternity.ranking.application.service; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -8,8 +9,6 @@ import until.the.eternity.ranking.interfaces.rest.dto.response.VolumeRankingResponse; import until.the.eternity.ranking.repository.RankingRepository; -import java.util.List; - @Service @RequiredArgsConstructor @Transactional(readOnly = true) diff --git a/src/main/java/until/the/eternity/ranking/application/service/PriceChangeRankingService.java b/src/main/java/until/the/eternity/ranking/application/service/PriceChangeRankingService.java index 5313153d..be0cd184 100644 --- a/src/main/java/until/the/eternity/ranking/application/service/PriceChangeRankingService.java +++ b/src/main/java/until/the/eternity/ranking/application/service/PriceChangeRankingService.java @@ -1,5 +1,6 @@ package until.the.eternity.ranking.application.service; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -8,8 +9,6 @@ import until.the.eternity.ranking.interfaces.rest.dto.response.VolumeChangeRankingResponse; import until.the.eternity.ranking.repository.RankingRepository; -import java.util.List; - @Service @RequiredArgsConstructor @Transactional(readOnly = true) diff --git a/src/main/java/until/the/eternity/ranking/application/service/PriceRankingService.java b/src/main/java/until/the/eternity/ranking/application/service/PriceRankingService.java index ce9f05b6..757d9cf7 100644 --- a/src/main/java/until/the/eternity/ranking/application/service/PriceRankingService.java +++ b/src/main/java/until/the/eternity/ranking/application/service/PriceRankingService.java @@ -1,5 +1,6 @@ package until.the.eternity.ranking.application.service; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -7,8 +8,6 @@ import until.the.eternity.ranking.interfaces.rest.dto.response.PriceRankingResponse; import until.the.eternity.ranking.repository.RankingRepository; -import java.util.List; - @Service @RequiredArgsConstructor @Transactional(readOnly = true) diff --git a/src/main/java/until/the/eternity/ranking/application/service/VolumeRankingService.java b/src/main/java/until/the/eternity/ranking/application/service/VolumeRankingService.java index 2e73f4bf..033a61bb 100644 --- a/src/main/java/until/the/eternity/ranking/application/service/VolumeRankingService.java +++ b/src/main/java/until/the/eternity/ranking/application/service/VolumeRankingService.java @@ -1,5 +1,6 @@ package until.the.eternity.ranking.application.service; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -7,8 +8,6 @@ import until.the.eternity.ranking.interfaces.rest.dto.response.VolumeRankingResponse; import until.the.eternity.ranking.repository.RankingRepository; -import java.util.List; - @Service @RequiredArgsConstructor @Transactional(readOnly = true) diff --git a/src/main/java/until/the/eternity/ranking/domain/mapper/RankingMapper.java b/src/main/java/until/the/eternity/ranking/domain/mapper/RankingMapper.java index 008f1ea5..973c42d8 100644 --- a/src/main/java/until/the/eternity/ranking/domain/mapper/RankingMapper.java +++ b/src/main/java/until/the/eternity/ranking/domain/mapper/RankingMapper.java @@ -1,8 +1,5 @@ package until.the.eternity.ranking.domain.mapper; -import org.springframework.stereotype.Component; -import until.the.eternity.ranking.interfaces.rest.dto.response.*; - import java.math.BigDecimal; import java.sql.Date; import java.sql.Timestamp; @@ -10,6 +7,8 @@ import java.time.LocalDate; import java.util.List; import java.util.stream.IntStream; +import org.springframework.stereotype.Component; +import until.the.eternity.ranking.interfaces.rest.dto.response.*; @Component public class RankingMapper { diff --git a/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/AllTimeRankingController.java b/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/AllTimeRankingController.java index 57110a5c..606efa53 100644 --- a/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/AllTimeRankingController.java +++ b/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/AllTimeRankingController.java @@ -3,6 +3,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springdoc.core.annotations.ParameterObject; import org.springframework.http.ResponseEntity; @@ -15,8 +16,6 @@ import until.the.eternity.ranking.interfaces.rest.dto.request.RankingSearchRequest; import until.the.eternity.ranking.interfaces.rest.dto.response.AllTimeRankingResponse; -import java.util.List; - @RestController @RequestMapping("/rankings/all-time") @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/CategoryRankingController.java b/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/CategoryRankingController.java index 335b73a8..c02d8c13 100644 --- a/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/CategoryRankingController.java +++ b/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/CategoryRankingController.java @@ -3,6 +3,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springdoc.core.annotations.ParameterObject; import org.springframework.http.ResponseEntity; @@ -16,8 +17,6 @@ import until.the.eternity.ranking.interfaces.rest.dto.response.PriceRankingResponse; import until.the.eternity.ranking.interfaces.rest.dto.response.VolumeRankingResponse; -import java.util.List; - @RestController @RequestMapping("/rankings/category") @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/PriceChangeRankingController.java b/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/PriceChangeRankingController.java index 0cf931ca..3140cac0 100644 --- a/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/PriceChangeRankingController.java +++ b/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/PriceChangeRankingController.java @@ -3,6 +3,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springdoc.core.annotations.ParameterObject; import org.springframework.http.ResponseEntity; @@ -16,8 +17,6 @@ import until.the.eternity.ranking.interfaces.rest.dto.response.PriceChangeRankingResponse; import until.the.eternity.ranking.interfaces.rest.dto.response.VolumeChangeRankingResponse; -import java.util.List; - @RestController @RequestMapping("/rankings/price-change") @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/PriceRankingController.java b/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/PriceRankingController.java index 33b539a1..d27291e2 100644 --- a/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/PriceRankingController.java +++ b/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/PriceRankingController.java @@ -3,6 +3,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springdoc.core.annotations.ParameterObject; import org.springframework.http.ResponseEntity; @@ -15,8 +16,6 @@ import until.the.eternity.ranking.interfaces.rest.dto.request.RankingSearchRequest; import until.the.eternity.ranking.interfaces.rest.dto.response.PriceRankingResponse; -import java.util.List; - @RestController @RequestMapping("/rankings/price") @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/VolumeRankingController.java b/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/VolumeRankingController.java index 77e77c52..68d84170 100644 --- a/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/VolumeRankingController.java +++ b/src/main/java/until/the/eternity/ranking/interfaces/rest/controller/VolumeRankingController.java @@ -3,6 +3,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springdoc.core.annotations.ParameterObject; import org.springframework.http.ResponseEntity; @@ -15,8 +16,6 @@ import until.the.eternity.ranking.interfaces.rest.dto.request.RankingSearchRequest; import until.the.eternity.ranking.interfaces.rest.dto.response.VolumeRankingResponse; -import java.util.List; - @RestController @RequestMapping("/rankings/volume") @RequiredArgsConstructor diff --git a/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/AllTimeRankingResponse.java b/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/AllTimeRankingResponse.java index 5da8ec98..9d0f2ef4 100644 --- a/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/AllTimeRankingResponse.java +++ b/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/AllTimeRankingResponse.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; - import java.time.Instant; @Schema(description = "역대 기록 랭킹 응답") diff --git a/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/PriceChangeRankingResponse.java b/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/PriceChangeRankingResponse.java index d1749dba..8ae2aea7 100644 --- a/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/PriceChangeRankingResponse.java +++ b/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/PriceChangeRankingResponse.java @@ -1,7 +1,6 @@ package until.the.eternity.ranking.interfaces.rest.dto.response; import io.swagger.v3.oas.annotations.media.Schema; - import java.math.BigDecimal; @Schema(description = "가격 변동 랭킹 응답") diff --git a/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/PriceRankingResponse.java b/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/PriceRankingResponse.java index adef1c49..c4789746 100644 --- a/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/PriceRankingResponse.java +++ b/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/PriceRankingResponse.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; - import java.math.BigDecimal; import java.time.LocalDate; diff --git a/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/VolumeChangeRankingResponse.java b/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/VolumeChangeRankingResponse.java index 181014a8..bfde6388 100644 --- a/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/VolumeChangeRankingResponse.java +++ b/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/VolumeChangeRankingResponse.java @@ -1,7 +1,6 @@ package until.the.eternity.ranking.interfaces.rest.dto.response; import io.swagger.v3.oas.annotations.media.Schema; - import java.math.BigDecimal; @Schema(description = "거래량 변동 랭킹 응답") diff --git a/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/VolumeRankingResponse.java b/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/VolumeRankingResponse.java index df5087bc..853e3550 100644 --- a/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/VolumeRankingResponse.java +++ b/src/main/java/until/the/eternity/ranking/interfaces/rest/dto/response/VolumeRankingResponse.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; - import java.math.BigDecimal; import java.time.LocalDate; diff --git a/src/main/java/until/the/eternity/ranking/repository/RankingRepository.java b/src/main/java/until/the/eternity/ranking/repository/RankingRepository.java index 55a252b4..9c41273c 100644 --- a/src/main/java/until/the/eternity/ranking/repository/RankingRepository.java +++ b/src/main/java/until/the/eternity/ranking/repository/RankingRepository.java @@ -1,12 +1,11 @@ package until.the.eternity.ranking.repository; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import until.the.eternity.statistics.domain.entity.daily.ItemDailyStatistics; -import java.util.List; - public interface RankingRepository extends JpaRepository { // ===== 가격 랭킹 (Price Ranking) ===== diff --git a/src/main/java/until/the/eternity/statistics/domain/entity/daily/ItemDailyStatistics.java b/src/main/java/until/the/eternity/statistics/domain/entity/daily/ItemDailyStatistics.java index f6217f44..361df9c1 100644 --- a/src/main/java/until/the/eternity/statistics/domain/entity/daily/ItemDailyStatistics.java +++ b/src/main/java/until/the/eternity/statistics/domain/entity/daily/ItemDailyStatistics.java @@ -2,11 +2,10 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.persistence.*; -import lombok.*; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +import lombok.*; @Entity @Table( diff --git a/src/main/java/until/the/eternity/statistics/domain/entity/daily/SubcategoryDailyStatistics.java b/src/main/java/until/the/eternity/statistics/domain/entity/daily/SubcategoryDailyStatistics.java index 887807d9..66e5382d 100644 --- a/src/main/java/until/the/eternity/statistics/domain/entity/daily/SubcategoryDailyStatistics.java +++ b/src/main/java/until/the/eternity/statistics/domain/entity/daily/SubcategoryDailyStatistics.java @@ -2,11 +2,10 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.persistence.*; -import lombok.*; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +import lombok.*; @Entity @Table( diff --git a/src/main/java/until/the/eternity/statistics/domain/entity/daily/TopCategoryDailyStatistics.java b/src/main/java/until/the/eternity/statistics/domain/entity/daily/TopCategoryDailyStatistics.java index bfcb536b..fb3ab7a8 100644 --- a/src/main/java/until/the/eternity/statistics/domain/entity/daily/TopCategoryDailyStatistics.java +++ b/src/main/java/until/the/eternity/statistics/domain/entity/daily/TopCategoryDailyStatistics.java @@ -2,11 +2,10 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.persistence.*; -import lombok.*; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +import lombok.*; @Entity @Table( diff --git a/src/main/java/until/the/eternity/statistics/domain/entity/weekly/ItemWeeklyStatistics.java b/src/main/java/until/the/eternity/statistics/domain/entity/weekly/ItemWeeklyStatistics.java index 44c20386..6970f18e 100644 --- a/src/main/java/until/the/eternity/statistics/domain/entity/weekly/ItemWeeklyStatistics.java +++ b/src/main/java/until/the/eternity/statistics/domain/entity/weekly/ItemWeeklyStatistics.java @@ -2,11 +2,10 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.persistence.*; -import lombok.*; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +import lombok.*; @Entity @Table( diff --git a/src/main/java/until/the/eternity/statistics/domain/entity/weekly/SubcategoryWeeklyStatistics.java b/src/main/java/until/the/eternity/statistics/domain/entity/weekly/SubcategoryWeeklyStatistics.java index a05c528e..5756b091 100644 --- a/src/main/java/until/the/eternity/statistics/domain/entity/weekly/SubcategoryWeeklyStatistics.java +++ b/src/main/java/until/the/eternity/statistics/domain/entity/weekly/SubcategoryWeeklyStatistics.java @@ -2,11 +2,10 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.persistence.*; -import lombok.*; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +import lombok.*; @Entity @Table( diff --git a/src/main/java/until/the/eternity/statistics/domain/entity/weekly/TopCategoryWeeklyStatistics.java b/src/main/java/until/the/eternity/statistics/domain/entity/weekly/TopCategoryWeeklyStatistics.java index 22e4406d..9201faaf 100644 --- a/src/main/java/until/the/eternity/statistics/domain/entity/weekly/TopCategoryWeeklyStatistics.java +++ b/src/main/java/until/the/eternity/statistics/domain/entity/weekly/TopCategoryWeeklyStatistics.java @@ -2,11 +2,10 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.persistence.*; -import lombok.*; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +import lombok.*; @Entity @Table( diff --git a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/DailyStatisticsSearchRequest.java b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/DailyStatisticsSearchRequest.java index 59954a6b..7908da49 100644 --- a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/DailyStatisticsSearchRequest.java +++ b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/DailyStatisticsSearchRequest.java @@ -1,9 +1,8 @@ package until.the.eternity.statistics.interfaces.rest.dto.request; import io.swagger.v3.oas.annotations.media.Schema; -import org.springframework.format.annotation.DateTimeFormat; - import java.time.LocalDate; +import org.springframework.format.annotation.DateTimeFormat; @Schema(description = "일간 통계 검색 요청") public record DailyStatisticsSearchRequest( diff --git a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/ItemDailyStatisticsSearchRequest.java b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/ItemDailyStatisticsSearchRequest.java index 46b2cf78..f6f91521 100644 --- a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/ItemDailyStatisticsSearchRequest.java +++ b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/ItemDailyStatisticsSearchRequest.java @@ -2,9 +2,8 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; -import org.springframework.format.annotation.DateTimeFormat; - import java.time.LocalDate; +import org.springframework.format.annotation.DateTimeFormat; @Schema(description = "아이템별 일간 통계 검색 요청") public record ItemDailyStatisticsSearchRequest( diff --git a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/ItemWeeklyStatisticsSearchRequest.java b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/ItemWeeklyStatisticsSearchRequest.java index d132153d..1360de10 100644 --- a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/ItemWeeklyStatisticsSearchRequest.java +++ b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/ItemWeeklyStatisticsSearchRequest.java @@ -2,9 +2,8 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; -import org.springframework.format.annotation.DateTimeFormat; - import java.time.LocalDate; +import org.springframework.format.annotation.DateTimeFormat; @Schema(description = "아이템별 주간 통계 검색 요청") public record ItemWeeklyStatisticsSearchRequest( diff --git a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/SubcategoryDailyStatisticsSearchRequest.java b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/SubcategoryDailyStatisticsSearchRequest.java index 4ff95e0d..47c2c966 100644 --- a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/SubcategoryDailyStatisticsSearchRequest.java +++ b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/SubcategoryDailyStatisticsSearchRequest.java @@ -2,9 +2,8 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; -import org.springframework.format.annotation.DateTimeFormat; - import java.time.LocalDate; +import org.springframework.format.annotation.DateTimeFormat; @Schema(description = "서브카테고리별 일간 통계 검색 요청") public record SubcategoryDailyStatisticsSearchRequest( diff --git a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/SubcategoryWeeklyStatisticsSearchRequest.java b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/SubcategoryWeeklyStatisticsSearchRequest.java index e0247871..9d7bc716 100644 --- a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/SubcategoryWeeklyStatisticsSearchRequest.java +++ b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/SubcategoryWeeklyStatisticsSearchRequest.java @@ -2,9 +2,8 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; -import org.springframework.format.annotation.DateTimeFormat; - import java.time.LocalDate; +import org.springframework.format.annotation.DateTimeFormat; @Schema(description = "서브카테고리별 주간 통계 검색 요청") public record SubcategoryWeeklyStatisticsSearchRequest( diff --git a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/TopCategoryDailyStatisticsSearchRequest.java b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/TopCategoryDailyStatisticsSearchRequest.java index 382bfefb..4b8e25d7 100644 --- a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/TopCategoryDailyStatisticsSearchRequest.java +++ b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/TopCategoryDailyStatisticsSearchRequest.java @@ -2,9 +2,8 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; -import org.springframework.format.annotation.DateTimeFormat; - import java.time.LocalDate; +import org.springframework.format.annotation.DateTimeFormat; @Schema(description = "탑카테고리별 일간 통계 검색 요청") public record TopCategoryDailyStatisticsSearchRequest( diff --git a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/TopCategoryWeeklyStatisticsSearchRequest.java b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/TopCategoryWeeklyStatisticsSearchRequest.java index 2986275f..ad1c6b41 100644 --- a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/TopCategoryWeeklyStatisticsSearchRequest.java +++ b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/request/TopCategoryWeeklyStatisticsSearchRequest.java @@ -2,9 +2,8 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; -import org.springframework.format.annotation.DateTimeFormat; - import java.time.LocalDate; +import org.springframework.format.annotation.DateTimeFormat; @Schema(description = "탑카테고리별 주간 통계 검색 요청") public record TopCategoryWeeklyStatisticsSearchRequest( diff --git a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/ItemDailyStatisticsResponse.java b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/ItemDailyStatisticsResponse.java index e2485f4d..a9611010 100644 --- a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/ItemDailyStatisticsResponse.java +++ b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/ItemDailyStatisticsResponse.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; diff --git a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/ItemWeeklyStatisticsResponse.java b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/ItemWeeklyStatisticsResponse.java index 7d499d85..05e86f70 100644 --- a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/ItemWeeklyStatisticsResponse.java +++ b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/ItemWeeklyStatisticsResponse.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; diff --git a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/SubcategoryDailyStatisticsResponse.java b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/SubcategoryDailyStatisticsResponse.java index b167b92c..e27f7f3a 100644 --- a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/SubcategoryDailyStatisticsResponse.java +++ b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/SubcategoryDailyStatisticsResponse.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; diff --git a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/SubcategoryWeeklyStatisticsResponse.java b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/SubcategoryWeeklyStatisticsResponse.java index 5f67f69e..bb826866 100644 --- a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/SubcategoryWeeklyStatisticsResponse.java +++ b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/SubcategoryWeeklyStatisticsResponse.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; diff --git a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/TopCategoryDailyStatisticsResponse.java b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/TopCategoryDailyStatisticsResponse.java index df6c9f8e..fd49c2f2 100644 --- a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/TopCategoryDailyStatisticsResponse.java +++ b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/TopCategoryDailyStatisticsResponse.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; diff --git a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/TopCategoryWeeklyStatisticsResponse.java b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/TopCategoryWeeklyStatisticsResponse.java index 01782f02..ad81f768 100644 --- a/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/TopCategoryWeeklyStatisticsResponse.java +++ b/src/main/java/until/the/eternity/statistics/interfaces/rest/dto/response/TopCategoryWeeklyStatisticsResponse.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; diff --git a/src/main/java/until/the/eternity/statistics/repository/daily/ItemDailyStatisticsRepository.java b/src/main/java/until/the/eternity/statistics/repository/daily/ItemDailyStatisticsRepository.java index 253bcac2..447c2425 100644 --- a/src/main/java/until/the/eternity/statistics/repository/daily/ItemDailyStatisticsRepository.java +++ b/src/main/java/until/the/eternity/statistics/repository/daily/ItemDailyStatisticsRepository.java @@ -1,5 +1,7 @@ package until.the.eternity.statistics.repository.daily; +import java.time.LocalDate; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -7,9 +9,6 @@ import org.springframework.transaction.annotation.Transactional; import until.the.eternity.statistics.domain.entity.daily.ItemDailyStatistics; -import java.time.LocalDate; -import java.util.List; - public interface ItemDailyStatisticsRepository extends JpaRepository { /** diff --git a/src/main/java/until/the/eternity/statistics/repository/daily/SubcategoryDailyStatisticsRepository.java b/src/main/java/until/the/eternity/statistics/repository/daily/SubcategoryDailyStatisticsRepository.java index e8f72fc4..3bed0b1a 100644 --- a/src/main/java/until/the/eternity/statistics/repository/daily/SubcategoryDailyStatisticsRepository.java +++ b/src/main/java/until/the/eternity/statistics/repository/daily/SubcategoryDailyStatisticsRepository.java @@ -1,5 +1,7 @@ package until.the.eternity.statistics.repository.daily; +import java.time.LocalDate; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -7,9 +9,6 @@ import org.springframework.transaction.annotation.Transactional; import until.the.eternity.statistics.domain.entity.daily.SubcategoryDailyStatistics; -import java.time.LocalDate; -import java.util.List; - public interface SubcategoryDailyStatisticsRepository extends JpaRepository { diff --git a/src/main/java/until/the/eternity/statistics/repository/daily/TopCategoryDailyStatisticsRepository.java b/src/main/java/until/the/eternity/statistics/repository/daily/TopCategoryDailyStatisticsRepository.java index 0fff60a8..31749482 100644 --- a/src/main/java/until/the/eternity/statistics/repository/daily/TopCategoryDailyStatisticsRepository.java +++ b/src/main/java/until/the/eternity/statistics/repository/daily/TopCategoryDailyStatisticsRepository.java @@ -1,5 +1,7 @@ package until.the.eternity.statistics.repository.daily; +import java.time.LocalDate; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -7,9 +9,6 @@ import org.springframework.transaction.annotation.Transactional; import until.the.eternity.statistics.domain.entity.daily.TopCategoryDailyStatistics; -import java.time.LocalDate; -import java.util.List; - public interface TopCategoryDailyStatisticsRepository extends JpaRepository { diff --git a/src/main/java/until/the/eternity/statistics/repository/weekly/ItemWeeklyStatisticsRepository.java b/src/main/java/until/the/eternity/statistics/repository/weekly/ItemWeeklyStatisticsRepository.java index 24f37b00..dc7a301a 100644 --- a/src/main/java/until/the/eternity/statistics/repository/weekly/ItemWeeklyStatisticsRepository.java +++ b/src/main/java/until/the/eternity/statistics/repository/weekly/ItemWeeklyStatisticsRepository.java @@ -1,5 +1,6 @@ package until.the.eternity.statistics.repository.weekly; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -7,8 +8,6 @@ import org.springframework.transaction.annotation.Transactional; import until.the.eternity.statistics.domain.entity.weekly.ItemWeeklyStatistics; -import java.util.List; - public interface ItemWeeklyStatisticsRepository extends JpaRepository { /** diff --git a/src/main/java/until/the/eternity/statistics/repository/weekly/SubcategoryWeeklyStatisticsRepository.java b/src/main/java/until/the/eternity/statistics/repository/weekly/SubcategoryWeeklyStatisticsRepository.java index ea3542c1..fb0986af 100644 --- a/src/main/java/until/the/eternity/statistics/repository/weekly/SubcategoryWeeklyStatisticsRepository.java +++ b/src/main/java/until/the/eternity/statistics/repository/weekly/SubcategoryWeeklyStatisticsRepository.java @@ -1,5 +1,6 @@ package until.the.eternity.statistics.repository.weekly; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -7,8 +8,6 @@ import org.springframework.transaction.annotation.Transactional; import until.the.eternity.statistics.domain.entity.weekly.SubcategoryWeeklyStatistics; -import java.util.List; - public interface SubcategoryWeeklyStatisticsRepository extends JpaRepository { diff --git a/src/main/java/until/the/eternity/statistics/repository/weekly/TopCategoryWeeklyStatisticsRepository.java b/src/main/java/until/the/eternity/statistics/repository/weekly/TopCategoryWeeklyStatisticsRepository.java index c2140d57..45a1dad4 100644 --- a/src/main/java/until/the/eternity/statistics/repository/weekly/TopCategoryWeeklyStatisticsRepository.java +++ b/src/main/java/until/the/eternity/statistics/repository/weekly/TopCategoryWeeklyStatisticsRepository.java @@ -1,5 +1,6 @@ package until.the.eternity.statistics.repository.weekly; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -7,8 +8,6 @@ import org.springframework.transaction.annotation.Transactional; import until.the.eternity.statistics.domain.entity.weekly.TopCategoryWeeklyStatistics; -import java.util.List; - public interface TopCategoryWeeklyStatisticsRepository extends JpaRepository { diff --git a/src/main/resources/db/migration/R__insert_item_info.sql b/src/main/resources/db/migration/R__insert_item_info.sql index 7f96dc75..cc873b7c 100644 --- a/src/main/resources/db/migration/R__insert_item_info.sql +++ b/src/main/resources/db/migration/R__insert_item_info.sql @@ -1,3 +1,4 @@ -delete from item_info; -INSERT INTO item_info (name, top_category, sub_category) -select distinct item_name, item_top_category, item_sub_category from auction_history; \ No newline at end of file +-- TODO: upsert문으로 변경 +-- delete from item_info; +-- INSERT INTO item_info (name, top_category, sub_category) +-- select distinct item_name, item_top_category, item_sub_category from auction_history; \ No newline at end of file diff --git a/src/main/resources/db/migration/R__insert_item_option_value_info.sql b/src/main/resources/db/migration/R__insert_item_option_value_info.sql index 188c53f7..9174a466 100644 --- a/src/main/resources/db/migration/R__insert_item_option_value_info.sql +++ b/src/main/resources/db/migration/R__insert_item_option_value_info.sql @@ -1,3 +1,4 @@ -delete from item_option_value_info; -insert into item_option_value_info (option_type, option_sub_type, option_value, option_value2, option_desc) -select distinct option_type, option_sub_type, option_value, option_value2, option_desc from auction_item_option; \ No newline at end of file +-- TODO: upsert문으로 변경 +-- delete from item_option_value_info; +-- insert into item_option_value_info (option_type, option_sub_type, option_value, option_value2, option_desc) +-- select distinct option_type, option_sub_type, option_value, option_value2, option_desc from auction__history_item_option; \ No newline at end of file diff --git a/src/main/resources/db/migration/R__insert_metalware_info_table.sql b/src/main/resources/db/migration/R__insert_metalware_info_table.sql index d7920370..ce725a50 100644 --- a/src/main/resources/db/migration/R__insert_metalware_info_table.sql +++ b/src/main/resources/db/migration/R__insert_metalware_info_table.sql @@ -1,5 +1,6 @@ -delete from metalware_info; -insert into metalware_info (metalware) -select distinct regexp_replace(regexp_substr(option_value, ' ?[^\(]+'), ' ?[0-9][0-9]? ?레벨', '') as metalware -from auction_item_option -where option_type = '세공 옵션'; \ No newline at end of file +-- TODO: upsert문으로 변경 +-- delete from metalware_info; +-- insert into metalware_info (metalware) +-- select distinct regexp_replace(regexp_substr(option_value, ' ?[^\(]+'), ' ?[0-9][0-9]? ?레벨', '') as metalware +-- from auction_item_option +-- where option_type = '세공 옵션'; \ No newline at end of file diff --git a/src/main/resources/db/migration/V21__create_batch_execution_log_table.sql b/src/main/resources/db/migration/V21__create_batch_execution_log_table.sql new file mode 100644 index 00000000..e1bd7102 --- /dev/null +++ b/src/main/resources/db/migration/V21__create_batch_execution_log_table.sql @@ -0,0 +1,12 @@ +CREATE TABLE batch_execution_log ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + batch_type VARCHAR(50) NOT NULL COMMENT 'AUCTION_HISTORY_BATCH | ITEM_INFO_SYNC | METALWARE_ATTRIBUTE_SYNC', + trigger_type TINYINT NOT NULL COMMENT '0: 자동(Scheduler), 1: 수동(API 호출)', + started_at DATETIME(3) NOT NULL, + completed_at DATETIME(3) NULL, + is_success TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0: 실패, 1: 성공', + record_count INT NOT NULL DEFAULT 0, + message VARCHAR(1000) NULL, + INDEX idx_batch_type_started_at (batch_type, started_at), + INDEX idx_started_at (started_at) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='배치 및 동기화 기능 실행 이력'; diff --git a/src/main/resources/db/migration/V22__fix_batch_execution_log_trigger_type_column.sql b/src/main/resources/db/migration/V22__fix_batch_execution_log_trigger_type_column.sql new file mode 100644 index 00000000..6890e257 --- /dev/null +++ b/src/main/resources/db/migration/V22__fix_batch_execution_log_trigger_type_column.sql @@ -0,0 +1,2 @@ +ALTER TABLE batch_execution_log + MODIFY COLUMN trigger_type TINYINT NOT NULL COMMENT '0: 자동(Scheduler), 1: 수동(API 호출)'; diff --git a/src/test/java/until/the/eternity/auctionhistory/application/service/AuctionHistoryServiceTest.java b/src/test/java/until/the/eternity/auctionhistory/application/service/AuctionHistoryServiceTest.java index 243269c3..c9ad8af0 100644 --- a/src/test/java/until/the/eternity/auctionhistory/application/service/AuctionHistoryServiceTest.java +++ b/src/test/java/until/the/eternity/auctionhistory/application/service/AuctionHistoryServiceTest.java @@ -1,5 +1,11 @@ package until.the.eternity.auctionhistory.application.service; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.*; + +import java.util.List; +import java.util.Optional; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -21,13 +27,6 @@ import until.the.eternity.common.request.PageRequestDto; import until.the.eternity.common.response.PageResponseDto; -import java.util.List; -import java.util.Optional; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.Mockito.*; - @ExtendWith(MockitoExtension.class) class AuctionHistoryServiceTest { diff --git a/src/test/java/until/the/eternity/auctionhistory/application/service/fetcher/AuctionHistoryFetcherTest.java b/src/test/java/until/the/eternity/auctionhistory/application/service/fetcher/AuctionHistoryFetcherTest.java index d1187257..e6e76af4 100644 --- a/src/test/java/until/the/eternity/auctionhistory/application/service/fetcher/AuctionHistoryFetcherTest.java +++ b/src/test/java/until/the/eternity/auctionhistory/application/service/fetcher/AuctionHistoryFetcherTest.java @@ -1,5 +1,13 @@ package until.the.eternity.auctionhistory.application.service.fetcher; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.*; + +import java.time.Instant; +import java.util.List; +import java.util.OptionalInt; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -14,15 +22,6 @@ import until.the.eternity.auctionhistory.interfaces.external.dto.OpenApiAuctionHistoryResponse; import until.the.eternity.common.enums.ItemCategory; -import java.time.Instant; -import java.util.List; -import java.util.OptionalInt; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - @ExtendWith(MockitoExtension.class) class AuctionHistoryFetcherTest { diff --git a/src/test/java/until/the/eternity/auctionhistory/application/service/persister/AuctionHistoryPersisterTest.java b/src/test/java/until/the/eternity/auctionhistory/application/service/persister/AuctionHistoryPersisterTest.java index 7764a911..0d9b8d2d 100644 --- a/src/test/java/until/the/eternity/auctionhistory/application/service/persister/AuctionHistoryPersisterTest.java +++ b/src/test/java/until/the/eternity/auctionhistory/application/service/persister/AuctionHistoryPersisterTest.java @@ -1,5 +1,11 @@ package until.the.eternity.auctionhistory.application.service.persister; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.*; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -13,13 +19,6 @@ import until.the.eternity.auctionhistory.interfaces.external.dto.OpenApiAuctionHistoryResponse; import until.the.eternity.common.enums.ItemCategory; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.*; - @ExtendWith(MockitoExtension.class) class AuctionHistoryPersisterTest { diff --git a/src/test/java/until/the/eternity/auctionhistory/domain/service/AuctionHistoryDuplicateCheckerTest.java b/src/test/java/until/the/eternity/auctionhistory/domain/service/AuctionHistoryDuplicateCheckerTest.java index 2591d675..e0018834 100644 --- a/src/test/java/until/the/eternity/auctionhistory/domain/service/AuctionHistoryDuplicateCheckerTest.java +++ b/src/test/java/until/the/eternity/auctionhistory/domain/service/AuctionHistoryDuplicateCheckerTest.java @@ -1,5 +1,13 @@ package until.the.eternity.auctionhistory.domain.service; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; + +import java.time.Instant; +import java.util.List; +import java.util.Optional; +import java.util.OptionalInt; +import java.util.Set; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -12,15 +20,6 @@ import until.the.eternity.auctionhistory.interfaces.external.dto.OpenApiAuctionHistoryResponse; import until.the.eternity.common.enums.ItemCategory; -import java.time.Instant; -import java.util.List; -import java.util.Optional; -import java.util.OptionalInt; -import java.util.Set; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.when; - @ExtendWith(MockitoExtension.class) class AuctionHistoryDuplicateCheckerTest { diff --git a/src/test/java/until/the/eternity/auctionrealtime/application/service/fetcher/AuctionRealtimeFetcherTest.java b/src/test/java/until/the/eternity/auctionrealtime/application/service/fetcher/AuctionRealtimeFetcherTest.java index e59f27ad..cb22f7b3 100644 --- a/src/test/java/until/the/eternity/auctionrealtime/application/service/fetcher/AuctionRealtimeFetcherTest.java +++ b/src/test/java/until/the/eternity/auctionrealtime/application/service/fetcher/AuctionRealtimeFetcherTest.java @@ -1,5 +1,12 @@ package until.the.eternity.auctionrealtime.application.service.fetcher; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.*; + +import java.time.Instant; +import java.util.List; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -14,14 +21,6 @@ import until.the.eternity.auctionrealtime.interfaces.external.dto.OpenApiAuctionRealtimeResponse; import until.the.eternity.common.enums.ItemCategory; -import java.time.Instant; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - @ExtendWith(MockitoExtension.class) class AuctionRealtimeFetcherTest { diff --git a/src/test/java/until/the/eternity/auctionsearchoption/application/service/AuctionSearchOptionServiceTest.java b/src/test/java/until/the/eternity/auctionsearchoption/application/service/AuctionSearchOptionServiceTest.java index cbd42577..d92cf748 100644 --- a/src/test/java/until/the/eternity/auctionsearchoption/application/service/AuctionSearchOptionServiceTest.java +++ b/src/test/java/until/the/eternity/auctionsearchoption/application/service/AuctionSearchOptionServiceTest.java @@ -1,6 +1,11 @@ package until.the.eternity.auctionsearchoption.application.service; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.*; + import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.List; +import java.util.Map; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -12,12 +17,6 @@ import until.the.eternity.auctionsearchoption.interfaces.rest.dto.response.FieldMetadata; import until.the.eternity.auctionsearchoption.interfaces.rest.dto.response.SearchOptionMetadataResponse; -import java.util.List; -import java.util.Map; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.*; - @ExtendWith(MockitoExtension.class) class AuctionSearchOptionServiceTest { diff --git a/src/test/java/until/the/eternity/common/util/SegongOptionParserTest.java b/src/test/java/until/the/eternity/common/util/SegongOptionParserTest.java index 8f0e956d..be0a18f5 100644 --- a/src/test/java/until/the/eternity/common/util/SegongOptionParserTest.java +++ b/src/test/java/until/the/eternity/common/util/SegongOptionParserTest.java @@ -1,13 +1,13 @@ package until.the.eternity.common.util; +import static org.assertj.core.api.Assertions.assertThat; + import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import static org.assertj.core.api.Assertions.assertThat; - class SegongOptionParserTest { private static final String SEGONG = "세공 옵션"; diff --git a/src/test/java/until/the/eternity/iteminfo/application/service/ItemInfoServiceTest.java b/src/test/java/until/the/eternity/iteminfo/application/service/ItemInfoServiceTest.java index 0c472953..bd64c643 100644 --- a/src/test/java/until/the/eternity/iteminfo/application/service/ItemInfoServiceTest.java +++ b/src/test/java/until/the/eternity/iteminfo/application/service/ItemInfoServiceTest.java @@ -1,5 +1,10 @@ package until.the.eternity.iteminfo.application.service; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.*; + +import java.util.ArrayList; +import java.util.List; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -17,12 +22,6 @@ import until.the.eternity.iteminfo.interfaces.rest.dto.response.ItemInfoSummaryResponse; import until.the.eternity.iteminfo.interfaces.rest.dto.response.ItemInfoSyncResponse; -import java.util.ArrayList; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.*; - @ExtendWith(MockitoExtension.class) class ItemInfoServiceTest { diff --git a/src/test/java/until/the/eternity/metalwareinfo/application/service/MetalwareInfoServiceTest.java b/src/test/java/until/the/eternity/metalwareinfo/application/service/MetalwareInfoServiceTest.java index b357e1cf..4bd777ea 100644 --- a/src/test/java/until/the/eternity/metalwareinfo/application/service/MetalwareInfoServiceTest.java +++ b/src/test/java/until/the/eternity/metalwareinfo/application/service/MetalwareInfoServiceTest.java @@ -1,5 +1,9 @@ package until.the.eternity.metalwareinfo.application.service; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.*; + +import java.util.List; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -10,11 +14,6 @@ import until.the.eternity.metalwareinfo.interfaces.rest.dto.response.MetalwareInfoResponse; import until.the.eternity.metalwareinfo.interfaces.rest.dto.response.MetalwareInfoSyncResponse; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.*; - @ExtendWith(MockitoExtension.class) class MetalwareInfoServiceTest {