parent
7055bb9872
commit
e3c33c71a0
|
@ -3,13 +3,21 @@ package kr.co.vividnext.sodalive.can.coupon
|
||||||
import kr.co.vividnext.sodalive.common.BaseEntity
|
import kr.co.vividnext.sodalive.common.BaseEntity
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import javax.persistence.Entity
|
import javax.persistence.Entity
|
||||||
|
import javax.persistence.EnumType
|
||||||
|
import javax.persistence.Enumerated
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
data class CanCoupon(
|
data class CanCoupon(
|
||||||
val couponName: String,
|
val couponName: String,
|
||||||
|
@Enumerated(EnumType.STRING)
|
||||||
|
val couponType: CouponType,
|
||||||
val can: Int,
|
val can: Int,
|
||||||
val couponCount: Int,
|
val couponCount: Int,
|
||||||
var validity: LocalDateTime,
|
var validity: LocalDateTime,
|
||||||
var isActive: Boolean,
|
var isActive: Boolean,
|
||||||
var isMultipleUse: Boolean
|
var isMultipleUse: Boolean
|
||||||
) : BaseEntity()
|
) : BaseEntity()
|
||||||
|
|
||||||
|
enum class CouponType {
|
||||||
|
CAN, POINT
|
||||||
|
}
|
||||||
|
|
|
@ -79,6 +79,7 @@ class CanCouponNumberQueryRepositoryImpl(private val queryFactory: JPAQueryFacto
|
||||||
override fun findByCouponNumber(couponNumber: String): CanCouponNumber? {
|
override fun findByCouponNumber(couponNumber: String): CanCouponNumber? {
|
||||||
return queryFactory
|
return queryFactory
|
||||||
.selectFrom(canCouponNumber)
|
.selectFrom(canCouponNumber)
|
||||||
|
.innerJoin(canCouponNumber.canCoupon, canCoupon)
|
||||||
.where(canCouponNumber.couponNumber.eq(couponNumber))
|
.where(canCouponNumber.couponNumber.eq(couponNumber))
|
||||||
.fetchFirst()
|
.fetchFirst()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package kr.co.vividnext.sodalive.can.coupon
|
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.DateTimePath
|
||||||
import com.querydsl.core.types.dsl.Expressions
|
import com.querydsl.core.types.dsl.Expressions
|
||||||
import com.querydsl.core.types.dsl.StringTemplate
|
import com.querydsl.core.types.dsl.StringTemplate
|
||||||
|
@ -30,6 +31,9 @@ class CanCouponQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) :
|
||||||
QGetCouponListItemResponse(
|
QGetCouponListItemResponse(
|
||||||
canCoupon.id,
|
canCoupon.id,
|
||||||
canCoupon.couponName,
|
canCoupon.couponName,
|
||||||
|
CaseBuilder()
|
||||||
|
.`when`(canCoupon.couponType.eq(CouponType.POINT)).then("포인트 쿠폰")
|
||||||
|
.otherwise("캔 쿠폰"),
|
||||||
canCoupon.can,
|
canCoupon.can,
|
||||||
canCoupon.couponCount,
|
canCoupon.couponCount,
|
||||||
Expressions.ZERO,
|
Expressions.ZERO,
|
||||||
|
|
|
@ -68,15 +68,12 @@ class CanCouponService(
|
||||||
|
|
||||||
fun getCouponList(offset: Long, limit: Long): GetCouponListResponse {
|
fun getCouponList(offset: Long, limit: Long): GetCouponListResponse {
|
||||||
val totalCount = repository.getCouponTotalCount()
|
val totalCount = repository.getCouponTotalCount()
|
||||||
|
|
||||||
val items = repository.getCouponList(offset = offset, limit = limit)
|
val items = repository.getCouponList(offset = offset, limit = limit)
|
||||||
.asSequence()
|
|
||||||
.map {
|
.map {
|
||||||
val useCouponCount = couponNumberRepository.getUseCouponCount(id = it.id)
|
val useCouponCount = couponNumberRepository.getUseCouponCount(id = it.id)
|
||||||
it.useCouponCount = useCouponCount
|
it.useCouponCount = useCouponCount
|
||||||
it
|
it
|
||||||
}
|
}
|
||||||
.toList()
|
|
||||||
|
|
||||||
return GetCouponListResponse(totalCount, items)
|
return GetCouponListResponse(totalCount, items)
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
|
|
||||||
data class GenerateCanCouponRequest(
|
data class GenerateCanCouponRequest(
|
||||||
@JsonProperty("couponName") val couponName: String,
|
@JsonProperty("couponName") val couponName: String,
|
||||||
|
@JsonProperty("couponType") val couponType: CouponType,
|
||||||
@JsonProperty("can") val can: Int,
|
@JsonProperty("can") val can: Int,
|
||||||
@JsonProperty("validity") val validity: String,
|
@JsonProperty("validity") val validity: String,
|
||||||
@JsonProperty("isMultipleUse") val isMultipleUse: Boolean,
|
@JsonProperty("isMultipleUse") val isMultipleUse: Boolean,
|
||||||
|
|
|
@ -10,6 +10,7 @@ data class GetCouponListResponse(
|
||||||
data class GetCouponListItemResponse @QueryProjection constructor(
|
data class GetCouponListItemResponse @QueryProjection constructor(
|
||||||
val id: Long,
|
val id: Long,
|
||||||
val couponName: String,
|
val couponName: String,
|
||||||
|
val couponType: String,
|
||||||
val can: Int,
|
val can: Int,
|
||||||
val couponCount: Int,
|
val couponCount: Int,
|
||||||
var useCouponCount: Int,
|
var useCouponCount: Int,
|
||||||
|
|
|
@ -5,5 +5,6 @@ enum class ActionType(val displayName: String) {
|
||||||
USER_AUTHENTICATION("본인인증"),
|
USER_AUTHENTICATION("본인인증"),
|
||||||
CONTENT_COMMENT("콘텐츠 댓글"),
|
CONTENT_COMMENT("콘텐츠 댓글"),
|
||||||
ORDER_CONTENT_COMMENT("구매한 콘텐츠 댓글"),
|
ORDER_CONTENT_COMMENT("구매한 콘텐츠 댓글"),
|
||||||
LIVE_CONTINUOUS_LISTEN_30("라이브 연속 청취 30분")
|
LIVE_CONTINUOUS_LISTEN_30("라이브 연속 청취 30분"),
|
||||||
|
COUPON("쿠폰")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue