Skip to content

Commit 70bcb71

Browse files
committed
응답의 user_id 사용자 정보로 교체
1 parent 0f00915 commit 70bcb71

File tree

2 files changed

+44
-4
lines changed

2 files changed

+44
-4
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.wafflestudio.snu4t.evaluation.dto
2+
3+
import com.wafflestudio.snu4t.users.data.User
4+
5+
data class EvUserDto(
6+
val id: String?,
7+
val email: String?,
8+
val local_id: String?,
9+
)
10+
11+
fun EvUserDto(user: User) =
12+
EvUserDto(
13+
id = user.id,
14+
email = user.email,
15+
local_id = user.credential.localId
16+
)

core/src/main/kotlin/evaluation/service/EvService.kt

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ import com.wafflestudio.snu4t.common.util.buildMultiValueMap
66
import com.wafflestudio.snu4t.config.SnuttEvWebClient
77
import com.wafflestudio.snu4t.coursebook.service.CoursebookService
88
import com.wafflestudio.snu4t.evaluation.dto.EvLectureInfoDto
9+
import com.wafflestudio.snu4t.evaluation.dto.EvUserDto
910
import com.wafflestudio.snu4t.timetables.service.TimetableService
11+
import com.wafflestudio.snu4t.users.dto.UserDto
12+
import com.wafflestudio.snu4t.users.service.UserService
1013
import kotlinx.coroutines.Dispatchers
1114
import kotlinx.coroutines.flow.toList
1215
import kotlinx.coroutines.withContext
@@ -25,26 +28,29 @@ class EvService(
2528
private val snuttEvWebClient: SnuttEvWebClient,
2629
private val timetableService: TimetableService,
2730
private val coursebookService: CoursebookService,
31+
private val userService: UserService
2832
) {
2933
suspend fun handleRouting(
3034
userId: String,
3135
requestPath: String,
3236
requestQueryParams: MultiValueMap<String, String> = buildMultiValueMap(mapOf()),
3337
originalBody: String,
3438
method: HttpMethod,
35-
): Map<String, Any> =
36-
snuttEvWebClient.method(method)
39+
): Map<String, Any?> {
40+
val result: MutableMap<String, Any?> = snuttEvWebClient.method(method)
3741
.uri { builder -> builder.path(requestPath).queryParams(requestQueryParams).build() }
3842
.header("Snutt-User-Id", userId)
3943
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
4044
.body(BodyInserters.fromValue(originalBody))
4145
.retrieve()
42-
.awaitBody()
46+
.awaitBody<MutableMap<String, Any?>>()
47+
return updateUserInfo(result)
48+
}
4349

4450
suspend fun getMyLatestLectures(
4551
userId: String,
4652
requestQueryParams: MultiValueMap<String, String>? = null,
47-
): Map<String, Any> {
53+
): Map<String, Any?> {
4854
val recentLectures: List<EvLectureInfoDto> =
4955
coursebookService.getLastTwoCourseBooksBeforeCurrent().flatMap { coursebook ->
5056
timetableService.getTimetablesBySemester(userId, coursebook.year, coursebook.semester)
@@ -83,4 +89,22 @@ class EvService(
8389
.retrieve()
8490
.awaitBody()
8591
}
92+
93+
private suspend fun updateUserInfo(data: MutableMap<String, Any?>): MutableMap<String, Any?> {
94+
val updatedMap: MutableMap<String, Any?> = mutableMapOf ()
95+
for ((k, v) in data.entries) {
96+
if (k == "user_id") {
97+
val userDto = runCatching {EvUserDto(userService.getUser(v as String))}.getOrNull()
98+
updatedMap["user"] = userDto
99+
}
100+
else {
101+
when (v) {
102+
is List<*> -> updatedMap[k] = v.map { updateUserInfo(it as MutableMap<String, Any?>) }
103+
is MutableMap<*, *> -> updatedMap[k] = updateUserInfo(v as MutableMap<String, Any?>)
104+
else -> updatedMap[k] = v
105+
}
106+
}
107+
}
108+
return updatedMap
109+
}
86110
}

0 commit comments

Comments
 (0)