package com.emotion.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.emotion.common.PageResult; import com.emotion.dto.request.ConversationCreateRequest; import com.emotion.dto.request.ConversationPageRequest; import com.emotion.dto.response.ConversationResponse; import com.emotion.entity.Conversation; import javax.servlet.http.HttpServletRequest; import java.time.LocalDateTime; import java.util.List; /** * 会话服务接口 * * @author emotion-museum * @date 2025-07-23 */ public interface ConversationService extends IService { /** * 分页查询会话 */ IPage getPage(ConversationPageRequest request); /** * 根据用户ID分页查询会话 */ IPage getPageByUserId(ConversationPageRequest request); /** * 根据用户ID查询会话列表 */ List getByUserId(String userId); /** * 根据用户ID查询活跃会话列表 */ List getActiveByUserId(String userId); /** * 根据Coze会话ID查询会话 */ Conversation getByCozeConversationId(String cozeConversationId); /** * 更新会话消息数量 */ boolean updateMessageCount(String conversationId, Integer messageCount); /** * 更新会话状态 */ boolean updateStatus(String conversationId, Integer status); /** * 更新会话结束时间 */ boolean updateEndTime(String conversationId, LocalDateTime endTime); /** * 统计用户的会话数量 */ Long countByUserId(String userId); /** * 统计用户的活跃会话数量 */ Long countActiveByUserId(String userId); /** * 查询需要归档的会话(超过指定天数未活跃) */ List getForArchive(Integer days); /** * 批量归档会话 */ boolean batchArchive(List conversationIds); /** * 创建会话 */ Conversation createConversation(String userId, String title, String cozeConversationId); /** * 结束会话 */ boolean endConversation(String conversationId); /** * 分页查询会话响应 */ PageResult getPageWithResponse(ConversationPageRequest request); /** * 根据用户ID分页查询会话响应 */ PageResult getPageByUserIdWithResponse(ConversationPageRequest request); /** * 根据ID获取会话响应 */ ConversationResponse getConversationResponseById(String id); /** * 根据用户ID查询会话响应列表 */ List getByUserIdWithResponse(String userId); /** * 获取活跃会话响应列表 */ List getActiveConversationsWithResponse(); /** * 获取归档会话响应列表 */ List getArchivedConversationsWithResponse(); /** * 归档对话 */ boolean archiveConversation(String id); /** * 激活对话 */ boolean activateConversation(String id); /** * 创建会话并返回响应对象 */ ConversationResponse createConversationWithResponse(ConversationCreateRequest request, HttpServletRequest httpRequest); /** * 更新会话并返回响应对象 */ ConversationResponse updateConversationWithResponse(ConversationCreateRequest request); /** * 更新会话状态 */ boolean updateConversationStatus(String id, String status); }