Skip to content

Commit

Permalink
충돌 해결
Browse files Browse the repository at this point in the history
  • Loading branch information
esperar committed Jul 5, 2024
2 parents 981b1e2 + fd63f6d commit 9889c6f
Show file tree
Hide file tree
Showing 14 changed files with 29 additions and 162 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,8 @@ import com.dotori.v2.domain.auth.service.SignUpService
import com.dotori.v2.domain.email.domain.repository.EmailCertificateRepository
import com.dotori.v2.domain.email.exception.EmailAuthNotFoundException
import com.dotori.v2.domain.email.exception.EmailNotBeenException
import com.dotori.v2.domain.member.domain.entity.Member
import com.dotori.v2.domain.member.domain.repository.MemberRepository
import com.dotori.v2.domain.member.enums.Role
import com.dotori.v2.domain.member.exception.MemberAlreadyException
import com.dotori.v2.domain.student.presentation.data.res.FindAllStudentResDto
import com.dotori.v2.global.config.redis.service.RedisCacheService
import org.springframework.security.crypto.password.PasswordEncoder
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
Expand All @@ -21,7 +17,6 @@ class SignUpServiceImpl(
private val emailCertificateRepository: EmailCertificateRepository,
private val memberRepository: MemberRepository,
private val passwordEncoder: PasswordEncoder,
private val redisCacheService: RedisCacheService
): SignUpService {
override fun execute(signUpReqDto: SignUpReqDto) {
val emailCertificate = emailCertificateRepository.findByEmail(signUpReqDto.email)
Expand All @@ -39,29 +34,5 @@ class SignUpServiceImpl(
val member = signUpReqDto.toEntity(encodedPassword)

memberRepository.save(member)

updateCache(member)
}

private fun updateCache(member: Member) {
val cacheKey = "memberList"
val cachedData = redisCacheService.getFromCache(cacheKey) as? List<FindAllStudentResDto>

if (cachedData != null) {
val updatedList = cachedData.toMutableList().apply {
add(
FindAllStudentResDto(
id = member.id,
gender = member.gender,
memberName = member.memberName,
stuNum = member.stuNum,
role = Role.ROLE_MEMBER,
selfStudyStatus = member.selfStudyStatus,
profileImage = null
)
)
}
redisCacheService.putToCache(cacheKey, updatedList)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.dotori.v2.domain.member.service.impl

import com.dotori.v2.domain.member.service.DeleteProfileImageService
import com.dotori.v2.global.config.redis.service.RedisCacheService
import com.dotori.v2.global.thirdparty.aws.s3.S3Service
import com.dotori.v2.global.util.UserUtil
import org.springframework.stereotype.Service
Expand All @@ -11,14 +10,13 @@ import org.springframework.transaction.annotation.Transactional
@Transactional(rollbackFor = [Exception::class])
class DeleteProfileImageServiceImpl(
private val userUtil: UserUtil,
private val s3Service: S3Service,
private val redisCacheService: RedisCacheService
private val s3Service: S3Service
) : DeleteProfileImageService {

override fun execute() {
val member = userUtil.fetchCurrentUser()
s3Service.deleteFile(member.profileImage!!)
member.updateProfileImage(null)

redisCacheService.updateCacheFromProfile(member.id, null)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ package com.dotori.v2.domain.member.service.impl

import com.dotori.v2.domain.member.domain.repository.MemberRepository
import com.dotori.v2.domain.member.service.WithdrawalService
import com.dotori.v2.domain.student.presentation.data.res.FindAllStudentResDto
import com.dotori.v2.global.config.redis.service.RedisCacheService
import com.dotori.v2.global.thirdparty.aws.s3.S3Service
import com.dotori.v2.global.util.UserUtil
import org.springframework.stereotype.Service
Expand All @@ -15,23 +13,10 @@ class WithdrawalServiceImpl(
private val memberRepository: MemberRepository,
private val s3Service: S3Service,
private val userUtil: UserUtil,
private val redisCacheService: RedisCacheService
) : WithdrawalService {
override fun execute() {
val currentUser = userUtil.fetchCurrentUser()
currentUser.profileImage?.let { s3Service.deleteFile(it) }
memberRepository.delete(currentUser)

evictUserFromCache(currentUser.id)
}

private fun evictUserFromCache(userId: Long) {
val cacheKey = "memberList"
val cachedData = redisCacheService.getFromCache(cacheKey) as? List<FindAllStudentResDto>

if (cachedData != null) {
val updatedList = cachedData.filterNot { it.id == userId }
redisCacheService.putToCache(cacheKey, updatedList)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import com.dotori.v2.domain.selfstudy.util.FindSelfStudyCountUtil
import com.dotori.v2.domain.selfstudy.util.SaveSelfStudyUtil
import com.dotori.v2.domain.selfstudy.util.SelfStudyCheckUtil
import com.dotori.v2.domain.selfstudy.util.ValidDayOfWeekAndHourUtil
import com.dotori.v2.global.config.redis.service.RedisCacheService
import com.dotori.v2.global.util.UserUtil
import com.dotori.v2.indicator.IndicatorTarget
import org.springframework.stereotype.Service
Expand All @@ -21,8 +20,7 @@ class ApplySelfStudyServiceImpl(
private val findSelfStudyCountUtil: FindSelfStudyCountUtil,
private val selfStudyCheckUtil: SelfStudyCheckUtil,
private val saveSelfStudyUtil: SaveSelfStudyUtil,
private val validDayOfWeekAndHourUtil: ValidDayOfWeekAndHourUtil,
private val redisCacheService: RedisCacheService
private val validDayOfWeekAndHourUtil: ValidDayOfWeekAndHourUtil
) : ApplySelfStudyService{

@IndicatorTarget
Expand All @@ -40,7 +38,5 @@ class ApplySelfStudyServiceImpl(
member.updateSelfStudyStatus(SelfStudyStatus.APPLIED)
selfStudyCount.addCount()
saveSelfStudyUtil.save(member)

redisCacheService.updateCacheFromSelfStudy(member.id, SelfStudyStatus.APPLIED)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import com.dotori.v2.domain.member.domain.repository.MemberRepository
import com.dotori.v2.domain.member.enums.SelfStudyStatus
import com.dotori.v2.domain.member.exception.MemberNotFoundException
import com.dotori.v2.domain.selfstudy.service.BanSelfStudyService
import com.dotori.v2.global.config.redis.service.RedisCacheService
import org.springframework.data.repository.findByIdOrNull
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
Expand All @@ -14,14 +13,11 @@ import java.time.LocalDateTime
@Service
@Transactional(rollbackFor = [Exception::class])
class BanSelfStudyServiceImpl(
private val memberRepository: MemberRepository,
private val redisCacheService: RedisCacheService
private val memberRepository: MemberRepository
) : BanSelfStudyService {
override fun execute(id: Long) {
val member = memberRepository.findByIdOrNull(id) ?: throw MemberNotFoundException()
updateSelfStudyAndExpiredDate(member, SelfStudyStatus.IMPOSSIBLE, LocalDateTime.now().plusDays(7))

redisCacheService.updateCacheFromSelfStudy(member.id, SelfStudyStatus.IMPOSSIBLE)
}

private fun updateSelfStudyAndExpiredDate(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import com.dotori.v2.domain.member.domain.repository.MemberRepository
import com.dotori.v2.domain.member.enums.SelfStudyStatus
import com.dotori.v2.domain.member.exception.MemberNotFoundException
import com.dotori.v2.domain.selfstudy.service.CancelBanSelfStudyService
import com.dotori.v2.global.config.redis.service.RedisCacheService
import org.springframework.data.repository.findByIdOrNull
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
Expand All @@ -14,15 +13,12 @@ import java.time.LocalDateTime
@Service
@Transactional(rollbackFor = [Exception::class])
class CancelBanSelfStudyServiceImpl(
private val memberRepository: MemberRepository,
private val redisCacheService: RedisCacheService
private val memberRepository: MemberRepository
) : CancelBanSelfStudyService{
override fun execute(id: Long) {
val member = memberRepository.findByIdOrNull(id) ?: throw MemberNotFoundException()
updateSelfStudyAndExpiredDate(member, SelfStudyStatus.CAN, null)

redisCacheService.updateCacheFromSelfStudy(member.id, SelfStudyStatus.CAN)

}

private fun updateSelfStudyAndExpiredDate(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import com.dotori.v2.domain.selfstudy.service.CancelSelfStudyService
import com.dotori.v2.domain.selfstudy.util.FindSelfStudyCountUtil
import com.dotori.v2.domain.selfstudy.util.SelfStudyCheckUtil
import com.dotori.v2.domain.selfstudy.util.ValidDayOfWeekAndHourUtil
import com.dotori.v2.global.config.redis.service.RedisCacheService
import com.dotori.v2.global.util.UserUtil
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
Expand All @@ -18,8 +17,7 @@ class CancelSelfStudyServiceImpl(
private val validDayOfWeekAndHourUtil: ValidDayOfWeekAndHourUtil,
private val findSelfStudyCountUtil: FindSelfStudyCountUtil,
private val selfStudyRepository: SelfStudyRepository,
private val selfStudyCheckUtil: SelfStudyCheckUtil,
private val redisCacheService: RedisCacheService
private val selfStudyCheckUtil: SelfStudyCheckUtil
) : CancelSelfStudyService {
override fun execute() {
validDayOfWeekAndHourUtil.validateCancel()
Expand All @@ -34,7 +32,5 @@ class CancelSelfStudyServiceImpl(

selfStudyRepository.deleteByMember(member)
findSelfStudyCount.removeCount()

redisCacheService.updateCacheFromSelfStudy(member.id, SelfStudyStatus.CANT)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,4 @@ data class FindAllStudentResDto(
val role: Role,
val selfStudyStatus: SelfStudyStatus,
val profileImage: String?
) {
constructor() : this(
id = 0L,
gender = Gender.MAN,
memberName = "",
stuNum = "",
role = Role.ROLE_ADMIN,
selfStudyStatus = SelfStudyStatus.APPLIED,
profileImage = ""
)
}
)
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@ class FindAllMemberServiceImpl(

return members
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ import com.dotori.v2.domain.member.domain.entity.Member
import com.dotori.v2.domain.member.domain.repository.MemberRepository
import com.dotori.v2.domain.member.exception.MemberNotFoundException
import com.dotori.v2.domain.student.presentation.data.req.ModifyStudentInfoRequest
import com.dotori.v2.domain.student.presentation.data.res.FindAllStudentResDto
import com.dotori.v2.domain.student.service.ModifyStudentInfoService
import com.dotori.v2.global.config.redis.service.RedisCacheService
import org.springframework.data.repository.findByIdOrNull
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
Expand All @@ -15,17 +13,11 @@ import java.util.*
@Service
@Transactional(rollbackFor = [Exception::class])
class ModifyStudentInfoServiceImpl(
private val memberRepository: MemberRepository,
private val redisCacheService: RedisCacheService,
private val memberRepository: MemberRepository
) : ModifyStudentInfoService {

override fun execute(modifyStudentInfoRequest: ModifyStudentInfoRequest) {
val member = memberRepository.findByIdOrNull(modifyStudentInfoRequest.memberId)
?: throw MemberNotFoundException()

val member = memberRepository.findByIdOrNull(modifyStudentInfoRequest.memberId) ?: throw MemberNotFoundException()
updateMemberInfo(member, modifyStudentInfoRequest)

updateCache(modifyStudentInfoRequest)
}

private fun updateMemberInfo(member: Member, modifyStudentInfoRequest: ModifyStudentInfoRequest) {
Expand All @@ -42,28 +34,4 @@ class ModifyStudentInfoServiceImpl(
)
memberRepository.save(newMember)
}

private fun updateCache(modifyStudentInfoRequest: ModifyStudentInfoRequest) {
val cacheKey = "memberList"
val cachedData = redisCacheService.getFromCache(cacheKey) as? List<FindAllStudentResDto>?

if (cachedData != null) {
val updatedList = cachedData.map {
if (it.id == modifyStudentInfoRequest.memberId) {
FindAllStudentResDto(
id = it.id,
gender = modifyStudentInfoRequest.gender,
memberName = modifyStudentInfoRequest.memberName,
stuNum = modifyStudentInfoRequest.stuNum,
role = modifyStudentInfoRequest.role,
selfStudyStatus = it.selfStudyStatus,
profileImage = it.profileImage
)
} else {
it
}
}
redisCacheService.putToCache(cacheKey, updatedList)
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import com.dotori.v2.domain.selfstudy.util.FindSelfStudyCountUtil
import com.dotori.v2.domain.selfstudy.util.SaveSelfStudyUtil
import com.dotori.v2.domain.selfstudy.util.SelfStudyCheckUtil
import com.dotori.v2.domain.selfstudy.util.ValidDayOfWeekAndHourUtil
import com.dotori.v2.global.config.redis.service.RedisCacheService
import com.dotori.v2.global.util.UserUtil
import io.kotest.core.spec.style.BehaviorSpec
import io.kotest.matchers.shouldBe
Expand All @@ -27,15 +26,13 @@ class ApplySelfStudyServiceSynchronicityTest : BehaviorSpec({
val selfStudyCheckUtil = mockk<SelfStudyCheckUtil>()
val saveSelfStudyUtil = mockk<SaveSelfStudyUtil>()
val validDayOfWeekAndHourUtil = mockk<ValidDayOfWeekAndHourUtil>()
val redisCacheService = mockk<RedisCacheService>()

val service = ApplySelfStudyServiceImpl(
userUtil,
findSelfStudyCountUtil,
selfStudyCheckUtil,
saveSelfStudyUtil,
validDayOfWeekAndHourUtil,
redisCacheService
validDayOfWeekAndHourUtil
)

given("유저가 주어지고") {
Expand All @@ -59,8 +56,7 @@ class ApplySelfStudyServiceSynchronicityTest : BehaviorSpec({
findSelfStudyCountUtil,
selfStudyCount,
selfStudyCheckUtil,
saveSelfStudyUtil,
redisCacheService
saveSelfStudyUtil
)

`when`("서비스를 실행하면") {
Expand Down Expand Up @@ -98,13 +94,11 @@ private fun init(
findSelfStudyCountUtil: FindSelfStudyCountUtil,
selfStudyCount: SelfStudyCount,
selfStudyCheckUtil: SelfStudyCheckUtil,
saveSelfStudyUtil: SaveSelfStudyUtil,
redisCacheService: RedisCacheService
saveSelfStudyUtil: SaveSelfStudyUtil
) {
every { validDayOfWeekAndHourUtil.validateApply() } returns Unit
every { userUtil.fetchCurrentUser() } returns testMember
every { findSelfStudyCountUtil.findSelfStudyCount() } returns selfStudyCount
every { selfStudyCheckUtil.isSelfStudyStatusCan(testMember) } returns Unit
every { saveSelfStudyUtil.save(testMember) } returns Unit
every { redisCacheService.updateCacheFromSelfStudy(any(), any()) } returns Unit
}
Loading

0 comments on commit 9889c6f

Please sign in to comment.