Compare commits
No commits in common. "07a92af982b3212cf564517a256c190be019e5d2" and "f4618877d48c62933763fa2c0738848be6a7bd03" have entirely different histories.
07a92af982
...
f4618877d4
|
@ -15,10 +15,6 @@ import org.springframework.web.multipart.MultipartFile
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/admin/live")
|
@RequestMapping("/admin/live")
|
||||||
class AdminLiveController(private val service: AdminLiveService) {
|
class AdminLiveController(private val service: AdminLiveService) {
|
||||||
@PostMapping("/cancel-not-started")
|
|
||||||
@PreAuthorize("hasRole('BOT')")
|
|
||||||
fun cancelNotStartedLive4hoursPassed() = ApiResponse.ok(service.cancelNotStartedLive4hoursPassed())
|
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
@PreAuthorize("hasRole('ADMIN')")
|
@PreAuthorize("hasRole('ADMIN')")
|
||||||
fun getOnAirLive() = ApiResponse.ok(data = service.getLiveList())
|
fun getOnAirLive() = ApiResponse.ok(data = service.getLiveList())
|
||||||
|
@ -28,7 +24,6 @@ class AdminLiveController(private val service: AdminLiveService) {
|
||||||
fun getRecommendCreatorBanner(pageable: Pageable) = ApiResponse.ok(service.getRecommendCreator(pageable))
|
fun getRecommendCreatorBanner(pageable: Pageable) = ApiResponse.ok(service.getRecommendCreator(pageable))
|
||||||
|
|
||||||
@PostMapping("/recommend-creator")
|
@PostMapping("/recommend-creator")
|
||||||
@PreAuthorize("hasRole('ADMIN')")
|
|
||||||
fun createRecommendCreatorBanner(
|
fun createRecommendCreatorBanner(
|
||||||
@RequestParam("image") image: MultipartFile,
|
@RequestParam("image") image: MultipartFile,
|
||||||
@RequestParam("creator_id") creatorId: Long,
|
@RequestParam("creator_id") creatorId: Long,
|
||||||
|
@ -41,7 +36,6 @@ class AdminLiveController(private val service: AdminLiveService) {
|
||||||
)
|
)
|
||||||
|
|
||||||
@PutMapping("/recommend-creator")
|
@PutMapping("/recommend-creator")
|
||||||
@PreAuthorize("hasRole('ADMIN')")
|
|
||||||
fun updateRecommendCreatorBanner(
|
fun updateRecommendCreatorBanner(
|
||||||
@RequestParam("recommend_creator_banner_id") recommendCreatorBannerId: Long,
|
@RequestParam("recommend_creator_banner_id") recommendCreatorBannerId: Long,
|
||||||
@RequestParam("image", required = false) image: MultipartFile?,
|
@RequestParam("image", required = false) image: MultipartFile?,
|
||||||
|
@ -55,7 +49,6 @@ class AdminLiveController(private val service: AdminLiveService) {
|
||||||
)
|
)
|
||||||
|
|
||||||
@PutMapping("/recommend-creator/orders")
|
@PutMapping("/recommend-creator/orders")
|
||||||
@PreAuthorize("hasRole('ADMIN')")
|
|
||||||
fun updateRecommendCreatorBannerOrders(
|
fun updateRecommendCreatorBannerOrders(
|
||||||
@RequestBody request: UpdateAdminRecommendCreatorBannerOrdersRequest
|
@RequestBody request: UpdateAdminRecommendCreatorBannerOrdersRequest
|
||||||
) = ApiResponse.ok(
|
) = ApiResponse.ok(
|
||||||
|
|
|
@ -8,7 +8,6 @@ import kr.co.vividnext.sodalive.live.room.QLiveRoom.liveRoom
|
||||||
import kr.co.vividnext.sodalive.member.QMember.member
|
import kr.co.vividnext.sodalive.member.QMember.member
|
||||||
import org.springframework.data.domain.Pageable
|
import org.springframework.data.domain.Pageable
|
||||||
import org.springframework.stereotype.Repository
|
import org.springframework.stereotype.Repository
|
||||||
import java.time.LocalDateTime
|
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
class AdminLiveRoomQueryRepository(private val queryFactory: JPAQueryFactory) {
|
class AdminLiveRoomQueryRepository(private val queryFactory: JPAQueryFactory) {
|
||||||
|
@ -37,15 +36,4 @@ class AdminLiveRoomQueryRepository(private val queryFactory: JPAQueryFactory) {
|
||||||
.orderBy(recommendLiveCreatorBanner.orders.asc(), recommendLiveCreatorBanner.id.desc())
|
.orderBy(recommendLiveCreatorBanner.orders.asc(), recommendLiveCreatorBanner.id.desc())
|
||||||
.fetch()
|
.fetch()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getNotStartedLive4hoursPassed(): List<LiveRoom> {
|
|
||||||
return queryFactory
|
|
||||||
.selectFrom(liveRoom)
|
|
||||||
.where(
|
|
||||||
liveRoom.isActive.isTrue
|
|
||||||
.and(liveRoom.channelName.isNotNull)
|
|
||||||
.and(liveRoom.beginDateTime.loe(LocalDateTime.now().minusHours(12)))
|
|
||||||
)
|
|
||||||
.fetch()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,28 +2,12 @@ package kr.co.vividnext.sodalive.admin.live
|
||||||
|
|
||||||
import com.amazonaws.services.s3.model.ObjectMetadata
|
import com.amazonaws.services.s3.model.ObjectMetadata
|
||||||
import kr.co.vividnext.sodalive.aws.s3.S3Uploader
|
import kr.co.vividnext.sodalive.aws.s3.S3Uploader
|
||||||
import kr.co.vividnext.sodalive.can.CanRepository
|
|
||||||
import kr.co.vividnext.sodalive.can.charge.Charge
|
|
||||||
import kr.co.vividnext.sodalive.can.charge.ChargeRepository
|
|
||||||
import kr.co.vividnext.sodalive.can.charge.ChargeStatus
|
|
||||||
import kr.co.vividnext.sodalive.can.payment.Payment
|
|
||||||
import kr.co.vividnext.sodalive.can.payment.PaymentGateway
|
|
||||||
import kr.co.vividnext.sodalive.can.payment.PaymentStatus
|
|
||||||
import kr.co.vividnext.sodalive.can.use.CanUsage
|
|
||||||
import kr.co.vividnext.sodalive.can.use.UseCanCalculateRepository
|
|
||||||
import kr.co.vividnext.sodalive.can.use.UseCanCalculateStatus
|
|
||||||
import kr.co.vividnext.sodalive.common.SodaException
|
import kr.co.vividnext.sodalive.common.SodaException
|
||||||
import kr.co.vividnext.sodalive.fcm.FcmEvent
|
|
||||||
import kr.co.vividnext.sodalive.fcm.FcmEventType
|
|
||||||
import kr.co.vividnext.sodalive.live.recommend.RecommendLiveCreatorBanner
|
import kr.co.vividnext.sodalive.live.recommend.RecommendLiveCreatorBanner
|
||||||
import kr.co.vividnext.sodalive.live.recommend.RecommendLiveCreatorBannerRepository
|
import kr.co.vividnext.sodalive.live.recommend.RecommendLiveCreatorBannerRepository
|
||||||
import kr.co.vividnext.sodalive.live.reservation.LiveReservationRepository
|
|
||||||
import kr.co.vividnext.sodalive.live.room.cancel.LiveRoomCancel
|
|
||||||
import kr.co.vividnext.sodalive.live.room.cancel.LiveRoomCancelRepository
|
|
||||||
import kr.co.vividnext.sodalive.member.MemberRepository
|
import kr.co.vividnext.sodalive.member.MemberRepository
|
||||||
import kr.co.vividnext.sodalive.utils.generateFileName
|
import kr.co.vividnext.sodalive.utils.generateFileName
|
||||||
import org.springframework.beans.factory.annotation.Value
|
import org.springframework.beans.factory.annotation.Value
|
||||||
import org.springframework.context.ApplicationEventPublisher
|
|
||||||
import org.springframework.data.domain.Pageable
|
import org.springframework.data.domain.Pageable
|
||||||
import org.springframework.data.repository.findByIdOrNull
|
import org.springframework.data.repository.findByIdOrNull
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
|
@ -36,18 +20,10 @@ import java.time.format.DateTimeFormatter
|
||||||
@Service
|
@Service
|
||||||
class AdminLiveService(
|
class AdminLiveService(
|
||||||
private val recommendCreatorBannerRepository: RecommendLiveCreatorBannerRepository,
|
private val recommendCreatorBannerRepository: RecommendLiveCreatorBannerRepository,
|
||||||
private val roomCancelRepository: LiveRoomCancelRepository,
|
|
||||||
private val repository: AdminLiveRoomQueryRepository,
|
private val repository: AdminLiveRoomQueryRepository,
|
||||||
private val memberRepository: MemberRepository,
|
private val memberRepository: MemberRepository,
|
||||||
private val s3Uploader: S3Uploader,
|
private val s3Uploader: S3Uploader,
|
||||||
|
|
||||||
private val useCanCalculateRepository: UseCanCalculateRepository,
|
|
||||||
private val reservationRepository: LiveReservationRepository,
|
|
||||||
private val chargeRepository: ChargeRepository,
|
|
||||||
private val canRepository: CanRepository,
|
|
||||||
|
|
||||||
private val applicationEventPublisher: ApplicationEventPublisher,
|
|
||||||
|
|
||||||
@Value("\${cloud.aws.s3.bucket}")
|
@Value("\${cloud.aws.s3.bucket}")
|
||||||
private val bucket: String,
|
private val bucket: String,
|
||||||
@Value("\${cloud.aws.cloud-front.host}")
|
@Value("\${cloud.aws.cloud-front.host}")
|
||||||
|
@ -261,69 +237,4 @@ class AdminLiveService(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
|
||||||
fun cancelNotStartedLive4hoursPassed() {
|
|
||||||
val findRoomList = repository.getNotStartedLive4hoursPassed()
|
|
||||||
|
|
||||||
for (room in findRoomList) {
|
|
||||||
room.isActive = false
|
|
||||||
|
|
||||||
val roomCancel = LiveRoomCancel("관리자에 의한 취소 - 노쇼")
|
|
||||||
roomCancel.room = room
|
|
||||||
roomCancelRepository.save(roomCancel)
|
|
||||||
|
|
||||||
// 유료방인 경우 환불처리
|
|
||||||
if (room.price > 0) {
|
|
||||||
val bookerList = reservationRepository.getReservationBookerList(roomId = room.id!!)
|
|
||||||
for (booker in bookerList) {
|
|
||||||
val useCan = canRepository.getCanUsedForLiveRoomNotRefund(
|
|
||||||
memberId = booker.id!!,
|
|
||||||
roomId = room.id!!,
|
|
||||||
canUsage = CanUsage.LIVE
|
|
||||||
) ?: continue
|
|
||||||
useCan.isRefund = true
|
|
||||||
|
|
||||||
val useCanCalculate = useCanCalculateRepository.findByUseCanIdAndStatus(useCanId = useCan.id!!)
|
|
||||||
useCanCalculate.forEach {
|
|
||||||
it.status = UseCanCalculateStatus.REFUND
|
|
||||||
|
|
||||||
val charge = Charge(0, it.can, status = ChargeStatus.REFUND_CHARGE)
|
|
||||||
charge.title = "${it.can} 캔"
|
|
||||||
charge.useCan = useCan
|
|
||||||
|
|
||||||
when (it.paymentGateway) {
|
|
||||||
PaymentGateway.PG -> booker.pgRewardCan += charge.rewardCan
|
|
||||||
PaymentGateway.GOOGLE_IAP -> booker.googleRewardCan += charge.rewardCan
|
|
||||||
PaymentGateway.APPLE_IAP -> booker.appleRewardCan += charge.rewardCan
|
|
||||||
}
|
|
||||||
charge.member = booker
|
|
||||||
|
|
||||||
val payment = Payment(
|
|
||||||
status = PaymentStatus.COMPLETE,
|
|
||||||
paymentGateway = it.paymentGateway
|
|
||||||
)
|
|
||||||
payment.method = "환불"
|
|
||||||
charge.payment = payment
|
|
||||||
|
|
||||||
chargeRepository.save(charge)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 예약현황 취소
|
|
||||||
val pushTokenListMap = memberRepository.getPushTokenFromReservationList(room.id!!)
|
|
||||||
reservationRepository.cancelReservation(roomId = room.id!!)
|
|
||||||
|
|
||||||
// 라이브 취소 푸시 발송
|
|
||||||
applicationEventPublisher.publishEvent(
|
|
||||||
FcmEvent(
|
|
||||||
type = FcmEventType.CANCEL_LIVE,
|
|
||||||
title = room.member!!.nickname,
|
|
||||||
message = "라이브 취소 : ${room.title}",
|
|
||||||
recipientsMap = pushTokenListMap
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue