From a2998002e5c242292ce7812d291be5a26b0fb870 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 25 Nov 2025 16:10:20 +0900 Subject: [PATCH] =?UTF-8?q?feat(character-comment):=20=EC=BA=90=EB=A6=AD?= =?UTF-8?q?=ED=84=B0=20=EB=8C=93=EA=B8=80=20=EB=93=B1=EB=A1=9D=20=EC=8B=9C?= =?UTF-8?q?=20=EC=96=B8=EC=96=B4=20=EC=BD=94=EB=93=9C=EB=A5=BC=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=20=EB=B0=9B=EC=9D=84=20=EC=88=98=20=EC=9E=88=EB=8A=94?= =?UTF-8?q?=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chat/character/comment/CharacterComment.kt | 1 + .../comment/CharacterCommentController.kt | 2 +- .../chat/character/comment/CharacterCommentDto.kt | 3 ++- .../character/comment/CharacterCommentService.kt | 14 ++++++++++---- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterComment.kt b/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterComment.kt index 62f1cb9..f2d9f87 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterComment.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterComment.kt @@ -16,6 +16,7 @@ import javax.persistence.Table data class CharacterComment( @Column(columnDefinition = "TEXT", nullable = false) var comment: String, + var languageCode: String?, var isActive: Boolean = true ) : BaseEntity() { @ManyToOne(fetch = FetchType.LAZY) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterCommentController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterCommentController.kt index 8036169..e9fcc64 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterCommentController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterCommentController.kt @@ -47,7 +47,7 @@ class CharacterCommentController( if (member.auth == null) throw SodaException("본인인증을 하셔야 합니다.") if (request.comment.isBlank()) throw SodaException("댓글 내용을 입력해주세요.") - val id = service.addReply(characterId, commentId, member, request.comment) + val id = service.addReply(characterId, commentId, member, request.comment, request.languageCode) ApiResponse.ok(id) } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterCommentDto.kt b/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterCommentDto.kt index d35f2cb..2c898e6 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterCommentDto.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterCommentDto.kt @@ -2,7 +2,8 @@ package kr.co.vividnext.sodalive.chat.character.comment // Request DTOs data class CreateCharacterCommentRequest( - val comment: String + val comment: String, + val languageCode: String? = null ) // Response DTOs diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterCommentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterCommentService.kt index 25d186a..012aa7a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterCommentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/comment/CharacterCommentService.kt @@ -57,12 +57,12 @@ class CharacterCommentService( } @Transactional - fun addComment(characterId: Long, member: Member, text: String): Long { + fun addComment(characterId: Long, member: Member, text: String, languageCode: String? = null): Long { val character = chatCharacterRepository.findById(characterId).orElseThrow { SodaException("캐릭터를 찾을 수 없습니다.") } if (!character.isActive) throw SodaException("비활성화된 캐릭터입니다.") if (text.isBlank()) throw SodaException("댓글 내용을 입력해주세요.") - val entity = CharacterComment(comment = text) + val entity = CharacterComment(comment = text, languageCode = languageCode) entity.chatCharacter = character entity.member = member commentRepository.save(entity) @@ -70,7 +70,13 @@ class CharacterCommentService( } @Transactional - fun addReply(characterId: Long, parentCommentId: Long, member: Member, text: String): Long { + fun addReply( + characterId: Long, + parentCommentId: Long, + member: Member, + text: String, + languageCode: String? = null + ): Long { val character = chatCharacterRepository.findById(characterId).orElseThrow { SodaException("캐릭터를 찾을 수 없습니다.") } if (!character.isActive) throw SodaException("비활성화된 캐릭터입니다.") val parent = commentRepository.findById(parentCommentId).orElseThrow { SodaException("댓글을 찾을 수 없습니다.") } @@ -78,7 +84,7 @@ class CharacterCommentService( if (!parent.isActive) throw SodaException("비활성화된 댓글입니다.") if (text.isBlank()) throw SodaException("댓글 내용을 입력해주세요.") - val entity = CharacterComment(comment = text) + val entity = CharacterComment(comment = text, languageCode = languageCode) entity.chatCharacter = character entity.member = member entity.parent = parent