refactor: 重命名 backend-single 目录为 server

This commit is contained in:
2026-06-27 17:23:53 +08:00
parent 8daf51301a
commit 0d77d76858
464 changed files with 0 additions and 0 deletions
@@ -0,0 +1,38 @@
package com.emotion.dto.response;
import lombok.Data;
/**
* 管理员认证响应
*
* @author emotion-museum
* @date 2025-10-27
*/
@Data
public class AdminAuthResponse {
/**
* 访问令牌
*/
private String accessToken;
/**
* 刷新令牌
*/
private String refreshToken;
/**
* 令牌过期时间(秒)
*/
private Long expiresIn;
/**
* 管理员信息
*/
private AdminInfoResponse adminInfo;
/**
* 登录时间
*/
private String loginTime;
}
@@ -0,0 +1,68 @@
package com.emotion.dto.response;
import lombok.Data;
/**
* 管理员信息响应
*
* @author emotion-museum
* @date 2025-10-27
*/
@Data
public class AdminInfoResponse {
/**
* ID
*/
private String id;
/**
* 账号
*/
private String account;
/**
* 姓名
*/
private String username;
/**
* 邮箱
*/
private String email;
/**
* 手机号
*/
private String phone;
/**
* 头像
*/
private String avatar;
/**
* 角色
*/
private String role;
/**
* 权限列表
*/
private String permissions;
/**
* 状态: 0-禁用, 1-正常
*/
private Integer status;
/**
* 部门
*/
private String department;
/**
* 职位
*/
private String position;
}
@@ -0,0 +1,93 @@
package com.emotion.dto.response;
import lombok.Data;
/**
* 管理员响应
*
* @author huazhongmin
* @date 2025-10-27
*/
@Data
public class AdminResponse {
/**
* ID
*/
private String id;
/**
* 账号
*/
private String account;
/**
* 姓名
*/
private String username;
/**
* 邮箱
*/
private String email;
/**
* 手机号
*/
private String phone;
/**
* 头像
*/
private String avatar;
/**
* 角色
*/
private String role;
/**
* 权限列表
*/
private String permissions;
/**
* 状态: 0-禁用, 1-正常
*/
private Integer status;
/**
* 最后登录时间
*/
private String lastLoginTime;
/**
* 最后登录IP
*/
private String lastLoginIp;
/**
* 登录次数
*/
private Integer loginCount;
/**
* 部门
*/
private String department;
/**
* 职位
*/
private String position;
/**
* 创建时间
*/
private String createTime;
/**
* 更新时间
*/
private String updateTime;
}
@@ -0,0 +1,40 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* AI聊天响应类
*
* @author huazhongmin
* @date 2025-07-24
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class AiChatResponse extends BaseResponse {
/**
* 会话ID
*/
private String conversationId;
/**
* 用户消息
*/
private String userMessage;
/**
* AI回复
*/
private String aiReply;
/**
* 用户ID
*/
private String userId;
/**
* 时间戳
*/
private Long timestamp;
}
@@ -0,0 +1,45 @@
package com.emotion.dto.response;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* AI配置调用次数统计项
* 通过 workflowId 关联 t_ai_config 与 t_coze_api_call,统计调用次数并排序展示
*
* @author system
* @date 2025-12-24
*/
@Data
@Schema(description = "AI配置调用次数统计项")
public class AiConfigCallStatsItem {
@Schema(description = "AI配置ID")
private String configId;
@Schema(description = "配置名称")
private String configName;
@Schema(description = "配置键值")
private String configKey;
@Schema(description = "服务提供商")
private String provider;
@Schema(description = "配置类型")
private String configType;
@Schema(description = "Workflow ID")
private String workflowId;
@Schema(description = "是否启用:0-禁用,1-启用")
private Integer isEnabled;
@Schema(description = "是否默认:0-否,1-是")
private Integer isDefault;
@Schema(description = "调用次数")
private Long callCount;
}
@@ -0,0 +1,29 @@
package com.emotion.dto.response;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* AI配置调用次数统计响应
* 用于管理后台仪表盘展示:各个 AI 配置的接口调用次数(按次数排序)
*
* @author system
* @date 2025-12-24
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "AI配置调用次数统计响应")
public class AiConfigCallStatsResponse {
@Schema(description = "统计列表(按调用次数倒序)")
private List<AiConfigCallStatsItem> items;
}
@@ -0,0 +1,30 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* AI状态响应类
*
* @author huazhongmin
* @date 2025-07-24
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class AiStatusResponse extends BaseResponse {
/**
* 服务是否可用
*/
private Boolean available;
/**
* 服务状态
*/
private String status;
/**
* 时间戳
*/
private Long timestamp;
}
@@ -0,0 +1,35 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* AI总结响应类
*
* @author huazhongmin
* @date 2025-07-24
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class AiSummaryResponse extends BaseResponse {
/**
* 会话ID
*/
private String conversationId;
/**
* 总结内容
*/
private String summary;
/**
* 用户ID
*/
private String userId;
/**
* 时间戳
*/
private Long timestamp;
}
@@ -0,0 +1,25 @@
package com.emotion.dto.response;
import lombok.Data;
import java.util.List;
/**
* 接口端点详情响应
*/
@Data
public class ApiEndpointDetailResponse {
private String id;
private String path;
private String method;
private String operationId;
private String summary;
private String description;
private String tags;
private Integer deprecated;
private String requestSchema;
private String responseSchema;
private String createTime;
private List<ApiParamItemResponse> params;
}
@@ -0,0 +1,19 @@
package com.emotion.dto.response;
import lombok.Data;
/**
* 接口端点列表项
*/
@Data
public class ApiEndpointItemResponse {
private String id;
private String path;
private String method;
private String operationId;
private String summary;
private String tags;
private Integer deprecated;
private String createTime;
}
@@ -0,0 +1,19 @@
package com.emotion.dto.response;
import lombok.Data;
/**
* 接口参数详情项
*/
@Data
public class ApiParamItemResponse {
private String paramType;
private String name;
private Integer required;
private String paramTypeDef;
private String description;
private String defaultValue;
private String enumValues;
private String example;
}
@@ -0,0 +1,18 @@
package com.emotion.dto.response;
import lombok.Data;
import java.util.Map;
/**
* 代理测试响应
*/
@Data
public class ApiTestProxyResponse {
private int status;
private Object body;
private Map<String, String> headers;
private long duration;
private String rawBody;
}
@@ -0,0 +1,38 @@
package com.emotion.dto.response;
import lombok.Data;
/**
* 认证响应
*
* @author huazhongmin
* @date 2025-07-23
*/
@Data
public class AuthResponse {
/**
* 访问令牌
*/
private String accessToken;
/**
* 刷新令牌
*/
private String refreshToken;
/**
* 令牌过期时间(秒)
*/
private Long expiresIn;
/**
* 用户信息
*/
private UserInfoResponse userInfo;
/**
* 登录时间
*/
private String loginTime;
}
@@ -0,0 +1,28 @@
package com.emotion.dto.response;
import lombok.Data;
/**
* 基础响应类
*
* @author huazhongmin
* @date 2025-07-23
*/
@Data
public class BaseResponse {
/**
* 响应ID
*/
private String id;
/**
* 创建时间
*/
private String createTime;
/**
* 更新时间
*/
private String updateTime;
}
@@ -0,0 +1,28 @@
package com.emotion.dto.response;
import lombok.Data;
/**
* 验证码响应
*
* @author huazhongmin
* @date 2025-07-23
*/
@Data
public class CaptchaResponse {
/**
* 验证码key
*/
private String captchaKey;
/**
* 验证码图片(Base64编码)
*/
private String captchaImage;
/**
* 过期时间(秒)
*/
private Long expiresIn;
}
@@ -0,0 +1,35 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 聊天统计响应类
*
* @author huazhongmin
* @date 2025-07-24
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class ChatStatsResponse extends BaseResponse {
/**
* 用户会话数量
*/
private Long userConversationCount;
/**
* 活跃会话数量
*/
private Long activeConversationCount;
/**
* 会话消息数量
*/
private Long conversationMessageCount;
/**
* 时间戳
*/
private Long timestamp;
}
@@ -0,0 +1,55 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 对话响应类
*
* @author huazhongmin
* @date 2025-07-24
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class ConversationResponse extends BaseResponse {
/**
* 用户ID
*/
private String userId;
/**
* Coze对话ID
*/
private String cozeConversationId;
/**
* 对话标题
*/
private String title;
/**
* 对话类型
*/
private String type;
/**
* 对话状态
*/
private String status;
/**
* 消息数量
*/
private Integer messageCount;
/**
* 最后消息时间
*/
private String lastMessageTime;
/**
* 客户端IP
*/
private String clientIp;
}
@@ -0,0 +1,221 @@
package com.emotion.dto.response;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
/**
* 仪表盘统计数据响应
*
* @author system
* @date 2025-10-31
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "仪表盘统计数据响应")
public class DashboardStatsResponse {
@Schema(description = "用户统计")
private UserStats userStats;
@Schema(description = "内容统计")
private ContentStats contentStats;
@Schema(description = "AI服务统计")
private AiServiceStats aiServiceStats;
@Schema(description = "系统统计")
private SystemStats systemStats;
@Schema(description = "最近活动")
private List<RecentActivity> recentActivities;
@Schema(description = "数据更新时间")
private LocalDateTime updateTime;
@Schema(description = "用户增长趋势数据")
private List<UserGrowthTrend> userGrowthTrends;
@Schema(description = "最近登录用户")
private List<RecentLogin> recentLogins;
/**
* 用户统计
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "用户统计")
public static class UserStats {
@Schema(description = "总用户数")
private Long totalUsers;
@Schema(description = "今日新增用户")
private Long todayNewUsers;
@Schema(description = "活跃用户数")
private Long activeUsers;
@Schema(description = "访客用户数")
private Long guestUsers;
}
/**
* 内容统计
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "内容统计")
public static class ContentStats {
@Schema(description = "总对话数")
private Long totalConversations;
@Schema(description = "总消息数")
private Long totalMessages;
@Schema(description = "日记帖子数")
private Long diaryPosts;
@Schema(description = "社区帖子数")
private Long communityPosts;
@Schema(description = "情绪记录数")
private Long emotionRecords;
}
/**
* AI服务统计
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "AI服务统计")
public static class AiServiceStats {
@Schema(description = "总API调用次数")
private Long totalApiCalls;
@Schema(description = "今日API调用次数")
private Long todayApiCalls;
@Schema(description = "成功调用次数")
private Long successfulCalls;
@Schema(description = "失败调用次数")
private Long failedCalls;
@Schema(description = "平均响应时间(ms)")
private Double avgResponseTime;
@Schema(description = "AI配置数量")
private Long aiConfigCount;
}
/**
* 系统统计
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "系统统计")
public static class SystemStats {
@Schema(description = "管理员数量")
private Long adminCount;
@Schema(description = "成就数量")
private Long achievementCount;
@Schema(description = "奖励数量")
private Long rewardCount;
@Schema(description = "系统运行时间")
private String uptime;
}
/**
* 最近活动
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "最近活动")
public static class RecentActivity {
@Schema(description = "活动类型")
private String type;
@Schema(description = "活动描述")
private String description;
@Schema(description = "用户ID")
private String userId;
@Schema(description = "用户名")
private String username;
@Schema(description = "活动时间")
private LocalDateTime activityTime;
@Schema(description = "额外数据")
private Map<String, Object> extraData;
}
/**
* 用户增长趋势
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "用户增长趋势")
public static class UserGrowthTrend {
@Schema(description = "日期")
private String date;
@Schema(description = "新增用户数")
private Long newUsers;
@Schema(description = "累计用户数")
private Long totalUsers;
}
/**
* 最近登录用户
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "最近登录用户")
public static class RecentLogin {
@Schema(description = "用户ID")
private String userId;
@Schema(description = "用户名")
private String username;
@Schema(description = "昵称")
private String nickname;
@Schema(description = "头像")
private String avatar;
@Schema(description = "登录时间")
private LocalDateTime loginTime;
@Schema(description = "登录时间描述")
private String timeDescription;
}
}
@@ -0,0 +1,136 @@
package com.emotion.dto.response;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 日记评论响应DTO
*
* @author huazhongmin
* @date 2025-07-23
*/
@Data
public class DiaryCommentResponse {
/**
* 评论ID
*/
private String id;
/**
* 日记ID
*/
private String diaryId;
/**
* 评论用户ID
*/
private String userId;
/**
* 评论用户信息
*/
private UserInfoResponse userInfo;
/**
* 父评论ID (用于回复功能)
*/
private String parentCommentId;
/**
* 父评论信息
*/
private DiaryCommentResponse parentComment;
/**
* 评论内容
*/
private String content;
/**
* 评论图片
*/
private List<String> images;
/**
* 评论类型: user-用户评论, ai-AI评论, system-系统评论
*/
private String commentType;
/**
* AI评论来源 (如: emotion_analysis, sentiment_analysis)
*/
private String aiCommentSource;
/**
* 点赞数
*/
private Integer likeCount;
/**
* 回复数
*/
private Integer replyCount;
/**
* 是否匿名评论: 0-实名, 1-匿名
*/
private Integer isAnonymous;
/**
* 是否置顶: 0-普通, 1-置顶
*/
private Integer isTop;
/**
* 状态: published-已发布, hidden-隐藏, deleted-已删除
*/
private String status;
/**
* 发布时间
*/
private String publishTime;
/**
* 最后回复时间
*/
private String lastReplyTime;
/**
* 情绪评分
*/
private BigDecimal emotionScore;
/**
* 情感评分
*/
private BigDecimal sentimentScore;
/**
* 扩展元数据
*/
private Object metadata;
/**
* 创建时间
*/
private String createTime;
/**
* 更新时间
*/
private String updateTime;
/**
* 是否已点赞
*/
private Boolean isLiked;
/**
* 子评论列表
*/
private List<DiaryCommentResponse> replies;
}
@@ -0,0 +1,197 @@
package com.emotion.dto.response;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
* 日记响应DTO
*
* @author huazhongmin
* @date 2025-07-23
*/
@Data
public class DiaryPostResponse {
/**
* 日记ID
*/
private String id;
/**
* 用户ID
*/
private String userId;
/**
* 用户信息
*/
private UserInfoResponse userInfo;
/**
* 日记标题
*/
private String title;
/**
* 日记内容
*/
private String content;
/**
* 图片列表
*/
private List<String> images;
/**
* 视频列表
*/
private List<String> videos;
/**
* 发布地点
*/
private String location;
/**
* 纬度
*/
private BigDecimal latitude;
/**
* 经度
*/
private BigDecimal longitude;
/**
* 天气信息
*/
private String weather;
/**
* 心情状态
*/
private String mood;
/**
* 心情评分 (0-10)
*/
private BigDecimal moodScore;
/**
* 标签列表
*/
private List<String> tags;
/**
* 是否公开: 0-仅自己可见, 1-公开
*/
private Integer isPublic;
/**
* 是否匿名发布: 0-实名, 1-匿名
*/
private Integer isAnonymous;
/**
* 浏览数
*/
private Integer viewCount;
/**
* 点赞数
*/
private Integer likeCount;
/**
* 评论数
*/
private Integer commentCount;
/**
* 分享数
*/
private Integer shareCount;
/**
* AI评论内容
*/
private String aiComment;
/**
* AI评论时间
*/
private String aiCommentTime;
/**
* AI情绪分析结果
*/
private Object aiEmotionAnalysis;
/**
* AI情感评分 (-1到1)
*/
private BigDecimal aiSentimentScore;
/**
* AI提取的关键词
*/
private List<String> aiKeywords;
/**
* AI建议
*/
private String aiSuggestions;
/**
* 发布时间
*/
private String publishTime;
/**
* 最后评论时间
*/
private String lastCommentTime;
/**
* 状态: draft-草稿, published-已发布, hidden-隐藏, deleted-已删除
*/
private String status;
/**
* 优先级 (用于置顶功能)
*/
private Integer priority;
/**
* 是否精选: 0-普通, 1-精选
*/
private Integer featured;
/**
* 扩展元数据
*/
private Object metadata;
/**
* 创建时间
*/
private String createTime;
/**
* 更新时间
*/
private String updateTime;
/**
* 是否已点赞
*/
private Boolean isLiked;
/**
* 是否已收藏
*/
private Boolean isBookmarked;
}
@@ -0,0 +1,50 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 情绪分析响应类
*
* @author huazhongmin
* @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 huazhongmin
* @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,45 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 情绪总结生成响应类
*
* @author huazhongmin
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class EmotionSummaryGenerateResponse extends BaseResponse {
/**
* 是否成功
*/
private Boolean success;
/**
* 消息
*/
private String message;
/**
* 情绪记录ID
*/
private String emotionRecordId;
/**
* 情绪分析ID
*/
private String emotionAnalysisId;
/**
* 消息数量
*/
private Integer messageCount;
/**
* 记录日期
*/
private String recordDate;
}
@@ -0,0 +1,30 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 情绪总结状态响应类
*
* @author huazhongmin
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class EmotionSummaryStatusResponse extends BaseResponse {
/**
* 用户ID
*/
private String userId;
/**
* 是否可以生成
*/
private Boolean canGenerate;
/**
* 消息
*/
private String message;
}
@@ -0,0 +1,17 @@
package com.emotion.dto.response;
import lombok.Data;
import java.util.List;
@Data
public class EpicScriptInspirationResponse {
private EpicScriptResponse script;
private String prompt;
private Integer remainingCount;
private List<InspirationSuggestionResponse> suggestions;
}
@@ -0,0 +1,72 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Map;
/**
* 爽文剧本响应
*
* @author huazhongmin
* @date 2025-12-22
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class EpicScriptResponse extends BaseResponse {
/**
* 用户ID
*/
private String userId;
/**
* 剧本标题
*/
private String title;
/**
* 剧本主题/渴望
*/
private String theme;
/**
* 剧本风格
*/
private String style;
/**
* 篇幅长度
*/
private String length;
/**
* 序幕:低谷回响
*/
private String plotIntro;
/**
* 转折:契机出现
*/
private String plotTurning;
/**
* 高潮:命运抉择
*/
private String plotClimax;
/**
* 结局:新的开始
*/
private String plotEnding;
/**
* 完整剧情JSON结构
*/
private Map<String, Object> plotJson;
/**
* 是否当前选中
*/
private Boolean isSelected;
}
@@ -0,0 +1,35 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 访客聊天响应类
*
* @author huazhongmin
* @date 2025-07-24
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class GuestChatResponse extends BaseResponse {
/**
* 消息内容
*/
private String message;
/**
* 消息ID
*/
private String messageId;
/**
* 时间戳
*/
private Long timestamp;
/**
* 是否有错误
*/
private Boolean error;
}
@@ -0,0 +1,45 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 访客用户信息响应类
*
* @author huazhongmin
* @date 2025-07-24
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class GuestUserInfoResponse extends BaseResponse {
/**
* 用户ID
*/
private String id;
/**
* 用户名
*/
private String username;
/**
* 昵称
*/
private String nickname;
/**
* 用户类型
*/
private String type;
/**
* 客户端IP
*/
private String clientIp;
/**
* 用户创建时间
*/
private Long userCreateTime;
}
@@ -0,0 +1,17 @@
package com.emotion.dto.response;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class InspirationSuggestionResponse {
private String text;
private String tag;
private String category;
}
@@ -0,0 +1,77 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 生命事件响应
*
* @author huazhongmin
* @date 2025-12-22
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class LifeEventResponse extends BaseResponse {
/**
* 用户ID
*/
private String userId;
/**
* 事件类型
*/
private String eventType;
/**
* 事件日期
*/
private String eventDate;
/**
* 时间模式
*/
private String timeMode;
/**
* 原始时间文本
*/
private String eventDateText;
/**
* 结束日期
*/
private String eventEndDate;
/**
* 事件标题
*/
private String title;
/**
* 事件内容
*/
private String content;
/**
* AI疗愈回复
*/
private String aiReply;
/**
* 情绪类型
*/
private String emotionType;
/**
* 情绪评分
*/
private Double emotionScore;
/**
* 标签列表
*/
private List<String> tags;
}
@@ -0,0 +1,53 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
import java.util.Map;
/**
* 实现路径响应
*
* @author huazhongmin
* @date 2025-12-22
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class LifePathResponse extends BaseResponse {
/**
* 用户ID
*/
private String userId;
/**
* 关联剧本ID
*/
private String scriptId;
/**
* 路径标题
*/
private String title;
/**
* 路径描述
*/
private String description;
/**
* 路径步骤列表
*/
private List<Map<String, Object>> steps;
/**
* 状态
*/
private String status;
/**
* 完成进度百分比
*/
private Double progress;
}
@@ -0,0 +1,24 @@
package com.emotion.dto.response;
import lombok.Data;
/**
* 登录方式配置响应
* 返回给小程序,告知当前启用的登录方式
*
* @author system
* @date 2026-06-27
*/
@Data
public class LoginConfigResponse {
/**
* 是否启用微信登录
*/
private Boolean wechatLoginEnabled;
/**
* 是否启用短信登录
*/
private Boolean smsLoginEnabled;
}
@@ -0,0 +1,55 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 消息响应类
*
* @author huazhongmin
* @date 2025-07-24
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class MessageResponse extends BaseResponse {
/**
* 会话ID
*/
private String conversationId;
/**
* 消息内容
*/
private String content;
/**
* 消息类型
*/
private String type;
/**
* 发送者
*/
private String sender;
/**
* 是否已读
*/
private Integer isRead;
/**
* AI回复
*/
private String aiReply;
/**
* 情感分析
*/
private String emotionAnalysis;
/**
* 消息顺序 - 在同一个会话中递增,用于确保消息展示顺序
*/
private Long messageOrder;
}
@@ -0,0 +1,21 @@
package com.emotion.dto.response;
import lombok.Data;
/**
* 重置密码响应对象
*
* 作者: emotion-museum
* 日期: 2025-10-26
* 版本: 1.0
*/
@Data
public class ResetPasswordResponse {
/** 是否成功 */
private boolean success;
/** 提示信息 */
private String message;
}
@@ -0,0 +1,35 @@
package com.emotion.dto.response;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 短信验证码响应
*
* @author huazhongmin
* @date 2025-10-06
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SmsCodeResponse {
/**
* 验证码(开发环境返回,生产环境不返回)
*/
private String code;
/**
* 过期时间(秒)
*/
private Long expiresIn;
/**
* 提示信息
*/
private String message;
}
@@ -0,0 +1,48 @@
package com.emotion.dto.response;
import lombok.Data;
/**
* 系统配置响应
*
* @author system
* @date 2026-06-27
*/
@Data
public class SystemConfigResponse {
/**
* 配置唯一标识
*/
private String configKey;
/**
* 配置值
*/
private String configValue;
/**
* 值类型: boolean/string/number/json
*/
private String valueType;
/**
* 配置分组
*/
private String configGroup;
/**
* 显示名称
*/
private String configName;
/**
* 配置说明
*/
private String description;
/**
* 排序号
*/
private Integer sortOrder;
}
@@ -0,0 +1,57 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 话题互动响应类
*
* @author huazhongmin
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class TopicInteractionResponse extends BaseResponse {
/**
* 话题ID
*/
private String topicId;
/**
* 互动类型
*/
private String type;
/**
* 内容
*/
private String content;
/**
* 用户输入
*/
private String userInput;
/**
* AI回应
*/
private String aiResponse;
/**
* 评分
*/
private Integer rating;
/**
* 反馈
*/
private String feedback;
/**
* 完成时间
*/
private LocalDateTime completedTime;
}
@@ -0,0 +1,73 @@
package com.emotion.dto.response;
import lombok.Data;
/**
* 用户信息响应
*
* @author huazhongmin
* @date 2025-07-23
*/
@Data
public class UserInfoResponse {
/**
* 用户ID
*/
private String id;
/**
* 账号
*/
private String account;
/**
* 用户名
*/
private String username;
/**
* 昵称
*/
private String nickname;
/**
* 邮箱
*/
private String email;
/**
* 手机号
*/
private String phone;
/**
* 头像
*/
private String avatar;
/**
* 状态
*/
private Integer status;
/**
* 会员等级
*/
private String memberLevel;
/**
* 使用天数
*/
private Integer totalDays;
/**
* 最后活跃时间
*/
private String lastActiveTime;
/**
* 创建时间
*/
private String createTime;
}
@@ -0,0 +1,60 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 用户响应
*
* @author huazhongmin
* @date 2025-07-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class UserResponse extends BaseResponse {
/**
* 账号
*/
private String account;
/**
* 用户名
*/
private String username;
/**
* 邮箱
*/
private String email;
/**
* 手机号
*/
private String phone;
/**
* 头像
*/
private String avatar;
/**
* 状态
*/
private Integer status;
/**
* 会员等级
*/
private String memberLevel;
/**
* 使用天数
*/
private Integer totalDays;
/**
* 最后活跃时间
*/
private String lastActiveTime;
}
@@ -0,0 +1,35 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 用户统计响应类
*
* @author huazhongmin
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class UserStatsResponse extends BaseResponse {
/**
* 用户ID
*/
private String userId;
/**
* 统计类型
*/
private String statsType;
/**
* 统计值
*/
private Double value;
/**
* 周期
*/
private String period;
}
@@ -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 huazhongmin
* @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,23 @@
package com.emotion.dto.response.ai;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class AiRuntimeTestResponse {
private String sceneCode;
private String status;
private String output;
private Long durationMs;
private Integer streamChunks;
private String errorCode;
private String errorMessage;
}
@@ -0,0 +1,64 @@
package com.emotion.dto.response.ai;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.HashMap;
import java.util.Map;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AiStreamEvent {
private String type;
private String content;
private String code;
private String message;
private Integer seq;
@Builder.Default
private Long timestamp = System.currentTimeMillis();
@Builder.Default
private Map<String, Object> metadata = new HashMap<>();
public static AiStreamEvent start(String sceneCode) {
return AiStreamEvent.builder()
.type("start")
.message("stream started")
.metadata(Map.of("sceneCode", sceneCode))
.build();
}
public static AiStreamEvent delta(String content, int seq) {
return AiStreamEvent.builder()
.type("delta")
.content(content)
.seq(seq)
.build();
}
public static AiStreamEvent error(String code, String message) {
return AiStreamEvent.builder()
.type("error")
.code(code)
.message(message)
.build();
}
public static AiStreamEvent done(Map<String, Object> metadata) {
return AiStreamEvent.builder()
.type("done")
.message("stream completed")
.metadata(metadata == null ? Map.of() : metadata)
.build();
}
}
@@ -0,0 +1,47 @@
package com.emotion.dto.response.ai;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AiTestTemplateResponse {
private String sceneCode;
private String endpointId;
private String endpointCode;
private String endpointName;
private String providerType;
@Builder.Default
private Map<String, Object> inputs = new LinkedHashMap<>();
@Builder.Default
private List<ParamField> paramFields = new ArrayList<>();
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class ParamField {
private String name;
private String label;
private String type;
private Object value;
private Boolean required;
private String placeholder;
}
}
@@ -0,0 +1,222 @@
package com.emotion.dto.response.aiconfig;
import com.emotion.dto.response.BaseResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* AI配置响应类
*
* @author system
* @date 2025-10-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class AiConfigResponse extends BaseResponse {
/**
* 配置名称
*/
private String configName;
/**
* 配置键值 (唯一标识)
*/
private String configKey;
/**
* 配置类型: coze-扣子, openai-OpenAI, claude-Claude, gemini-Gemini等
*/
private String configType;
/**
* 服务提供商: coze, openai, anthropic, google等
*/
private String provider;
/**
* API完整URL(包含完整的接口路径,不需要再拼接任何后缀)
* 例如:https://api.coze.cn/v3/chat
*/
private String apiBaseUrl;
/**
* API访问令牌 (脱敏显示)
*/
private String apiToken;
/**
* API版本
*/
private String apiVersion;
/**
* OAuth客户端ID
*/
private String clientId;
/**
* OAuth客户端密钥 (脱敏显示)
*/
private String clientSecret;
/**
* 授权类型: client_credentials, authorization_code, password, refresh_token
*/
private String grantType;
/**
* 模型名称
*/
private String modelName;
/**
* Bot ID (Coze专用)
*/
private String botId;
/**
* Workflow ID (Coze专用)
*/
private String workflowId;
/**
* 超时时间(毫秒)
*/
private Integer timeoutMs;
/**
* 重试次数
*/
private Integer retryCount;
/**
* 重试延迟(毫秒)
*/
private Integer retryDelayMs;
/**
* 最大Token数
*/
private Integer maxTokens;
/**
* 温度参数 (0.0-2.0)
*/
private Double temperature;
/**
* Top-p参数 (0.0-1.0)
*/
private Double topP;
/**
* 是否支持流式输出: 0-不支持, 1-支持
*/
private Integer supportStream;
/**
* 是否支持函数调用: 0-不支持, 1-支持
*/
private Integer supportFunctionCall;
/**
* 是否支持视觉理解: 0-不支持, 1-支持
*/
private Integer supportVision;
/**
* 是否支持文件上传: 0-不支持, 1-支持
*/
private Integer supportFileUpload;
/**
* 使用场景: chat-聊天, summary-总结, emotion_analysis-情绪分析, content_generation-内容生成等
*/
private String usageScenario;
/**
* 优先级 (数值越大优先级越高)
*/
private Integer priority;
/**
* 输入Token价格(每1K)
*/
private Double inputPricePer1k;
/**
* 输出Token价格(每1K)
*/
private Double outputPricePer1k;
/**
* 货币单位
*/
private String currency;
/**
* 每分钟请求限制
*/
private Integer rateLimitPerMinute;
/**
* 每小时请求限制
*/
private Integer rateLimitPerHour;
/**
* 每日请求限制
*/
private Integer rateLimitPerDay;
/**
* 是否启用: 0-禁用, 1-启用
*/
private Integer isEnabled;
/**
* 是否为默认配置: 0-否, 1-是
*/
private Integer isDefault;
/**
* 环境: development-开发, testing-测试, production-生产
*/
private String environment;
/**
* 自定义请求头
*/
private String customHeaders;
/**
* 自定义参数
*/
private String customParams;
/**
* Webhook回调地址
*/
private String webhookUrl;
/**
* 健康检查URL
*/
private String healthCheckUrl;
/**
* 健康检查间隔(分钟)
*/
private Integer healthCheckIntervalMinutes;
/**
* 配置描述
*/
private String description;
/**
* 使用说明
*/
private String usageNotes;
}
@@ -0,0 +1,15 @@
package com.emotion.dto.response.analytics;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AnalyticsBatchResponse {
private int accepted;
private int rejected;
}
@@ -0,0 +1,17 @@
package com.emotion.dto.response.analytics;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AnalyticsFunnelItem {
private String eventName;
private String label;
private long users;
private double conversionRate;
}
@@ -0,0 +1,20 @@
package com.emotion.dto.response.analytics;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AnalyticsOverviewResponse {
private long pv;
private long uv;
private long eventCount;
private long activeUsers;
private long ttsRequests;
private long ttsPlays;
private double avgStayMs;
}
@@ -0,0 +1,19 @@
package com.emotion.dto.response.analytics;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AnalyticsPreferenceItem {
private String dimension;
private String dimensionLabel;
private String value;
private String valueLabel;
private long count;
private long users;
}
@@ -0,0 +1,23 @@
package com.emotion.dto.response.analytics;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AnalyticsTopEventItem {
private String eventName;
private String eventLabel;
private String eventType;
private String eventTypeLabel;
private String pagePath;
private String pageLabel;
private String apiPath;
private String apiLabel;
private long count;
private long users;
}
@@ -0,0 +1,18 @@
package com.emotion.dto.response.analytics;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AnalyticsTrendItem {
private String bucket;
private String eventName;
private String eventLabel;
private long count;
private long users;
}
@@ -0,0 +1,19 @@
package com.emotion.dto.response.analytics;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AnalyticsUserItem {
private String userId;
private String anonymousId;
private long eventCount;
private LocalDateTime lastActiveTime;
}
@@ -0,0 +1,16 @@
package com.emotion.dto.response.asr;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class AsrTranscribeResponse {
private String text;
private String language;
private Long durationMs;
private String engine;
private String model;
private String errorMessage;
}
@@ -0,0 +1,41 @@
package com.emotion.dto.response.comment;
import com.emotion.dto.response.BaseResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 评论响应
*
* @author huazhongmin
* @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 huazhongmin
* @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 huazhongmin
* @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;
}
@@ -0,0 +1,61 @@
package com.emotion.dto.response.dictionary;
import lombok.Data;
import com.emotion.dto.response.BaseResponse;
import lombok.EqualsAndHashCode;
/**
* 字典响应
*
* @author huazhongmin
* @date 2025-12-22
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class DictionaryResponse extends BaseResponse {
/**
* 字典类型
*/
private String dictType;
/**
* 字典编码
*/
private String dictCode;
/**
* 字典名称
*/
private String dictName;
/**
* 字典值
*/
private String dictValue;
/**
* 排序顺序
*/
private Integer sortOrder;
/**
* 状态: 0-禁用, 1-启用
*/
private Integer status;
/**
* 创建人ID
*/
private String createBy;
/**
* 更新人ID
*/
private String updateBy;
/**
* 备注
*/
private String remarks;
}
@@ -0,0 +1,74 @@
package com.emotion.dto.response.growth;
import com.emotion.dto.response.BaseResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 成长话题响应类
*
* @author huazhongmin
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class GrowthTopicResponse extends BaseResponse {
/**
* 课题标题
*/
private String title;
/**
* 分类
*/
private String category;
/**
* 难度: easy-简单, medium-中等, hard-困难
*/
private String difficulty;
/**
* 描述
*/
private String description;
/**
* 内容
*/
private String content;
/**
* 持续天数
*/
private Integer durationDays;
/**
* 解锁条件
*/
private String unlockConditions;
/**
* 是否解锁
*/
private Integer isUnlocked;
/**
* 进度百分比
*/
private BigDecimal progress;
/**
* 完成时间
*/
private LocalDateTime completedTime;
/**
* 奖励
*/
private String rewards;
}
@@ -0,0 +1,68 @@
package com.emotion.dto.response.guest;
import com.emotion.dto.response.BaseResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 访客用户响应类
*
* @author huazhongmin
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class GuestUserResponse extends BaseResponse {
/**
* 访客用户ID (格式: guest_xxx)
*/
private String guestUserId;
/**
* 客户端IP地址 (支持IPv6)
*/
private String ipAddress;
/**
* 用户代理信息
*/
private String userAgent;
/**
* 访客昵称
*/
private String nickname;
/**
* 访客头像
*/
private String avatar;
/**
* 最后活跃时间
*/
private LocalDateTime lastActiveTime;
/**
* 会话数量
*/
private Integer conversationCount;
/**
* 消息数量
*/
private Integer messageCount;
/**
* IP地址的地理位置信息
*/
private String location;
/**
* 设备信息
*/
private String deviceInfo;
}
@@ -0,0 +1,68 @@
package com.emotion.dto.response.reward;
import com.emotion.dto.response.BaseResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 奖励响应类
*
* @author huazhongmin
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class RewardResponse extends BaseResponse {
/**
* 课题ID
*/
private String topicId;
/**
* 成就ID
*/
private String achievementId;
/**
* 奖励类型
*/
private String type;
/**
* 奖励名称
*/
private String name;
/**
* 描述
*/
private String description;
/**
* 图标
*/
private String icon;
/**
* 稀有度
*/
private String rarity;
/**
* 奖励值
*/
private String value;
/**
* 获得时间
*/
private LocalDateTime earnedTime;
/**
* 是否新获得
*/
private Integer isNew;
}
@@ -0,0 +1,26 @@
package com.emotion.dto.response.social;
import com.emotion.dto.response.BaseResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
public class SocialContentItemResponse extends BaseResponse {
private String platform;
private String sourceType;
private String sourceUrl;
private String title;
private String content;
private Boolean approvedForAi;
private String importStatus;
private Boolean sourceDeleted;
}
@@ -0,0 +1,30 @@
package com.emotion.dto.response.social;
import com.emotion.dto.response.BaseResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = true)
public class SocialProfileInsightResponse extends BaseResponse {
private String sourceItemId;
private String insightType;
private String label;
private String summary;
private String evidenceExcerpt;
private BigDecimal confidence;
private String status;
private Boolean userEdited;
private Boolean sourceDeleted;
}
@@ -0,0 +1,21 @@
package com.emotion.dto.response.tts;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class TtsTaskResponse {
private String id;
private String sourceType;
private String sourceId;
private String status;
private String voice;
private Double speechRate;
private Double pitch;
private String emotion;
private String audioUrl;
private Long durationMs;
private String errorMessage;
}
@@ -0,0 +1,169 @@
package com.emotion.dto.response.userprofile;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* 用户档案响应对象
*
* @author huazhongmin
* @date 2025-12-21
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserProfileResponse {
/**
* ID
*/
private String id;
/**
* 用户ID
*/
private String userId;
/**
* 昵称
*/
private String nickname;
/**
* 性别
*/
private String gender;
/**
* 星座
*/
private String zodiac;
/**
* 职业
*/
private String profession;
/**
* MBTI人格类型
*/
private String mbti;
/**
* 兴趣爱好 (JSON字符串)
*/
private String hobbies;
/**
* 童年经历日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate childhoodDate;
/**
* 童年经历描述
*/
private String childhoodContent;
/**
* 高光时刻日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate peakDate;
/**
* 高光时刻描述
*/
private String peakContent;
/**
* 低谷时期日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate valleyDate;
/**
* 低谷时期描述
*/
private String valleyContent;
/**
* 未来期许
*/
private String futureVision;
/**
* 理想生活状态
*/
private String idealLife;
/**
* 所在城市
*/
private String city;
/**
* 行业
*/
private String industry;
/**
* 公司
*/
private String company;
/**
* 性格标签 (JSON字符串)
*/
private String personalityTags;
/**
* 用户完整性格标签库 (JSON字符串)
*/
private String personalityTagLibrary;
/**
* 用户完整兴趣爱好库 (JSON字符串)
*/
private String hobbyLibrary;
/**
* 生日
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate birthday;
/**
* 生成的剧本列表 (JSON字符串)
*/
private String scripts;
/**
* 选择的路径列表 (JSON字符串)
*/
private String paths;
/**
* 状态: 0-禁用, 1-正常
*/
private Integer status;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}