test #27
|
@ -4,6 +4,7 @@ import kr.co.vividnext.sodalive.common.ApiResponse
|
|||
import org.springframework.data.domain.Pageable
|
||||
import org.springframework.security.access.prepost.PreAuthorize
|
||||
import org.springframework.web.bind.annotation.GetMapping
|
||||
import org.springframework.web.bind.annotation.PostMapping
|
||||
import org.springframework.web.bind.annotation.PutMapping
|
||||
import org.springframework.web.bind.annotation.RequestBody
|
||||
import org.springframework.web.bind.annotation.RequestMapping
|
||||
|
@ -14,6 +15,12 @@ import org.springframework.web.bind.annotation.RestController
|
|||
@RequestMapping("/admin/member")
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
class AdminMemberController(private val service: AdminMemberService) {
|
||||
@PostMapping("/password/reset")
|
||||
fun resetPassword(@RequestBody request: ResetPasswordRequest) = ApiResponse.ok(
|
||||
service.resetPassword(request = request),
|
||||
"비밀번호가 초기화 되었습니다."
|
||||
)
|
||||
|
||||
@PutMapping
|
||||
fun updateMember(@RequestBody request: UpdateMemberRequest) = ApiResponse.ok(
|
||||
service.updateMember(request = request),
|
||||
|
|
|
@ -15,6 +15,7 @@ interface AdminMemberQueryRepository {
|
|||
|
||||
fun searchMemberTotalCount(searchWord: String, role: MemberRole? = null): Int
|
||||
fun getCreatorAllList(): List<GetAdminCreatorAllListResponse>
|
||||
fun findByIdAndActive(memberId: Long): Member?
|
||||
}
|
||||
|
||||
class AdminMemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : AdminMemberQueryRepository {
|
||||
|
@ -109,4 +110,15 @@ class AdminMemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory)
|
|||
)
|
||||
.fetch()
|
||||
}
|
||||
|
||||
override fun findByIdAndActive(memberId: Long): Member? {
|
||||
return queryFactory
|
||||
.selectFrom(member)
|
||||
.where(
|
||||
member.id.eq(memberId)
|
||||
.and(member.isActive.isTrue)
|
||||
)
|
||||
.orderBy(member.id.desc())
|
||||
.fetchFirst()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import kr.co.vividnext.sodalive.member.MemberRole
|
|||
import org.springframework.beans.factory.annotation.Value
|
||||
import org.springframework.data.domain.Pageable
|
||||
import org.springframework.data.repository.findByIdOrNull
|
||||
import org.springframework.security.crypto.password.PasswordEncoder
|
||||
import org.springframework.stereotype.Service
|
||||
import org.springframework.transaction.annotation.Transactional
|
||||
import java.time.ZoneId
|
||||
|
@ -14,6 +15,7 @@ import java.time.format.DateTimeFormatter
|
|||
@Service
|
||||
class AdminMemberService(
|
||||
private val repository: AdminMemberRepository,
|
||||
private val passwordEncoder: PasswordEncoder,
|
||||
|
||||
@Value("\${cloud.aws.cloud-front.host}")
|
||||
private val cloudFrontHost: String
|
||||
|
@ -133,4 +135,12 @@ class AdminMemberService(
|
|||
fun getCreatorAllList(): List<GetAdminCreatorAllListResponse> {
|
||||
return repository.getCreatorAllList()
|
||||
}
|
||||
|
||||
@Transactional
|
||||
fun resetPassword(request: ResetPasswordRequest) {
|
||||
val member = repository.findByIdAndActive(memberId = request.memberId)
|
||||
?: throw SodaException("잘못된 회원정보입니다.\n다시 시도해 주세요.")
|
||||
|
||||
member.password = passwordEncoder.encode(member.email.split("@")[0])
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
package kr.co.vividnext.sodalive.admin.member
|
||||
|
||||
data class ResetPasswordRequest(val memberId: Long)
|
|
@ -89,7 +89,7 @@ class ChargeEventService(
|
|||
}
|
||||
|
||||
private fun applyFirstChargeEvent(charge: Charge, member: Member) {
|
||||
val additionalCan = ceil(charge.chargeCan * 0.2).toInt()
|
||||
val additionalCan = ceil(charge.chargeCan * 0.15).toInt()
|
||||
applyEvent(
|
||||
additionalCan = additionalCan,
|
||||
member = member,
|
||||
|
|
|
@ -19,7 +19,11 @@ class LiveRecommendRepository(
|
|||
@Value("\${cloud.aws.cloud-front.host}")
|
||||
private val cloudFrontHost: String
|
||||
) {
|
||||
fun getRecommendLive(memberId: Long, isAdult: Boolean): List<GetRecommendLiveResponse> {
|
||||
fun getRecommendLive(
|
||||
memberId: Long,
|
||||
isBlocked: (Long) -> Boolean,
|
||||
isAdult: Boolean
|
||||
): List<GetRecommendLiveResponse> {
|
||||
val dateNow = LocalDateTime.now()
|
||||
|
||||
var where = recommendLiveCreatorBanner.startDate.loe(dateNow)
|
||||
|
@ -41,6 +45,9 @@ class LiveRecommendRepository(
|
|||
.where(where)
|
||||
.orderBy(recommendLiveCreatorBanner.orders.asc())
|
||||
.fetch()
|
||||
.asSequence()
|
||||
.filter { !isBlocked(it.creatorId) }
|
||||
.toList()
|
||||
}
|
||||
|
||||
fun getOnAirRecommendChannelList(
|
||||
|
|
|
@ -14,6 +14,7 @@ class LiveRecommendService(
|
|||
fun getRecommendLive(member: Member): List<GetRecommendLiveResponse> {
|
||||
return repository.getRecommendLive(
|
||||
memberId = member.id!!,
|
||||
isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) },
|
||||
isAdult = member.auth != null
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue