feat: 新增后台管理数据模型

- 新增后台管理业务对象(Bo):用户、新闻、活动、非遗项目、传承人、评论查询和操作对象
- 新增后台管理视图对象(Vo):统计数据、排行榜、趋势分析等视图模型
- 为后台管理模块提供完整的数据传输对象支持
This commit is contained in:
Leo 2025-10-15 22:30:10 +08:00
parent e6bad39a56
commit 9a9a279a39
27 changed files with 2421 additions and 0 deletions

View File

@ -0,0 +1,23 @@
package org.leocoder.heritage.domain.model.bo.admin;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* @author Leocoder
* @description [后台评论操作Bo]
*/
@Data
public class HrtCommentAdminBo {
// 评论ID
@NotNull(message = "评论ID不能为空")
private Long id;
// 审核状态0-待审核1-已通过2-已拒绝
private Integer status;
// 审核备注
private String remark;
}

View File

@ -0,0 +1,42 @@
package org.leocoder.heritage.domain.model.bo.admin;
import lombok.Data;
/**
* @author Leocoder
* @description [后台评论查询Bo]
*/
@Data
public class HrtCommentAdminQueryBo {
// 页码
private Integer pageNum = 1;
// 每页数量
private Integer pageSize = 10;
// 用户ID
private Long userId;
// 目标类型heritageinheritornewsevent
private String targetType;
// 目标ID
private Long targetId;
// 评论内容(模糊查询)
private String content;
// 状态0-待审核1-已通过2-已拒绝
private Integer status;
// 开始时间
private String startTime;
// 结束时间
private String endTime;
// 用户昵称或用户名(模糊查询)
private String userKeyword;
}

View File

@ -0,0 +1,86 @@
package org.leocoder.heritage.domain.model.bo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [活动管理BO新增/编辑]
*/
@Data
public class HrtEventAdminBo {
/**
* 主键ID编辑时必填
*/
private Long id;
/**
* 活动标题
*/
@NotBlank(message = "活动标题不能为空")
private String title;
/**
* 活动摘要
*/
private String summary;
/**
* 活动详情
*/
private String content;
/**
* 封面图
*/
private String coverImage;
/**
* 活动地点
*/
private String location;
/**
* 开始时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
/**
* 结束时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
/**
* 最大参与人数
*/
private Integer maxParticipants;
/**
* 报名开始时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime registrationStart;
/**
* 报名结束时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime registrationEnd;
/**
* 状态upcomingongoingfinishedcancelled
*/
private String status;
/**
* 发布状态0-草稿1-已发布
*/
private Integer publishStatus;
}

View File

@ -0,0 +1,72 @@
package org.leocoder.heritage.domain.model.bo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [活动管理查询BO]
*/
@Data
public class HrtEventAdminQueryBo {
/**
* 页码
*/
private Integer pageNum = 1;
/**
* 每页数量
*/
private Integer pageSize = 10;
/**
* 活动标题模糊查询
*/
private String title;
/**
* 活动地点模糊查询
*/
private String location;
/**
* 状态upcomingongoingfinishedcancelled
*/
private String status;
/**
* 关键词搜索标题摘要内容等字段
*/
private String keyword;
/**
* 发布状态0-草稿1-已发布null-全部
*/
private Integer publishStatus;
/**
* 活动开始时间开始
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTimeBegin;
/**
* 活动开始时间结束
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTimeEnd;
/**
* 排序字段view_countstart_timecreate_timecurrent_participants
*/
private String sortField = "create_time";
/**
* 排序方式ascdesc
*/
private String sortOrder = "desc";
}

View File

@ -0,0 +1,111 @@
package org.leocoder.heritage.domain.model.bo.admin;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
/**
* @author Leocoder
* @description [非遗项目管理BO新增/编辑]
*/
@Data
public class HrtHeritageAdminBo {
/**
* 主键ID编辑时必填
*/
private Long id;
/**
* 项目名称
*/
@NotBlank(message = "项目名称不能为空")
private String name;
/**
* 英文名称
*/
private String nameEn;
/**
* 分类traditional-crafttraditional-art等
*/
@NotBlank(message = "分类不能为空")
private String category;
/**
* 级别worldnationalprovincialmunicipalcounty
*/
@NotBlank(message = "级别不能为空")
private String level;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 项目介绍
*/
private String description;
/**
* 历史渊源
*/
private String history;
/**
* 技艺特点
*/
private String skills;
/**
* 文化意义
*/
private String significance;
/**
* 封面图
*/
private String coverImage;
/**
* 图片集合JSON数组
*/
private String images;
/**
* 视频URL
*/
private String videoUrl;
/**
* 标签逗号分隔
*/
private String tags;
/**
* 状态active-正常传承endangered-濒危
*/
private String status;
/**
* 是否精选0-1-
*/
private Integer isFeatured;
/**
* 排序权重
*/
private Integer sortOrder;
/**
* 发布状态0-草稿1-已发布
*/
private Integer publishStatus;
}

