parent
8be2ec9319
commit
a2e6d09ee8
|
@ -6,10 +6,12 @@ import kr.co.vividnext.sodalive.member.Member
|
||||||
import org.springframework.security.access.prepost.PreAuthorize
|
import org.springframework.security.access.prepost.PreAuthorize
|
||||||
import org.springframework.security.core.annotation.AuthenticationPrincipal
|
import org.springframework.security.core.annotation.AuthenticationPrincipal
|
||||||
import org.springframework.web.bind.annotation.DeleteMapping
|
import org.springframework.web.bind.annotation.DeleteMapping
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping
|
||||||
import org.springframework.web.bind.annotation.PathVariable
|
import org.springframework.web.bind.annotation.PathVariable
|
||||||
import org.springframework.web.bind.annotation.PostMapping
|
import org.springframework.web.bind.annotation.PostMapping
|
||||||
import org.springframework.web.bind.annotation.RequestBody
|
import org.springframework.web.bind.annotation.RequestBody
|
||||||
import org.springframework.web.bind.annotation.RequestMapping
|
import org.springframework.web.bind.annotation.RequestMapping
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam
|
||||||
import org.springframework.web.bind.annotation.RestController
|
import org.springframework.web.bind.annotation.RestController
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -36,4 +38,14 @@ class CategoryController(private val service: CategoryService) {
|
||||||
|
|
||||||
ApiResponse.ok(service.deleteCategory(categoryId = categoryId, member = member))
|
ApiResponse.ok(service.deleteCategory(categoryId = categoryId, member = member))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping
|
||||||
|
fun getCategoryList(
|
||||||
|
@RequestParam creatorId: Long,
|
||||||
|
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
||||||
|
) = run {
|
||||||
|
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||||
|
|
||||||
|
ApiResponse.ok(service.getCategoryList(creatorId = creatorId, memberId = member.id!!))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,8 @@ interface CategoryQueryRepository {
|
||||||
fun findByTitleAndMemberId(title: String, memberId: Long): Category?
|
fun findByTitleAndMemberId(title: String, memberId: Long): Category?
|
||||||
|
|
||||||
fun findByIdAndMemberId(categoryId: Long, memberId: Long): Category?
|
fun findByIdAndMemberId(categoryId: Long, memberId: Long): Category?
|
||||||
|
|
||||||
|
fun findByCreatorId(creatorId: Long): List<GetCategoryListResponse>
|
||||||
}
|
}
|
||||||
|
|
||||||
class CategoryQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : CategoryQueryRepository {
|
class CategoryQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : CategoryQueryRepository {
|
||||||
|
@ -32,4 +34,12 @@ class CategoryQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : C
|
||||||
)
|
)
|
||||||
.fetchFirst()
|
.fetchFirst()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun findByCreatorId(creatorId: Long): List<GetCategoryListResponse> {
|
||||||
|
return queryFactory
|
||||||
|
.select(QGetCategoryListResponse(category.id, category.title))
|
||||||
|
.from(category)
|
||||||
|
.where(category.member.id.eq(creatorId))
|
||||||
|
.fetch()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.content.category
|
||||||
import kr.co.vividnext.sodalive.common.SodaException
|
import kr.co.vividnext.sodalive.common.SodaException
|
||||||
import kr.co.vividnext.sodalive.content.AudioContentRepository
|
import kr.co.vividnext.sodalive.content.AudioContentRepository
|
||||||
import kr.co.vividnext.sodalive.member.Member
|
import kr.co.vividnext.sodalive.member.Member
|
||||||
|
import kr.co.vividnext.sodalive.member.block.BlockMemberRepository
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
import org.springframework.transaction.annotation.Transactional
|
import org.springframework.transaction.annotation.Transactional
|
||||||
|
|
||||||
|
@ -10,6 +11,7 @@ import org.springframework.transaction.annotation.Transactional
|
||||||
class CategoryService(
|
class CategoryService(
|
||||||
private val repository: CategoryRepository,
|
private val repository: CategoryRepository,
|
||||||
private val contentRepository: AudioContentRepository,
|
private val contentRepository: AudioContentRepository,
|
||||||
|
private val blockMemberRepository: BlockMemberRepository,
|
||||||
private val categoryContentRepository: CategoryContentRepository
|
private val categoryContentRepository: CategoryContentRepository
|
||||||
) {
|
) {
|
||||||
@Transactional
|
@Transactional
|
||||||
|
@ -47,4 +49,11 @@ class CategoryService(
|
||||||
|
|
||||||
categoryContentRepository.deleteByCategoryId(categoryId = categoryId)
|
categoryContentRepository.deleteByCategoryId(categoryId = categoryId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getCategoryList(creatorId: Long, memberId: Long): List<GetCategoryListResponse> {
|
||||||
|
val isBlocked = blockMemberRepository.isBlocked(blockedMemberId = memberId, memberId = creatorId)
|
||||||
|
if (isBlocked) throw SodaException("잘못된 접근입니다.")
|
||||||
|
|
||||||
|
return repository.findByCreatorId(creatorId = creatorId)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
package kr.co.vividnext.sodalive.content.category
|
||||||
|
|
||||||
|
import com.querydsl.core.annotations.QueryProjection
|
||||||
|
|
||||||
|
data class GetCategoryListResponse @QueryProjection constructor(
|
||||||
|
val categoryId: Long,
|
||||||
|
val category: String
|
||||||
|
)
|
Loading…
Reference in New Issue