Merge pull request '유저 정보 조회' (#283) from test into main

Reviewed-on: #283
This commit is contained in:
klaus 2025-03-12 08:00:13 +00:00
commit f4f0f203a2
3 changed files with 43 additions and 0 deletions

View File

@ -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" -> {

View File

@ -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,

View File

@ -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?,