회원가입 후 초기 알림설정 기능 추가
This commit is contained in:
parent
53a64d9bd7
commit
ac09de9141
|
@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.member
|
||||||
import kr.co.vividnext.sodalive.common.ApiResponse
|
import kr.co.vividnext.sodalive.common.ApiResponse
|
||||||
import kr.co.vividnext.sodalive.common.SodaException
|
import kr.co.vividnext.sodalive.common.SodaException
|
||||||
import kr.co.vividnext.sodalive.member.login.LoginRequest
|
import kr.co.vividnext.sodalive.member.login.LoginRequest
|
||||||
|
import kr.co.vividnext.sodalive.member.notification.UpdateNotificationSettingRequest
|
||||||
import org.springframework.security.core.annotation.AuthenticationPrincipal
|
import org.springframework.security.core.annotation.AuthenticationPrincipal
|
||||||
import org.springframework.web.bind.annotation.GetMapping
|
import org.springframework.web.bind.annotation.GetMapping
|
||||||
import org.springframework.web.bind.annotation.PostMapping
|
import org.springframework.web.bind.annotation.PostMapping
|
||||||
|
@ -34,4 +35,14 @@ class MemberController(private val service: MemberService) {
|
||||||
|
|
||||||
ApiResponse.ok(service.getMemberInfo(member, container ?: "web"))
|
ApiResponse.ok(service.getMemberInfo(member, container ?: "web"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/notification")
|
||||||
|
fun updateNotificationSettings(
|
||||||
|
@RequestBody request: UpdateNotificationSettingRequest,
|
||||||
|
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
||||||
|
) = run {
|
||||||
|
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||||
|
|
||||||
|
ApiResponse.ok(service.updateNotificationSettings(request, member))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,8 @@ import kr.co.vividnext.sodalive.jwt.TokenProvider
|
||||||
import kr.co.vividnext.sodalive.member.info.GetMemberInfoResponse
|
import kr.co.vividnext.sodalive.member.info.GetMemberInfoResponse
|
||||||
import kr.co.vividnext.sodalive.member.login.LoginRequest
|
import kr.co.vividnext.sodalive.member.login.LoginRequest
|
||||||
import kr.co.vividnext.sodalive.member.login.LoginResponse
|
import kr.co.vividnext.sodalive.member.login.LoginResponse
|
||||||
|
import kr.co.vividnext.sodalive.member.notification.MemberNotificationService
|
||||||
|
import kr.co.vividnext.sodalive.member.notification.UpdateNotificationSettingRequest
|
||||||
import kr.co.vividnext.sodalive.member.signUp.SignUpRequest
|
import kr.co.vividnext.sodalive.member.signUp.SignUpRequest
|
||||||
import kr.co.vividnext.sodalive.member.stipulation.Stipulation
|
import kr.co.vividnext.sodalive.member.stipulation.Stipulation
|
||||||
import kr.co.vividnext.sodalive.member.stipulation.StipulationAgree
|
import kr.co.vividnext.sodalive.member.stipulation.StipulationAgree
|
||||||
|
@ -36,6 +38,8 @@ class MemberService(
|
||||||
private val stipulationRepository: StipulationRepository,
|
private val stipulationRepository: StipulationRepository,
|
||||||
private val stipulationAgreeRepository: StipulationAgreeRepository,
|
private val stipulationAgreeRepository: StipulationAgreeRepository,
|
||||||
|
|
||||||
|
private val memberNotificationService: MemberNotificationService,
|
||||||
|
|
||||||
private val s3Uploader: S3Uploader,
|
private val s3Uploader: S3Uploader,
|
||||||
private val validator: SignUpValidator,
|
private val validator: SignUpValidator,
|
||||||
private val tokenProvider: TokenProvider,
|
private val tokenProvider: TokenProvider,
|
||||||
|
@ -92,6 +96,16 @@ class MemberService(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
fun updateNotificationSettings(request: UpdateNotificationSettingRequest, member: Member) {
|
||||||
|
memberNotificationService.updateNotification(
|
||||||
|
live = request.live,
|
||||||
|
uploadContent = request.uploadContent,
|
||||||
|
message = request.message,
|
||||||
|
member = member
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
private fun login(
|
private fun login(
|
||||||
email: String,
|
email: String,
|
||||||
password: String,
|
password: String,
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
package kr.co.vividnext.sodalive.member.notification
|
||||||
|
|
||||||
|
import com.querydsl.jpa.impl.JPAQueryFactory
|
||||||
|
import kr.co.vividnext.sodalive.member.notification.QMemberNotification.memberNotification
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
|
import org.springframework.stereotype.Repository
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
interface MemberNotificationRepository : JpaRepository<MemberNotification, Long>, MemberNotificationQueryRepository
|
||||||
|
|
||||||
|
interface MemberNotificationQueryRepository {
|
||||||
|
fun getMemberNotification(memberId: Long): MemberNotification?
|
||||||
|
}
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
class MemberNotificationQueryRepositoryImpl(
|
||||||
|
private val queryFactory: JPAQueryFactory
|
||||||
|
) : MemberNotificationQueryRepository {
|
||||||
|
override fun getMemberNotification(memberId: Long): MemberNotification? {
|
||||||
|
return queryFactory
|
||||||
|
.selectFrom(memberNotification)
|
||||||
|
.where(memberNotification.member.id.eq(memberId))
|
||||||
|
.fetchFirst()
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package kr.co.vividnext.sodalive.member.notification
|
||||||
|
|
||||||
|
import kr.co.vividnext.sodalive.member.Member
|
||||||
|
import org.springframework.stereotype.Service
|
||||||
|
import org.springframework.transaction.annotation.Transactional
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Transactional(readOnly = true)
|
||||||
|
class MemberNotificationService(private val repository: MemberNotificationRepository) {
|
||||||
|
fun updateNotification(
|
||||||
|
live: Boolean? = null,
|
||||||
|
uploadContent: Boolean? = null,
|
||||||
|
message: Boolean? = null,
|
||||||
|
member: Member
|
||||||
|
) {
|
||||||
|
var notification = repository.getMemberNotification(memberId = member.id!!)
|
||||||
|
if (notification == null) {
|
||||||
|
notification = MemberNotification(uploadContent, live, message)
|
||||||
|
notification.member = member
|
||||||
|
repository.save(notification)
|
||||||
|
} else {
|
||||||
|
if (live != null) notification.live = live
|
||||||
|
if (message != null) notification.message = message
|
||||||
|
if (uploadContent != null) notification.uploadContent = uploadContent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package kr.co.vividnext.sodalive.member.notification
|
||||||
|
|
||||||
|
data class UpdateNotificationSettingRequest(
|
||||||
|
val live: Boolean?,
|
||||||
|
val message: Boolean?,
|
||||||
|
val uploadContent: Boolean?
|
||||||
|
)
|
Loading…
Reference in New Issue