diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanChargeRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanChargeRequest.kt index bbb8fd0..22cfb98 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanChargeRequest.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanChargeRequest.kt @@ -1,7 +1,7 @@ package kr.co.vividnext.sodalive.admin.can data class AdminCanChargeRequest( - val memberId: Long, + val memberIds: List, val method: String, val can: Int ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanService.kt index 612e414..9e780dc 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanService.kt @@ -40,22 +40,27 @@ class AdminCanService( @Transactional fun charge(request: AdminCanChargeRequest) { - val member = memberRepository.findByIdOrNull(request.memberId) - ?: throw SodaException("잘못된 회원번호 입니다.") - if (request.can <= 0) throw SodaException("1 캔 이상 입력하세요.") if (request.method.isBlank()) throw SodaException("기록내용을 입력하세요.") - val charge = Charge(0, request.can, status = ChargeStatus.ADMIN) - charge.title = "${request.can.moneyFormat()} 캔" - charge.member = member + val ids = request.memberIds.distinct() + if (ids.isEmpty()) throw SodaException("회원번호를 입력하세요.") - val payment = Payment(status = PaymentStatus.COMPLETE, paymentGateway = PaymentGateway.PG) - payment.method = request.method - charge.payment = payment + val members = memberRepository.findAllById(ids).toList() + if (members.size != ids.size) throw SodaException("잘못된 회원번호 입니다.") - chargeRepository.save(charge) + members.forEach { member -> + val charge = Charge(0, request.can, status = ChargeStatus.ADMIN) + charge.title = "${request.can.moneyFormat()} 캔" + charge.member = member - member.pgRewardCan += charge.rewardCan + val payment = Payment(status = PaymentStatus.COMPLETE, paymentGateway = PaymentGateway.PG) + payment.method = request.method + charge.payment = payment + + chargeRepository.save(charge) + + member.pgRewardCan += charge.rewardCan + } } }