유저 푸시토큰 업데이트 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.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
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.PutMapping
 | 
				
			||||||
import org.springframework.web.bind.annotation.RequestBody
 | 
					import org.springframework.web.bind.annotation.RequestBody
 | 
				
			||||||
import org.springframework.web.bind.annotation.RequestMapping
 | 
					import org.springframework.web.bind.annotation.RequestMapping
 | 
				
			||||||
import org.springframework.web.bind.annotation.RequestParam
 | 
					import org.springframework.web.bind.annotation.RequestParam
 | 
				
			||||||
@@ -45,4 +46,20 @@ class MemberController(private val service: MemberService) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        ApiResponse.ok(service.updateNotificationSettings(request, member))
 | 
					        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
 | 
					package kr.co.vividnext.sodalive.member
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.querydsl.jpa.impl.JPAQueryFactory
 | 
					import com.querydsl.jpa.impl.JPAQueryFactory
 | 
				
			||||||
 | 
					import kr.co.vividnext.sodalive.member.QMember.member
 | 
				
			||||||
import org.springframework.data.jpa.repository.JpaRepository
 | 
					import org.springframework.data.jpa.repository.JpaRepository
 | 
				
			||||||
import org.springframework.stereotype.Repository
 | 
					import org.springframework.stereotype.Repository
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -10,7 +11,16 @@ interface MemberRepository : JpaRepository<Member, Long>, MemberQueryRepository
 | 
				
			|||||||
    fun findByNickname(nickname: String): Member?
 | 
					    fun findByNickname(nickname: String): Member?
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface MemberQueryRepository
 | 
					interface MemberQueryRepository {
 | 
				
			||||||
 | 
					    fun findByPushToken(pushToken: String): List<Member>
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Repository
 | 
					@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(
 | 
					    private fun login(
 | 
				
			||||||
        email: String,
 | 
					        email: String,
 | 
				
			||||||
        password: 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