View File

@ -0,0 +1,87 @@
package org.leocoder.heritage.domain.model.bo.admin;
import lombok.Data;
/**
* @author Leocoder
* @description [非遗项目管理查询BO]
*/
@Data
public class HrtHeritageAdminQueryBo {
/**
* 页码
*/
private Integer pageNum = 1;
/**
* 每页数量
*/
private Integer pageSize = 10;
/**
* 项目名称模糊查询
*/
private String name;
/**
* 英文名称模糊查询
*/
private String nameEn;
/**
* 分类traditional-crafttraditional-art等
*/
private String category;
/**
* 级别worldnationalprovincialmunicipalcounty
*/
private String level;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 状态active-正常传承endangered-濒危
*/
private String status;
/**
* 标签模糊匹配
*/
private String tag;
/**
* 关键词搜索名称描述历史等字段
*/
private String keyword;
/**
* 发布状态0-草稿1-已发布null-全部
*/
private Integer publishStatus;
/**
* 是否精选0-1-null-全部
*/
private Integer isFeatured;
/**
* 排序字段view_countlike_countfavorite_countcreate_timesort_order
*/
private String sortField = "create_time";
/**
* 排序方式ascdesc
*/
private String sortOrder = "desc";
}

View File

@ -0,0 +1,114 @@
package org.leocoder.heritage.domain.model.bo.admin;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
/**
* @author Leocoder
* @description [传承人管理BO新增/编辑]
*/
@Data
public class HrtInheritorAdminBo {
/**
* 主键ID编辑时必填
*/
private Long id;
/**
* 姓名
*/
@NotBlank(message = "姓名不能为空")
private String name;
/**
* 英文名
*/
private String nameEn;
/**
* 性别1-2-
*/
private Integer gender;
/**
* 出生年份
*/
private Integer birthYear;
/**
* 头像
*/
private String avatar;
/**
* 关联非遗项目ID
*/
private Long heritageId;
/**
* 传承项目名称
*/
private String heritageName;
/**
* 传承人级别nationalprovincial等
*/
private String level;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 个人简介
*/
private String introduction;
/**
* 传承故事
*/
private String story;
/**
* 主要成就
*/
private String achievements;
/**
* 代表作品JSON数组
*/
private String works;
/**
* 图片集合JSON数组
*/
private String images;
/**
* 视频URL
*/
private String videoUrl;
/**
* 是否精选0-1-
*/
private Integer isFeatured;
/**
* 排序权重
*/
private Integer sortOrder;
/**
* 发布状态0-草稿1-已发布
*/
private Integer publishStatus;
}

View File

@ -0,0 +1,87 @@
package org.leocoder.heritage.domain.model.bo.admin;
import lombok.Data;
/**
* @author Leocoder
* @description [传承人管理查询BO]
*/
@Data
public class HrtInheritorAdminQueryBo {
/**
* 页码
*/
private Integer pageNum = 1;
/**
* 每页数量
*/
private Integer pageSize = 10;
/**
* 姓名模糊查询
*/
private String name;
/**
* 英文名模糊查询
*/
private String nameEn;
/**
* 性别1-2-
*/
private Integer gender;
/**
* 关联非遗项目ID
*/
private Long heritageId;
/**
* 传承项目名称模糊查询
*/
private String heritageName;
/**
* 传承人级别nationalprovincial等
*/
private String level;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 关键词搜索姓名简介故事等字段
*/
private String keyword;
/**
* 发布状态0-草稿1-已发布null-全部
*/
private Integer publishStatus;
/**
* 是否精选0-1-null-全部
*/
private Integer isFeatured;
/**
* 排序字段view_countlike_countcreate_timesort_order
*/
private String sortField = "create_time";
/**
* 排序方式ascdesc
*/
private String sortOrder = "desc";
}

View File

