- 결과값에 시그니처 이미지 URL 데이터 추가
This commit is contained in:
Klaus 2024-03-07 19:38:25 +09:00
parent 0d402b608c
commit 71937ce89c
5 changed files with 42 additions and 7 deletions

View File

@ -6,13 +6,15 @@ import kr.co.vividnext.sodalive.live.signature.SignatureCan
import kr.co.vividnext.sodalive.member.QMember.member import kr.co.vividnext.sodalive.member.QMember.member
import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.JpaRepository
interface SignatureCanRepository : JpaRepository<SignatureCan, Long>, SignatureCanQueryRepository interface AdminAdminSignatureCanRepository : JpaRepository<SignatureCan, Long>, AdminSignatureCanQueryRepository
interface SignatureCanQueryRepository { interface AdminSignatureCanQueryRepository {
fun getSignatureCanList(imageHost: String, offset: Long, limit: Long): List<GetSignatureCanListResponse> fun getSignatureCanList(imageHost: String, offset: Long, limit: Long): List<GetSignatureCanListResponse>
} }
class SignatureCanQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : SignatureCanQueryRepository { class AdminSignatureCanQueryRepositoryImpl(
private val queryFactory: JPAQueryFactory
) : AdminSignatureCanQueryRepository {
override fun getSignatureCanList(imageHost: String, offset: Long, limit: Long): List<GetSignatureCanListResponse> { override fun getSignatureCanList(imageHost: String, offset: Long, limit: Long): List<GetSignatureCanListResponse> {
return queryFactory.select( return queryFactory.select(
QGetSignatureCanListResponse( QGetSignatureCanListResponse(

View File

@ -15,7 +15,7 @@ import org.springframework.web.multipart.MultipartFile
@RestController @RestController
@PreAuthorize("hasRole('ADMIN')") @PreAuthorize("hasRole('ADMIN')")
@RequestMapping("/admin/live/signature-can") @RequestMapping("/admin/live/signature-can")
class SignatureCanController(private val service: SignatureCanService) { class AdminSignatureCanController(private val service: AdminSignatureCanService) {
@GetMapping @GetMapping
fun getSignatureCanList(pageable: Pageable) = ApiResponse.ok(data = service.getSignatureCanList(pageable)) fun getSignatureCanList(pageable: Pageable) = ApiResponse.ok(data = service.getSignatureCanList(pageable))

View File

@ -14,8 +14,8 @@ import org.springframework.transaction.annotation.Transactional
import org.springframework.web.multipart.MultipartFile import org.springframework.web.multipart.MultipartFile
@Service @Service
class SignatureCanService( class AdminSignatureCanService(
private val repository: SignatureCanRepository, private val repository: AdminAdminSignatureCanRepository,
private val memberRepository: MemberRepository, private val memberRepository: MemberRepository,
private val s3Uploader: S3Uploader, private val s3Uploader: S3Uploader,

View File

@ -43,6 +43,7 @@ import kr.co.vividnext.sodalive.live.room.menu.LiveRoomMenuService
import kr.co.vividnext.sodalive.live.room.menu.UpdateLiveMenuRequest import kr.co.vividnext.sodalive.live.room.menu.UpdateLiveMenuRequest
import kr.co.vividnext.sodalive.live.room.visit.LiveRoomVisitService import kr.co.vividnext.sodalive.live.room.visit.LiveRoomVisitService
import kr.co.vividnext.sodalive.live.roulette.NewRouletteRepository import kr.co.vividnext.sodalive.live.roulette.NewRouletteRepository
import kr.co.vividnext.sodalive.live.signature.SignatureCanRepository
import kr.co.vividnext.sodalive.live.tag.LiveTagRepository import kr.co.vividnext.sodalive.live.tag.LiveTagRepository
import kr.co.vividnext.sodalive.member.Gender import kr.co.vividnext.sodalive.member.Gender
import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.Member
@ -76,6 +77,7 @@ class LiveRoomService(
private val roomCancelRepository: LiveRoomCancelRepository, private val roomCancelRepository: LiveRoomCancelRepository,
private val kickOutService: LiveRoomKickOutService, private val kickOutService: LiveRoomKickOutService,
private val blockMemberRepository: BlockMemberRepository, private val blockMemberRepository: BlockMemberRepository,
private val signatureCanRepository: SignatureCanRepository,
private val applicationEventPublisher: ApplicationEventPublisher, private val applicationEventPublisher: ApplicationEventPublisher,
private val useCanCalculateRepository: UseCanCalculateRepository, private val useCanCalculateRepository: UseCanCalculateRepository,
@ -970,7 +972,7 @@ class LiveRoomService(
} }
@Transactional @Transactional
fun donation(request: LiveRoomDonationRequest, member: Member) { fun donation(request: LiveRoomDonationRequest, member: Member): String? {
val room = repository.findByIdOrNull(request.roomId) val room = repository.findByIdOrNull(request.roomId)
?: throw SodaException("해당하는 라이브가 없습니다.") ?: throw SodaException("해당하는 라이브가 없습니다.")
@ -1003,6 +1005,12 @@ class LiveRoomService(
roomInfoRepository.save(roomInfo) roomInfoRepository.save(roomInfo)
} }
} }
return signatureCanRepository.findImageByCreatorIdAndCan(
creatorId = host.id!!,
can = request.can,
imageHost = cloudFrontHost
)
} }
@Transactional @Transactional

View File

@ -0,0 +1,25 @@
package kr.co.vividnext.sodalive.live.signature
import com.querydsl.jpa.impl.JPAQueryFactory
import kr.co.vividnext.sodalive.live.signature.QSignatureCan.signatureCan
import org.springframework.data.jpa.repository.JpaRepository
interface SignatureCanRepository : JpaRepository<SignatureCan, Long>, SignatureCanQueryRepository
interface SignatureCanQueryRepository {
fun findImageByCreatorIdAndCan(creatorId: Long, can: Int, imageHost: String): String?
}
class SignatureCanQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : SignatureCanQueryRepository {
override fun findImageByCreatorIdAndCan(creatorId: Long, can: Int, imageHost: String): String? {
return queryFactory
.select(signatureCan.image.prepend("/").prepend(imageHost))
.from(signatureCan)
.where(
signatureCan.creator.id.eq(creatorId)
.and(signatureCan.can.eq(can))
.and(signatureCan.isActive.isTrue)
)
.fetchFirst()
}
}