diff --git a/src/main/java/com/yolo/keyborad/controller/ChatController.java b/src/main/java/com/yolo/keyborad/controller/ChatController.java index 1825196..764ee77 100644 --- a/src/main/java/com/yolo/keyborad/controller/ChatController.java +++ b/src/main/java/com/yolo/keyborad/controller/ChatController.java @@ -9,6 +9,7 @@ import com.yolo.keyborad.common.ErrorCode; import com.yolo.keyborad.common.ResultUtils; import com.yolo.keyborad.exception.BusinessException; import com.yolo.keyborad.mapper.QdrantPayloadMapper; +import com.yolo.keyborad.model.dto.chat.ChatHistoryDeleteReq; import com.yolo.keyborad.model.dto.chat.ChatHistoryPageReq; import com.yolo.keyborad.model.dto.chat.ChatMessageReq; import com.yolo.keyborad.model.dto.chat.ChatReq; @@ -19,7 +20,6 @@ import com.yolo.keyborad.model.vo.AudioTaskVO; import com.yolo.keyborad.model.vo.ChatMessageHistoryVO; import com.yolo.keyborad.model.vo.ChatMessageVO; import com.yolo.keyborad.model.vo.ChatSessionVO; -import com.yolo.keyborad.model.vo.ChatVoiceVO; import com.yolo.keyborad.service.ChatService; import com.yolo.keyborad.service.KeyboardAiChatMessageService; import com.yolo.keyborad.service.KeyboardAiChatSessionService; @@ -138,6 +138,18 @@ public class ChatController { return ResultUtils.success(result); } + @PostMapping("/history/delete") + @Operation(summary = "删除聊天记录", description = "根据聊天记录ID逻辑删除聊天消息") + public BaseResponse deleteHistory(@RequestBody ChatHistoryDeleteReq req) { + if (req == null || req.getId() == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "聊天记录ID不能为空"); + } + + Long userId = StpUtil.getLoginIdAsLong(); + aiChatMessageService.deleteMessageById(userId, req.getId()); + return ResultUtils.success(true); + } + @PostMapping("/session/reset") @Operation(summary = "重置会话", description = "重置与AI角色的聊天会话,将当前会话设为不活跃并创建新会话,后续聊天记录将绑定到新会话") public BaseResponse resetSession(@RequestBody SessionResetReq req) { diff --git a/src/main/java/com/yolo/keyborad/model/dto/chat/ChatHistoryDeleteReq.java b/src/main/java/com/yolo/keyborad/model/dto/chat/ChatHistoryDeleteReq.java new file mode 100644 index 0000000..95cde67 --- /dev/null +++ b/src/main/java/com/yolo/keyborad/model/dto/chat/ChatHistoryDeleteReq.java @@ -0,0 +1,17 @@ +package com.yolo.keyborad.model.dto.chat; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/* + * @author: ziin + * @date: 2026/2/4 + */ +@Data +@Schema(description = "删除聊天记录请求") +public class ChatHistoryDeleteReq { + + @Schema(description = "聊天记录ID", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; +} + diff --git a/src/main/java/com/yolo/keyborad/model/entity/KeyboardAiChatMessage.java b/src/main/java/com/yolo/keyborad/model/entity/KeyboardAiChatMessage.java index 960b8bd..a720451 100644 --- a/src/main/java/com/yolo/keyborad/model/entity/KeyboardAiChatMessage.java +++ b/src/main/java/com/yolo/keyborad/model/entity/KeyboardAiChatMessage.java @@ -79,4 +79,8 @@ public class KeyboardAiChatMessage { @TableField(value = "session_id") @Schema(description = "会话Id") private Long sessionId; + + @TableField(value = "deleted") + @Schema(description = "是否删除") + private Boolean deleted; } \ No newline at end of file diff --git a/src/main/java/com/yolo/keyborad/service/KeyboardAiChatMessageService.java b/src/main/java/com/yolo/keyborad/service/KeyboardAiChatMessageService.java index 0f818ae..2cd1ecc 100644 --- a/src/main/java/com/yolo/keyborad/service/KeyboardAiChatMessageService.java +++ b/src/main/java/com/yolo/keyborad/service/KeyboardAiChatMessageService.java @@ -41,4 +41,12 @@ public interface KeyboardAiChatMessageService extends IService getChattedCompanionIds(Long userId); + + /** + * 根据聊天记录ID逻辑删除消息 + * + * @param userId 当前用户ID + * @param messageId 聊天记录ID + */ + void deleteMessageById(Long userId, Long messageId); } diff --git a/src/main/java/com/yolo/keyborad/service/impl/KeyboardAiChatMessageServiceImpl.java b/src/main/java/com/yolo/keyborad/service/impl/KeyboardAiChatMessageServiceImpl.java index d4dc22e..6773a9a 100644 --- a/src/main/java/com/yolo/keyborad/service/impl/KeyboardAiChatMessageServiceImpl.java +++ b/src/main/java/com/yolo/keyborad/service/impl/KeyboardAiChatMessageServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yolo.keyborad.mapper.KeyboardAiChatMessageMapper; +import com.yolo.keyborad.common.ErrorCode; +import com.yolo.keyborad.exception.BusinessException; import com.yolo.keyborad.model.entity.KeyboardAiChatMessage; import com.yolo.keyborad.model.entity.KeyboardAiChatSession; import com.yolo.keyborad.model.vo.ChatMessageHistoryVO; @@ -46,6 +48,7 @@ public class KeyboardAiChatMessageServiceImpl extends ServiceImpl entityPage = this.page(page, queryWrapper); @@ -110,4 +113,23 @@ public class KeyboardAiChatMessageServiceImpl extends ServiceImpl