diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeRepository.kt index dbb2128..27b0056 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeRepository.kt @@ -19,6 +19,7 @@ interface ChargeQueryRepository { fun getOldestChargeWhereChargeCanGreaterThan0(chargeId: Long, memberId: Long, container: String): Charge? fun getChargeCountAfterDate(memberId: Long, date: LocalDateTime): Int fun isFirstCharged(memberId: Long): Boolean + fun getChargeCount(memberId: Long): Int } class ChargeQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : ChargeQueryRepository { @@ -92,6 +93,22 @@ class ChargeQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : Cha .size <= 1 } + override fun getChargeCount(memberId: Long): Int { + return ( + queryFactory + .select(charge.id.count()) + .from(charge) + .innerJoin(charge.member, member) + .innerJoin(charge.payment, payment) + .where( + member.id.eq(memberId), + charge.status.eq(ChargeStatus.CHARGE), + payment.status.eq(PaymentStatus.COMPLETE) + ) + .fetchOne() ?: 0L + ).toInt() + } + private fun getPaymentGatewayCondition(container: String): BooleanExpression? { val paymentGatewayCondition = when (container) { "aos" -> { diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt index 81af3f0..24628fd 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt @@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.member import com.amazonaws.services.s3.model.ObjectMetadata import com.fasterxml.jackson.databind.ObjectMapper import kr.co.vividnext.sodalive.aws.s3.S3Uploader +import kr.co.vividnext.sodalive.can.charge.ChargeRepository import kr.co.vividnext.sodalive.can.payment.CanPaymentService import kr.co.vividnext.sodalive.can.use.CanUsage import kr.co.vividnext.sodalive.common.ApiResponse @@ -71,6 +72,7 @@ class MemberService( private val nicknameChangeLogRepository: NicknameChangeLogRepository, private val memberTagRepository: MemberTagRepository, private val liveReservationRepository: LiveReservationRepository, + private val chargeRepository: ChargeRepository, private val orderService: OrderService, private val emailService: SendEmailService, @@ -140,9 +142,30 @@ class MemberService( } fun getMemberInfo(member: Member, container: String): GetMemberInfoResponse { + val gender = if (member.auth != null) { + if (member.auth!!.gender == 1) { + "남" + } else { + "여" + } + } else { + null + } + + val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") + val signUpDate = member.createdAt!! + .atZone(ZoneId.of("UTC")) + .withZoneSameInstant(ZoneId.of("Asia/Seoul")) + .format(dateTimeFormatter) + + val chargeCount = chargeRepository.getChargeCount(memberId = member.id!!) + return GetMemberInfoResponse( can = member.getChargeCan(container) + member.getRewardCan(container), isAuth = member.auth != null, + gender = gender, + signupDate = signUpDate, + chargeCount = chargeCount, role = member.role, messageNotice = member.notification?.message, followingChannelLiveNotice = member.notification?.live, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/info/GetMemberInfoResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/info/GetMemberInfoResponse.kt index 6d18341..e55cd60 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/info/GetMemberInfoResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/info/GetMemberInfoResponse.kt @@ -5,6 +5,9 @@ import kr.co.vividnext.sodalive.member.MemberRole data class GetMemberInfoResponse( val can: Int, val isAuth: Boolean, + val gender: String?, + val signupDate: String, + val chargeCount: Int, val role: MemberRole, val messageNotice: Boolean?, val followingChannelLiveNotice: Boolean?,