Skip to content

Commit

Permalink
Merge branch '현재-로그인한-유저-정보-조회-API-추가' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
Daybreak312 committed May 27, 2024
2 parents d1462c3 + 62cf1d8 commit 2af7152
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.info.maeumgagym.core.user.port.`in`

import com.info.maeumgagym.core.user.dto.response.UserProfileResponse

interface ReadCurrentUserProfileUseCase {

fun readCurrentUserProfile(): UserProfileResponse
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package com.info.maeumgagym.core.user.port.`in`

interface ReadUserUseCase {
interface ReadUserProfileFromNicknameUseCase {
fun profileFromNickname(nickname: String): com.info.maeumgagym.core.user.dto.response.UserProfileResponse
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.info.maeumgagym.core.user.service

import com.info.maeumgagym.common.annotation.responsibility.ReadOnlyUseCase
import com.info.maeumgagym.core.auth.port.out.ReadCurrentUserPort
import com.info.maeumgagym.core.user.dto.response.UserProfileResponse
import com.info.maeumgagym.core.user.port.`in`.ReadCurrentUserProfileUseCase
import com.info.maeumgagym.core.wakatime.util.WakatimeUtils

@ReadOnlyUseCase
class ReadCurrentUserProfileService(
private val readCurrentUserPort: ReadCurrentUserPort
) : ReadCurrentUserProfileUseCase {

override fun readCurrentUserProfile(): UserProfileResponse {
val user = readCurrentUserPort.readCurrentUser()

return UserProfileResponse(
nickname = user.nickname,
profileImage = user.profileImage,
level = WakatimeUtils.findLevel(user.totalWakaTime),
totalWakatime = user.totalWakaTime
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ package com.info.maeumgagym.core.user.service
import com.info.maeumgagym.common.annotation.responsibility.ReadOnlyUseCase
import com.info.maeumgagym.common.exception.BusinessLogicException
import com.info.maeumgagym.core.user.dto.response.UserProfileResponse
import com.info.maeumgagym.core.user.port.`in`.ReadUserUseCase
import com.info.maeumgagym.core.user.port.`in`.ReadUserProfileFromNicknameUseCase
import com.info.maeumgagym.core.user.port.out.ReadUserPort
import com.info.maeumgagym.core.wakatime.util.WakatimeUtils

@ReadOnlyUseCase
internal class ReadUserService(
internal class ReadUserProfileFromNicknameService(
private val readUserPort: ReadUserPort
) : ReadUserUseCase {
) : ReadUserProfileFromNicknameUseCase {

override fun profileFromNickname(nickname: String): UserProfileResponse =
readUserPort.readByNickname(nickname)?.run {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
package com.info.maeumgagym.core.user.service

import com.info.maeumgagym.common.annotation.responsibility.UseCase
import com.info.maeumgagym.common.exception.BusinessLogicException
import com.info.maeumgagym.core.auth.port.out.ReadCurrentUserPort
import com.info.maeumgagym.core.auth.service.DuplicatedCheckService
import com.info.maeumgagym.common.exception.BusinessLogicException
import com.info.maeumgagym.core.user.dto.request.UpdateUserInfoRequest
import com.info.maeumgagym.core.user.model.PhysicalInfoModel
import com.info.maeumgagym.core.user.port.`in`.UpdateUserInfoUseCase
import com.info.maeumgagym.core.user.port.out.SaveUserPort

@UseCase
internal class UpdateUserInfoService(
private val saveUserPort: com.info.maeumgagym.core.user.port.out.SaveUserPort,
private val saveUserPort: SaveUserPort,
private val duplicatedCheckService: DuplicatedCheckService,
private val readCurrentUserPort: ReadCurrentUserPort
) : com.info.maeumgagym.core.user.port.`in`.UpdateUserInfoUseCase {
) : UpdateUserInfoUseCase {

override fun update(req: com.info.maeumgagym.core.user.dto.request.UpdateUserInfoRequest) {
override fun update(req: UpdateUserInfoRequest) {
if (duplicatedCheckService.existByNickname(req.nickname)) {
throw BusinessLogicException.ALREADY_EXIST_USER
}
Expand All @@ -22,7 +26,7 @@ internal class UpdateUserInfoService(
req.run {
user.copy(
nickname = nickname,
physicalInfoModel = com.info.maeumgagym.core.user.model.PhysicalInfoModel(
physicalInfoModel = PhysicalInfoModel(
weight = weight,
height = height,
genderModel = genderModel
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ package com.info.maeumgagym.presentation.controller.user
import com.info.maeumgagym.common.annotation.responsibility.WebAdapter
import com.info.maeumgagym.common.annotation.security.RequireAuthentication
import com.info.maeumgagym.core.user.dto.response.UserProfileResponse
import com.info.maeumgagym.core.user.port.`in`.ReadUserUseCase
import com.info.maeumgagym.core.user.port.`in`.ReadCurrentUserProfileUseCase
import com.info.maeumgagym.core.user.port.`in`.ReadUserProfileFromNicknameUseCase
import com.info.maeumgagym.core.user.port.`in`.UpdateUserInfoUseCase
import com.info.maeumgagym.presentation.controller.user.dto.UpdateUserInfoWebRequest
import io.swagger.v3.oas.annotations.Operation
Expand All @@ -19,18 +20,23 @@ import javax.validation.constraints.NotBlank
@WebAdapter
@RequestMapping("/user")
private class UserController(
private val readUserUseCase: ReadUserUseCase,
private val readUserProfileFromNicknameUseCase: ReadUserProfileFromNicknameUseCase,
private val readCurrentUserProfileUseCase: ReadCurrentUserProfileUseCase,
private val updateUserInfoUseCase: UpdateUserInfoUseCase
) {

@Operation(summary = "프로필 보기 API")
@Operation(summary = "닉네임으로 프로필 보기 API")
@RequireAuthentication
@GetMapping("/{nickname}")
fun getProfile(
fun readUserProfileFromNickname(
@PathVariable(name = "nickname")
@NotBlank(message = "null일 수 없습니다.")
nickname: String?
): UserProfileResponse = readUserUseCase.profileFromNickname(nickname!!)
): UserProfileResponse = readUserProfileFromNicknameUseCase.profileFromNickname(nickname!!)

@Operation(summary = "현재 로그인한 유저 프로필 보기 API")
@GetMapping
fun getCurrentUserProfile(): UserProfileResponse = readCurrentUserProfileUseCase.readCurrentUserProfile()

@Operation(summary = "유저 정보 수정 API")
@ResponseStatus(HttpStatus.NO_CONTENT)
Expand Down

0 comments on commit 2af7152

Please sign in to comment.