test #27

Merged
klaus merged 4 commits from test into main 2023-08-31 08:37:43 +00:00
7 changed files with 42 additions and 2 deletions

View File

@ -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),

View File

@ -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()
}
}

View File

@ -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])
}
}

View File

@ -0,0 +1,3 @@
package kr.co.vividnext.sodalive.admin.member
data class ResetPasswordRequest(val memberId: Long)

View File

@ -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,

View File

@ -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(

View File

@ -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
)
}