feat(admin-member): 닉네임 검색으로 회원 id, nickname 반환 API 추가
This commit is contained in:
@@ -36,6 +36,12 @@ class AdminMemberController(private val service: AdminMemberService) {
|
|||||||
pageable: Pageable
|
pageable: Pageable
|
||||||
) = ApiResponse.ok(service.searchMember(searchWord, pageable))
|
) = ApiResponse.ok(service.searchMember(searchWord, pageable))
|
||||||
|
|
||||||
|
@GetMapping("/search-by-nickname")
|
||||||
|
fun searchMemberByNickname(
|
||||||
|
@RequestParam(value = "search_word") searchWord: String,
|
||||||
|
@RequestParam(value = "size", required = false) size: Int?
|
||||||
|
) = ApiResponse.ok(service.searchMemberByNickname(searchWord = searchWord, size = size ?: 20))
|
||||||
|
|
||||||
@GetMapping("/creator/all/list")
|
@GetMapping("/creator/all/list")
|
||||||
fun getCreatorAllList() = ApiResponse.ok(service.getCreatorAllList())
|
fun getCreatorAllList() = ApiResponse.ok(service.getCreatorAllList())
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ interface AdminMemberQueryRepository {
|
|||||||
fun searchMemberTotalCount(searchWord: String, role: MemberRole? = null): Int
|
fun searchMemberTotalCount(searchWord: String, role: MemberRole? = null): Int
|
||||||
fun getCreatorAllList(): List<GetAdminCreatorAllListResponse>
|
fun getCreatorAllList(): List<GetAdminCreatorAllListResponse>
|
||||||
fun findByIdAndActive(memberId: Long): Member?
|
fun findByIdAndActive(memberId: Long): Member?
|
||||||
|
fun searchMemberByNickname(searchWord: String, limit: Long = 20): List<AdminSimpleMemberResponse>
|
||||||
}
|
}
|
||||||
|
|
||||||
class AdminMemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : AdminMemberQueryRepository {
|
class AdminMemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : AdminMemberQueryRepository {
|
||||||
@@ -121,4 +122,22 @@ class AdminMemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory)
|
|||||||
.orderBy(member.id.desc())
|
.orderBy(member.id.desc())
|
||||||
.fetchFirst()
|
.fetchFirst()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun searchMemberByNickname(searchWord: String, limit: Long): List<AdminSimpleMemberResponse> {
|
||||||
|
return queryFactory
|
||||||
|
.select(
|
||||||
|
QAdminSimpleMemberResponse(
|
||||||
|
member.id,
|
||||||
|
member.nickname
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.from(member)
|
||||||
|
.where(
|
||||||
|
member.nickname.contains(searchWord)
|
||||||
|
.and(member.isActive.isTrue)
|
||||||
|
)
|
||||||
|
.orderBy(member.id.desc())
|
||||||
|
.limit(limit)
|
||||||
|
.fetch()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,6 +145,12 @@ class AdminMemberService(
|
|||||||
return repository.getCreatorAllList()
|
return repository.getCreatorAllList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun searchMemberByNickname(searchWord: String, size: Int = 20): List<AdminSimpleMemberResponse> {
|
||||||
|
if (searchWord.length < 2) throw SodaException("2글자 이상 입력하세요.")
|
||||||
|
val limit = if (size <= 0) 20 else size
|
||||||
|
return repository.searchMemberByNickname(searchWord = searchWord, limit = limit.toLong())
|
||||||
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
fun resetPassword(request: ResetPasswordRequest) {
|
fun resetPassword(request: ResetPasswordRequest) {
|
||||||
val member = repository.findByIdAndActive(memberId = request.memberId)
|
val member = repository.findByIdAndActive(memberId = request.memberId)
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package kr.co.vividnext.sodalive.admin.member
|
||||||
|
|
||||||
|
import com.querydsl.core.annotations.QueryProjection
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 관리자용 간단 회원 응답 DTO
|
||||||
|
* 닉네임 검색 결과로 사용되며 charge 등에서 memberId 선택에 활용된다.
|
||||||
|
*/
|
||||||
|
data class AdminSimpleMemberResponse @QueryProjection constructor(
|
||||||
|
val id: Long,
|
||||||
|
val nickname: String
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user