Skip to content

Commit caa6ccf

Browse files
committed
feat: 버스의 현재 위치 추적 로직 구현
1 parent b4b976b commit caa6ccf

File tree

22 files changed

+214
-103
lines changed

22 files changed

+214
-103
lines changed

data/src/main/java/com/stop/data/model/nowlocation/BusInfoRepositoryItem.kt

Lines changed: 0 additions & 23 deletions
This file was deleted.
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package com.stop.data.remote.model.nowlocation.bus
22

33
import com.squareup.moshi.Json
4+
import com.stop.domain.model.nowlocation.BusCurrentInformation
45

56
data class BusBody(
67
@Json(name = "itemList")
7-
val busInfo: List<BusInfo>
8+
val busCurrentInformation: List<BusCurrentInformation>
89
)

data/src/main/java/com/stop/data/remote/model/nowlocation/bus/BusInfo.kt

Lines changed: 0 additions & 30 deletions
This file was deleted.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.stop.data.remote.source.nowlocation
22

3-
import com.stop.data.model.nowlocation.BusInfoRepositoryItem
3+
import com.stop.domain.model.nowlocation.BusCurrentInformation
44
import com.stop.data.remote.model.nowlocation.subway.TrainLocationInfo
55

66
interface NowLocationRemoteDataSource {
77

8-
suspend fun getBusNowLocation(busRouteId: String, order: Int): BusInfoRepositoryItem
8+
suspend fun getBusNowLocation(busRouteId: String): List<BusCurrentInformation>
99

1010
suspend fun getSubwayTrainNowStation(subwayNumber: Int): List<TrainLocationInfo>
1111
}

data/src/main/java/com/stop/data/remote/source/nowlocation/NowLocationRemoteDataSourceImpl.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.stop.data.remote.source.nowlocation
22

3-
import com.stop.data.model.nowlocation.BusInfoRepositoryItem
43
import com.stop.data.remote.model.NetworkResult
4+
import com.stop.domain.model.nowlocation.BusCurrentInformation
55
import com.stop.data.remote.model.nowlocation.subway.TrainLocationInfo
66
import com.stop.data.remote.network.SwOpenApiSeoulService
77
import com.stop.data.remote.network.WsBusApiService
@@ -12,10 +12,10 @@ internal class NowLocationRemoteDataSourceImpl @Inject constructor(
1212
private val swOpenApiSeoulService: SwOpenApiSeoulService
1313
) : NowLocationRemoteDataSource {
1414

15-
override suspend fun getBusNowLocation(busRouteId: String, order: Int): BusInfoRepositoryItem {
15+
override suspend fun getBusNowLocation(busRouteId: String): List<BusCurrentInformation> {
1616
with(wsBusApiService.getBusNowLocation(busRouteId = busRouteId)) {
1717
return when (this) {
18-
is NetworkResult.Success -> data.busBody.busInfo[order].toRepositoryModel()
18+
is NetworkResult.Success -> data.busBody.busCurrentInformation
1919
is NetworkResult.Failure -> throw IllegalArgumentException(message)
2020
is NetworkResult.NetworkError -> throw exception
2121
is NetworkResult.Unexpected -> throw exception

data/src/main/java/com/stop/data/repository/NowLocationRepositoryImpl.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.stop.data.repository
22

3+
import com.stop.domain.model.nowlocation.BusCurrentInformation
34
import com.stop.data.remote.source.nowlocation.NowLocationRemoteDataSource
4-
import com.stop.domain.model.nowlocation.BusInfoUseCaseItem
55
import com.stop.domain.model.nowlocation.TrainLocationInfoDomain
66
import com.stop.domain.repository.NowLocationRepository
77
import javax.inject.Inject
@@ -10,8 +10,8 @@ class NowLocationRepositoryImpl @Inject constructor(
1010
private val nowLocationRemoteDataSource: NowLocationRemoteDataSource,
1111
) : NowLocationRepository {
1212

13-
override suspend fun getBusNowLocation(busRouteId: String, order: Int): BusInfoUseCaseItem {
14-
return nowLocationRemoteDataSource.getBusNowLocation(busRouteId, order).toUseCaseModel()
13+
override suspend fun getBusesOnRoute(busRouteId: String): List<BusCurrentInformation> {
14+
return nowLocationRemoteDataSource.getBusNowLocation(busRouteId)
1515
}
1616

1717
override suspend fun getSubwayTrains(subwayNumber: Int): List<TrainLocationInfoDomain> {

domain/src/main/java/com/stop/domain/di/UseCaseModule.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,8 @@ internal interface UseCaseModule {
6666
@Singleton
6767
fun provideNowStationLocationUseCase(getNowStationLocationUseCaseImpl: GetNowStationLocationUseCaseImpl): GetNowStationLocationUseCase
6868

69+
@Binds
70+
@Singleton
71+
fun provideGetBusesOnRouteUseCase(getBusesOnRouteUseCaseImpl: GetBusesOnRouteUseCaseImpl): GetBusesOnRouteUseCase
72+
6973
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.stop.domain.model.nowlocation
2+
3+
import com.squareup.moshi.Json
4+
5+
data class BusCurrentInformation(
6+
@Json(name = "plainNo")
7+
val licensePlateNumber: String,
8+
@Json(name = "vehId")
9+
val vehicleId: String,
10+
@Json(name = "sectOrd")
11+
val currentStationOrder: String,
12+
@Json(name = "stopFlag")
13+
val isStoppedAtStation: String,
14+
@Json(name = "gpsX")
15+
val longitude: String,
16+
@Json(name = "gpsY")
17+
val latitude: String,
18+
@Json(name = "isrunyn")
19+
val isRun: String,
20+
@Json(name = "islastyn")
21+
val isLast: String,
22+
@Json(name = "lastStnId")
23+
val beforeNodeId: String,
24+
) {
25+
fun toUseCaseModel(transportState: TransportState) = BusCurrentInformationUseCaseItem(
26+
licensePlateNumber = licensePlateNumber,
27+
vehicleId = vehicleId,
28+
currentStationOrder = currentStationOrder,
29+
isStoppedAtStation = isStoppedAtStation,
30+
longitude = longitude,
31+
latitude = latitude,
32+
isRun = isRun,
33+
isLast = isLast,
34+
beforeNodeId = beforeNodeId,
35+
transportState = transportState,
36+
)
37+
}
38+
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.stop.domain.model.nowlocation
2+
3+
data class BusCurrentInformationUseCaseItem(
4+
val licensePlateNumber: String,
5+
val vehicleId: String,
6+
val currentStationOrder: String,
7+
val isStoppedAtStation: String,
8+
val longitude: String,
9+
val latitude: String,
10+
val isRun: String,
11+
val isLast: String,
12+
val beforeNodeId: String,
13+
val transportState: TransportState,
14+
) {
15+
companion object {
16+
fun createDisappearItem(): BusCurrentInformationUseCaseItem {
17+
return BusCurrentInformationUseCaseItem(
18+
licensePlateNumber = "",
19+
vehicleId = "",
20+
currentStationOrder = "",
21+
isStoppedAtStation = "",
22+
longitude = "",
23+
latitude = "",
24+
isRun = "",
25+
isLast = "",
26+
beforeNodeId = "",
27+
transportState = TransportState.DISAPPEAR,
28+
)
29+
}
30+
}
31+
}

domain/src/main/java/com/stop/domain/model/nowlocation/BusInfoUseCaseItem.kt

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

0 commit comments

Comments
 (0)