From 41fe37bdb2eb29426dc7429e3003e71c4e4a6ca3 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 30 Aug 2023 21:53:45 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20-=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EB=B9=84=EB=B0=80=EB=B2=88=ED=98=B8=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=ED=99=94=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/admin/member/AdminMemberController.kt | 7 +++++++ .../sodalive/admin/member/AdminMemberRepository.kt | 12 ++++++++++++ .../sodalive/admin/member/AdminMemberService.kt | 10 ++++++++++ .../sodalive/admin/member/ResetPasswordRequest.kt | 3 +++ 4 files changed, 32 insertions(+) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/admin/member/ResetPasswordRequest.kt diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberController.kt index 436e23f..7070169 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberController.kt @@ -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), diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberRepository.kt index 4b1a2ed..538259b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberRepository.kt @@ -15,6 +15,7 @@ interface AdminMemberQueryRepository { fun searchMemberTotalCount(searchWord: String, role: MemberRole? = null): Int fun getCreatorAllList(): List + 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() + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberService.kt index 8b81fbc..7cccc74 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/AdminMemberService.kt @@ -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 { 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]) + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/ResetPasswordRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/ResetPasswordRequest.kt new file mode 100644 index 0000000..009df01 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/ResetPasswordRequest.kt @@ -0,0 +1,3 @@ +package kr.co.vividnext.sodalive.admin.member + +data class ResetPasswordRequest(val memberId: Long) -- 2.40.1 From eece72bc400add4cb4e447bfd1eb21036857f293 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 30 Aug 2023 22:12:44 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=ED=83=AD=20?= =?UTF-8?q?=EC=83=81=EB=8B=A8=20=EC=B6=94=EC=B2=9C=EB=9D=BC=EC=9D=B4?= =?UTF-8?q?=EB=B8=8C=20-=20=EC=B0=A8=EB=8B=A8=20=EB=8B=B9=ED=95=9C=20?= =?UTF-8?q?=EC=9C=A0=EC=A0=80=EB=8A=94=20=EC=B0=A8=EB=8B=A8=ED=95=9C=20?= =?UTF-8?q?=EC=9C=A0=EC=A0=80=EC=9D=98=20=EB=B0=B0=EB=84=88=EA=B0=80=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/live/recommend/LiveRecommendRepository.kt | 9 ++++++++- .../sodalive/live/recommend/LiveRecommendService.kt | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt index 3287f3e..0f147df 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt @@ -19,7 +19,11 @@ class LiveRecommendRepository( @Value("\${cloud.aws.cloud-front.host}") private val cloudFrontHost: String ) { - fun getRecommendLive(memberId: Long, isAdult: Boolean): List { + fun getRecommendLive( + memberId: Long, + isBlocked: (Long) -> Boolean, + isAdult: Boolean + ): List { 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( diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendService.kt index a842415..52f3aac 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendService.kt @@ -14,6 +14,7 @@ class LiveRecommendService( fun getRecommendLive(member: Member): List { return repository.getRecommendLive( memberId = member.id!!, + isBlocked = { !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) }, isAdult = member.auth != null ) } -- 2.40.1 From 1ba3cb6277d46b7fbce1614e6a5ba77e32bdedb0 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 30 Aug 2023 22:41:40 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=ED=83=AD=20?= =?UTF-8?q?=EC=83=81=EB=8B=A8=20=EC=B6=94=EC=B2=9C=EB=9D=BC=EC=9D=B4?= =?UTF-8?q?=EB=B8=8C=20-=20=EC=B0=A8=EB=8B=A8=20=EB=8B=B9=ED=95=9C=20?= =?UTF-8?q?=EC=9C=A0=EC=A0=80=EB=8A=94=20=EC=B0=A8=EB=8B=A8=ED=95=9C=20?= =?UTF-8?q?=EC=9C=A0=EC=A0=80=EC=9D=98=20=EB=B0=B0=EB=84=88=EA=B0=80=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vividnext/sodalive/live/recommend/LiveRecommendService.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendService.kt index 52f3aac..1c6e486 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendService.kt @@ -14,7 +14,7 @@ class LiveRecommendService( fun getRecommendLive(member: Member): List { return repository.getRecommendLive( memberId = member.id!!, - isBlocked = { !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) }, + isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) }, isAdult = member.auth != null ) } -- 2.40.1 From 6aec31711dde4767545e6966816d3985e7fb47bc Mon Sep 17 00:00:00 2001 From: Klaus Date: Thu, 31 Aug 2023 17:33:52 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=EC=B2=AB=20=EC=B6=A9=EC=A0=84=20=EC=9D=B4?= =?UTF-8?q?=EB=B2=A4=ED=8A=B8=20-=2020%=EC=97=90=EC=84=9C=2015%=EB=A1=9C?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vividnext/sodalive/can/charge/event/ChargeEventService.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/event/ChargeEventService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/event/ChargeEventService.kt index 7a8ff3e..ba53b6e 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/event/ChargeEventService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/event/ChargeEventService.kt @@ -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, -- 2.40.1