接口优化

This commit is contained in:
2025-09-08 17:54:12 +08:00
parent e20030f10d
commit d42d689bd7
84 changed files with 6403 additions and 4310 deletions
@@ -22,4 +22,4 @@ public class ChatStatsRequest extends BaseRequest {
* 会话ID
*/
private String conversationId;
}
}
@@ -15,6 +15,11 @@ import javax.validation.constraints.NotBlank;
@EqualsAndHashCode(callSuper = true)
public class ConversationCreateRequest extends BaseRequest {
/**
* 对话ID(更新时使用)
*/
private String id;
/**
* 用户ID
*/
@@ -0,0 +1,30 @@
package com.emotion.dto.request;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 对话分页请求类
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class ConversationPageRequest extends PageRequest {
/**
* 用户ID(可选)
*/
private String userId;
/**
* 对话状态(可选)
*/
private String status;
/**
* 对话类型(可选)
*/
private String type;
}
@@ -4,7 +4,6 @@ import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
/**
@@ -16,6 +15,11 @@ import java.util.List;
@Data
public class DiaryCommentCreateRequest {
/**
* 评论ID (用于更新操作)
*/
private String id;
/**
* 日记ID
*/
@@ -49,4 +53,4 @@ public class DiaryCommentCreateRequest {
*/
@NotNull(message = "是否匿名不能为空")
private Integer isAnonymous;
}
}
@@ -0,0 +1,38 @@
package com.emotion.dto.request;
import com.emotion.common.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.Pattern;
/**
* 日记评论分页请求类
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class DiaryCommentPageRequest extends BasePageRequest {
/**
* 日记ID(可选)
*/
private String diaryId;
/**
* 用户ID(可选)
*/
private String userId;
/**
* 评论类型(可选)
*/
private String commentType;
/**
* 是否只查询顶级评论(可选)
*/
private Boolean topLevelOnly;
}
@@ -0,0 +1,41 @@
package com.emotion.dto.request;
import com.emotion.common.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 日记分页请求类
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class DiaryPostPageRequest extends BasePageRequest {
/**
* 用户ID(可选)
*/
private String userId;
/**
* 是否只查询公开日记(可选)
*/
private Boolean publicOnly;
/**
* 是否只查询精选日记(可选)
*/
private Boolean featuredOnly;
/**
* 心情状态(可选)
*/
private String mood;
/**
* 标签(可选)
*/
private String tag;
}
@@ -2,6 +2,7 @@ package com.emotion.dto.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.math.BigDecimal;
import java.util.List;
@@ -15,6 +16,12 @@ import java.util.List;
@Data
public class DiaryPostUpdateRequest {
/**
* 日记ID
*/
@NotBlank(message = "日记ID不能为空")
private String id;
/**
* 日记标题
*/
@@ -88,4 +95,4 @@ public class DiaryPostUpdateRequest {
* 状态: draft-草稿, published-已发布, hidden-隐藏, deleted-已删除
*/
private String status;
}
}
@@ -0,0 +1,51 @@
package com.emotion.dto.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 情绪分析创建请求类
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class EmotionAnalysisCreateRequest {
/**
* 消息ID
*/
@NotBlank(message = "消息ID不能为空")
private String messageId;
/**
* 用户ID
*/
@NotBlank(message = "用户ID不能为空")
private String userId;
/**
* 主要情绪
*/
@NotBlank(message = "主要情绪不能为空")
private String primaryEmotion;
/**
* 情绪极性
*/
private String polarity;
/**
* 情绪强度
*/
@NotNull(message = "情绪强度不能为空")
private Double intensity;
/**
* 置信度
*/
@NotNull(message = "置信度不能为空")
private Double confidence;
}
@@ -0,0 +1,36 @@
package com.emotion.dto.request;
import com.emotion.common.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 情绪分析分页请求类
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class EmotionAnalysisPageRequest extends BasePageRequest {
/**
* 用户ID(可选)
*/
private String userId;
/**
* 消息ID(可选)
*/
private String messageId;
/**
* 主要情绪(可选)
*/
private String primaryEmotion;
/**
* 情绪极性(可选)
*/
private String polarity;
}
@@ -0,0 +1,51 @@
package com.emotion.dto.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 情绪分析更新请求类
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class EmotionAnalysisUpdateRequest {
/**
* 情绪分析ID
*/
@NotBlank(message = "情绪分析ID不能为空")
private String id;
/**
* 消息ID
*/
private String messageId;
/**
* 用户ID
*/
private String userId;
/**
* 主要情绪
*/
private String primaryEmotion;
/**
* 情绪极性
*/
private String polarity;
/**
* 情绪强度
*/
private Double intensity;
/**
* 置信度
*/
private Double confidence;
}
@@ -0,0 +1,83 @@
package com.emotion.dto.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 情绪记录创建请求类
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class EmotionRecordCreateRequest {
/**
* 用户ID
*/
@NotBlank(message = "用户ID不能为空")
private String userId;
/**
* 记录日期
*/
@NotNull(message = "记录日期不能为空")
private LocalDate recordDate;
/**
* 情绪类型
*/
@NotBlank(message = "情绪类型不能为空")
private String emotionType;
/**
* 情绪强度
*/
@NotNull(message = "情绪强度不能为空")
private BigDecimal intensity;
/**
* 触发因素
*/
private String triggers;
/**
* 描述
*/
private String description;
/**
* 标签
*/
private List<String> tags;
/**
* 天气
*/
private String weather;
/**
* 地点
*/
private String location;
/**
* 活动
*/
private String activity;
/**
* 相关人物
*/
private String people;
/**
* 备注
*/
private String notes;
}
@@ -0,0 +1,31 @@
package com.emotion.dto.request;
import com.emotion.common.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 情绪记录分页请求类
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class EmotionRecordPageRequest extends BasePageRequest {
/**
* 用户ID(可选)
*/
private String userId;
/**
* 情绪类型(可选)
*/
private String emotionType;
/**
* 地点(可选)
*/
private String location;
}
@@ -0,0 +1,79 @@
package com.emotion.dto.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 情绪记录更新请求类
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class EmotionRecordUpdateRequest {
/**
* 情绪记录ID
*/
@NotBlank(message = "情绪记录ID不能为空")
private String id;
/**
* 记录日期
*/
private LocalDate recordDate;
/**
* 情绪类型
*/
private String emotionType;
/**
* 情绪强度
*/
private BigDecimal intensity;
/**
* 触发因素
*/
private String triggers;
/**
* 描述
*/
private String description;
/**
* 标签
*/
private List<String> tags;
/**
* 天气
*/
private String weather;
/**
* 地点
*/
private String location;
/**
* 活动
*/
private String activity;
/**
* 相关人物
*/
private String people;
/**
* 备注
*/
private String notes;
}
@@ -0,0 +1,20 @@
package com.emotion.dto.request;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 访客用户信息请求类
*
* @author emotion-museum
* @date 2025-07-24
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class GuestUserInfoRequest extends BaseRequest {
/**
* 客户端IP
*/
private String clientIp;
}
@@ -0,0 +1,40 @@
package com.emotion.dto.request;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* WebSocket请求对象
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WebSocketRequest extends BaseRequest {
/**
* 消息内容
*/
private String content;
/**
* 发送者ID
*/
private String senderId;
/**
* 发送者类型
*/
private String senderType;
/**
* 消息类型
*/
private String messageType;
/**
* 会话ID(可选)
*/
private String conversationId;
}
@@ -0,0 +1,65 @@
package com.emotion.dto.request.achievement;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* 创建成就请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class AchievementCreateRequest {
/**
* 成就标题
*/
@NotBlank(message = "成就标题不能为空")
private String title;
/**
* 描述
*/
private String description;
/**
* 分类
*/
@NotBlank(message = "分类不能为空")
private String category;
/**
* 图标
*/
private String icon;
/**
* 稀有度
*/
@NotBlank(message = "稀有度不能为空")
private String rarity;
/**
* 条件类型
*/
private String conditionType;
/**
* 条件值
*/
private String conditionValue;
/**
* 奖励
*/
private String rewards;
/**
* 是否隐藏
*/
private Integer isHidden;
}
@@ -0,0 +1,40 @@
package com.emotion.dto.request.achievement;
import com.emotion.common.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* 成就分页查询请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class AchievementPageRequest extends BasePageRequest {
/**
* 成就分类
*/
private String category;
/**
* 成就稀有度
*/
private String rarity;
/**
* 是否已解锁
*/
private Boolean unlocked;
/**
* 是否隐藏
*/
private Boolean hidden;
}
@@ -0,0 +1,28 @@
package com.emotion.dto.request.achievement;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 更新成就进度请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class AchievementProgressUpdateRequest {
/**
* 成就ID
*/
@NotBlank(message = "成就ID不能为空")
private String id;
/**
* 进度值
*/
@NotNull(message = "进度值不能为空")
private Double progress;
}
@@ -0,0 +1,21 @@
package com.emotion.dto.request.achievement;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 解锁成就请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class AchievementUnlockRequest {
/**
* 成就ID
*/
@NotBlank(message = "成就ID不能为空")
private String id;
}
@@ -0,0 +1,68 @@
package com.emotion.dto.request.achievement;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* 更新成就请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class AchievementUpdateRequest {
/**
* 成就ID
*/
@NotBlank(message = "成就ID不能为空")
private String id;
/**
* 成就标题
*/
private String title;
/**
* 描述
*/
private String description;
/**
* 分类
*/
private String category;
/**
* 图标
*/
private String icon;
/**
* 稀有度
*/
private String rarity;
/**
* 条件类型
*/
private String conditionType;
/**
* 条件值
*/
private String conditionValue;
/**
* 奖励
*/
private String rewards;
/**
* 是否隐藏
*/
private Integer isHidden;
}
@@ -0,0 +1,40 @@
package com.emotion.dto.request.comment;
import com.emotion.dto.request.BaseRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
/**
* 评论创建请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CommentCreateRequest extends BaseRequest {
/**
* 帖子ID
*/
@NotBlank(message = "帖子ID不能为空")
private String postId;
/**
* 用户ID
*/
private String userId; // 不再使用@NotBlank注解,因为将从上下文中获取
/**
* 评论内容
*/
@NotBlank(message = "评论内容不能为空")
private String content;
/**
* 回复的评论ID
*/
private String replyToId;
}
@@ -0,0 +1,30 @@
package com.emotion.dto.request.comment;
import com.emotion.dto.request.PageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.Pattern;
/**
* 评论分页请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CommentPageRequest extends PageRequest {
/**
* 帖子ID(可选)
*/
@Pattern(regexp = "^[a-zA-Z0-9_\\-]{1,50}$", message = "帖子ID格式不正确")
private String postId;
/**
* 用户ID(可选)
*/
@Pattern(regexp = "^[a-zA-Z0-9_\\-]{1,50}$", message = "用户ID格式不正确")
private String userId;
}
@@ -0,0 +1,41 @@
package com.emotion.dto.request.comment;
import com.emotion.dto.request.BaseRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 评论查询请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CommentQueryRequest extends BaseRequest {
/**
* 帖子ID
*/
private String postId;
/**
* 用户ID
*/
private String userId;
/**
* 回复的评论ID
*/
private String replyToId;
/**
* 最小点赞数
*/
private Integer minLikes;
/**
* 最大点赞数
*/
private Integer maxLikes;
}
@@ -0,0 +1,30 @@
package com.emotion.dto.request.comment;
import com.emotion.dto.request.BaseRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
/**
* 评论更新请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CommentUpdateRequest extends BaseRequest {
/**
* 评论ID
*/
@NotBlank(message = "评论ID不能为空")
private String id;
/**
* 评论内容
*/
@NotBlank(message = "评论内容不能为空")
private String content;
}
@@ -0,0 +1,56 @@
package com.emotion.dto.request.community;
import com.emotion.dto.request.BaseRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
/**
* 社区帖子创建请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CommunityPostCreateRequest extends BaseRequest {
/**
* 用户ID
*/
@NotBlank(message = "用户ID不能为空")
private String userId;
/**
* 标题
*/
@NotBlank(message = "标题不能为空")
private String title;
/**
* 内容
*/
@NotBlank(message = "内容不能为空")
private String content;
/**
* 帖子类型
*/
private String type;
/**
* 地点ID
*/
private String locationId;
/**
* 标签
*/
private String tags;
/**
* 是否私密
*/
private Integer isPrivate;
}
@@ -0,0 +1,41 @@
package com.emotion.dto.request.community;
import com.emotion.dto.request.PageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.Pattern;
/**
* 社区帖子分页请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CommunityPostPageRequest extends PageRequest {
/**
* 用户ID(可选)
*/
@Pattern(regexp = "^[a-zA-Z0-9_\\-]{1,50}$", message = "用户ID格式不正确")
private String userId;
/**
* 帖子类型(可选)
*/
@Pattern(regexp = "^[a-zA-Z0-9_\\u4e00-\\u9fa5]{1,20}$", message = "帖子类型格式不正确")
private String type;
/**
* 地点ID(可选)
*/
@Pattern(regexp = "^[a-zA-Z0-9_\\-]{1,50}$", message = "地点ID格式不正确")
private String locationId;
/**
* 是否只查询公开帖子
*/
private Boolean publicOnly;
}
@@ -0,0 +1,56 @@
package com.emotion.dto.request.community;
import com.emotion.dto.request.BaseRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
/**
* 社区帖子更新请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CommunityPostUpdateRequest extends BaseRequest {
/**
* 帖子ID
*/
@NotBlank(message = "帖子ID不能为空")
private String id;
/**
* 标题
*/
@NotBlank(message = "标题不能为空")
private String title;
/**
* 内容
*/
@NotBlank(message = "内容不能为空")
private String content;
/**
* 帖子类型
*/
private String type;
/**
* 地点ID
*/
private String locationId;
/**
* 标签
*/
private String tags;
/**
* 是否私密
*/
private Integer isPrivate;
}
@@ -0,0 +1,215 @@
package com.emotion.dto.request.coze;
import com.emotion.dto.request.BaseRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
/**
* Coze API调用记录创建请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CozeApiCallCreateRequest extends BaseRequest {
/**
* 对话ID
*/
@NotBlank(message = "对话ID不能为空")
private String conversationId;
/**
* 消息ID
*/
private String messageId;
/**
* Coze聊天ID
*/
private String cozeChatId;
/**
* Coze对话ID
*/
private String cozeConversationId;
/**
* Bot ID
*/
private String botId;
/**
* Workflow ID
*/
private String workflowId;
/**
* 用户ID
*/
private String userId;
/**
* 请求类型: chat/stream/retrieve/messages
*/
private String requestType;
/**
* 请求URL
*/
private String requestUrl;
/**
* 请求体
*/
private String requestBody;
/**
* 请求头
*/
private String requestHeaders;
/**
* 用户输入的消息内容
*/
private String userMessage;
/**
* 用户消息类型: text/image/file
*/
private String userMessageType;
/**
* AI回复的消息内容
*/
private String aiReply;
/**
* AI回复类型: text/image/file
*/
private String aiReplyType;
/**
* HTTP状态码
*/
private Integer responseStatus;
/**
* 响应体
*/
private String responseBody;
/**
* 响应头
*/
private String responseHeaders;
/**
* 轮询次数
*/
private Integer pollCount;
/**
* 轮询开始时间
*/
private String pollStartTime;
/**
* 轮询结束时间
*/
private String pollEndTime;
/**
* 最终状态: completed/failed/timeout
*/
private String finalStatus;
/**
* 调用状态: pending/success/failed/timeout
*/
private String status;
/**
* 开始时间
*/
private String startTime;
/**
* 结束时间
*/
private String endTime;
/**
* 耗时(毫秒)
*/
private Integer durationMs;
/**
* 输入Token数
*/
private Integer promptTokens;
/**
* 输出Token数
*/
private Integer completionTokens;
/**
* 总Token数
*/
private Integer totalTokens;
/**
* 费用
*/
private BigDecimal cost;
/**
* 函数调用记录
*/
private String functionCalls;
/**
* 函数调用结果
*/
private String functionResults;
/**
* 错误代码
*/
private String errorCode;
/**
* 错误信息
*/
private String errorMessage;
/**
* 客户端IP
*/
private String clientIp;
/**
* 用户代理
*/
private String userAgent;
/**
* 会话ID
*/
private String sessionId;
/**
* 追踪ID
*/
private String traceId;
/**
* 扩展元数据
*/
private String metadata;
}
@@ -0,0 +1,54 @@
package com.emotion.dto.request.coze;
import com.emotion.dto.request.PageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.Pattern;
/**
* Coze API调用记录分页请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CozeApiCallPageRequest extends PageRequest {
/**
* 会话ID(可选)
*/
@Pattern(regexp = "^[a-zA-Z0-9_\\-]{1,50}$", message = "会话ID格式不正确")
private String conversationId;
/**
* 用户ID(可选)
*/
@Pattern(regexp = "^[a-zA-Z0-9_\\-]{1,50}$", message = "用户ID格式不正确")
private String userId;
/**
* Bot ID(可选)
*/
@Pattern(regexp = "^[a-zA-Z0-9_\\-]{1,50}$", message = "Bot ID格式不正确")
private String botId;
/**
* 状态(可选)
*/
@Pattern(regexp = "^[a-zA-Z0-9_\\u4e00-\\u9fa5]{1,20}$", message = "状态格式不正确")
private String status;
/**
* 请求类型(可选)
*/
@Pattern(regexp = "^[a-zA-Z0-9_\\-]{1,20}$", message = "请求类型格式不正确")
private String requestType;
/**
* 追踪ID(可选)
*/
@Pattern(regexp = "^[a-zA-Z0-9_\\-]{1,50}$", message = "追踪ID格式不正确")
private String traceId;
}
@@ -0,0 +1,220 @@
package com.emotion.dto.request.coze;
import com.emotion.dto.request.BaseRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
/**
* Coze API调用记录更新请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CozeApiCallUpdateRequest extends BaseRequest {
/**
* ID
*/
@NotBlank(message = "ID不能为空")
private String id;
/**
* 对话ID
*/
private String conversationId;
/**
* 消息ID
*/
private String messageId;
/**
* Coze聊天ID
*/
private String cozeChatId;
/**
* Coze对话ID
*/
private String cozeConversationId;
/**
* Bot ID
*/
private String botId;
/**
* Workflow ID
*/
private String workflowId;
/**
* 用户ID
*/
private String userId;
/**
* 请求类型: chat/stream/retrieve/messages
*/
private String requestType;
/**
* 请求URL
*/
private String requestUrl;
/**
* 请求体
*/
private String requestBody;
/**
* 请求头
*/
private String requestHeaders;
/**
* 用户输入的消息内容
*/
private String userMessage;
/**
* 用户消息类型: text/image/file
*/
private String userMessageType;
/**
* AI回复的消息内容
*/
private String aiReply;
/**
* AI回复类型: text/image/file
*/
private String aiReplyType;
/**
* HTTP状态码
*/
private Integer responseStatus;
/**
* 响应体
*/
private String responseBody;
/**
* 响应头
*/
private String responseHeaders;
/**
* 轮询次数
*/
private Integer pollCount;
/**
* 轮询开始时间
*/
private String pollStartTime;
/**
* 轮询结束时间
*/
private String pollEndTime;
/**
* 最终状态: completed/failed/timeout
*/
private String finalStatus;
/**
* 调用状态: pending/success/failed/timeout
*/
private String status;
/**
* 开始时间
*/
private String startTime;
/**
* 结束时间
*/
private String endTime;
/**
* 耗时(毫秒)
*/
private Integer durationMs;
/**
* 输入Token数
*/
private Integer promptTokens;
/**
* 输出Token数
*/
private Integer completionTokens;
/**
* 总Token数
*/
private Integer totalTokens;
/**
* 费用
*/
private BigDecimal cost;
/**
* 函数调用记录
*/
private String functionCalls;
/**
* 函数调用结果
*/
private String functionResults;
/**
* 错误代码
*/
private String errorCode;
/**
* 错误信息
*/
private String errorMessage;
/**
* 客户端IP
*/
private String clientIp;
/**
* 用户代理
*/
private String userAgent;
/**
* 会话ID
*/
private String sessionId;
/**
* 追踪ID
*/
private String traceId;
/**
* 扩展元数据
*/
private String metadata;
}
@@ -0,0 +1,50 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 情绪分析响应类
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class EmotionAnalysisResponse extends BaseResponse {
/**
* 消息ID
*/
private String messageId;
/**
* 用户ID
*/
private String userId;
/**
* 主要情绪
*/
private String primaryEmotion;
/**
* 情绪极性
*/
private String polarity;
/**
* 情绪强度
*/
private Double intensity;
/**
* 置信度
*/
private Double confidence;
/**
* 情绪详情
*/
private String emotionDetails;
}
@@ -0,0 +1,80 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
/**
* 情绪记录响应类
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class EmotionRecordResponse extends BaseResponse {
/**
* 用户ID
*/
private String userId;
/**
* 记录日期
*/
private LocalDate recordDate;
/**
* 情绪类型
*/
private String emotionType;
/**
* 情绪强度
*/
private BigDecimal intensity;
/**
* 触发因素
*/
private String triggers;
/**
* 描述
*/
private String description;
/**
* 标签
*/
private List<String> tags;
/**
* 天气
*/
private String weather;
/**
* 地点
*/
private String location;
/**
* 活动
*/
private String activity;
/**
* 相关人物
*/
private String people;
/**
* 备注
*/
private String notes;
}
@@ -0,0 +1,62 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* WebSocket响应对象
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WebSocketResponse extends BaseResponse {
/**
* 消息ID
*/
private String messageId;
/**
* 会话ID
*/
private String conversationId;
/**
* 消息类型
*/
private String type;
/**
* 消息内容
*/
private String content;
/**
* 发送者ID
*/
private String senderId;
/**
* 发送者类型
*/
private String senderType;
/**
* 消息状态
*/
private String status;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 扩展数据
*/
private Object data;
}
@@ -0,0 +1,73 @@
package com.emotion.dto.response.achievement;
import com.emotion.dto.response.BaseResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
* 成就响应类
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class AchievementResponse extends BaseResponse {
/**
* 成就标题
*/
private String title;
/**
* 描述
*/
private String description;
/**
* 分类
*/
private String category;
/**
* 图标
*/
private String icon;
/**
* 稀有度
*/
private String rarity;
/**
* 条件类型
*/
private String conditionType;
/**
* 条件值
*/
private String conditionValue;
/**
* 奖励
*/
private String rewards;
/**
* 解锁时间
*/
private String unlockedTime;
/**
* 进度
*/
private Double progress;
/**
* 是否隐藏
*/
private Integer isHidden;
}
@@ -0,0 +1,41 @@
package com.emotion.dto.response.comment;
import com.emotion.dto.response.BaseResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 评论响应
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CommentResponse extends BaseResponse {
/**
* 帖子ID
*/
private String postId;
/**
* 用户ID
*/
private String userId;
/**
* 评论内容
*/
private String content;
/**
* 回复的评论ID
*/
private String replyToId;
/**
* 点赞数
*/
private Integer likes;
}
@@ -0,0 +1,71 @@
package com.emotion.dto.response.community;
import com.emotion.dto.response.BaseResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 社区帖子响应
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CommunityPostResponse extends BaseResponse {
/**
* 用户ID
*/
private String userId;
/**
* 地点ID
*/
private String locationId;
/**
* 标题
*/
private String title;
/**
* 内容
*/
private String content;
/**
* 帖子类型
*/
private String type;
/**
* 图片列表
*/
private String images;
/**
* 标签
*/
private String tags;
/**
* 点赞数
*/
private Integer likes;
/**
* 浏览数
*/
private Integer viewCount;
/**
* 评论数
*/
private Integer commentCount;
/**
* 是否私密
*/
private Integer isPrivate;
}
@@ -0,0 +1,212 @@
package com.emotion.dto.response.coze;
import com.emotion.dto.response.BaseResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
* Coze API调用记录响应
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CozeApiCallResponse extends BaseResponse {
/**
* 对话ID
*/
private String conversationId;
/**
* 消息ID
*/
private String messageId;
/**
* Coze聊天ID
*/
private String cozeChatId;
/**
* Coze对话ID
*/
private String cozeConversationId;
/**
* Bot ID
*/
private String botId;
/**
* Workflow ID
*/
private String workflowId;
/**
* 用户ID
*/
private String userId;
/**
* 请求类型: chat/stream/retrieve/messages
*/
private String requestType;
/**
* 请求URL
*/
private String requestUrl;
/**
* 请求体
*/
private String requestBody;
/**
* 请求头
*/
private String requestHeaders;
/**
* 用户输入的消息内容
*/
private String userMessage;
/**
* 用户消息类型: text/image/file
*/
private String userMessageType;
/**
* AI回复的消息内容
*/
private String aiReply;
/**
* AI回复类型: text/image/file
*/
private String aiReplyType;
/**
* HTTP状态码
*/
private Integer responseStatus;
/**
* 响应体
*/
private String responseBody;
/**
* 响应头
*/
private String responseHeaders;
/**
* 轮询次数
*/
private Integer pollCount;
/**
* 轮询开始时间
*/
private String pollStartTime;
/**
* 轮询结束时间
*/
private String pollEndTime;
/**
* 最终状态: completed/failed/timeout
*/
private String finalStatus;
/**
* 调用状态: pending/success/failed/timeout
*/
private String status;
/**
* 开始时间
*/
private String startTime;
/**
* 结束时间
*/
private String endTime;
/**
* 耗时(毫秒)
*/
private Integer durationMs;
/**
* 输入Token数
*/
private Integer promptTokens;
/**
* 输出Token数
*/
private Integer completionTokens;
/**
* 总Token数
*/
private Integer totalTokens;
/**
* 费用
*/
private BigDecimal cost;
/**
* 函数调用记录
*/
private String functionCalls;
/**
* 函数调用结果
*/
private String functionResults;
/**
* 错误代码
*/
private String errorCode;
/**
* 错误信息
*/
private String errorMessage;
/**
* 客户端IP
*/
private String clientIp;
/**
* 用户代理
*/
private String userAgent;
/**
* 会话ID
*/
private String sessionId;
/**
* 追踪ID
*/
private String traceId;
/**
* 扩展元数据
*/
private String metadata;
}
@@ -35,14 +35,14 @@ public class ChatRequest {
/**
* 发送者类型
*/
@NotNull(message = "发送者类型不能为空")
private SenderType senderType;
@NotBlank(message = "发送者类型不能为空")
private String senderType;
/**
* 消息类型
*/
@NotNull(message = "消息类型不能为空")
private MessageType messageType;
@NotBlank(message = "消息类型不能为空")
private String messageType;
/**
* 会话ID(可选)
@@ -53,45 +53,4 @@ public class ChatRequest {
* 发送时间戳
*/
private Long timestamp;
/**
* 发送者类型枚举
*/
public enum SenderType {
USER("用户"),
GUEST("访客"),
AI("AI助手"),
SYSTEM("系统");
private final String description;
SenderType(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
/**
* 消息类型枚举
*/
public enum MessageType {
TEXT("文本消息"),
IMAGE("图片消息"),
FILE("文件消息"),
SYSTEM("系统消息"),
HEARTBEAT("心跳消息");
private final String description;
MessageType(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
}
@@ -32,7 +32,7 @@ public class WebSocketMessage {
/**
* 消息类型
*/
private MessageType type;
private String type;
/**
* 消息内容
@@ -47,12 +47,12 @@ public class WebSocketMessage {
/**
* 发送者类型
*/
private SenderType senderType;
private String senderType;
/**
* 消息状态
*/
private MessageStatus status;
private String status;
/**
* 创建时间
@@ -63,68 +63,4 @@ public class WebSocketMessage {
* 扩展数据
*/
private Object data;
/**
* 消息类型枚举
*/
public enum MessageType {
TEXT("文本消息"),
TYPING("正在输入"),
SYSTEM("系统消息"),
ERROR("错误消息"),
HEARTBEAT("心跳消息"),
CONNECTION("连接消息"),
AI_THINKING("AI思考中");
private final String description;
MessageType(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
/**
* 发送者类型枚举
*/
public enum SenderType {
USER("用户"),
GUEST("访客"),
AI("AI助手"),
SYSTEM("系统");
private final String description;
SenderType(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
/**
* 消息状态枚举
*/
public enum MessageStatus {
SENDING("发送中"),
SENT("已发送"),
DELIVERED("已送达"),
READ("已读"),
FAILED("发送失败");
private final String description;
MessageStatus(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
}