From 14220ff6dc4760287fd8575dee9750b93e2012ac Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 7 Aug 2023 15:36:22 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20-=20=ED=9A=8C?= =?UTF-8?q?=EC=9B=90=20=ED=83=80=EC=9E=85=20=EC=88=98=EC=A0=95=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/admin/member/AdminMemberController.kt | 8 ++++++++ .../sodalive/admin/member/AdminMemberService.kt | 12 ++++++++++++ .../sodalive/admin/member/UpdateMemberRequest.kt | 8 ++++++++ 3 files changed, 28 insertions(+) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/admin/member/UpdateMemberRequest.kt 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 +)