본문 바로가기

카테고리 없음

24.03.14 seller과 socialuser 구분 등 코드 정리

오늘은 내가 맡은 과제는 다 완료했다고 생각한다. 병합도 거의 다 한거같고, 부족한 코드도 다듬었고, 마무리도 얼추 끝났다고 생각했었다. 페이징도 검색도 해본적없는걸 해보느라 많은것을 배웠다고도 생각한다.

 

물론 심화도 있고, 중간 발표도 남았고, 프론트도 해결해야 하긴 하지만, 그건 중간 발표를 끝내고 하기로 했다보니 지금이 그나마 프로젝트를 시작한 뒤 가장 여유로울 때라고 생각한다. 처음 시작할때는 구현해야 하는것도 많고 페이징도, 검색도 만들어본적이 없어서 걱정이 많이 됬는데, 그래도 어떻게든 여기까지 왔다고... 생각했는데 뒤져보니까 수정할게 계속 나온다.

 

오늘 한 다듬기 작업은 userid를 socialuserid로 바꾸는거랑 Operation, Parameter로 설명을 추가하기, 틀린 작업을 했을때 에러 메시지를 보여주기, 상품에서 sellerid를 빼고 토큰으로 처리햇듯이 like도 parameter로 userid를 받던걸 지우고 UserPrincipal로 소셜유저로 로그인 한 사람만이 할수 있도록 바꿔주고, seller이나 socialuser나 토큰으로 로그인 하는건 같기 때문에

val seller = sellerRepository.findByIdOrNull(socialUserId)
if (seller != null) {
    throw ModelNotFoundException("SocialUser", socialUserId)
}

이걸 서비스임플에 넣어서 셀러가 좋아요를 누르지 못하게 막았다.

전체적으론 이런 모습이다.

@Transactional
override fun addLikeToReview(
    reviewId: Long,
    socialUserId: Long,
) {
    val seller = sellerRepository.findByIdOrNull(socialUserId)
    if (seller != null) {
        throw ModelNotFoundException("SocialUser", socialUserId)
    }

    val review =
        reviewRepository.findById(reviewId)
            .orElseThrow { throw ModelNotFoundException("Review", reviewId) }

    if (review.deletedAt != null) {
        throw Exception("없는 리뷰입니다")
    }

    val user =
        socialUserRepository.findById(socialUserId)
            .orElseThrow { throw ModelNotFoundException("User", socialUserId) }

    val existingLike = likeRepository.findByReviewAndSocialUser(review, user)
    if (existingLike != null) {
        throw IllegalArgumentException("이미 좋아요를 누른 리뷰입니다")
    }

    likeRepository.save(Like(review = review, socialUser = user, status = true))
    review.likes++
    reviewRepository.save(review)
}