Skip to content

Commit 549e6f9

Browse files
committed
Merge branch 'feat/#106' into develop
2 parents 103a91b + 0c416c2 commit 549e6f9

5 files changed

Lines changed: 61 additions & 0 deletions

File tree

src/main/kotlin/site/billilge/api/backend/domain/member/controller/AdminMemberApi.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,14 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse
55
import io.swagger.v3.oas.annotations.responses.ApiResponses
66
import io.swagger.v3.oas.annotations.tags.Tag
77
import org.springframework.http.ResponseEntity
8+
import io.swagger.v3.oas.annotations.media.Content
9+
import io.swagger.v3.oas.annotations.media.Schema
810
import org.springframework.web.bind.annotation.ModelAttribute
11+
import org.springframework.web.bind.annotation.PathVariable
912
import org.springframework.web.bind.annotation.RequestBody
1013
import site.billilge.api.backend.domain.member.dto.request.AdminRequest
14+
import site.billilge.api.backend.domain.member.dto.request.AdminRoleUpdateRequest
15+
import site.billilge.api.backend.global.exception.ErrorResponse
1116
import site.billilge.api.backend.domain.member.dto.response.AdminFindAllResponse
1217
import site.billilge.api.backend.domain.member.dto.response.MemberFindAllResponse
1318
import site.billilge.api.backend.global.dto.PageableCondition
@@ -49,6 +54,28 @@ interface AdminMemberApi {
4954
@ModelAttribute searchCondition: SearchCondition
5055
): ResponseEntity<AdminFindAllResponse>
5156

57+
@Operation(
58+
summary = "관리자 역할 변경",
59+
description = "관리자의 역할을 변경하는 API"
60+
)
61+
@ApiResponses(
62+
value = [
63+
ApiResponse(
64+
responseCode = "200",
65+
description = "관리자 역할 변경 성공"
66+
),
67+
ApiResponse(
68+
responseCode = "404",
69+
description = "회원을 찾을 수 없습니다.",
70+
content = [Content(schema = Schema(implementation = ErrorResponse::class))]
71+
)
72+
]
73+
)
74+
fun updateAdminRole(
75+
@PathVariable memberId: Long,
76+
@RequestBody request: AdminRoleUpdateRequest
77+
): ResponseEntity<Void>
78+
5279
@Operation(
5380
summary = "관리자 추가",
5481
description = "회원을 관리자에 추가하는 API"

src/main/kotlin/site/billilge/api/backend/domain/member/controller/AdminMemberController.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package site.billilge.api.backend.domain.member.controller
33
import org.springframework.http.ResponseEntity
44
import org.springframework.web.bind.annotation.*
55
import site.billilge.api.backend.domain.member.dto.request.AdminRequest
6+
import site.billilge.api.backend.domain.member.dto.request.AdminRoleUpdateRequest
67
import site.billilge.api.backend.domain.member.dto.response.AdminFindAllResponse
78
import site.billilge.api.backend.domain.member.dto.response.MemberFindAllResponse
89
import site.billilge.api.backend.domain.member.facade.AdminMemberFacade
@@ -33,6 +34,16 @@ class AdminMemberController(
3334
return ResponseEntity.ok(adminMemberFacade.getAdminList(pageableCondition, searchCondition))
3435
}
3536

37+
@OnlyAdmin
38+
@PatchMapping("/{memberId}/admins")
39+
override fun updateAdminRole(
40+
@PathVariable memberId: Long,
41+
@RequestBody request: AdminRoleUpdateRequest
42+
): ResponseEntity<Void> {
43+
adminMemberFacade.updateAdminRole(memberId, request)
44+
return ResponseEntity.ok().build()
45+
}
46+
3647
@OnlyAdmin
3748
@PostMapping("/admins")
3849
override fun addAdmins(@RequestBody request: AdminRequest): ResponseEntity<Void> {
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package site.billilge.api.backend.domain.member.dto.request
2+
3+
import io.swagger.v3.oas.annotations.media.Schema
4+
import site.billilge.api.backend.domain.member.enums.Role
5+
6+
@Schema
7+
data class AdminRoleUpdateRequest(
8+
@field:Schema(description = "변경할 역할", example = "GA")
9+
val role: Role,
10+
)

src/main/kotlin/site/billilge/api/backend/domain/member/facade/AdminMemberFacade.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package site.billilge.api.backend.domain.member.facade
22

33
import org.springframework.stereotype.Component
44
import site.billilge.api.backend.domain.member.dto.request.AdminRequest
5+
import site.billilge.api.backend.domain.member.dto.request.AdminRoleUpdateRequest
56
import site.billilge.api.backend.domain.member.dto.response.AdminFindAllResponse
67
import site.billilge.api.backend.domain.member.dto.response.AdminMemberDetail
78
import site.billilge.api.backend.domain.member.dto.response.MemberDetail
@@ -26,6 +27,10 @@ class AdminMemberFacade(
2627
return AdminFindAllResponse(adminDetails, adminList.totalPages)
2728
}
2829

30+
fun updateAdminRole(memberId: Long, request: AdminRoleUpdateRequest) {
31+
memberService.updateAdminRole(memberId, request.role)
32+
}
33+
2934
fun addAdmins(request: AdminRequest) {
3035
memberService.addAdmins(request.memberIds, request.role)
3136
}

src/main/kotlin/site/billilge/api/backend/domain/member/service/MemberService.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,14 @@ class MemberService(
6868
return memberRepository.findAllByRoleAndNameContaining(Role.ADMIN, searchCondition.search, pageRequest)
6969
}
7070

71+
@Transactional
72+
fun updateAdminRole(memberId: Long, role: Role) {
73+
val member = memberRepository.findByIdOrNull(memberId)
74+
?: throw ApiException(MemberErrorCode.MEMBER_NOT_FOUND)
75+
76+
member.updateRole(role)
77+
}
78+
7179
@Transactional
7280
fun addAdmins(memberIds: List<Long>, role: Role) {
7381
memberRepository.findAllByIds(memberIds)

0 commit comments

Comments
 (0)