캐릭터 챗봇 #338
| @@ -25,8 +25,14 @@ interface CharacterCommentRepository : JpaRepository<CharacterComment, Long> { | |||||||
|         pageable: Pageable |         pageable: Pageable | ||||||
|     ): List<CharacterComment> |     ): List<CharacterComment> | ||||||
|  |  | ||||||
|     fun findFirstByChatCharacter_IdAndIsActiveTrueOrderByCreatedAtDesc(chatCharacterId: Long): CharacterComment? |     // 최신 원댓글만 조회 | ||||||
|  |     fun findFirstByChatCharacter_IdAndIsActiveTrueAndParentIsNullOrderByCreatedAtDesc( | ||||||
|  |         chatCharacterId: Long | ||||||
|  |     ): CharacterComment? | ||||||
|  |  | ||||||
|     // 전체(상위+답글) 활성 댓글 총 개수 |     // 활성 원댓글 수 | ||||||
|     fun countByChatCharacter_IdAndIsActiveTrue(chatCharacterId: Long): Int |     fun countByChatCharacter_IdAndIsActiveTrueAndParentIsNull(chatCharacterId: Long): Int | ||||||
|  |  | ||||||
|  |     // 활성 부모를 가진 활성 답글 수 (부모가 null인 경우 제외됨) | ||||||
|  |     fun countByChatCharacter_IdAndIsActiveTrueAndParent_IsActiveTrue(chatCharacterId: Long): Int | ||||||
| } | } | ||||||
|   | |||||||
| @@ -153,13 +153,20 @@ class CharacterCommentService( | |||||||
|  |  | ||||||
|     @Transactional(readOnly = true) |     @Transactional(readOnly = true) | ||||||
|     fun getLatestComment(imageHost: String, characterId: Long): CharacterCommentResponse? { |     fun getLatestComment(imageHost: String, characterId: Long): CharacterCommentResponse? { | ||||||
|         val last = commentRepository.findFirstByChatCharacter_IdAndIsActiveTrueOrderByCreatedAtDesc(characterId) |         return commentRepository | ||||||
|         return last?.let { toCommentResponse(imageHost, it) } |             .findFirstByChatCharacter_IdAndIsActiveTrueAndParentIsNullOrderByCreatedAtDesc(characterId) | ||||||
|  |             ?.let { toCommentResponse(imageHost, it) } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Transactional(readOnly = true) |     @Transactional(readOnly = true) | ||||||
|     fun getTotalCommentCount(characterId: Long): Int { |     fun getTotalCommentCount(characterId: Long): Int { | ||||||
|         return commentRepository.countByChatCharacter_IdAndIsActiveTrue(characterId) |         // 활성 원댓글 수 + 활성 부모를 가진 활성 답글 수 | ||||||
|  |         val originalCount = commentRepository | ||||||
|  |             .countByChatCharacter_IdAndIsActiveTrueAndParentIsNull(characterId) | ||||||
|  |         val replyWithActiveParentCount = commentRepository | ||||||
|  |             .countByChatCharacter_IdAndIsActiveTrueAndParent_IsActiveTrue(characterId) | ||||||
|  |  | ||||||
|  |         return originalCount + replyWithActiveParentCount | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Transactional |     @Transactional | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user