@ -0,0 +1,78 @@
package org.leocoder.heritage.domain.model.bo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [新闻资讯管理BO新增/编辑]
*/
@Data
public class HrtNewsAdminBo {
/**
* 主键ID编辑时必填
*/
private Long id;
/**
* 标题
*/
@NotBlank(message = "标题不能为空")
private String title;
/**
* 摘要
*/
private String summary;
/**
* 内容
*/
private String content;
/**
* 封面图
*/
private String coverImage;
/**
* 作者
*/
private String author;
/**
* 来源
*/
private String source;
/**
* 分类newsactivitynotice
*/
private String category;
/**
* 标签逗号分隔
*/
private String tags;
/**
* 是否置顶0-1-
*/
private Integer isTop;
/**
* 发布时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime publishTime;
/**
* 发布状态0-草稿1-已发布
*/
private Integer publishStatus;
}

View File

@ -0,0 +1,87 @@
package org.leocoder.heritage.domain.model.bo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [新闻资讯管理查询BO]
*/
@Data
public class HrtNewsAdminQueryBo {
/**
* 页码
*/
private Integer pageNum = 1;
/**
* 每页数量
*/
private Integer pageSize = 10;
/**
* 标题模糊查询
*/
private String title;
/**
* 作者模糊查询
*/
private String author;
/**
* 来源模糊查询
*/
private String source;
/**
* 分类newsactivitynotice
*/
private String category;
/**
* 标签模糊匹配
*/
private String tag;
/**
* 关键词搜索标题摘要内容等字段
*/
private String keyword;
/**
* 是否置顶0-1-null-全部
*/
private Integer isTop;
/**
* 发布状态0-草稿1-已发布null-全部
*/
private Integer publishStatus;
/**
* 发布开始时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime publishTimeStart;
/**
* 发布结束时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime publishTimeEnd;
/**
* 排序字段view_countlike_countpublish_timecreate_time
*/
private String sortField = "create_time";
/**
* 排序方式ascdesc
*/
private String sortOrder = "desc";
}

View File

