feat: 유저 행동 기록 및 포인트 지급 로직 구현 + 회원가입 연동
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
package kr.co.vividnext.sodalive.point
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository
|
||||
|
||||
interface MemberPointRepository : JpaRepository<MemberPoint, Long>
|
@@ -0,0 +1,27 @@
|
||||
package kr.co.vividnext.sodalive.point
|
||||
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory
|
||||
import kr.co.vividnext.sodalive.point.QPointGrantLog.pointGrantLog
|
||||
import org.springframework.data.jpa.repository.JpaRepository
|
||||
|
||||
interface PointGrantLogRepository : JpaRepository<PointGrantLog, Long>, PointGrantLogQueryRepository
|
||||
|
||||
interface PointGrantLogQueryRepository {
|
||||
fun existsByMemberIdAndPolicyId(memberId: Long, policyId: Long): Boolean
|
||||
}
|
||||
|
||||
class PointGrantLogQueryRepositoryImpl(
|
||||
private val queryFactory: JPAQueryFactory
|
||||
) : PointGrantLogQueryRepository {
|
||||
override fun existsByMemberIdAndPolicyId(memberId: Long, policyId: Long): Boolean {
|
||||
return queryFactory
|
||||
.select(pointGrantLog.id)
|
||||
.from(pointGrantLog)
|
||||
.where(
|
||||
pointGrantLog.memberId.eq(memberId),
|
||||
pointGrantLog.policyId.eq(policyId)
|
||||
)
|
||||
.fetch()
|
||||
.isNotEmpty()
|
||||
}
|
||||
}
|
@@ -0,0 +1,34 @@
|
||||
package kr.co.vividnext.sodalive.point
|
||||
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory
|
||||
import kr.co.vividnext.sodalive.point.QPointRewardPolicy.pointRewardPolicy
|
||||
import kr.co.vividnext.sodalive.useraction.ActionType
|
||||
import org.springframework.data.jpa.repository.JpaRepository
|
||||
import java.time.LocalDateTime
|
||||
|
||||
interface PointRewardPolicyRepository : JpaRepository<PointRewardPolicy, Long>, PointRewardPolicyQueryRepository
|
||||
|
||||
interface PointRewardPolicyQueryRepository {
|
||||
fun findByActionTypeAndIsActiveTrue(actionType: ActionType, nowDateTime: LocalDateTime): PointRewardPolicy?
|
||||
}
|
||||
|
||||
class PointRewardPolicyQueryRepositoryImpl(
|
||||
private val queryFactory: JPAQueryFactory
|
||||
) : PointRewardPolicyQueryRepository {
|
||||
override fun findByActionTypeAndIsActiveTrue(
|
||||
actionType: ActionType,
|
||||
nowDateTime: LocalDateTime
|
||||
): PointRewardPolicy? {
|
||||
return queryFactory
|
||||
.selectFrom(pointRewardPolicy)
|
||||
.where(
|
||||
pointRewardPolicy.isActive,
|
||||
pointRewardPolicy.actionType.eq(actionType),
|
||||
pointRewardPolicy.startDate.loe(nowDateTime),
|
||||
pointRewardPolicy.endDate.goe(nowDateTime)
|
||||
.or(pointRewardPolicy.endDate.isNull)
|
||||
)
|
||||
.orderBy(pointRewardPolicy.endDate.asc())
|
||||
.fetchFirst()
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user