feat: MessageController 新增 listByConversation、versions、deleteVersion

This commit is contained in:
2026-06-28 18:09:07 +08:00
parent a66a78a0f3
commit 8537c27015
@@ -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<List<MessageResponse>> listByConversation(
@Parameter(description = "会话 ID") @RequestParam String conversationId,
@RequestParam(required = false, defaultValue = "false") Boolean includeVersions) {
List<MessageResponse> messages = scriptMessageService.listByConversation(conversationId, includeVersions);
return Result.success(messages);
}
@Operation(summary = "获取消息版本链", description = "获取指定剧本消息的所有历史版本。")
@GetMapping(value = "/versions")
public Result<List<MessageResponse>> getVersions(
@Parameter(description = "消息 ID") @RequestParam String messageId) {
List<MessageResponse> versions = scriptMessageService.getVersions(messageId);
return Result.success(versions);
}
/**
* 更新消息
*/
@@ -102,10 +124,10 @@ public class MessageController {
/**
* 删除消息
*/
@Operation(summary = "删除消息", description = "删除指定的消息记录")
@DeleteMapping(value = "/delete")
public Result<Void> delete(@Parameter(description = "消息 ID") @RequestParam String id) {
boolean deleted = messageService.deleteMessage(id);
@Operation(summary = "删除版本消息", description = "删除指定的剧本版本消息,不能删除当前生效版本")
@DeleteMapping(value = "/version")
public Result<Void> deleteVersion(@Parameter(description = "消息 ID") @RequestParam String id) {
boolean deleted = scriptMessageService.deleteVersion(id);
if (!deleted) {
return Result.error("删除失败");
}