diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCoupon.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCoupon.kt index 92ec244..fb77069 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCoupon.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCoupon.kt @@ -3,13 +3,21 @@ package kr.co.vividnext.sodalive.can.coupon import kr.co.vividnext.sodalive.common.BaseEntity import java.time.LocalDateTime import javax.persistence.Entity +import javax.persistence.EnumType +import javax.persistence.Enumerated @Entity data class CanCoupon( val couponName: String, + @Enumerated(EnumType.STRING) + val couponType: CouponType, val can: Int, val couponCount: Int, var validity: LocalDateTime, var isActive: Boolean, var isMultipleUse: Boolean ) : BaseEntity() + +enum class CouponType { + CAN, POINT +} diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponNumberRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponNumberRepository.kt index fd3bc08..fc99a88 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponNumberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponNumberRepository.kt @@ -79,6 +79,7 @@ class CanCouponNumberQueryRepositoryImpl(private val queryFactory: JPAQueryFacto override fun findByCouponNumber(couponNumber: String): CanCouponNumber? { return queryFactory .selectFrom(canCouponNumber) + .innerJoin(canCouponNumber.canCoupon, canCoupon) .where(canCouponNumber.couponNumber.eq(couponNumber)) .fetchFirst() } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponRepository.kt index 0882f50..114436f 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponRepository.kt @@ -1,5 +1,6 @@ package kr.co.vividnext.sodalive.can.coupon +import com.querydsl.core.types.dsl.CaseBuilder import com.querydsl.core.types.dsl.DateTimePath import com.querydsl.core.types.dsl.Expressions import com.querydsl.core.types.dsl.StringTemplate @@ -30,6 +31,9 @@ class CanCouponQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : QGetCouponListItemResponse( canCoupon.id, canCoupon.couponName, + CaseBuilder() + .`when`(canCoupon.couponType.eq(CouponType.POINT)).then("포인트 쿠폰") + .otherwise("캔 쿠폰"), canCoupon.can, canCoupon.couponCount, Expressions.ZERO, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponService.kt index d8fbde0..5870ffc 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponService.kt @@ -68,15 +68,12 @@ class CanCouponService( fun getCouponList(offset: Long, limit: Long): GetCouponListResponse { val totalCount = repository.getCouponTotalCount() - val items = repository.getCouponList(offset = offset, limit = limit) - .asSequence() .map { val useCouponCount = couponNumberRepository.getUseCouponCount(id = it.id) it.useCouponCount = useCouponCount it } - .toList() return GetCouponListResponse(totalCount, items) } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GenerateCanCouponRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GenerateCanCouponRequest.kt index 98028b2..1e6183d 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GenerateCanCouponRequest.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GenerateCanCouponRequest.kt @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty data class GenerateCanCouponRequest( @JsonProperty("couponName") val couponName: String, + @JsonProperty("couponType") val couponType: CouponType, @JsonProperty("can") val can: Int, @JsonProperty("validity") val validity: String, @JsonProperty("isMultipleUse") val isMultipleUse: Boolean, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GetCouponListResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GetCouponListResponse.kt index ff416a7..0c1e7ae 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GetCouponListResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GetCouponListResponse.kt @@ -10,6 +10,7 @@ data class GetCouponListResponse( data class GetCouponListItemResponse @QueryProjection constructor( val id: Long, val couponName: String, + val couponType: String, val can: Int, val couponCount: Int, var useCouponCount: Int, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/useraction/ActionType.kt b/src/main/kotlin/kr/co/vividnext/sodalive/useraction/ActionType.kt index 5933be9..177ed8c 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/useraction/ActionType.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/useraction/ActionType.kt @@ -5,5 +5,6 @@ enum class ActionType(val displayName: String) { USER_AUTHENTICATION("본인인증"), CONTENT_COMMENT("콘텐츠 댓글"), ORDER_CONTENT_COMMENT("구매한 콘텐츠 댓글"), - LIVE_CONTINUOUS_LISTEN_30("라이브 연속 청취 30분") + LIVE_CONTINUOUS_LISTEN_30("라이브 연속 청취 30분"), + COUPON("쿠폰") }