diff --git a/server/src/main/java/com/emotion/controller/MessageController.java b/server/src/main/java/com/emotion/controller/MessageController.java index c95c277..e6f11fc 100644 --- a/server/src/main/java/com/emotion/controller/MessageController.java +++ b/server/src/main/java/com/emotion/controller/MessageController.java @@ -8,6 +8,7 @@ import com.emotion.dto.request.MessageSearchRequest; import com.emotion.dto.request.MessageRecentRequest; import com.emotion.dto.response.MessageResponse; import com.emotion.service.MessageService; +import com.emotion.service.ScriptMessageService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -17,6 +18,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** * 消息控制器 @@ -33,6 +35,9 @@ public class MessageController { @Autowired private MessageService messageService; + @Autowired + private ScriptMessageService scriptMessageService; + /** * 创建消息 */ @@ -86,6 +91,23 @@ public class MessageController { return Result.success(pageResult); } + @Operation(summary = "获取会话消息列表", description = "获取指定会话下的完整消息历史。") + @GetMapping(value = "/listByConversation") + public Result> listByConversation( + @Parameter(description = "会话 ID") @RequestParam String conversationId, + @RequestParam(required = false, defaultValue = "false") Boolean includeVersions) { + List messages = scriptMessageService.listByConversation(conversationId, includeVersions); + return Result.success(messages); + } + + @Operation(summary = "获取消息版本链", description = "获取指定剧本消息的所有历史版本。") + @GetMapping(value = "/versions") + public Result> getVersions( + @Parameter(description = "消息 ID") @RequestParam String messageId) { + List versions = scriptMessageService.getVersions(messageId); + return Result.success(versions); + } + /** * 更新消息 */ @@ -102,10 +124,10 @@ public class MessageController { /** * 删除消息 */ - @Operation(summary = "删除消息", description = "删除指定的消息记录。") - @DeleteMapping(value = "/delete") - public Result delete(@Parameter(description = "消息 ID") @RequestParam String id) { - boolean deleted = messageService.deleteMessage(id); + @Operation(summary = "删除版本消息", description = "删除指定的剧本版本消息,不能删除当前生效版本。") + @DeleteMapping(value = "/version") + public Result deleteVersion(@Parameter(description = "消息 ID") @RequestParam String id) { + boolean deleted = scriptMessageService.deleteVersion(id); if (!deleted) { return Result.error("删除失败"); }