유저 푸시토큰 업데이트 API 추가
This commit is contained in:
parent
0580cdd2d6
commit
ee124e258e
|
@ -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)
|
Loading…
Reference in New Issue