유저 푸시토큰 업데이트 API 추가
This commit is contained in:
		@@ -7,6 +7,7 @@ import kr.co.vividnext.sodalive.member.notification.UpdateNotificationSettingReq
 | 
			
		||||
import org.springframework.security.core.annotation.AuthenticationPrincipal
 | 
			
		||||
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
 | 
			
		||||
import org.springframework.web.bind.annotation.RequestParam
 | 
			
		||||
@@ -45,4 +46,20 @@ class MemberController(private val service: MemberService) {
 | 
			
		||||
 | 
			
		||||
        ApiResponse.ok(service.updateNotificationSettings(request, member))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/push-token/update")
 | 
			
		||||
    fun updatePushToken(
 | 
			
		||||
        @RequestBody pushTokenUpdateRequest: PushTokenUpdateRequest,
 | 
			
		||||
        @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
 | 
			
		||||
    ) {
 | 
			
		||||
        if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
 | 
			
		||||
 | 
			
		||||
        ApiResponse.ok(
 | 
			
		||||
            service.updatePushToken(
 | 
			
		||||
                memberId = member.id!!,
 | 
			
		||||
                pushToken = pushTokenUpdateRequest.pushToken,
 | 
			
		||||
                container = pushTokenUpdateRequest.container
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
package kr.co.vividnext.sodalive.member
 | 
			
		||||
 | 
			
		||||
import com.querydsl.jpa.impl.JPAQueryFactory
 | 
			
		||||
import kr.co.vividnext.sodalive.member.QMember.member
 | 
			
		||||
import org.springframework.data.jpa.repository.JpaRepository
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
 | 
			
		||||
@@ -10,7 +11,16 @@ interface MemberRepository : JpaRepository<Member, Long>, MemberQueryRepository
 | 
			
		||||
    fun findByNickname(nickname: String): Member?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface MemberQueryRepository
 | 
			
		||||
interface MemberQueryRepository {
 | 
			
		||||
    fun findByPushToken(pushToken: String): List<Member>
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Repository
 | 
			
		||||
class MemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : MemberQueryRepository
 | 
			
		||||
class MemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : MemberQueryRepository {
 | 
			
		||||
    override fun findByPushToken(pushToken: String): List<Member> {
 | 
			
		||||
        return queryFactory
 | 
			
		||||
            .selectFrom(member)
 | 
			
		||||
            .where(member.pushToken.eq(pushToken))
 | 
			
		||||
            .fetch()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -107,6 +107,20 @@ class MemberService(
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Transactional
 | 
			
		||||
    fun updatePushToken(memberId: Long, pushToken: String, container: String) {
 | 
			
		||||
        val existsHavePushTokenMemberList = repository.findByPushToken(pushToken = pushToken)
 | 
			
		||||
        for (existsHavePushTokenMember in existsHavePushTokenMemberList) {
 | 
			
		||||
            existsHavePushTokenMember.pushToken = null
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        val member = repository.findByIdOrNull(id = memberId)
 | 
			
		||||
            ?: throw SodaException("로그인 정보를 확인해주세요.")
 | 
			
		||||
 | 
			
		||||
        member.pushToken = pushToken
 | 
			
		||||
        member.container = container
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun login(
 | 
			
		||||
        email: String,
 | 
			
		||||
        password: String,
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,3 @@
 | 
			
		||||
package kr.co.vividnext.sodalive.member
 | 
			
		||||
 | 
			
		||||
data class PushTokenUpdateRequest(val pushToken: String, val container: String)
 | 
			
		||||
		Reference in New Issue
	
	Block a user