From d082e2f830a4b11788d0cee91bd51b18ccfff858 Mon Sep 17 00:00:00 2001 From: Leo Date: Mon, 13 Oct 2025 20:35:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=89=8D=E5=8F=B0?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E6=95=B0=E6=8D=AE=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增TargetTypeEnum目标类型枚举(非遗项目、传承人、新闻、活动) - 新增前台用户实体类HrtUser - 新增非遗项目实体类HrtHeritage - 新增传承人实体类HrtInheritor - 新增新闻资讯实体类HrtNews - 新增活动实体类HrtEvent - 新增评论实体类HrtComment - 新增收藏实体类HrtFavorite - 新增点赞实体类HrtLike - 新增浏览历史实体类HrtViewHistory - 新增活动报名实体类HrtEventRegistration - 新增所有实体对应的VO类(查询、新增、更新等) --- .../heritage/domain/enums/TargetTypeEnum.java | 87 ++++++++ .../domain/model/vo/portal/CommentAddVo.java | 44 ++++ .../domain/model/vo/portal/CommentItemVo.java | 87 ++++++++ .../model/vo/portal/CommentQueryVo.java | 41 ++++ .../domain/model/vo/portal/EventDetailVo.java | 99 +++++++++ .../domain/model/vo/portal/EventListVo.java | 89 ++++++++ .../domain/model/vo/portal/EventQueryVo.java | 32 +++ .../model/vo/portal/EventRegistrationVo.java | 31 +++ .../model/vo/portal/FavoriteItemVo.java | 61 ++++++ .../model/vo/portal/FavoriteOperateVo.java | 26 +++ .../model/vo/portal/FavoriteQueryVo.java | 27 +++ .../model/vo/portal/HrtHeritageDetailVo.java | 132 ++++++++++++ .../model/vo/portal/HrtHeritageListVo.java | 101 +++++++++ .../model/vo/portal/HrtHeritageQueryVo.java | 72 +++++++ .../model/vo/portal/HrtInheritorDetailVo.java | 127 +++++++++++ .../model/vo/portal/HrtInheritorListVo.java | 96 +++++++++ .../model/vo/portal/HrtInheritorQueryVo.java | 62 ++++++ .../model/vo/portal/HrtLoginResultVo.java | 32 +++ .../domain/model/vo/portal/HrtLoginVo.java | 30 +++ .../domain/model/vo/portal/HrtRegisterVo.java | 55 +++++ .../domain/model/vo/portal/HrtUserInfoVo.java | 88 ++++++++ .../domain/model/vo/portal/LikeOperateVo.java | 26 +++ .../model/vo/portal/MyCommentQueryVo.java | 27 +++ .../vo/portal/MyEventRegistrationItemVo.java | 78 +++++++ .../vo/portal/MyEventRegistrationVo.java | 27 +++ .../domain/model/vo/portal/NewsDetailVo.java | 91 ++++++++ .../domain/model/vo/portal/NewsListVo.java | 76 +++++++ .../domain/model/vo/portal/NewsQueryVo.java | 32 +++ .../model/vo/portal/UserAvatarUpdateVo.java | 19 ++ .../model/vo/portal/UserPasswordUpdateVo.java | 33 +++ .../model/vo/portal/UserProfileUpdateVo.java | 55 +++++ .../domain/model/vo/portal/UserProfileVo.java | 73 +++++++ .../domain/model/vo/portal/UserStatsVo.java | 37 ++++ .../model/vo/portal/ViewHistoryItemVo.java | 51 +++++ .../model/vo/portal/ViewHistoryQueryVo.java | 27 +++ .../domain/pojo/portal/HrtComment.java | 103 +++++++++ .../heritage/domain/pojo/portal/HrtEvent.java | 151 ++++++++++++++ .../pojo/portal/HrtEventRegistration.java | 82 ++++++++ .../domain/pojo/portal/HrtFavorite.java | 65 ++++++ .../domain/pojo/portal/HrtHeritage.java | 197 ++++++++++++++++++ .../domain/pojo/portal/HrtInheritor.java | 189 +++++++++++++++++ .../heritage/domain/pojo/portal/HrtLike.java | 65 ++++++ .../heritage/domain/pojo/portal/HrtNews.java | 142 +++++++++++++ .../heritage/domain/pojo/portal/HrtUser.java | 143 +++++++++++++ .../domain/pojo/portal/HrtViewHistory.java | 72 +++++++ 45 files changed, 3280 insertions(+) create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/enums/TargetTypeEnum.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/CommentAddVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/CommentItemVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/CommentQueryVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventDetailVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventListVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventQueryVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventRegistrationVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/FavoriteItemVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/FavoriteOperateVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/FavoriteQueryVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtHeritageDetailVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtHeritageListVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtHeritageQueryVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtInheritorDetailVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtInheritorListVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtInheritorQueryVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtLoginResultVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtLoginVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtRegisterVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtUserInfoVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/LikeOperateVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/MyCommentQueryVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/MyEventRegistrationItemVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/MyEventRegistrationVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/NewsDetailVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/NewsListVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/NewsQueryVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserAvatarUpdateVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserPasswordUpdateVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserProfileUpdateVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserProfileVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserStatsVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/ViewHistoryItemVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/ViewHistoryQueryVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtComment.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtEvent.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtEventRegistration.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtFavorite.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtHeritage.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtInheritor.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtLike.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtNews.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtUser.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtViewHistory.java diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/enums/TargetTypeEnum.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/enums/TargetTypeEnum.java new file mode 100644 index 0000000..c070ca7 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/enums/TargetTypeEnum.java @@ -0,0 +1,87 @@ +package org.leocoder.heritage.domain.enums; + +import lombok.Getter; + +/** + * @author Leocoder + * @description [目标类型枚举] + */ +@Getter +public enum TargetTypeEnum { + + /** + * 非遗项目 + */ + HERITAGE("heritage", "非遗项目"), + + /** + * 传承人 + */ + INHERITOR("inheritor", "传承人"), + + /** + * 新闻资讯 + */ + NEWS("news", "新闻资讯"), + + /** + * 评论(仅点赞支持) + */ + COMMENT("comment", "评论"); + + /** + * 类型代码 + */ + private final String code; + + /** + * 类型名称 + */ + private final String name; + + TargetTypeEnum(String code, String name) { + this.code = code; + this.name = name; + } + + /** + * @description [根据代码获取枚举] + * @author Leocoder + */ + public static TargetTypeEnum fromCode(String code) { + for (TargetTypeEnum type : values()) { + if (type.getCode().equals(code)) { + return type; + } + } + return null; + } + + /** + * @description [验证代码是否有效] + * @author Leocoder + */ + public static boolean isValid(String code) { + return fromCode(code) != null; + } + + /** + * @description [验证是否支持收藏] + * @author Leocoder + */ + public static boolean isFavoriteSupported(String code) { + TargetTypeEnum type = fromCode(code); + // 收藏不支持评论类型 + return type != null && type != COMMENT; + } + + /** + * @description [验证是否支持点赞] + * @author Leocoder + */ + public static boolean isLikeSupported(String code) { + // 点赞支持所有类型 + return isValid(code); + } + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/CommentAddVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/CommentAddVo.java new file mode 100644 index 0000000..8c06e85 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/CommentAddVo.java @@ -0,0 +1,44 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import jakarta.validation.constraints.*; +import lombok.Data; + +/** + * @author Leocoder + * @description [发表评论请求VO] + */ +@Data +public class CommentAddVo { + + /** + * 目标类型:heritage、inheritor、news、event + */ + @NotBlank(message = "目标类型不能为空") + private String targetType; + + /** + * 目标ID + */ + @NotNull(message = "目标ID不能为空") + private Long targetId; + + /** + * 评论内容 + */ + @NotBlank(message = "评论内容不能为空") + @Size(min = 1, max = 500, message = "评论内容长度必须在1-500字符之间") + private String content; + + /** + * 评分:1-5星(仅针对非遗项目,可选) + */ + @Min(value = 1, message = "评分不能小于1星") + @Max(value = 5, message = "评分不能大于5星") + private Integer rating; + + /** + * 父评论ID(0或null表示一级评论) + */ + private Long parentId; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/CommentItemVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/CommentItemVo.java new file mode 100644 index 0000000..0041a44 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/CommentItemVo.java @@ -0,0 +1,87 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author Leocoder + * @description [评论项展示VO] + */ +@Data +public class CommentItemVo { + + /** + * 评论ID + */ + private Long id; + + /** + * 用户ID + */ + private Long userId; + + /** + * 用户昵称 + */ + private String userName; + + /** + * 用户头像 + */ + private String userAvatar; + + /** + * 目标类型:heritage、inheritor、news、event + */ + private String targetType; + + /** + * 目标ID + */ + private Long targetId; + + /** + * 评论内容 + */ + private String content; + + /** + * 评分:1-5星(仅针对非遗项目) + */ + private Integer rating; + + /** + * 父评论ID(0表示一级评论) + */ + private Long parentId; + + /** + * 点赞数 + */ + private Integer likeCount; + + /** + * 当前用户是否已点赞 + */ + private Boolean isLiked = false; + + /** + * 创建时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 回复列表(仅一级评论包含) + */ + private List replies; + + /** + * 回复数量 + */ + private Integer replyCount = 0; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/CommentQueryVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/CommentQueryVo.java new file mode 100644 index 0000000..ffc1dbf --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/CommentQueryVo.java @@ -0,0 +1,41 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author Leocoder + * @description [评论列表查询VO] + */ +@Data +public class CommentQueryVo { + + /** + * 页码 + */ + private Integer pageNum = 1; + + /** + * 每页数量 + */ + private Integer pageSize = 10; + + /** + * 目标类型:heritage、inheritor、news、event + */ + @NotBlank(message = "目标类型不能为空") + private String targetType; + + /** + * 目标ID + */ + @NotNull(message = "目标ID不能为空") + private Long targetId; + + /** + * 排序方式:latest-最新、hottest-最热(默认最新) + */ + private String sortType = "latest"; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventDetailVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventDetailVo.java new file mode 100644 index 0000000..fd9365b --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventDetailVo.java @@ -0,0 +1,99 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [活动详情展示VO] + */ +@Data +public class EventDetailVo { + + /** + * 活动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; + + /** + * 状态:upcoming、ongoing、finished、cancelled + */ + private String status; + + /** + * 浏览量 + */ + private Integer viewCount; + + /** + * 是否已报名 + */ + private Boolean isRegistered = false; + + /** + * 是否可以报名 + */ + private Boolean canRegister = false; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventListVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventListVo.java new file mode 100644 index 0000000..2866352 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventListVo.java @@ -0,0 +1,89 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [活动列表展示VO] + */ +@Data +public class EventListVo { + + /** + * 活动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; + + /** + * 状态:upcoming、ongoing、finished、cancelled + */ + private String status; + + /** + * 浏览量 + */ + private Integer viewCount; + + /** + * 是否已报名 + */ + private Boolean isRegistered = false; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventQueryVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventQueryVo.java new file mode 100644 index 0000000..04d3369 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventQueryVo.java @@ -0,0 +1,32 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import lombok.Data; + +/** + * @author Leocoder + * @description [活动列表查询VO] + */ +@Data +public class EventQueryVo { + + /** + * 页码 + */ + private Integer pageNum = 1; + + /** + * 每页数量 + */ + private Integer pageSize = 10; + + /** + * 状态:upcoming-即将开始、ongoing-进行中、finished-已结束(不传则查询所有) + */ + private String status; + + /** + * 关键词搜索 + */ + private String keyword; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventRegistrationVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventRegistrationVo.java new file mode 100644 index 0000000..a00370f --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/EventRegistrationVo.java @@ -0,0 +1,31 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; +import lombok.Data; + +/** + * @author Leocoder + * @description [活动报名请求VO] + */ +@Data +public class EventRegistrationVo { + + /** + * 活动ID + */ + @NotNull(message = "活动ID不能为空") + private Long eventId; + + /** + * 联系电话 + */ + @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确") + private String phone; + + /** + * 备注信息 + */ + private String remark; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/FavoriteItemVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/FavoriteItemVo.java new file mode 100644 index 0000000..58b6152 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/FavoriteItemVo.java @@ -0,0 +1,61 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [收藏项展示VO] + */ +@Data +public class FavoriteItemVo { + + /** + * 收藏ID + */ + private Long id; + + /** + * 目标类型:heritage、inheritor、news + */ + private String targetType; + + /** + * 目标ID + */ + private Long targetId; + + /** + * 目标标题/名称 + */ + private String targetTitle; + + /** + * 目标封面图/头像 + */ + private String targetCover; + + /** + * 目标描述/简介 + */ + private String targetDescription; + + /** + * 目标浏览量 + */ + private Integer targetViewCount; + + /** + * 目标点赞数 + */ + private Integer targetLikeCount; + + /** + * 收藏时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/FavoriteOperateVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/FavoriteOperateVo.java new file mode 100644 index 0000000..8a8eaeb --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/FavoriteOperateVo.java @@ -0,0 +1,26 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author Leocoder + * @description [收藏操作请求VO] + */ +@Data +public class FavoriteOperateVo { + + /** + * 目标类型:heritage、inheritor、news + */ + @NotBlank(message = "目标类型不能为空") + private String targetType; + + /** + * 目标ID + */ + @NotNull(message = "目标ID不能为空") + private Long targetId; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/FavoriteQueryVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/FavoriteQueryVo.java new file mode 100644 index 0000000..9279111 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/FavoriteQueryVo.java @@ -0,0 +1,27 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import lombok.Data; + +/** + * @author Leocoder + * @description [我的收藏列表查询VO] + */ +@Data +public class FavoriteQueryVo { + + /** + * 页码 + */ + private Integer pageNum = 1; + + /** + * 每页数量 + */ + private Integer pageSize = 10; + + /** + * 目标类型:heritage、inheritor、news(不传则查询所有) + */ + private String targetType; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtHeritageDetailVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtHeritageDetailVo.java new file mode 100644 index 0000000..8d437a5 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtHeritageDetailVo.java @@ -0,0 +1,132 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [非遗项目详情展示VO] + */ +@Data +public class HrtHeritageDetailVo { + + /** + * 主键ID + */ + private Long id; + + /** + * 项目名称 + */ + private String name; + + /** + * 英文名称 + */ + private String nameEn; + + /** + * 分类:traditional-craft、traditional-art等 + */ + private String category; + + /** + * 级别:world、national、provincial、municipal、county + */ + 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; + + /** + * 创建时间 + */ + @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; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtHeritageListVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtHeritageListVo.java new file mode 100644 index 0000000..b0f21dd --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtHeritageListVo.java @@ -0,0 +1,101 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [非遗项目列表展示VO] + */ +@Data +public class HrtHeritageListVo { + + /** + * 主键ID + */ + private Long id; + + /** + * 项目名称 + */ + private String name; + + /** + * 英文名称 + */ + private String nameEn; + + /** + * 分类:traditional-craft、traditional-art等 + */ + private String category; + + /** + * 级别:world、national、provincial、municipal、county + */ + 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; + + /** + * 创建时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtHeritageQueryVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtHeritageQueryVo.java new file mode 100644 index 0000000..a47b5db --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtHeritageQueryVo.java @@ -0,0 +1,72 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import lombok.Data; + +/** + * @author Leocoder + * @description [非遗项目查询条件VO] + */ +@Data +public class HrtHeritageQueryVo { + + /** + * 页码 + */ + private Integer pageNum = 1; + + /** + * 每页数量 + */ + private Integer pageSize = 10; + + /** + * 项目名称(模糊查询) + */ + private String name; + + /** + * 分类:traditional-craft、traditional-art等 + */ + private String category; + + /** + * 级别:world、national、provincial、municipal、county + */ + private String level; + + /** + * 省份 + */ + private String province; + + /** + * 城市 + */ + private String city; + + /** + * 状态:active-正常传承,endangered-濒危 + */ + private String status; + + /** + * 标签(模糊匹配) + */ + private String tag; + + /** + * 关键词(搜索名称、描述、历史等字段) + */ + private String keyword; + + /** + * 排序字段:view_count、like_count、favorite_count、create_time + */ + private String sortField = "create_time"; + + /** + * 排序方式:asc、desc + */ + private String sortOrder = "desc"; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtInheritorDetailVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtInheritorDetailVo.java new file mode 100644 index 0000000..f027efe --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtInheritorDetailVo.java @@ -0,0 +1,127 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [传承人详情展示VO] + */ +@Data +public class HrtInheritorDetailVo { + + /** + * 主键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; + + /** + * 传承人级别:national、provincial等 + */ + 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; + + /** + * 创建时间 + */ + @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; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtInheritorListVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtInheritorListVo.java new file mode 100644 index 0000000..2e80ec4 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtInheritorListVo.java @@ -0,0 +1,96 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [传承人列表展示VO] + */ +@Data +public class HrtInheritorListVo { + + /** + * 主键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; + + /** + * 传承人级别:national、provincial等 + */ + private String level; + + /** + * 省份 + */ + private String province; + + /** + * 城市 + */ + private String city; + + /** + * 个人简介 + */ + private String introduction; + + /** + * 浏览量 + */ + private Integer viewCount; + + /** + * 点赞数 + */ + private Integer likeCount; + + /** + * 是否精选:0-否,1-是 + */ + private Integer isFeatured; + + /** + * 创建时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtInheritorQueryVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtInheritorQueryVo.java new file mode 100644 index 0000000..ab9bcf0 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtInheritorQueryVo.java @@ -0,0 +1,62 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import lombok.Data; + +/** + * @author Leocoder + * @description [传承人查询条件VO] + */ +@Data +public class HrtInheritorQueryVo { + + /** + * 页码 + */ + private Integer pageNum = 1; + + /** + * 每页数量 + */ + private Integer pageSize = 10; + + /** + * 姓名(模糊查询) + */ + private String name; + + /** + * 传承人级别:national、provincial等 + */ + private String level; + + /** + * 省份 + */ + private String province; + + /** + * 城市 + */ + private String city; + + /** + * 关联非遗项目ID + */ + private Long heritageId; + + /** + * 关键词(搜索姓名、简介、传承故事等字段) + */ + private String keyword; + + /** + * 排序字段:view_count、like_count、create_time + */ + private String sortField = "create_time"; + + /** + * 排序方式:asc、desc + */ + private String sortOrder = "desc"; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtLoginResultVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtLoginResultVo.java new file mode 100644 index 0000000..2573343 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtLoginResultVo.java @@ -0,0 +1,32 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import lombok.Data; + +/** + * @author Leocoder + * @description [前台用户登录返回-返回类] + */ +@Data +public class HrtLoginResultVo { + + /** + * 访问令牌 + */ + private String token; + + /** + * Token名称 + */ + private String tokenName; + + /** + * Token有效期(单位:秒) + */ + private Long tokenTimeout; + + /** + * 用户信息 + */ + private HrtUserInfoVo userInfo; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtLoginVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtLoginVo.java new file mode 100644 index 0000000..118d448 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtLoginVo.java @@ -0,0 +1,30 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +/** + * @author Leocoder + * @description [前台用户登录-模型][Vo类] + */ +@Data +public class HrtLoginVo { + + /** + * 账号(用户名/邮箱/手机号) + */ + @NotBlank(message = "请输入账号") + private String account; + + /** + * 密码 + */ + @NotBlank(message = "请输入密码") + private String password; + + /** + * 记住登录,默认为:false + */ + private Boolean rememberMe = false; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtRegisterVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtRegisterVo.java new file mode 100644 index 0000000..a117093 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtRegisterVo.java @@ -0,0 +1,55 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +/** + * @author Leocoder + * @description [前台用户注册-模型][Vo类] + */ +@Data +public class HrtRegisterVo { + + /** + * 用户名 + */ + @Length(min = 3, max = 16, message = "用户名长度为 3-16 位") + @Pattern(regexp = "^[A-Za-z0-9_]+$", message = "用户名格式为数字、字母及下划线") + @NotBlank(message = "请输入用户名") + private String username; + + /** + * 密码 + */ + @Length(min = 6, max = 20, message = "密码长度为 6-20 位") + @NotBlank(message = "请输入密码") + private String password; + + /** + * 确认密码 + */ + @NotBlank(message = "请输入确认密码") + private String confirmPassword; + + /** + * 邮箱 + */ + @Email(message = "邮箱格式不正确") + private String email; + + /** + * 手机号 + */ + @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确") + private String phone; + + /** + * 昵称(必填) + */ + @NotBlank(message = "请输入昵称") + private String nickname; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtUserInfoVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtUserInfoVo.java new file mode 100644 index 0000000..809e421 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/HrtUserInfoVo.java @@ -0,0 +1,88 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [前台用户信息-返回类] + */ +@Data +public class HrtUserInfoVo { + + /** + * 用户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; + + /** + * 备注 + */ + private String remark; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/LikeOperateVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/LikeOperateVo.java new file mode 100644 index 0000000..7abc4ec --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/LikeOperateVo.java @@ -0,0 +1,26 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author Leocoder + * @description [点赞操作请求VO] + */ +@Data +public class LikeOperateVo { + + /** + * 目标类型:heritage、inheritor、news、comment + */ + @NotBlank(message = "目标类型不能为空") + private String targetType; + + /** + * 目标ID + */ + @NotNull(message = "目标ID不能为空") + private Long targetId; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/MyCommentQueryVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/MyCommentQueryVo.java new file mode 100644 index 0000000..edb6310 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/MyCommentQueryVo.java @@ -0,0 +1,27 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import lombok.Data; + +/** + * @author Leocoder + * @description [我的评论列表查询VO] + */ +@Data +public class MyCommentQueryVo { + + /** + * 页码 + */ + private Integer pageNum = 1; + + /** + * 每页数量 + */ + private Integer pageSize = 10; + + /** + * 目标类型:heritage、inheritor、news、event(不传则查询所有) + */ + private String targetType; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/MyEventRegistrationItemVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/MyEventRegistrationItemVo.java new file mode 100644 index 0000000..dd3f9df --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/MyEventRegistrationItemVo.java @@ -0,0 +1,78 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [我的活动报名项展示VO] + */ +@Data +public class MyEventRegistrationItemVo { + + /** + * 报名ID + */ + private Long id; + + /** + * 活动ID + */ + private Long eventId; + + /** + * 活动标题 + */ + private String eventTitle; + + /** + * 活动封面图 + */ + private String eventCoverImage; + + /** + * 活动地点 + */ + private String eventLocation; + + /** + * 活动开始时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime eventStartTime; + + /** + * 活动结束时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime eventEndTime; + + /** + * 活动状态:upcoming、ongoing、finished、cancelled + */ + private String eventStatus; + + /** + * 报名状态:pending、approved、rejected、cancelled + */ + private String registrationStatus; + + /** + * 联系电话 + */ + private String phone; + + /** + * 备注信息 + */ + private String remark; + + /** + * 报名时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/MyEventRegistrationVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/MyEventRegistrationVo.java new file mode 100644 index 0000000..b632c83 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/MyEventRegistrationVo.java @@ -0,0 +1,27 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import lombok.Data; + +/** + * @author Leocoder + * @description [我的活动报名列表查询VO] + */ +@Data +public class MyEventRegistrationVo { + + /** + * 页码 + */ + private Integer pageNum = 1; + + /** + * 每页数量 + */ + private Integer pageSize = 10; + + /** + * 报名状态:pending、approved、rejected、cancelled(不传则查询所有) + */ + private String status; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/NewsDetailVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/NewsDetailVo.java new file mode 100644 index 0000000..1fac57d --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/NewsDetailVo.java @@ -0,0 +1,91 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [新闻详情展示VO] + */ +@Data +public class NewsDetailVo { + + /** + * 新闻ID + */ + private Long id; + + /** + * 标题 + */ + private String title; + + /** + * 摘要 + */ + private String summary; + + /** + * 内容 + */ + private String content; + + /** + * 封面图 + */ + private String coverImage; + + /** + * 作者 + */ + private String author; + + /** + * 来源 + */ + private String source; + + /** + * 分类:news、activity、notice + */ + private String category; + + /** + * 标签(逗号分隔) + */ + private String tags; + + /** + * 浏览量 + */ + private Integer viewCount; + + /** + * 点赞数 + */ + private Integer likeCount; + + /** + * 是否置顶:0-否,1-是 + */ + private Integer isTop; + + /** + * 当前用户是否已点赞 + */ + private Boolean isLiked = false; + + /** + * 当前用户是否已收藏 + */ + private Boolean isFavorited = false; + + /** + * 发布时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime publishTime; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/NewsListVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/NewsListVo.java new file mode 100644 index 0000000..33d02f9 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/NewsListVo.java @@ -0,0 +1,76 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [新闻列表展示VO] + */ +@Data +public class NewsListVo { + + /** + * 新闻ID + */ + private Long id; + + /** + * 标题 + */ + private String title; + + /** + * 摘要 + */ + private String summary; + + /** + * 封面图 + */ + private String coverImage; + + /** + * 作者 + */ + private String author; + + /** + * 来源 + */ + private String source; + + /** + * 分类:news、activity、notice + */ + 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; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/NewsQueryVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/NewsQueryVo.java new file mode 100644 index 0000000..e24bd72 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/NewsQueryVo.java @@ -0,0 +1,32 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import lombok.Data; + +/** + * @author Leocoder + * @description [新闻列表查询VO] + */ +@Data +public class NewsQueryVo { + + /** + * 页码 + */ + private Integer pageNum = 1; + + /** + * 每页数量 + */ + private Integer pageSize = 10; + + /** + * 分类:news、activity、notice(不传则查询所有) + */ + private String category; + + /** + * 关键词搜索 + */ + private String keyword; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserAvatarUpdateVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserAvatarUpdateVo.java new file mode 100644 index 0000000..fad7fd9 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserAvatarUpdateVo.java @@ -0,0 +1,19 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +/** + * @author Leocoder + * @description [更新头像VO] + */ +@Data +public class UserAvatarUpdateVo { + + /** + * 头像URL + */ + @NotBlank(message = "头像URL不能为空") + private String avatar; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserPasswordUpdateVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserPasswordUpdateVo.java new file mode 100644 index 0000000..7f11d28 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserPasswordUpdateVo.java @@ -0,0 +1,33 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +/** + * @author Leocoder + * @description [修改密码VO] + */ +@Data +public class UserPasswordUpdateVo { + + /** + * 旧密码 + */ + @NotBlank(message = "旧密码不能为空") + private String oldPassword; + + /** + * 新密码 + */ + @NotBlank(message = "新密码不能为空") + @Size(min = 6, max = 20, message = "新密码长度必须在6-20个字符之间") + private String newPassword; + + /** + * 确认新密码 + */ + @NotBlank(message = "确认密码不能为空") + private String confirmPassword; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserProfileUpdateVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserProfileUpdateVo.java new file mode 100644 index 0000000..994be24 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserProfileUpdateVo.java @@ -0,0 +1,55 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.Pattern; +import lombok.Data; + +import java.time.LocalDate; + +/** + * @author Leocoder + * @description [修改个人资料VO] + */ +@Data +public class UserProfileUpdateVo { + + /** + * 昵称 + */ + private String nickname; + + /** + * 邮箱 + */ + @Email(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; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserProfileVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserProfileVo.java new file mode 100644 index 0000000..9f58e2d --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserProfileVo.java @@ -0,0 +1,73 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [用户个人资料展示VO] + */ +@Data +public class UserProfileVo { + + /** + * 用户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; + + /** + * 注册时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserStatsVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserStatsVo.java new file mode 100644 index 0000000..c800a70 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/UserStatsVo.java @@ -0,0 +1,37 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import lombok.Data; + +/** + * @author Leocoder + * @description [用户统计信息VO] + */ +@Data +public class UserStatsVo { + + /** + * 浏览历史数量 + */ + private Long viewHistoryCount = 0L; + + /** + * 评论数量 + */ + private Long commentCount = 0L; + + /** + * 点赞数量 + */ + private Long likeCount = 0L; + + /** + * 收藏数量 + */ + private Long favoriteCount = 0L; + + /** + * 活动报名数量 + */ + private Long eventRegistrationCount = 0L; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/ViewHistoryItemVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/ViewHistoryItemVo.java new file mode 100644 index 0000000..febe8f4 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/ViewHistoryItemVo.java @@ -0,0 +1,51 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [浏览历史项展示VO] + */ +@Data +public class ViewHistoryItemVo { + + /** + * 浏览历史ID + */ + private Long id; + + /** + * 目标类型:heritage、inheritor、news、event + */ + private String targetType; + + /** + * 目标ID + */ + private Long targetId; + + /** + * 目标标题/名称 + */ + private String targetTitle; + + /** + * 目标封面图/头像 + */ + private String targetCover; + + /** + * 目标描述/简介 + */ + private String targetDescription; + + /** + * 浏览时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime viewTime; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/ViewHistoryQueryVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/ViewHistoryQueryVo.java new file mode 100644 index 0000000..69fe43d --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/portal/ViewHistoryQueryVo.java @@ -0,0 +1,27 @@ +package org.leocoder.heritage.domain.model.vo.portal; + +import lombok.Data; + +/** + * @author Leocoder + * @description [浏览历史查询VO] + */ +@Data +public class ViewHistoryQueryVo { + + /** + * 页码 + */ + private Integer pageNum = 1; + + /** + * 每页数量 + */ + private Integer pageSize = 10; + + /** + * 目标类型:heritage、inheritor、news、event(不传则查询所有) + */ + private String targetType; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtComment.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtComment.java new file mode 100644 index 0000000..645f918 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtComment.java @@ -0,0 +1,103 @@ +package org.leocoder.heritage.domain.pojo.portal; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [评论实体类] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("hrt_comment") +public class HrtComment implements Serializable { + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 用户ID + */ + @NotNull(message = "用户ID不能为空") + @TableField("user_id") + private Long userId; + + /** + * 目标类型:heritage、inheritor、news、event + */ + @NotBlank(message = "目标类型不能为空") + @TableField("target_type") + private String targetType; + + /** + * 目标ID + */ + @NotNull(message = "目标ID不能为空") + @TableField("target_id") + private Long targetId; + + /** + * 评论内容 + */ + @NotBlank(message = "评论内容不能为空") + @TableField("content") + private String content; + + /** + * 评分:1-5星(仅针对非遗项目) + */ + @TableField("rating") + private Integer rating; + + /** + * 父评论ID(0表示一级评论) + */ + @TableField("parent_id") + private Long parentId; + + /** + * 点赞数 + */ + @TableField("like_count") + private Integer likeCount; + + /** + * 状态:0-待审核,1-已通过,2-已拒绝 + */ + @TableField("status") + private Integer status; + + /** + * 创建时间 + */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + /** + * 删除标记:0-已删除,1-未删除 + */ + @TableLogic + @TableField("del_flag") + private Integer delFlag; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtEvent.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtEvent.java new file mode 100644 index 0000000..2b5d310 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtEvent.java @@ -0,0 +1,151 @@ +package org.leocoder.heritage.domain.pojo.portal; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [活动实体类] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("hrt_event") +public class HrtEvent implements Serializable { + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 活动标题 + */ + @NotBlank(message = "活动标题不能为空") + @TableField("title") + private String title; + + /** + * 活动摘要 + */ + @TableField("summary") + private String summary; + + /** + * 活动详情 + */ + @TableField("content") + private String content; + + /** + * 封面图 + */ + @TableField("cover_image") + private String coverImage; + + /** + * 活动地点 + */ + @TableField("location") + private String location; + + /** + * 开始时间 + */ + @TableField("start_time") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startTime; + + /** + * 结束时间 + */ + @TableField("end_time") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endTime; + + /** + * 最大参与人数 + */ + @TableField("max_participants") + private Integer maxParticipants; + + /** + * 当前参与人数 + */ + @TableField("current_participants") + private Integer currentParticipants; + + /** + * 报名开始时间 + */ + @TableField("registration_start") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime registrationStart; + + /** + * 报名结束时间 + */ + @TableField("registration_end") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime registrationEnd; + + /** + * 状态:upcoming、ongoing、finished、cancelled + */ + @TableField("status") + private String status; + + /** + * 浏览量 + */ + @TableField("view_count") + private Integer viewCount; + + /** + * 发布状态:0-草稿,1-已发布 + */ + @TableField("publish_status") + private Integer publishStatus; + + /** + * 创建人 + */ + @TableField("create_by") + private String createBy; + + /** + * 创建时间 + */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 更新人 + */ + @TableField("update_by") + private String updateBy; + + /** + * 更新时间 + */ + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + /** + * 删除标记:0-已删除,1-未删除 + */ + @TableLogic + @TableField("del_flag") + private Integer delFlag; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtEventRegistration.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtEventRegistration.java new file mode 100644 index 0000000..7f9a2fe --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtEventRegistration.java @@ -0,0 +1,82 @@ +package org.leocoder.heritage.domain.pojo.portal; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [活动报名实体类] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("hrt_event_registration") +public class HrtEventRegistration implements Serializable { + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 用户ID + */ + @NotNull(message = "用户ID不能为空") + @TableField("user_id") + private Long userId; + + /** + * 活动ID + */ + @NotNull(message = "活动ID不能为空") + @TableField("event_id") + private Long eventId; + + /** + * 报名状态:pending-待审核,approved-已通过,rejected-已拒绝,cancelled-已取消 + */ + @TableField("status") + private String status; + + /** + * 联系电话 + */ + @TableField("phone") + private String phone; + + /** + * 备注信息 + */ + @TableField("remark") + private String remark; + + /** + * 创建时间 + */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + /** + * 删除标记:0-已删除,1-未删除 + */ + @TableLogic + @TableField("del_flag") + private Integer delFlag; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtFavorite.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtFavorite.java new file mode 100644 index 0000000..eaf93fd --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtFavorite.java @@ -0,0 +1,65 @@ +package org.leocoder.heritage.domain.pojo.portal; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [收藏实体类] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("hrt_favorite") +public class HrtFavorite implements Serializable { + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 用户ID + */ + @NotNull(message = "用户ID不能为空") + @TableField("user_id") + private Long userId; + + /** + * 目标类型:heritage、inheritor、news + */ + @NotBlank(message = "目标类型不能为空") + @TableField("target_type") + private String targetType; + + /** + * 目标ID + */ + @NotNull(message = "目标ID不能为空") + @TableField("target_id") + private Long targetId; + + /** + * 创建时间 + */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 删除标记:0-已删除,1-未删除 + */ + @TableLogic + @TableField("del_flag") + private Integer delFlag; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtHeritage.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtHeritage.java new file mode 100644 index 0000000..398d8c3 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtHeritage.java @@ -0,0 +1,197 @@ +package org.leocoder.heritage.domain.pojo.portal; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [非遗项目实体类] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("hrt_heritage") +public class HrtHeritage implements Serializable { + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目名称 + */ + @NotBlank(message = "项目名称不能为空") + @TableField("name") + private String name; + + /** + * 英文名称 + */ + @TableField("name_en") + private String nameEn; + + /** + * 分类:traditional-craft、traditional-art等 + */ + @NotBlank(message = "分类不能为空") + @TableField("category") + private String category; + + /** + * 级别:world、national、provincial、municipal、county + */ + @NotBlank(message = "级别不能为空") + @TableField("level") + private String level; + + /** + * 省份 + */ + @TableField("province") + private String province; + + /** + * 城市 + */ + @TableField("city") + private String city; + + /** + * 项目介绍 + */ + @TableField("description") + private String description; + + /** + * 历史渊源 + */ + @TableField("history") + private String history; + + /** + * 技艺特点 + */ + @TableField("skills") + private String skills; + + /** + * 文化意义 + */ + @TableField("significance") + private String significance; + + /** + * 封面图 + */ + @TableField("cover_image") + private String coverImage; + + /** + * 图片集合(JSON数组) + */ + @TableField("images") + private String images; + + /** + * 视频URL + */ + @TableField("video_url") + private String videoUrl; + + /** + * 标签(逗号分隔) + */ + @TableField("tags") + private String tags; + + /** + * 状态:active-正常传承,endangered-濒危 + */ + @TableField("status") + private String status; + + /** + * 浏览量 + */ + @TableField("view_count") + private Integer viewCount; + + /** + * 点赞数 + */ + @TableField("like_count") + private Integer likeCount; + + /** + * 收藏数 + */ + @TableField("favorite_count") + private Integer favoriteCount; + + /** + * 评论数 + */ + @TableField("comment_count") + private Integer commentCount; + + /** + * 是否精选:0-否,1-是 + */ + @TableField("is_featured") + private Integer isFeatured; + + /** + * 排序权重 + */ + @TableField("sort_order") + private Integer sortOrder; + + /** + * 发布状态:0-草稿,1-已发布 + */ + @TableField("publish_status") + private Integer publishStatus; + + /** + * 创建人 + */ + @TableField("create_by") + private String createBy; + + /** + * 创建时间 + */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 更新人 + */ + @TableField("update_by") + private String updateBy; + + /** + * 更新时间 + */ + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + /** + * 删除标记:0-已删除,1-未删除 + */ + @TableLogic + @TableField("del_flag") + private Integer delFlag; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtInheritor.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtInheritor.java new file mode 100644 index 0000000..f87ca6d --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtInheritor.java @@ -0,0 +1,189 @@ +package org.leocoder.heritage.domain.pojo.portal; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [传承人实体类] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("hrt_inheritor") +public class HrtInheritor implements Serializable { + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @NotBlank(message = "姓名不能为空") + @TableField("name") + private String name; + + /** + * 英文名 + */ + @TableField("name_en") + private String nameEn; + + /** + * 性别:1-男,2-女 + */ + @TableField("gender") + private Integer gender; + + /** + * 出生年份 + */ + @TableField("birth_year") + private Integer birthYear; + + /** + * 头像 + */ + @TableField("avatar") + private String avatar; + + /** + * 关联非遗项目ID + */ + @TableField("heritage_id") + private Long heritageId; + + /** + * 传承项目名称 + */ + @TableField("heritage_name") + private String heritageName; + + /** + * 传承人级别:national、provincial等 + */ + @TableField("level") + private String level; + + /** + * 省份 + */ + @TableField("province") + private String province; + + /** + * 城市 + */ + @TableField("city") + private String city; + + /** + * 个人简介 + */ + @TableField("introduction") + private String introduction; + + /** + * 传承故事 + */ + @TableField("story") + private String story; + + /** + * 主要成就 + */ + @TableField("achievements") + private String achievements; + + /** + * 代表作品(JSON数组) + */ + @TableField("works") + private String works; + + /** + * 图片集合(JSON数组) + */ + @TableField("images") + private String images; + + /** + * 视频URL + */ + @TableField("video_url") + private String videoUrl; + + /** + * 浏览量 + */ + @TableField("view_count") + private Integer viewCount; + + /** + * 点赞数 + */ + @TableField("like_count") + private Integer likeCount; + + /** + * 是否精选:0-否,1-是 + */ + @TableField("is_featured") + private Integer isFeatured; + + /** + * 排序权重 + */ + @TableField("sort_order") + private Integer sortOrder; + + /** + * 发布状态:0-草稿,1-已发布 + */ + @TableField("publish_status") + private Integer publishStatus; + + /** + * 创建人 + */ + @TableField("create_by") + private String createBy; + + /** + * 创建时间 + */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 更新人 + */ + @TableField("update_by") + private String updateBy; + + /** + * 更新时间 + */ + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + /** + * 删除标记:0-已删除,1-未删除 + */ + @TableLogic + @TableField("del_flag") + private Integer delFlag; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtLike.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtLike.java new file mode 100644 index 0000000..2071256 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtLike.java @@ -0,0 +1,65 @@ +package org.leocoder.heritage.domain.pojo.portal; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [点赞实体类] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("hrt_like") +public class HrtLike implements Serializable { + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 用户ID + */ + @NotNull(message = "用户ID不能为空") + @TableField("user_id") + private Long userId; + + /** + * 目标类型:heritage、inheritor、news、comment + */ + @NotBlank(message = "目标类型不能为空") + @TableField("target_type") + private String targetType; + + /** + * 目标ID + */ + @NotNull(message = "目标ID不能为空") + @TableField("target_id") + private Long targetId; + + /** + * 创建时间 + */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 删除标记:0-已删除,1-未删除 + */ + @TableLogic + @TableField("del_flag") + private Integer delFlag; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtNews.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtNews.java new file mode 100644 index 0000000..a321498 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtNews.java @@ -0,0 +1,142 @@ +package org.leocoder.heritage.domain.pojo.portal; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [新闻资讯实体类] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("hrt_news") +public class HrtNews implements Serializable { + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空") + @TableField("title") + private String title; + + /** + * 摘要 + */ + @TableField("summary") + private String summary; + + /** + * 内容 + */ + @TableField("content") + private String content; + + /** + * 封面图 + */ + @TableField("cover_image") + private String coverImage; + + /** + * 作者 + */ + @TableField("author") + private String author; + + /** + * 来源 + */ + @TableField("source") + private String source; + + /** + * 分类:news、activity、notice + */ + @TableField("category") + private String category; + + /** + * 标签(逗号分隔) + */ + @TableField("tags") + private String tags; + + /** + * 浏览量 + */ + @TableField("view_count") + private Integer viewCount; + + /** + * 点赞数 + */ + @TableField("like_count") + private Integer likeCount; + + /** + * 是否置顶:0-否,1-是 + */ + @TableField("is_top") + private Integer isTop; + + /** + * 发布时间 + */ + @TableField("publish_time") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime publishTime; + + /** + * 发布状态:0-草稿,1-已发布 + */ + @TableField("publish_status") + private Integer publishStatus; + + /** + * 创建人 + */ + @TableField("create_by") + private String createBy; + + /** + * 创建时间 + */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 更新人 + */ + @TableField("update_by") + private String updateBy; + + /** + * 更新时间 + */ + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + /** + * 删除标记:0-已删除,1-未删除 + */ + @TableLogic + @TableField("del_flag") + private Integer delFlag; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtUser.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtUser.java new file mode 100644 index 0000000..d131120 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtUser.java @@ -0,0 +1,143 @@ +package org.leocoder.heritage.domain.pojo.portal; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [前台用户实体类] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("hrt_user") +public class HrtUser implements Serializable { + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 用户名(唯一) + */ + @NotBlank(message = "用户名不能为空") + @TableField("username") + private String username; + + /** + * 密码(加密) + */ + @NotBlank(message = "密码不能为空") + @TableField("password") + private String password; + + /** + * 昵称 + */ + @TableField("nickname") + private String nickname; + + /** + * 头像URL + */ + @TableField("avatar") + private String avatar; + + /** + * 邮箱(唯一) + */ + @Email(message = "邮箱格式不正确") + @TableField("email") + private String email; + + /** + * 手机号(唯一) + */ + @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确") + @TableField("phone") + private String phone; + + /** + * 性别:0-未知,1-男,2-女 + */ + @TableField("gender") + private Integer gender; + + /** + * 生日 + */ + @TableField("birthday") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") + private LocalDate birthday; + + /** + * 省份 + */ + @TableField("province") + private String province; + + /** + * 城市 + */ + @TableField("city") + private String city; + + /** + * 状态:0-禁用,1-正常 + */ + @TableField("status") + private Integer status; + + /** + * 最后登录IP + */ + @TableField("login_ip") + private String loginIp; + + /** + * 最后登录时间 + */ + @TableField("login_time") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime loginTime; + + /** + * 创建时间 + */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + /** + * 删除标记:0-已删除,1-未删除 + */ + @TableLogic + @TableField("del_flag") + private Integer delFlag; + + /** + * 备注 + */ + @TableField("remark") + private String remark; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtViewHistory.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtViewHistory.java new file mode 100644 index 0000000..077c928 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/portal/HrtViewHistory.java @@ -0,0 +1,72 @@ +package org.leocoder.heritage.domain.pojo.portal; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [浏览历史实体类] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("hrt_view_history") +public class HrtViewHistory implements Serializable { + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 用户ID + */ + @NotNull(message = "用户ID不能为空") + @TableField("user_id") + private Long userId; + + /** + * 目标类型:heritage、inheritor、news、event + */ + @NotBlank(message = "目标类型不能为空") + @TableField("target_type") + private String targetType; + + /** + * 目标ID + */ + @NotNull(message = "目标ID不能为空") + @TableField("target_id") + private Long targetId; + + /** + * 创建时间 + */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 更新时间(最后浏览时间) + */ + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + /** + * 删除标记:0-已删除,1-未删除 + */ + @TableLogic + @TableField("del_flag") + private Integer delFlag; + +}