첫 충전 이벤트 - 본인인증한 전체 계정 중 첫 충전 시에만 첫충전 이벤트 적용
This commit is contained in:
@@ -1,7 +1,36 @@
|
||||
package kr.co.vividnext.sodalive.member.auth
|
||||
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory
|
||||
import kr.co.vividnext.sodalive.member.QMember.member
|
||||
import kr.co.vividnext.sodalive.member.auth.QAuth.auth
|
||||
import org.springframework.data.jpa.repository.JpaRepository
|
||||
import org.springframework.stereotype.Repository
|
||||
import java.time.LocalDateTime
|
||||
|
||||
@Repository
|
||||
interface AuthRepository : JpaRepository<Auth, Long>
|
||||
interface AuthRepository : JpaRepository<Auth, Long>, AuthQueryRepository
|
||||
|
||||
interface AuthQueryRepository {
|
||||
fun getOldestCreatedAtByDi(di: String): LocalDateTime
|
||||
fun getMemberIdsByDi(di: String): List<Long>
|
||||
}
|
||||
|
||||
class AuthQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : AuthQueryRepository {
|
||||
override fun getOldestCreatedAtByDi(di: String): LocalDateTime {
|
||||
return queryFactory
|
||||
.select(auth.createdAt)
|
||||
.from(auth)
|
||||
.where(auth.di.eq(di))
|
||||
.orderBy(auth.createdAt.asc())
|
||||
.fetchFirst()
|
||||
}
|
||||
|
||||
override fun getMemberIdsByDi(di: String): List<Long> {
|
||||
return queryFactory
|
||||
.select(member.id)
|
||||
.from(member)
|
||||
.leftJoin(member.auth, auth)
|
||||
.where(auth.di.eq(di))
|
||||
.fetch()
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user