feat: 다른 서비스에서 사용할 지역 정보 조회 서비스 로직 추가

This commit is contained in:
이상진 2025-09-17 10:42:52 +09:00
parent 7c967defcc
commit 7a6afc7282
2 changed files with 28 additions and 11 deletions

View File

@ -7,11 +7,7 @@ import org.springframework.transaction.annotation.Transactional
import roomescape.region.exception.RegionErrorCode import roomescape.region.exception.RegionErrorCode
import roomescape.region.exception.RegionException import roomescape.region.exception.RegionException
import roomescape.region.infrastructure.persistence.RegionRepository import roomescape.region.infrastructure.persistence.RegionRepository
import roomescape.region.web.RegionCodeResponse import roomescape.region.web.*
import roomescape.region.web.SidoListResponse
import roomescape.region.web.SidoResponse
import roomescape.region.web.SigunguListResponse
import roomescape.region.web.SigunguResponse
private val log: KLogger = KotlinLogging.logger {} private val log: KLogger = KotlinLogging.logger {}
@ -61,4 +57,17 @@ class RegionService(
throw RegionException(RegionErrorCode.REGION_CODE_NOT_FOUND) throw RegionException(RegionErrorCode.REGION_CODE_NOT_FOUND)
} }
} }
@Transactional(readOnly = true)
fun findRegionInfo(regionCode: String): RegionInfoResponse {
log.info { "[RegionService.findRegionInfo] 지역 정보 조회 시작: regionCode=${regionCode}" }
return regionRepository.findByCode(regionCode)?.let {
log.info { "[RegionService.findRegionInfo] 지역 정보 조회 완료: code=${it} regionCode=${regionCode}" }
RegionInfoResponse(it.code, it.sidoName, it.sigunguName)
} ?: run {
log.warn { "[RegionService.findRegionInfo] 지역 정보 조회 실패: regionCode=${regionCode}" }
throw RegionException(RegionErrorCode.REGION_CODE_NOT_FOUND)
}
}
} }

View File

@ -6,7 +6,8 @@ import org.springframework.data.repository.query.Param
interface RegionRepository : JpaRepository<RegionEntity, String> { interface RegionRepository : JpaRepository<RegionEntity, String> {
@Query(""" @Query(
"""
SELECT SELECT
new kotlin.Pair(r.sidoCode, r.sidoName) new kotlin.Pair(r.sidoCode, r.sidoName)
FROM FROM
@ -15,10 +16,12 @@ interface RegionRepository : JpaRepository<RegionEntity, String> {
r.sidoCode r.sidoCode
ORDER BY ORDER BY
r.sidoName r.sidoName
""") """
)
fun readAllSido(): List<Pair<String, String>> fun readAllSido(): List<Pair<String, String>>
@Query(""" @Query(
"""
SELECT SELECT
new kotlin.Pair(r.sigunguCode, r.sigunguName) new kotlin.Pair(r.sigunguCode, r.sigunguName)
FROM FROM
@ -29,12 +32,14 @@ interface RegionRepository : JpaRepository<RegionEntity, String> {
r.sigunguCode r.sigunguCode
ORDER BY ORDER BY
r.sigunguName r.sigunguName
""") """
)
fun findAllSigunguBySido( fun findAllSigunguBySido(
@Param("sidoCode") sidoCode: String @Param("sidoCode") sidoCode: String
): List<Pair<String, String>> ): List<Pair<String, String>>
@Query(""" @Query(
"""
SELECT SELECT
r.code r.code
FROM FROM
@ -42,9 +47,12 @@ interface RegionRepository : JpaRepository<RegionEntity, String> {
WHERE WHERE
r.sidoCode = :sidoCode r.sidoCode = :sidoCode
AND r.sigunguCode = :sigunguCode AND r.sigunguCode = :sigunguCode
""") """
)
fun findRegionCode( fun findRegionCode(
@Param("sidoCode") sidoCode: String, @Param("sidoCode") sidoCode: String,
@Param("sigunguCode") sigunguCode: String, @Param("sigunguCode") sigunguCode: String,
): String? ): String?
fun findByCode(regionCode: String): RegionEntity?
} }