diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberController.kt index 43675a7..436e23f 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberController.kt @@ -4,6 +4,8 @@ import kr.co.vividnext.sodalive.common.ApiResponse import org.springframework.data.domain.Pageable import org.springframework.security.access.prepost.PreAuthorize import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PutMapping +import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RestController @@ -12,6 +14,12 @@ import org.springframework.web.bind.annotation.RestController @RequestMapping("/admin/member") @PreAuthorize("hasRole('ADMIN')") class AdminMemberController(private val service: AdminMemberService) { + @PutMapping + fun updateMember(@RequestBody request: UpdateMemberRequest) = ApiResponse.ok( + service.updateMember(request = request), + "수정되었습니다." + ) + @GetMapping("/list") fun getMemberList(pageable: Pageable) = ApiResponse.ok(service.getMemberList(pageable)) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberService.kt index 0550575..8b81fbc 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberService.kt @@ -5,7 +5,9 @@ import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.MemberRole import org.springframework.beans.factory.annotation.Value import org.springframework.data.domain.Pageable +import org.springframework.data.repository.findByIdOrNull import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Transactional import java.time.ZoneId import java.time.format.DateTimeFormatter @@ -16,6 +18,16 @@ class AdminMemberService( @Value("\${cloud.aws.cloud-front.host}") private val cloudFrontHost: String ) { + @Transactional + fun updateMember(request: UpdateMemberRequest) { + val member = repository.findByIdOrNull(request.id) + ?: throw SodaException("해당 유저가 없습니다.") + + if (member.role != request.userType) { + member.role = request.userType + } + } + fun getMemberList(pageable: Pageable): GetAdminMemberListResponse { val totalCount = repository.getMemberTotalCount() val memberList = processMemberListToGetAdminMemberListResponseItemList( diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/UpdateMemberRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/UpdateMemberRequest.kt new file mode 100644 index 0000000..687ca6a --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/UpdateMemberRequest.kt @@ -0,0 +1,8 @@ +package kr.co.vividnext.sodalive.admin.member + +import kr.co.vividnext.sodalive.member.MemberRole + +data class UpdateMemberRequest( + val id: Long, + val userType: MemberRole +)