@ -0,0 +1,87 @@
package org.leocoder.heritage.domain.model.bo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
import java.time.LocalDate;
/**
* @author Leocoder
* @description [前台用户管理BO新增/编辑]
*/
@Data
public class HrtUserAdminBo {
/**
* 主键ID编辑时必填
*/
private Long id;
/**
* 用户名唯一
*/
@NotBlank(message = "用户名不能为空")
private String username;
/**
* 密码新增时必填编辑时选填
*/
private String password;
/**
* 昵称
*/
private String nickname;
/**
* 头像URL
*/
private String avatar;
/**
* 邮箱唯一
*/
@Pattern(regexp = "^$|^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$", message = "邮箱格式不正确")
private String email;
/**
* 手机号唯一
*/
@Pattern(regexp = "^$|^1[3-9]\\d{9}$", message = "手机号格式不正确")
private String phone;
/**
* 性别0-未知1-2-
*/
private Integer gender;
/**
* 生日
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private LocalDate birthday;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 状态0-禁用1-正常
*/
private Integer status;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,92 @@
package org.leocoder.heritage.domain.model.bo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [前台用户管理查询BO]
*/
@Data
public class HrtUserAdminQueryBo {
/**
* 页码
*/
private Integer pageNum = 1;
/**
* 每页数量
*/
private Integer pageSize = 10;
/**
* 用户名模糊查询
*/
private String username;
/**
* 昵称模糊查询
*/
private String nickname;
/**
* 手机号精确查询
*/
private String phone;
/**
* 邮箱精确查询
*/
private String email;
/**
* 关键词搜索用户名昵称手机号邮箱等字段
*/
private String keyword;
/**
* 状态0-禁用1-正常null-全部
*/
private Integer status;
/**
* 性别0-未知1-2-null-全部
*/
private Integer gender;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 注册时间开始
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTimeBegin;
/**
* 注册时间结束
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTimeEnd;
/**
* 排序字段create_timelogin_time
*/
private String sortField = "create_time";
/**
* 排序方式ascdesc
*/
private String sortOrder = "desc";
}

View File

@ -0,0 +1,77 @@
package org.leocoder.heritage.domain.model.vo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [后台评论详情Vo]
*/
@Data
public class HrtCommentAdminDetailVo {
// 评论ID
private Long id;
// 用户ID
private Long userId;
// 用户名
private String username;
// 用户昵称
private String nickname;
// 用户头像
private String avatar;
// 用户手机号
private String phone;
// 用户邮箱
private String email;
// 目标类型heritageinheritornewsevent
private String targetType;
// 目标ID
private Long targetId;
// 目标标题
private String targetTitle;
// 评论内容
private String content;
// 评分1-5星仅针对非遗项目
private Integer rating;
// 父评论ID0表示一级评论
private Long parentId;
// 父评论内容
private String parentContent;
// 父评论用户昵称
private String parentUserNickname;
// 点赞数
private Integer likeCount;
// 状态0-待审核1-已通过2-已拒绝
private Integer status;
// 回复数量
private Integer replyCount;
// 创建时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
// 更新时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,62 @@
package org.leocoder.heritage.domain.model.vo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [后台评论列表Vo]
*/
@Data
public class HrtCommentAdminVo {
// 评论ID
private Long id;
// 用户ID
private Long userId;
// 用户名
private String username;
// 用户昵称
private String nickname;
// 用户头像
private String avatar;
// 目标类型heritageinheritornewsevent
private String targetType;
// 目标ID
private Long targetId;
// 目标标题
private String targetTitle;
// 评论内容
private String content;
// 评分1-5星仅针对非遗项目
private Integer rating;
// 父评论ID0表示一级评论
private Long parentId;
// 点赞数
private Integer likeCount;
// 状态0-待审核1-已通过2-已拒绝
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;
}

View File

@ -0,0 +1,116 @@
package org.leocoder.heritage.domain.model.vo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [活动管理详情VO]
*/
@Data
public class HrtEventAdminDetailVo {
/**
* 主键ID
*/
private Long id;
/**
* 活动标题
*/
private String title;
/**
* 活动摘要
*/
private String summary;
/**
* 活动详情
*/
private String content;
/**
* 封面图
*/
private String coverImage;
/**
* 活动地点
*/
private String location;
/**
* 开始时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
/**
* 结束时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
/**
* 最大参与人数
*/
private Integer maxParticipants;
/**
* 当前参与人数
*/
private Integer currentParticipants;
/**
* 报名开始时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime registrationStart;
/**
* 报名结束时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime registrationEnd;
/**
* 状态upcomingongoingfinishedcancelled
*/
private String status;
/**
* 浏览量
*/
private Integer viewCount;
/**
* 发布状态0-草稿1-已发布
*/
private Integer publishStatus;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,111 @@
package org.leocoder.heritage.domain.model.vo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [活动管理列表VO]
*/
@Data
public class HrtEventAdminVo {
/**
* 主键ID
*/
private Long id;
/**
* 活动标题
*/
private String title;
/**
* 活动摘要
*/
private String summary;
/**
* 封面图
*/
private String coverImage;
/**
* 活动地点
*/
private String location;
/**
* 开始时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
/**
* 结束时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
/**
* 最大参与人数
*/
private Integer maxParticipants;
/**
* 当前参与人数
*/
private Integer currentParticipants;
/**
* 报名开始时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime registrationStart;
/**
* 报名结束时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime registrationEnd;
/**
* 状态upcomingongoingfinishedcancelled
*/
private String status;
/**
* 浏览量
*/
private Integer viewCount;
/**
* 发布状态0-草稿1-已发布
*/
private Integer publishStatus;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,152 @@
package org.leocoder.heritage.domain.model.vo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [非遗项目管理详情VO]
*/
@Data
public class HrtHeritageAdminDetailVo {
/**
* 主键ID
*/
private Long id;
/**
* 项目名称
*/
private String name;
/**
* 英文名称
*/
private String nameEn;
/**
* 分类traditional-crafttraditional-art等
*/
private String category;
/**
* 级别worldnationalprovincialmunicipalcounty
*/
private String level;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 项目介绍
*/
private String description;
/**
* 历史渊源
*/
private String history;
/**
* 技艺特点
*/
private String skills;
/**
* 文化意义
*/
private String significance;
/**
* 封面图
*/
private String coverImage;
/**
* 图片集合JSON数组
*/
private String images;
/**
* 视频URL
*/
private String videoUrl;
/**
* 标签逗号分隔
*/
private String tags;
/**
* 状态active-正常传承endangered-濒危
*/
private String status;
/**
* 浏览量
*/
private Integer viewCount;
/**
* 点赞数
*/
private Integer likeCount;
/**
* 收藏数
*/
private Integer favoriteCount;
/**
* 评论数
*/
private Integer commentCount;
/**
* 是否精选0-1-
*/
private Integer isFeatured;
/**
* 排序权重
*/
private Integer sortOrder;
/**
* 发布状态0-草稿1-已发布
*/
private Integer publishStatus;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,127 @@
package org.leocoder.heritage.domain.model.vo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [非遗项目管理列表VO]
*/
@Data
public class HrtHeritageAdminVo {
/**
* 主键ID
*/
private Long id;
/**
* 项目名称
*/
private String name;
/**
* 英文名称
*/
private String nameEn;
/**
* 分类traditional-crafttraditional-art等
*/
private String category;
/**
* 级别worldnationalprovincialmunicipalcounty
*/
private String level;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 项目介绍简短摘要
*/
private String description;
/**
* 封面图
*/
private String coverImage;
/**
* 标签逗号分隔
*/
private String tags;
/**
* 状态active-正常传承endangered-濒危
*/
private String status;
/**
* 浏览量
*/
private Integer viewCount;
/**
* 点赞数
*/
private Integer likeCount;
/**
* 收藏数
*/
private Integer favoriteCount;
/**
* 评论数
*/
private Integer commentCount;
/**
* 是否精选0-1-
*/
private Integer isFeatured;
/**
* 排序权重
*/
private Integer sortOrder;
/**
* 发布状态0-草稿1-已发布
*/
private Integer publishStatus;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,147 @@
package org.leocoder.heritage.domain.model.vo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [传承人管理详情VO]
*/
@Data
public class HrtInheritorAdminDetailVo {
/**
* 主键ID
*/
private Long id;
/**
* 姓名
*/
private String name;
/**
* 英文名
*/
private String nameEn;
/**
* 性别1-2-
*/
private Integer gender;
/**
* 出生年份
*/
private Integer birthYear;
/**
* 头像
*/
private String avatar;
/**
* 关联非遗项目ID
*/
private Long heritageId;
/**
* 传承项目名称
*/
private String heritageName;
/**
* 传承人级别nationalprovincial等
*/
private String level;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 个人简介
*/
private String introduction;
/**
* 传承故事
*/
private String story;
/**
* 主要成就
*/
private String achievements;
/**
* 代表作品JSON数组
*/
private String works;
/**
* 图片集合JSON数组
*/
private String images;
/**
* 视频URL
*/
private String videoUrl;
/**
* 浏览量
*/
private Integer viewCount;
/**
* 点赞数
*/
private Integer likeCount;
/**
* 是否精选0-1-
*/
private Integer isFeatured;
/**
* 排序权重
*/
private Integer sortOrder;
/**
* 发布状态0-草稿1-已发布
*/
private Integer publishStatus;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,122 @@
package org.leocoder.heritage.domain.model.vo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [传承人管理列表VO]
*/
@Data
public class HrtInheritorAdminVo {
/**
* 主键ID
*/
private Long id;
/**
* 姓名
*/
private String name;
/**
* 英文名
*/
private String nameEn;
/**
* 性别1-2-
*/
private Integer gender;
/**
* 出生年份
*/
private Integer birthYear;
/**
* 头像
*/
private String avatar;
/**
* 关联非遗项目ID
*/
private Long heritageId;
/**
* 传承项目名称
*/
private String heritageName;
/**
* 传承人级别nationalprovincial等
*/
private String level;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 个人简介简短摘要
*/
private String introduction;
/**
* 浏览量
*/
private Integer viewCount;
/**
* 点赞数
*/
private Integer likeCount;
/**
* 是否精选0-1-
*/
private Integer isFeatured;
/**
* 排序权重
*/
private Integer sortOrder;
/**
* 发布状态0-草稿1-已发布
*/
private Integer publishStatus;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,108 @@
package org.leocoder.heritage.domain.model.vo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [新闻资讯管理详情VO]
*/
@Data
public class HrtNewsAdminDetailVo {
/**
* 主键ID
*/
private Long id;
/**
* 标题
*/
private String title;
/**
* 摘要
*/
private String summary;
/**
* 内容
*/
private String content;
/**
* 封面图
*/
private String coverImage;
/**
* 作者
*/
private String author;
/**
* 来源
*/
private String source;
/**
* 分类newsactivitynotice
*/
private String category;
/**
* 标签逗号分隔
*/
private String tags;
/**
* 浏览量
*/
private Integer viewCount;
/**
* 点赞数
*/
private Integer likeCount;
/**
* 是否置顶0-1-
*/
private Integer isTop;
/**
* 发布时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime publishTime;
/**
* 发布状态0-草稿1-已发布
*/
private Integer publishStatus;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,103 @@
package org.leocoder.heritage.domain.model.vo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [新闻资讯管理列表VO]
*/
@Data
public class HrtNewsAdminVo {
/**
* 主键ID
*/
private Long id;
/**
* 标题
*/
private String title;
/**
* 摘要
*/
private String summary;
/**
* 封面图
*/
private String coverImage;
/**
* 作者
*/
private String author;
/**
* 来源
*/
private String source;
/**
* 分类newsactivitynotice
*/
private String category;
/**
* 标签逗号分隔
*/
private String tags;
/**
* 浏览量
*/
private Integer viewCount;
/**
* 点赞数
*/
private Integer likeCount;
/**
* 是否置顶0-1-
*/
private Integer isTop;
/**
* 发布时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime publishTime;
/**
* 发布状态0-草稿1-已发布
*/
private Integer publishStatus;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,33 @@
package org.leocoder.heritage.domain.model.vo.admin;
import lombok.Data;
/**
* @author Leocoder
* @description [排行榜数据Vo]
*/
@Data
public class HrtRankingVo {
// 排名
private Integer rank;
// ID
private Long id;
// 标题/名称
private String title;
// 类型(heritage/inheritor/news/event)
private String type;
// 封面图
private String coverImage;
// 数值(浏览量/收藏数等)
private Long value;
// 数值类型描述(浏览量/收藏数)
private String valueType;
}

View File

@ -0,0 +1,79 @@
package org.leocoder.heritage.domain.model.vo.admin;
import lombok.Data;
/**
* @author Leocoder
* @description [非遗平台统计数据Vo]
*/
@Data
public class HrtStatisticsVo {
// ===== 核心数据统计 =====
// 非遗项目总数
private Long heritageTotal;
// 今日新增非遗项目数
private Long heritageTodayCount;
// 传承人总数
private Long inheritorTotal;
// 今日新增传承人数
private Long inheritorTodayCount;
// 用户总数
private Long userTotal;
// 今日新增用户数
private Long userTodayCount;
// 活动总数
private Long eventTotal;
// 今日新增活动数
private Long eventTodayCount;
// 新闻总数
private Long newsTotal;
// 今日新增新闻数
private Long newsTodayCount;
// ===== 用户行为统计 =====
// 评论总数
private Long commentTotal;
// 今日新增评论数
private Long commentTodayCount;
// 待审核评论数
private Long commentPendingCount;
// 点赞总数
private Long likeTotal;
// 今日新增点赞数
private Long likeTodayCount;
// 收藏总数
private Long favoriteTotal;
// 今日新增收藏数
private Long favoriteTodayCount;
// 浏览总数
private Long viewTotal;
// 今日浏览数
private Long viewTodayCount;
// 活动报名总数
private Long registrationTotal;
// 今日活动报名数
private Long registrationTodayCount;
}

View File

@ -0,0 +1,18 @@
package org.leocoder.heritage.domain.model.vo.admin;
import lombok.Data;
/**
* @author Leocoder
* @description [趋势数据Vo]
*/
@Data
public class HrtTrendVo {
// 日期
private String date;
// 数值
private Long value;
}

View File

@ -0,0 +1,100 @@
package org.leocoder.heritage.domain.model.vo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [前台用户管理详情VO]
*/
@Data
public class HrtUserAdminDetailVo {
/**
* 主键ID
*/
private Long id;
/**
* 用户名
*/
private String username;
/**
* 昵称
*/
private String nickname;
/**
* 头像URL
*/
private String avatar;
/**
* 邮箱
*/
private String email;
/**
* 手机号
*/
private String phone;
/**
* 性别0-未知1-2-
*/
private Integer gender;
/**
* 生日
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private LocalDate birthday;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 状态0-禁用1-正常
*/
private Integer status;
/**
* 最后登录IP
*/
private String loginIp;
/**
* 最后登录时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime loginTime;
/**
* 创建时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 更新时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,100 @@
package org.leocoder.heritage.domain.model.vo.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* @author Leocoder
* @description [前台用户管理列表VO]
*/
@Data
public class HrtUserAdminVo {
/**
* 主键ID
*/
private Long id;
/**
* 用户名
*/
private String username;
/**
* 昵称
*/
private String nickname;
/**
* 头像URL
*/
private String avatar;
/**
* 邮箱
*/
private String email;
/**
* 手机号
*/
private String phone;
/**
* 性别0-未知1-2-
*/
private Integer gender;
/**
* 生日
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private LocalDate birthday;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 状态0-禁用1-正常
*/
private Integer status;
/**
* 最后登录IP
*/
private String loginIp;
/**
* 最后登录时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime loginTime;
/**
* 创建时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 更新时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
/**
* 备注
*/
private String remark;
}