diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/SignatureCanRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminAdminSignatureCanRepository.kt similarity index 79% rename from src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/SignatureCanRepository.kt rename to src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminAdminSignatureCanRepository.kt index 90aa2c0..ce71442 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/SignatureCanRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminAdminSignatureCanRepository.kt @@ -6,13 +6,15 @@ import kr.co.vividnext.sodalive.live.signature.SignatureCan import kr.co.vividnext.sodalive.member.QMember.member import org.springframework.data.jpa.repository.JpaRepository -interface SignatureCanRepository : JpaRepository, SignatureCanQueryRepository +interface AdminAdminSignatureCanRepository : JpaRepository, AdminSignatureCanQueryRepository -interface SignatureCanQueryRepository { +interface AdminSignatureCanQueryRepository { fun getSignatureCanList(imageHost: String, offset: Long, limit: Long): List } -class SignatureCanQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : SignatureCanQueryRepository { +class AdminSignatureCanQueryRepositoryImpl( + private val queryFactory: JPAQueryFactory +) : AdminSignatureCanQueryRepository { override fun getSignatureCanList(imageHost: String, offset: Long, limit: Long): List { return queryFactory.select( QGetSignatureCanListResponse( diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/SignatureCanController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanController.kt similarity index 95% rename from src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/SignatureCanController.kt rename to src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanController.kt index 9272b50..6023343 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/SignatureCanController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanController.kt @@ -15,7 +15,7 @@ import org.springframework.web.multipart.MultipartFile @RestController @PreAuthorize("hasRole('ADMIN')") @RequestMapping("/admin/live/signature-can") -class SignatureCanController(private val service: SignatureCanService) { +class AdminSignatureCanController(private val service: AdminSignatureCanService) { @GetMapping fun getSignatureCanList(pageable: Pageable) = ApiResponse.ok(data = service.getSignatureCanList(pageable)) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/SignatureCanService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanService.kt similarity index 96% rename from src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/SignatureCanService.kt rename to src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanService.kt index afc044a..3da5cba 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/SignatureCanService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanService.kt @@ -14,8 +14,8 @@ import org.springframework.transaction.annotation.Transactional import org.springframework.web.multipart.MultipartFile @Service -class SignatureCanService( - private val repository: SignatureCanRepository, +class AdminSignatureCanService( + private val repository: AdminAdminSignatureCanRepository, private val memberRepository: MemberRepository, private val s3Uploader: S3Uploader, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt index 2320726..85dfd1a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt @@ -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.visit.LiveRoomVisitService 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.member.Gender import kr.co.vividnext.sodalive.member.Member @@ -76,6 +77,7 @@ class LiveRoomService( private val roomCancelRepository: LiveRoomCancelRepository, private val kickOutService: LiveRoomKickOutService, private val blockMemberRepository: BlockMemberRepository, + private val signatureCanRepository: SignatureCanRepository, private val applicationEventPublisher: ApplicationEventPublisher, private val useCanCalculateRepository: UseCanCalculateRepository, @@ -970,7 +972,7 @@ class LiveRoomService( } @Transactional - fun donation(request: LiveRoomDonationRequest, member: Member) { + fun donation(request: LiveRoomDonationRequest, member: Member): String? { val room = repository.findByIdOrNull(request.roomId) ?: throw SodaException("해당하는 라이브가 없습니다.") @@ -1003,6 +1005,12 @@ class LiveRoomService( roomInfoRepository.save(roomInfo) } } + + return signatureCanRepository.findImageByCreatorIdAndCan( + creatorId = host.id!!, + can = request.can, + imageHost = cloudFrontHost + ) } @Transactional diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/signature/SignatureCanRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/signature/SignatureCanRepository.kt new file mode 100644 index 0000000..51d67e9 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/signature/SignatureCanRepository.kt @@ -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, 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() + } +}