This commit is contained in:
2025-09-09 11:13:36 +08:00
parent cf50a9f1fa
commit fcd35c78e5
60 changed files with 2753 additions and 2196 deletions
@@ -4,6 +4,7 @@ import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
@@ -21,6 +22,7 @@ public class EmotionRecordCreateRequest {
* 用户ID
*/
@NotBlank(message = "用户ID不能为空")
@Size(max = 32, message = "用户ID长度不能超过32个字符")
private String userId;
/**
@@ -33,6 +35,7 @@ public class EmotionRecordCreateRequest {
* 情绪类型
*/
@NotBlank(message = "情绪类型不能为空")
@Size(max = 32, message = "情绪类型长度不能超过32个字符")
private String emotionType;
/**
@@ -44,11 +47,13 @@ public class EmotionRecordCreateRequest {
/**
* 触发因素
*/
@Size(max = 768, message = "触发因素长度不能超过768个字符")
private String triggers;
/**
* 描述
*/
@Size(max = 768, message = "描述长度不能超过768个字符")
private String description;
/**
@@ -59,25 +64,30 @@ public class EmotionRecordCreateRequest {
/**
* 天气
*/
@Size(max = 64, message = "天气长度不能超过64个字符")
private String weather;
/**
* 地点
*/
@Size(max = 128, message = "地点长度不能超过128个字符")
private String location;
/**
* 活动
*/
@Size(max = 128, message = "活动长度不能超过128个字符")
private String activity;
/**
* 相关人物
*/
@Size(max = 256, message = "相关人物长度不能超过256个字符")
private String people;
/**
* 备注
*/
@Size(max = 1024, message = "备注长度不能超过1024个字符")
private String notes;
}
@@ -4,6 +4,8 @@ import com.emotion.common.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.Size;
/**
* 情绪记录分页请求类
*
@@ -17,15 +19,18 @@ public class EmotionRecordPageRequest extends BasePageRequest {
/**
* 用户ID(可选)
*/
@Size(max = 32, message = "用户ID长度不能超过32个字符")
private String userId;
/**
* 情绪类型(可选)
*/
@Size(max = 32, message = "情绪类型长度不能超过32个字符")
private String emotionType;
/**
* 地点(可选)
*/
@Size(max = 128, message = "地点长度不能超过128个字符")
private String location;
}
@@ -3,6 +3,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.time.LocalDate;
import java.util.List;
@@ -20,6 +21,7 @@ public class EmotionRecordUpdateRequest {
* 情绪记录ID
*/
@NotBlank(message = "情绪记录ID不能为空")
@Size(max = 32, message = "情绪记录ID长度不能超过32个字符")
private String id;
/**
@@ -30,6 +32,7 @@ public class EmotionRecordUpdateRequest {
/**
* 情绪类型
*/
@Size(max = 32, message = "情绪类型长度不能超过32个字符")
private String emotionType;
/**
@@ -40,11 +43,13 @@ public class EmotionRecordUpdateRequest {
/**
* 触发因素
*/
@Size(max = 768, message = "触发因素长度不能超过768个字符")
private String triggers;
/**
* 描述
*/
@Size(max = 768, message = "描述长度不能超过768个字符")
private String description;
/**
@@ -55,25 +60,30 @@ public class EmotionRecordUpdateRequest {
/**
* 天气
*/
@Size(max = 64, message = "天气长度不能超过64个字符")
private String weather;
/**
* 地点
*/
@Size(max = 128, message = "地点长度不能超过128个字符")
private String location;
/**
* 活动
*/
@Size(max = 128, message = "活动长度不能超过128个字符")
private String activity;
/**
* 相关人物
*/
@Size(max = 256, message = "相关人物长度不能超过256个字符")
private String people;
/**
* 备注
*/
@Size(max = 1024, message = "备注长度不能超过1024个字符")
private String notes;
}
@@ -0,0 +1,14 @@
package com.emotion.dto.request;
import lombok.Data;
/**
* 情绪总结生成请求类
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class EmotionSummaryGenerateRequest {
// 目前情绪总结生成不需要额外参数
}
@@ -0,0 +1,14 @@
package com.emotion.dto.request;
import lombok.Data;
/**
* 情绪总结状态请求类
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class EmotionSummaryStatusRequest {
// 目前情绪总结状态查询不需要额外参数
}
@@ -0,0 +1,65 @@
package com.emotion.dto.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* 话题互动创建请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class TopicInteractionCreateRequest {
/**
* 话题ID
*/
@NotBlank(message = "话题ID不能为空")
@Size(max = 50, message = "话题ID长度不能超过50个字符")
private String topicId;
/**
* 互动类型
*/
@NotBlank(message = "互动类型不能为空")
@Size(max = 50, message = "互动类型长度不能超过50个字符")
private String interactionType;
/**
* 内容
*/
@Size(max = 1000, message = "内容长度不能超过1000个字符")
private String content;
/**
* 用户输入
*/
@Size(max = 1000, message = "用户输入长度不能超过1000个字符")
private String userInput;
/**
* AI回应
*/
@Size(max = 1000, message = "AI回应长度不能超过1000个字符")
private String aiResponse;
/**
* 附件
*/
@Size(max = 500, message = "附件长度不能超过500个字符")
private String attachments;
/**
* 评分
*/
private Integer rating;
/**
* 反馈
*/
@Size(max = 500, message = "反馈长度不能超过500个字符")
private String feedback;
}
@@ -0,0 +1,36 @@
package com.emotion.dto.request;
import com.emotion.common.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.Size;
/**
* 话题互动分页查询请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class TopicInteractionPageRequest extends BasePageRequest {
/**
* 话题ID
*/
@Size(max = 50, message = "话题ID长度不能超过50个字符")
private String topicId;
/**
* 用户ID
*/
@Size(max = 50, message = "用户ID长度不能超过50个字符")
private String userId;
/**
* 互动类型
*/
@Size(max = 50, message = "互动类型长度不能超过50个字符")
private String interactionType;
}
@@ -0,0 +1,70 @@
package com.emotion.dto.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* 话题互动更新请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class TopicInteractionUpdateRequest {
/**
* ID
*/
@NotBlank(message = "ID不能为空")
@Size(max = 50, message = "ID长度不能超过50个字符")
private String id;
/**
* 话题ID
*/
@Size(max = 50, message = "话题ID长度不能超过50个字符")
private String topicId;
/**
* 互动类型
*/
@Size(max = 50, message = "互动类型长度不能超过50个字符")
private String interactionType;
/**
* 内容
*/
@Size(max = 1000, message = "内容长度不能超过1000个字符")
private String content;
/**
* 用户输入
*/
@Size(max = 1000, message = "用户输入长度不能超过1000个字符")
private String userInput;
/**
* AI回应
*/
@Size(max = 1000, message = "AI回应长度不能超过1000个字符")
private String aiResponse;
/**
* 附件
*/
@Size(max = 500, message = "附件长度不能超过500个字符")
private String attachments;
/**
* 评分
*/
private Integer rating;
/**
* 反馈
*/
@Size(max = 500, message = "反馈长度不能超过500个字符")
private String feedback;
}
@@ -0,0 +1,53 @@
package com.emotion.dto.request;
import com.emotion.common.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.Size;
/**
* 用户分页查询请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class UserPageRequest extends BasePageRequest {
/**
* 账号
*/
@Size(max = 20, message = "账号长度不能超过20个字符")
private String account;
/**
* 用户名
*/
@Size(max = 20, message = "用户名长度不能超过20个字符")
private String username;
/**
* 邮箱
*/
@Size(max = 100, message = "邮箱长度不能超过100个字符")
private String email;
/**
* 手机号
*/
@Size(max = 20, message = "手机号长度不能超过20个字符")
private String phone;
/**
* 状态
*/
private Integer status;
/**
* 会员等级
*/
@Size(max = 20, message = "会员等级长度不能超过20个字符")
private String memberLevel;
}
@@ -0,0 +1,39 @@
package com.emotion.dto.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 用户统计创建请求
*
* @author emotion-museum
* @date 2025-09-09
*/
@Data
public class UserStatsCreateRequest extends BaseRequest {
/**
* 用户ID
*/
@NotBlank(message = "用户ID不能为空")
private String userId;
/**
* 统计类型
*/
@NotBlank(message = "统计类型不能为空")
private String statsType;
/**
* 统计值
*/
@NotNull(message = "统计值不能为空")
private Double value;
/**
* 周期
*/
private String period;
}
@@ -0,0 +1,34 @@
package com.emotion.dto.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 用户统计值增加请求
*
* @author emotion-museum
* @date 2025-09-09
*/
@Data
public class UserStatsIncrementRequest extends BaseRequest {
/**
* 用户ID
*/
@NotBlank(message = "用户ID不能为空")
private String userId;
/**
* 统计类型
*/
@NotBlank(message = "统计类型不能为空")
private String statsType;
/**
* 增加值
*/
@NotNull(message = "增加值不能为空")
private Double increment;
}
@@ -0,0 +1,26 @@
package com.emotion.dto.request;
import com.emotion.common.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 用户统计分页查询请求
*
* @author emotion-museum
* @date 2025-09-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class UserStatsPageRequest extends BasePageRequest {
/**
* 用户ID
*/
private String userId;
/**
* 统计类型
*/
private String statsType;
}
@@ -0,0 +1,34 @@
package com.emotion.dto.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 用户统计值更新请求
*
* @author emotion-museum
* @date 2025-09-09
*/
@Data
public class UserStatsUpdateValueRequest extends BaseRequest {
/**
* 用户ID
*/
@NotBlank(message = "用户ID不能为空")
private String userId;
/**
* 统计类型
*/
@NotBlank(message = "统计类型不能为空")
private String statsType;
/**
* 统计值
*/
@NotNull(message = "统计值不能为空")
private Double value;
}
@@ -1,9 +1,9 @@
package com.emotion.dto.request;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.time.LocalDate;
@@ -12,11 +12,16 @@ import java.time.LocalDate;
* 用户更新请求类
*
* @author emotion-museum
* @date 2025-07-24
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class UserUpdateRequest extends BaseRequest {
public class UserUpdateRequest {
/**
* ID
*/
@NotBlank(message = "ID不能为空")
private String id;
/**
* 用户名
@@ -70,4 +75,10 @@ public class UserUpdateRequest extends BaseRequest {
* 状态
*/
private Integer status;
/**
* 会员等级
*/
@Size(max = 20, message = "会员等级长度不能超过20个字符")
private String memberLevel;
}
@@ -0,0 +1,55 @@
package com.emotion.dto.request.growth;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
/**
* 成长话题创建请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class GrowthTopicCreateRequest {
/**
* 课题标题
*/
@NotBlank(message = "标题不能为空")
@Size(max = 100, message = "标题长度不能超过100个字符")
private String title;
/**
* 描述
*/
@Size(max = 500, message = "描述长度不能超过500个字符")
private String description;
/**
* 分类
*/
@NotBlank(message = "分类不能为空")
@Size(max = 50, message = "分类长度不能超过50个字符")
private String category;
/**
* 难度等级
*/
@NotBlank(message = "难度等级不能为空")
@Size(max = 20, message = "难度等级长度不能超过20个字符")
private String difficultyLevel;
/**
* 标签
*/
@Size(max = 200, message = "标签长度不能超过200个字符")
private String tags;
/**
* 结束时间
*/
private LocalDateTime endTime;
}
@@ -0,0 +1,34 @@
package com.emotion.dto.request.growth;
import com.emotion.common.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* 成长话题分页查询请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class GrowthTopicPageRequest extends BasePageRequest {
/**
* 分类
*/
private String category;
/**
* 难度等级
*/
private String difficultyLevel;
/**
* 标签
*/
private String tags;
}
@@ -0,0 +1,58 @@
package com.emotion.dto.request.growth;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
/**
* 成长话题更新请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class GrowthTopicUpdateRequest {
/**
* ID
*/
@NotBlank(message = "ID不能为空")
private String id;
/**
* 课题标题
*/
@Size(max = 100, message = "标题长度不能超过100个字符")
private String title;
/**
* 描述
*/
@Size(max = 500, message = "描述长度不能超过500个字符")
private String description;
/**
* 分类
*/
@Size(max = 50, message = "分类长度不能超过50个字符")
private String category;
/**
* 难度等级
*/
@Size(max = 20, message = "难度等级长度不能超过20个字符")
private String difficultyLevel;
/**
* 标签
*/
@Size(max = 200, message = "标签长度不能超过200个字符")
private String tags;
/**
* 结束时间
*/
private LocalDateTime endTime;
}
@@ -0,0 +1,41 @@
package com.emotion.dto.request.guest;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* 访客用户创建请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class GuestUserCreateRequest {
/**
* 设备ID
*/
@NotBlank(message = "设备ID不能为空")
@Size(max = 100, message = "设备ID长度不能超过100个字符")
private String deviceId;
/**
* IP地址
*/
@Size(max = 50, message = "IP地址长度不能超过50个字符")
private String ipAddress;
/**
* 用户代理
*/
@Size(max = 500, message = "用户代理长度不能超过500个字符")
private String userAgent;
/**
* 地理位置
*/
@Size(max = 100, message = "地理位置长度不能超过100个字符")
private String location;
}
@@ -0,0 +1,31 @@
package com.emotion.dto.request.guest;
import com.emotion.common.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 访客用户分页查询请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class GuestUserPageRequest extends BasePageRequest {
/**
* 设备ID
*/
private String deviceId;
/**
* IP地址
*/
private String ipAddress;
/**
* 用户代理
*/
private String userAgent;
}
@@ -0,0 +1,40 @@
package com.emotion.dto.request.guest;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* 访客用户更新请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class GuestUserUpdateRequest {
/**
* ID
*/
@NotBlank(message = "ID不能为空")
private String id;
/**
* 访客昵称
*/
@Size(max = 50, message = "访客昵称长度不能超过50个字符")
private String nickname;
/**
* 访客头像
*/
@Size(max = 200, message = "访客头像长度不能超过200个字符")
private String avatar;
/**
* 地理位置
*/
@Size(max = 100, message = "地理位置长度不能超过100个字符")
private String location;
}
@@ -0,0 +1,65 @@
package com.emotion.dto.request.reward;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
/**
* 奖励创建请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class RewardCreateRequest {
/**
* 用户ID
*/
@NotBlank(message = "用户ID不能为空")
private String userId;
/**
* 奖励类型
*/
@NotBlank(message = "奖励类型不能为空")
@Size(max = 50, message = "奖励类型长度不能超过50个字符")
private String rewardType;
/**
* 奖励值
*/
@Size(max = 100, message = "奖励值长度不能超过100个字符")
private String value;
/**
* 描述
*/
@Size(max = 200, message = "描述长度不能超过200个字符")
private String description;
/**
* 课题ID
*/
private String topicId;
/**
* 成就ID
*/
private String achievementId;
/**
* 图标
*/
@Size(max = 200, message = "图标长度不能超过200个字符")
private String icon;
/**
* 稀有度
*/
@Size(max = 20, message = "稀有度长度不能超过20个字符")
private String rarity;
}
@@ -0,0 +1,31 @@
package com.emotion.dto.request.reward;
import com.emotion.common.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 奖励分页查询请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class RewardPageRequest extends BasePageRequest {
/**
* 用户ID
*/
private String userId;
/**
* 奖励类型
*/
private String rewardType;
/**
* 来源
*/
private String source;
}
@@ -0,0 +1,67 @@
package com.emotion.dto.request.reward;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* 奖励更新请求
*
* @author emotion-museum
* @date 2025-09-08
*/
@Data
public class RewardUpdateRequest {
/**
* ID
*/
@NotBlank(message = "ID不能为空")
private String id;
/**
* 奖励类型
*/
@Size(max = 50, message = "奖励类型长度不能超过50个字符")
private String rewardType;
/**
* 奖励值
*/
@Size(max = 100, message = "奖励值长度不能超过100个字符")
private String value;
/**
* 描述
*/
@Size(max = 200, message = "描述长度不能超过200个字符")
private String description;
/**
* 课题ID
*/
private String topicId;
/**
* 成就ID
*/
private String achievementId;
/**
* 图标
*/
@Size(max = 200, message = "图标长度不能超过200个字符")
private String icon;
/**
* 稀有度
*/
@Size(max = 20, message = "稀有度长度不能超过20个字符")
private String rarity;
/**
* 是否新获得
*/
private Integer isNew;
}
@@ -0,0 +1,45 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 情绪总结生成响应类
*
* @author emotion-museum
* @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 emotion-museum
* @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,57 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 话题互动响应类
*
* @author emotion-museum
* @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,35 @@
package com.emotion.dto.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 用户统计响应类
*
* @author emotion-museum
* @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,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 emotion-museum
* @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 emotion-museum
* @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 emotion-museum
* @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;
}