test #324
| @@ -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("쿠폰") | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user