diff --git a/app/src/main/java/kr/ksw/visitkorea/data/remote/api/DetailApi.kt b/app/src/main/java/kr/ksw/visitkorea/data/remote/api/DetailApi.kt index 2a6dbfb..2b78bc5 100644 --- a/app/src/main/java/kr/ksw/visitkorea/data/remote/api/DetailApi.kt +++ b/app/src/main/java/kr/ksw/visitkorea/data/remote/api/DetailApi.kt @@ -2,6 +2,7 @@ package kr.ksw.visitkorea.data.remote.api import kr.ksw.visitkorea.data.remote.dto.DetailCommonDTO import kr.ksw.visitkorea.data.remote.dto.DetailImageDTO +import kr.ksw.visitkorea.data.remote.dto.DetailInfoDTO import kr.ksw.visitkorea.data.remote.dto.DetailIntroDTO import kr.ksw.visitkorea.data.remote.model.ApiResponse import retrofit2.http.GET @@ -23,9 +24,9 @@ interface DetailApi { @GET("detailInfo1") suspend fun getDetailInfo( - @Query("contentId") contentId: Int, - @Query("contentTypeId") contentTypeId: Int - ) + @Query("contentId") contentId: String, + @Query("contentTypeId") contentTypeId: String = "32" + ): ApiResponse @GET("detailImage1") suspend fun getDetailImage( diff --git a/app/src/main/java/kr/ksw/visitkorea/data/remote/dto/DetailInfoDTO.kt b/app/src/main/java/kr/ksw/visitkorea/data/remote/dto/DetailInfoDTO.kt new file mode 100644 index 0000000..1200b2d --- /dev/null +++ b/app/src/main/java/kr/ksw/visitkorea/data/remote/dto/DetailInfoDTO.kt @@ -0,0 +1,46 @@ +package kr.ksw.visitkorea.data.remote.dto + +import com.google.gson.annotations.SerializedName + +data class DetailInfoDTO ( + @SerializedName("roomtitle") + val roomTitle: String, + @SerializedName("roomsize1") + val roomSize: String, + @SerializedName("roomsize2") + val roomSize2: String, + @SerializedName("roombasecount") + val roomBaseCount: String, + @SerializedName("roommaxcount") + val roomMaxCount: String, + @SerializedName("roomoffseasonminfee1") + val roomOffSeasonMinFee1: String, // 비수기주중최소 + @SerializedName("roomoffseasonminfee2") + val roomoffseasonminfee2: String, // 비수기주말최소 + @SerializedName("roompeakseasonminfee1") + val roomPeakSeasonMinfee1: String, // 성수기주중최소 + @SerializedName("roompeakseasonminfee2") + val roomPeakSeasonMinfee2: String, // 성수기주말최소 + @SerializedName("roombathfacility") + val roomBathFacility: String, + @SerializedName("roomtv") + val roomTv: String, + @SerializedName("roompc") + val roomPc: String, + @SerializedName("roominternet") + val roomInternet: String, + @SerializedName("roomrefrigerator") + val roomRefrigerator: String, + @SerializedName("roomhairdryer") + val roomHairdryer: String, + @SerializedName("roomimg1") + val roomImg1: String, + @SerializedName("roomimg2") + val roomImg2: String, + @SerializedName("roomimg3") + val roomImg3: String, + @SerializedName("roomimg4") + val roomImg4: String, + @SerializedName("roomimg5") + val roomImg5: String, +) \ No newline at end of file diff --git a/app/src/main/java/kr/ksw/visitkorea/data/repository/DetailRepository.kt b/app/src/main/java/kr/ksw/visitkorea/data/repository/DetailRepository.kt index a6d6193..280bbc2 100644 --- a/app/src/main/java/kr/ksw/visitkorea/data/repository/DetailRepository.kt +++ b/app/src/main/java/kr/ksw/visitkorea/data/repository/DetailRepository.kt @@ -2,6 +2,7 @@ package kr.ksw.visitkorea.data.repository import kr.ksw.visitkorea.data.remote.dto.DetailCommonDTO import kr.ksw.visitkorea.data.remote.dto.DetailImageDTO +import kr.ksw.visitkorea.data.remote.dto.DetailInfoDTO import kr.ksw.visitkorea.data.remote.dto.DetailIntroDTO interface DetailRepository { @@ -11,11 +12,15 @@ interface DetailRepository { suspend fun getDetailIntro( contentId: String, - contentTypeId: String + contentTypeId: String, ): Result + suspend fun getDetailInfo( + contentId: String, + ): Result> + suspend fun getDetailImage( contentId: String, - imageYN: String + imageYN: String, ): Result> } \ No newline at end of file diff --git a/app/src/main/java/kr/ksw/visitkorea/data/repository/DetailRepositoryImpl.kt b/app/src/main/java/kr/ksw/visitkorea/data/repository/DetailRepositoryImpl.kt index fbf8491..07f5fa9 100644 --- a/app/src/main/java/kr/ksw/visitkorea/data/repository/DetailRepositoryImpl.kt +++ b/app/src/main/java/kr/ksw/visitkorea/data/repository/DetailRepositoryImpl.kt @@ -4,6 +4,7 @@ import kr.ksw.visitkorea.data.mapper.toItems import kr.ksw.visitkorea.data.remote.api.DetailApi import kr.ksw.visitkorea.data.remote.dto.DetailCommonDTO import kr.ksw.visitkorea.data.remote.dto.DetailImageDTO +import kr.ksw.visitkorea.data.remote.dto.DetailInfoDTO import kr.ksw.visitkorea.data.remote.dto.DetailIntroDTO import javax.inject.Inject @@ -28,6 +29,14 @@ class DetailRepositoryImpl @Inject constructor( ).toItems().first() } + override suspend fun getDetailInfo( + contentId: String + ): Result> = runCatching { + detailApi.getDetailInfo( + contentId + ).toItems() + } + override suspend fun getDetailImage( contentId: String, imageYN: String, diff --git a/app/src/main/java/kr/ksw/visitkorea/domain/di/DetailModule.kt b/app/src/main/java/kr/ksw/visitkorea/domain/di/DetailModule.kt index 7ca1aed..b365633 100644 --- a/app/src/main/java/kr/ksw/visitkorea/domain/di/DetailModule.kt +++ b/app/src/main/java/kr/ksw/visitkorea/domain/di/DetailModule.kt @@ -8,6 +8,8 @@ import kr.ksw.visitkorea.domain.usecase.detail.GetDetailCommonUseCase import kr.ksw.visitkorea.domain.usecase.detail.GetDetailCommonUseCaseImpl import kr.ksw.visitkorea.domain.usecase.detail.GetDetailImageUseCase import kr.ksw.visitkorea.domain.usecase.detail.GetDetailImageUseCaseUseCaseImpl +import kr.ksw.visitkorea.domain.usecase.detail.GetDetailInfoUseCase +import kr.ksw.visitkorea.domain.usecase.detail.GetDetailInfoUseCaseImpl import kr.ksw.visitkorea.domain.usecase.detail.GetDetailIntroUseCase import kr.ksw.visitkorea.domain.usecase.detail.GetDetailIntroUseCaseImpl @@ -28,4 +30,9 @@ abstract class DetailModule { abstract fun bindGetDetailImageUseCase( getDetailImageUseCase: GetDetailImageUseCaseUseCaseImpl ): GetDetailImageUseCase + + @Binds + abstract fun bindGetDetailInfoUseCase( + getDetailInfoUseCase: GetDetailInfoUseCaseImpl + ): GetDetailInfoUseCase } \ No newline at end of file diff --git a/app/src/main/java/kr/ksw/visitkorea/domain/usecase/detail/GetDetailInfoUseCase.kt b/app/src/main/java/kr/ksw/visitkorea/domain/usecase/detail/GetDetailInfoUseCase.kt new file mode 100644 index 0000000..ae99d4a --- /dev/null +++ b/app/src/main/java/kr/ksw/visitkorea/domain/usecase/detail/GetDetailInfoUseCase.kt @@ -0,0 +1,9 @@ +package kr.ksw.visitkorea.domain.usecase.detail + +import kr.ksw.visitkorea.data.remote.dto.DetailInfoDTO + +interface GetDetailInfoUseCase { + suspend operator fun invoke( + contentId: String + ): Result> +} \ No newline at end of file diff --git a/app/src/main/java/kr/ksw/visitkorea/domain/usecase/detail/GetDetailInfoUseCaseImpl.kt b/app/src/main/java/kr/ksw/visitkorea/domain/usecase/detail/GetDetailInfoUseCaseImpl.kt new file mode 100644 index 0000000..b8fe0c4 --- /dev/null +++ b/app/src/main/java/kr/ksw/visitkorea/domain/usecase/detail/GetDetailInfoUseCaseImpl.kt @@ -0,0 +1,17 @@ +package kr.ksw.visitkorea.domain.usecase.detail + +import kr.ksw.visitkorea.data.remote.dto.DetailInfoDTO +import kr.ksw.visitkorea.data.repository.DetailRepository +import javax.inject.Inject + +class GetDetailInfoUseCaseImpl @Inject constructor( + private val detailRepository: DetailRepository +) : GetDetailInfoUseCase { + override suspend fun invoke( + contentId: String + ): Result> { + return detailRepository.getDetailInfo( + contentId = contentId + ) + } +} \ No newline at end of file