From 3b9a8222de0a3f2b1d7ab2fdd136564d5da45c0a Mon Sep 17 00:00:00 2001 From: Peanut Date: Sun, 28 Jun 2026 18:09:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20ScriptChatControll?= =?UTF-8?q?er=20=E7=BB=9F=E4=B8=80=E6=B5=81=E5=BC=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../emotion/controller/MessageController.java | 12 +++++++- .../controller/ScriptChatController.java | 30 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 server/src/main/java/com/emotion/controller/ScriptChatController.java diff --git a/server/src/main/java/com/emotion/controller/MessageController.java b/server/src/main/java/com/emotion/controller/MessageController.java index e6f11fc..e96bfa9 100644 --- a/server/src/main/java/com/emotion/controller/MessageController.java +++ b/server/src/main/java/com/emotion/controller/MessageController.java @@ -124,8 +124,18 @@ public class MessageController { /** * 删除消息 */ + @Operation(summary = "删除消息", description = "删除指定的消息。") + @DeleteMapping(value = "/delete") + public Result delete(@Parameter(description = "消息 ID") @RequestParam String id) { + boolean deleted = messageService.deleteMessage(id); + if (!deleted) { + return Result.error("删除失败"); + } + return Result.success(); + } + @Operation(summary = "删除版本消息", description = "删除指定的剧本版本消息,不能删除当前生效版本。") - @DeleteMapping(value = "/version") + @DeleteMapping(value = "/deleteVersion") public Result deleteVersion(@Parameter(description = "消息 ID") @RequestParam String id) { boolean deleted = scriptMessageService.deleteVersion(id); if (!deleted) { diff --git a/server/src/main/java/com/emotion/controller/ScriptChatController.java b/server/src/main/java/com/emotion/controller/ScriptChatController.java new file mode 100644 index 0000000..897646a --- /dev/null +++ b/server/src/main/java/com/emotion/controller/ScriptChatController.java @@ -0,0 +1,30 @@ +package com.emotion.controller; + +import com.emotion.dto.request.ScriptChatStreamRequest; +import com.emotion.service.ScriptChatService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; + +import javax.validation.Valid; + +/** + * 剧本对话流式控制器 + */ +@RestController +@RequestMapping("/chat") +@Tag(name = "剧本对话", description = "剧本改写、续写、聊天的统一流式接口") +public class ScriptChatController { + + @Autowired + private ScriptChatService scriptChatService; + + @Operation(summary = "流式对话", description = "统一的剧本改写/续写/聊天流式接口。") + @PostMapping(value = "/stream", produces = "text/event-stream") + public SseEmitter stream(@Valid @RequestBody ScriptChatStreamRequest request) { + return scriptChatService.streamChat(request); + } +}