카테고리 순서 변경 API 추가

This commit is contained in:
Klaus 2024-02-06 21:32:07 +09:00
parent e3cf7fbfa0
commit a6a279837d
4 changed files with 30 additions and 1 deletions

View File

@ -40,6 +40,17 @@ class CategoryController(private val service: CategoryService) {
ApiResponse.ok(service.modifyCategory(request = request, member = member))
}
@PutMapping("/orders")
@PreAuthorize("hasRole('CREATOR')")
fun updateCategoryOrders(
@RequestBody request: UpdateCategoryOrdersRequest,
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
) = run {
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
ApiResponse.ok(service.updateCategoryOrders(request = request, member = member))
}
@DeleteMapping("/{id}")
@PreAuthorize("hasRole('CREATOR')")
fun deleteCategory(

View File

@ -39,7 +39,11 @@ class CategoryQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : C
return queryFactory
.select(QGetCategoryListResponse(category.id, category.title))
.from(category)
.where(category.member.id.eq(creatorId).and(category.isActive.isTrue))
.where(
category.member.id.eq(creatorId)
.and(category.isActive.isTrue)
)
.orderBy(category.orders.asc())
.fetch()
}
}

View File

@ -86,6 +86,17 @@ class CategoryService(
categoryContentRepository.deleteByCategoryId(categoryId = categoryId)
}
@Transactional
fun updateCategoryOrders(request: UpdateCategoryOrdersRequest, member: Member) {
for (index in request.ids.indices) {
val category = repository.findByIdAndMemberId(categoryId = request.ids[index], memberId = member.id!!)
if (category != null) {
category.orders = index + 1
}
}
}
fun getCategoryList(creatorId: Long, memberId: Long): List<GetCategoryListResponse> {
val isBlocked = blockMemberRepository.isBlocked(blockedMemberId = memberId, memberId = creatorId)
if (isBlocked) throw SodaException("잘못된 접근입니다.")

View File

@ -0,0 +1,3 @@
package kr.co.vividnext.sodalive.content.category
data class UpdateCategoryOrdersRequest(val ids: List<Long>)