From 287add8e36ff187b0aaead3ebfebbe3e879a65ca Mon Sep 17 00:00:00 2001 From: Leo Date: Wed, 8 Oct 2025 02:05:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9Eheritage-model?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=A8=A1=E5=9E=8B=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增枚举类:菜单状态、菜单类型、操作类型等 - 新增BO类:业务对象,包含表单元素和系统业务对象 - 新增VO类:视图对象,用于接口返回数据 - 新增POJO实体类:对应数据库表结构 - 新增数据验证注解:手机号、URL等自定义验证器 --- heritage-model/pom.xml | 51 ++++ .../domain/enums/menu/MenuStatusEnum.java | 68 ++++++ .../domain/enums/menu/MenuTypeEnum.java | 83 +++++++ .../heritage/domain/enums/oper/OperType.java | 59 +++++ .../domain/enums/oper/SystemType.java | 39 ++++ .../model/bo/element/CascaderLongBo.java | 31 +++ .../model/bo/element/CascaderStringBo.java | 31 +++ .../domain/model/bo/element/SelectLongBo.java | 26 +++ .../model/bo/element/SelectStringBo.java | 26 +++ .../model/bo/element/TransferLongBo.java | 26 +++ .../model/bo/element/TransferStringBo.java | 26 +++ .../domain/model/bo/system/SysJobBo.java | 73 ++++++ .../domain/model/bo/system/SysLoginBo.java | 22 ++ .../domain/model/bo/system/SysMenuBo.java | 98 ++++++++ .../domain/model/bo/system/SysRoleMenuBo.java | 45 ++++ .../heritage/domain/model/vo/base/BaseVo.java | 35 +++ .../domain/model/vo/gen/GenColumnVo.java | 116 +++++++++ .../domain/model/vo/gen/GenTableVo.java | 30 +++ .../vo/system/DashboardStatisticsVo.java | 221 ++++++++++++++++++ .../domain/model/vo/system/LoginTrendVo.java | 53 +++++ .../vo/system/SymbolValidateResultVo.java | 47 ++++ .../domain/model/vo/system/SysDictDataVo.java | 35 +++ .../domain/model/vo/system/SysDictTypeVo.java | 30 +++ .../domain/model/vo/system/SysFileVo.java | 31 +++ .../domain/model/vo/system/SysJobVo.java | 65 ++++++ .../domain/model/vo/system/SysLoginLogVo.java | 39 ++++ .../model/vo/system/SysLoginUserVo.java | 55 +++++ .../domain/model/vo/system/SysLoginVo.java | 46 ++++ .../domain/model/vo/system/SysMenuVo.java | 30 +++ .../domain/model/vo/system/SysOperLogVo.java | 79 +++++++ .../domain/model/vo/system/SysPictureVo.java | 60 +++++ .../domain/model/vo/system/SysPwdVo.java | 35 +++ .../domain/model/vo/system/SysRegisterVo.java | 41 ++++ .../domain/model/vo/system/SysRoleVo.java | 40 ++++ .../model/vo/system/SysUserOnlineVo.java | 34 +++ .../heritage/domain/pojo/gen/GenColumn.java | 150 ++++++++++++ .../heritage/domain/pojo/gen/GenTable.java | 168 +++++++++++++ .../heritage/domain/pojo/gen/TableColumn.java | 41 ++++ .../heritage/domain/pojo/gen/TableData.java | 41 ++++ .../domain/pojo/system/SysDictData.java | 110 +++++++++ .../domain/pojo/system/SysDictType.java | 81 +++++++ .../heritage/domain/pojo/system/SysFile.java | 76 ++++++ .../heritage/domain/pojo/system/SysJob.java | 149 ++++++++++++ .../domain/pojo/system/SysLoginLog.java | 88 +++++++ .../domain/pojo/system/SysLoginUser.java | 196 ++++++++++++++++ .../heritage/domain/pojo/system/SysMenu.java | 170 ++++++++++++++ .../domain/pojo/system/SysOperLog.java | 134 +++++++++++ .../domain/pojo/system/SysPicture.java | 76 ++++++ .../heritage/domain/pojo/system/SysRole.java | 88 +++++++ .../domain/pojo/system/SysUserRole.java | 32 +++ .../domain/validator/anno/ValidPhone.java | 32 +++ .../domain/validator/anno/ValidURL.java | 17 ++ .../domain/validator/utils/ValidatorUtil.java | 121 ++++++++++ .../validator/valid/PhoneValidator.java | 33 +++ .../domain/validator/valid/URLValidator.java | 33 +++ 55 files changed, 3662 insertions(+) create mode 100644 heritage-model/pom.xml create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/enums/menu/MenuStatusEnum.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/enums/menu/MenuTypeEnum.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/enums/oper/OperType.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/enums/oper/SystemType.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/CascaderLongBo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/CascaderStringBo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/SelectLongBo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/SelectStringBo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/TransferLongBo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/TransferStringBo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysJobBo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysLoginBo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysMenuBo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysRoleMenuBo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/base/BaseVo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/gen/GenColumnVo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/gen/GenTableVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/DashboardStatisticsVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/LoginTrendVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SymbolValidateResultVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysDictDataVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysDictTypeVo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysFileVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysJobVo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysLoginLogVo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysLoginUserVo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysLoginVo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysMenuVo.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysOperLogVo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysPictureVo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysPwdVo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysRegisterVo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysRoleVo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysUserOnlineVo.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/GenColumn.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/GenTable.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/TableColumn.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/TableData.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysDictData.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysDictType.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysFile.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysJob.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysLoginLog.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysLoginUser.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysMenu.java create mode 100644 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysOperLog.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysPicture.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysRole.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysUserRole.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/validator/anno/ValidPhone.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/validator/anno/ValidURL.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/validator/utils/ValidatorUtil.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/validator/valid/PhoneValidator.java create mode 100755 heritage-model/src/main/java/org/leocoder/heritage/domain/validator/valid/URLValidator.java diff --git a/heritage-model/pom.xml b/heritage-model/pom.xml new file mode 100644 index 0000000..7438322 --- /dev/null +++ b/heritage-model/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + + org.leocoder.heritage + heritage-backend + ${revision} + + + + heritage-model + heritage-model + 实体类模块 + + + + + org.projectlombok + lombok + + + + com.baomidou + mybatis-plus-spring-boot3-starter + + + + org.springframework.boot + spring-boot-starter-validation + + + + org.leocoder.heritage + heritage-desensitize + ${revision} + + + + org.hibernate.validator + hibernate-validator + + + + com.alibaba + easyexcel + + + + \ No newline at end of file diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/enums/menu/MenuStatusEnum.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/enums/menu/MenuStatusEnum.java new file mode 100644 index 0000000..66525bb --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/enums/menu/MenuStatusEnum.java @@ -0,0 +1,68 @@ +package org.leocoder.heritage.domain.enums.menu; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author Leocoder + * @description [菜单状态枚举] + */ +@Getter +@AllArgsConstructor +public enum MenuStatusEnum { + + /** + * 启用 + */ + ENABLED("0", "启用"), + + /** + * 停用 + */ + DISABLED("1", "停用"); + + /** + * 状态值 + */ + private final String value; + + /** + * 状态描述 + */ + private final String description; + + /** + * 根据值获取枚举 + * + * @param value 状态值 + * @return 对应的枚举 + */ + public static MenuStatusEnum getByValue(String value) { + for (MenuStatusEnum status : values()) { + if (status.getValue().equals(value)) { + return status; + } + } + return null; + } + + /** + * 判断是否是启用状态 + * + * @param value 状态值 + * @return 是否是启用状态 + */ + public static boolean isEnabled(String value) { + return ENABLED.getValue().equals(value); + } + + /** + * 判断是否是停用状态 + * + * @param value 状态值 + * @return 是否是停用状态 + */ + public static boolean isDisabled(String value) { + return DISABLED.getValue().equals(value); + } +} \ No newline at end of file diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/enums/menu/MenuTypeEnum.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/enums/menu/MenuTypeEnum.java new file mode 100644 index 0000000..db8dcc9 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/enums/menu/MenuTypeEnum.java @@ -0,0 +1,83 @@ +package org.leocoder.heritage.domain.enums.menu; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author Leocoder + * @description [菜单类型枚举] + */ +@Getter +@AllArgsConstructor +public enum MenuTypeEnum { + + /** + * 目录 + */ + DIRECTORY("1", "目录"), + + /** + * 菜单 + */ + MENU("2", "菜单"), + + /** + * 按钮 + */ + BUTTON("3", "按钮"); + + /** + * 类型值 + */ + private final String value; + + /** + * 类型描述 + */ + private final String description; + + /** + * 根据值获取枚举 + * + * @param value 类型值 + * @return 对应的枚举 + */ + public static MenuTypeEnum getByValue(String value) { + for (MenuTypeEnum type : values()) { + if (type.getValue().equals(value)) { + return type; + } + } + return null; + } + + /** + * 判断是否是按钮类型 + * + * @param value 类型值 + * @return 是否是按钮类型 + */ + public static boolean isButton(String value) { + return BUTTON.getValue().equals(value); + } + + /** + * 判断是否是目录类型 + * + * @param value 类型值 + * @return 是否是目录类型 + */ + public static boolean isDirectory(String value) { + return DIRECTORY.getValue().equals(value); + } + + /** + * 判断是否是菜单类型 + * + * @param value 类型值 + * @return 是否是菜单类型 + */ + public static boolean isMenu(String value) { + return MENU.getValue().equals(value); + } +} \ No newline at end of file diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/enums/oper/OperType.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/enums/oper/OperType.java new file mode 100644 index 0000000..a0fd3f8 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/enums/oper/OperType.java @@ -0,0 +1,59 @@ +package org.leocoder.heritage.domain.enums.oper; + +/** + * @author Leocoder + * @description [操作类型枚举] + */ +public enum OperType { + + /** + * 新增 + */ + INSERT("INSERT", "新增"), + + /** + * 修改 + */ + UPDATE("UPDATE", "修改"), + + /** + * 删除 + */ + DELETE("DELETE", "删除"), + + /** + * 查询 + */ + SELECT("SELECT", "查询"), + + /** + * 导入 + */ + IMPORT("IMPORT", "导入"), + + /** + * 导出 + */ + EXPORT("EXPORT", "导出"), + + /** + * 其它 + */ + OTHER("OTHER", "其它"); + + private final String code; + private final String desc; + + OperType(String code, String desc) { + this.code = code; + this.desc = desc; + } + + public String getCode() { + return code; + } + + public String getDesc() { + return desc; + } +} \ No newline at end of file diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/enums/oper/SystemType.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/enums/oper/SystemType.java new file mode 100644 index 0000000..3d35b04 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/enums/oper/SystemType.java @@ -0,0 +1,39 @@ +package org.leocoder.heritage.domain.enums.oper; + +/** + * @author Leocoder + * @description [系统类型枚举] + */ +public enum SystemType { + + /** + * 后台用户 + */ + MANAGER("MANAGER", "后台用户"), + + /** + * 手机端用户 + */ + PHONE("PHONE", "手机端用户"), + + /** + * 其它 + */ + OTHER("OTHER", "其它"); + + private final String code; + private final String desc; + + SystemType(String code, String desc) { + this.code = code; + this.desc = desc; + } + + public String getCode() { + return code; + } + + public String getDesc() { + return desc; + } +} \ No newline at end of file diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/CascaderLongBo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/CascaderLongBo.java new file mode 100755 index 0000000..4fe6fcc --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/CascaderLongBo.java @@ -0,0 +1,31 @@ +package org.leocoder.heritage.domain.model.bo.element; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Leocoder + * @description [CascaderBo-ElementPlus级联选择框] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CascaderLongBo { + + /** + * 选择项 + */ + private String label; + + /** + * 选择值 + */ + private Long value; + + /** + * 父节点 + */ + private String parentId; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/CascaderStringBo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/CascaderStringBo.java new file mode 100755 index 0000000..66de432 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/CascaderStringBo.java @@ -0,0 +1,31 @@ +package org.leocoder.heritage.domain.model.bo.element; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Leocoder + * @description [CascaderBo-ElementPlus级联选择框] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CascaderStringBo { + + /** + * 选择项 + */ + private String label; + + /** + * 选择值 + */ + private String value; + + /** + * 父节点 + */ + private String parentId; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/SelectLongBo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/SelectLongBo.java new file mode 100755 index 0000000..692da72 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/SelectLongBo.java @@ -0,0 +1,26 @@ +package org.leocoder.heritage.domain.model.bo.element; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Leocoder + * @description [Element下拉框模型] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SelectLongBo { + + /** + * 选择项 + */ + private String label; + + /** + * 选择值 + */ + private Long value; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/SelectStringBo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/SelectStringBo.java new file mode 100755 index 0000000..aac4297 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/SelectStringBo.java @@ -0,0 +1,26 @@ +package org.leocoder.heritage.domain.model.bo.element; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Leocoder + * @description [Element下拉框模型] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SelectStringBo { + + /** + * 选择项 + */ + private String label; + + /** + * 选择值 + */ + private String value; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/TransferLongBo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/TransferLongBo.java new file mode 100755 index 0000000..a0ec56c --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/TransferLongBo.java @@ -0,0 +1,26 @@ +package org.leocoder.heritage.domain.model.bo.element; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Leocoder + * @description [transferBo穿梭框模型] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class TransferLongBo { + + /** + * 选择项 + */ + private String label; + + /** + * 选择值 + */ + private Long value; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/TransferStringBo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/TransferStringBo.java new file mode 100755 index 0000000..a7524d1 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/element/TransferStringBo.java @@ -0,0 +1,26 @@ +package org.leocoder.heritage.domain.model.bo.element; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Leocoder + * @description [transferBo穿梭框模型] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class TransferStringBo { + + /** + * 选择项 + */ + private String label; + + /** + * 选择值 + */ + private String value; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysJobBo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysJobBo.java new file mode 100644 index 0000000..5ff181a --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysJobBo.java @@ -0,0 +1,73 @@ +package org.leocoder.heritage.domain.model.bo.system; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author Leocoder + * @description [定时任务业务对象] + */ +@Data +public class SysJobBo implements Serializable { + + /** + * 任务ID + */ + private Long jobId; + + /** + * 任务名称 + */ + @NotBlank(message = "任务名称不能为空") + private String jobName; + + /** + * 任务类型[1-管理平台 2-小程序 3-App] + */ + @NotBlank(message = "任务类型不能为空") + private String jobType; + + /** + * 类路径 + */ + @NotBlank(message = "类路径不能为空") + private String classPath; + + /** + * 方法名称 + */ + @NotBlank(message = "方法名称不能为空") + private String methodName; + + /** + * cron执行表达式 + */ + @NotBlank(message = "cron执行表达式不能为空") + private String cronExpression; + + /** + * cron计划策略[1-立即执行 2-执行一次 3-放弃执行] + */ + @NotBlank(message = "cron计划策略不能为空") + private String policyStatus; + + /** + * 任务状态 [0正常 1暂停] + */ + @NotBlank(message = "任务状态不能为空") + private String jobStatus; + + /** + * 任务参数 + */ + private String jobParams; + + /** + * 任务备注 + */ + private String remark; + +} \ No newline at end of file diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysLoginBo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysLoginBo.java new file mode 100755 index 0000000..a46f360 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysLoginBo.java @@ -0,0 +1,22 @@ +package org.leocoder.heritage.domain.model.bo.system; + +import lombok.Data; + +/** + * @author Leocoder + * @description [登录-模型][Bo类] + */ +@Data +public class SysLoginBo { + + /** + * token名称 + */ + private String tokenName; + + /** + * token值 + */ + private String tokenValue; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysMenuBo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysMenuBo.java new file mode 100755 index 0000000..24e6af0 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysMenuBo.java @@ -0,0 +1,98 @@ +package org.leocoder.heritage.domain.model.bo.system; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author Leocoder + * @description [菜单权限表-模型][Bo类] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SysMenuBo implements Serializable { + + /** + * 菜单ID + */ + private Long menuId; + + /** + * 菜单名称 + */ + private String menuName; + + /** + * 英文菜单 + */ + private String enName; + + /** + * 父菜单ID + */ + private Long parentId; + + /** + * 菜单类型[1-目录 2-菜单 3-按钮] + */ + private String menuType; + + /** + * 路由name + */ + private String name; + + /** + * 路由地址 + */ + private String path; + + /** + * 请求地址 + */ + private String component; + + /** + * 菜单图标 + */ + private String icon; + + /** + * 菜单是否隐藏[0-隐藏 1-显示] + */ + private String isHide; + + /** + * 是否外链[空值不跳转,有值则跳转链接] + */ + private String isLink; + + /** + * 是否缓存[0-是 1-否] + */ + private String isKeepAlive; + + /** + * 是否全屏[0-是 1-否][例如:数据大屏] + */ + private String isFull; + + /** + * 是否固定项[0-是 1-否][例如:首页] + */ + private String isAffix; + + /** + * 重定向页面[子节点第一级path] + */ + private String redirect; + + /** + * 选中路由 + */ + private String activeMenu; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysRoleMenuBo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysRoleMenuBo.java new file mode 100644 index 0000000..8a54b18 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/bo/system/SysRoleMenuBo.java @@ -0,0 +1,45 @@ +package org.leocoder.heritage.domain.model.bo.system; + +import lombok.Data; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author Leocoder + * @description [角色菜单权限分配-模型][Bo类] + */ +@Data +public class SysRoleMenuBo { + + /** + * 角色ID(字符串格式,避免前端精度丢失) + */ + private String roleId; + + /** + * 菜单ID列表(字符串格式,避免前端精度丢失) + */ + private List menuIds; + + /** + * 获取Long类型的角色ID + */ + public Long getRoleIdAsLong() { + return roleId != null ? Long.valueOf(roleId) : null; + } + + /** + * 获取Long类型的菜单ID列表 + */ + public List getMenuIdsAsLong() { + if (menuIds == null) { + return null; + } + return menuIds.stream() + .filter(id -> id != null && !id.isEmpty()) + .map(Long::valueOf) + .collect(Collectors.toList()); + } + +} \ No newline at end of file diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/base/BaseVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/base/BaseVo.java new file mode 100755 index 0000000..ec695f4 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/base/BaseVo.java @@ -0,0 +1,35 @@ +package org.leocoder.heritage.domain.model.vo.base; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Map; + +/** + * @author Leocoder + * @description [BaseVo公共参数] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class BaseVo implements java.io.Serializable { + + /** + * 当前第几页 + */ + private Integer pageNo = 1; + + /** + * 每页显示多少条 + */ + private Integer pageSize = 10; + + /** + * 请求参数 + */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private Map params; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/gen/GenColumnVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/gen/GenColumnVo.java new file mode 100755 index 0000000..7786ac4 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/gen/GenColumnVo.java @@ -0,0 +1,116 @@ +package org.leocoder.heritage.domain.model.vo.gen; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.leocoder.heritage.domain.model.vo.base.BaseVo; + +import java.util.Date; + +/** + * @author Leocoder + * @description [代码生成字段表-模型][Vo类] + */ +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +public class GenColumnVo extends BaseVo { + + /** + * 主键ID + */ + private Long columnId; + + /** + * 归属表编号 + */ + private Long tableId; + + /** + * 列名称 + */ + private String columnName; + + /** + * 列描述 + */ + private String columnComment; + + /** + * 列类型 + */ + private String columnType; + + /** + * JAVA类型 + */ + private String javaType; + + /** + * JAVA字段名 + */ + private String javaField; + + /** + * 是否主键[0-是,1-否] + */ + private String isPk; + + /** + * 是否列表展示字段[0-是,1-否] + */ + private String isList; + + /** + * 是否搜索展示字段[0-是,1-否] + */ + private String isSearch; + + /** + * 条件搜索类型[EQ、LIKE等] + */ + private String searchType; + + /** + * 是否表单展示字段[0-是,1-否] + */ + private String isForm; + + /** + * 是否添加规则校验[0-是,1-否] + */ + private String isRule; + + /** + * 显示类型[文本框-input、下拉框-select、复选框-checkbox、单选框-radio、日期控件-datatime、文本域-textarea] + */ + private String elementType; + + /** + * 字典类型 + */ + private String dictType; + + /** + * 创建者 + */ + private String createBy; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新者 + */ + private String updateBy; + + /** + * 更新时间 + */ + private Date updateTime; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/gen/GenTableVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/gen/GenTableVo.java new file mode 100755 index 0000000..4e878f3 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/gen/GenTableVo.java @@ -0,0 +1,30 @@ +package org.leocoder.heritage.domain.model.vo.gen; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.leocoder.heritage.domain.model.vo.base.BaseVo; + +/** + * @author Leocoder + * @description [代码生成业务表-模型][Vo类] + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class GenTableVo extends BaseVo { + + /** + * 表名称 + */ + private String tableName; + + /** + * 表类名 + */ + private String className; + + /** + * 表描述 + */ + private String tableComment; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/DashboardStatisticsVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/DashboardStatisticsVo.java new file mode 100644 index 0000000..6771440 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/DashboardStatisticsVo.java @@ -0,0 +1,221 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 仪表盘统计数据响应对象 + * + * @author Leocoder + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class DashboardStatisticsVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用户统计数据 + */ + @JsonProperty("userStats") + private UserStatsVo userStats; + + /** + * 登录统计数据 + */ + @JsonProperty("loginStats") + private LoginStatsVo loginStats; + + /** + * 存储统计数据 + */ + @JsonProperty("storageStats") + private StorageStatsVo storageStats; + + /** + * 今日活跃统计数据 + */ + @JsonProperty("dailyActivityStats") + private DailyActivityStatsVo dailyActivityStats; + + /** + * 用户统计数据 + */ + @Data + public static class UserStatsVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 总用户数 + */ + @JsonProperty("totalUsers") + private Integer totalUsers; + + /** + * 今日新增用户数 + */ + @JsonProperty("todayNewUsers") + private Integer todayNewUsers; + + /** + * 活跃用户数 + */ + @JsonProperty("activeUsers") + private Integer activeUsers; + + /** + * 当前在线用户数 + */ + @JsonProperty("onlineUsers") + private Integer onlineUsers; + } + + /** + * 登录统计数据 + */ + @Data + public static class LoginStatsVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 今日登录次数 + */ + @JsonProperty("todayLogins") + private Integer todayLogins; + + /** + * 累计登录次数 + */ + @JsonProperty("totalLogins") + private Integer totalLogins; + + /** + * 登录趋势数据 + */ + @JsonProperty("loginTrend") + private List loginTrend; + } + + /** + * 存储统计数据 + */ + @Data + public static class StorageStatsVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 总文件数 + */ + @JsonProperty("totalFiles") + private Integer totalFiles; + + /** + * 总图片数 + */ + @JsonProperty("totalImages") + private Integer totalImages; + + /** + * 总存储大小(格式化) + */ + @JsonProperty("totalSize") + private String totalSize; + + /** + * 今日上传文件数 + */ + @JsonProperty("todayUploads") + private Integer todayUploads; + + /** + * 存储使用率(百分比) + */ + @JsonProperty("storageUsage") + private Double storageUsage; + + /** + * 可用空间(格式化) + */ + @JsonProperty("availableSpace") + private String availableSpace; + } + + /** + * 今日活跃统计数据 + */ + @Data + public static class DailyActivityStatsVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 今日访问量 + */ + @JsonProperty("todayVisits") + private Integer todayVisits; + + /** + * 今日操作数 + */ + @JsonProperty("todayOperations") + private Integer todayOperations; + + /** + * 活跃用户数 + */ + @JsonProperty("activeUsers") + private Integer activeUsers; + + /** + * 新增内容数 + */ + @JsonProperty("newContent") + private Integer newContent; + + /** + * API调用次数 + */ + @JsonProperty("apiCalls") + private Integer apiCalls; + + /** + * 平均响应时间(毫秒) + */ + @JsonProperty("avgResponseTime") + private Integer avgResponseTime; + } + + /** + * 登录趋势项 + */ + @Data + public static class LoginTrendItemVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 日期(YYYY-MM-DD格式) + */ + @JsonProperty("date") + private String date; + + /** + * 当日登录次数 + */ + @JsonProperty("count") + private Integer count; + + /** + * 显示标签(用于图表展示) + */ + @JsonProperty("label") + private String label; + } +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/LoginTrendVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/LoginTrendVo.java new file mode 100644 index 0000000..6cf2a4f --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/LoginTrendVo.java @@ -0,0 +1,53 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 登录趋势数据响应对象 + * + * @author Leocoder + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class LoginTrendVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 登录趋势数据列表 + */ + @JsonProperty("loginTrend") + private List loginTrend; + + /** + * 登录趋势项 + */ + @Data + public static class LoginTrendItemVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 日期(YYYY-MM-DD格式) + */ + @JsonProperty("date") + private String date; + + /** + * 当日登录次数 + */ + @JsonProperty("count") + private Integer count; + + /** + * 显示标签(用于图表展示) + */ + @JsonProperty("label") + private String label; + } +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SymbolValidateResultVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SymbolValidateResultVo.java new file mode 100644 index 0000000..5fb7cd3 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SymbolValidateResultVo.java @@ -0,0 +1,47 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [Symbol验证结果对象] + */ +@Data +public class SymbolValidateResultVo implements Serializable { + + /** + * 是否有效 + */ + private Boolean valid; + + /** + * 验证消息 + */ + private String message; + + /** + * 响应时间(毫秒) + */ + private Long responseTime; + + /** + * 图标数量(如果可解析) + */ + private Integer iconCount; + + /** + * 内容大小(字节) + */ + private Long contentSize; + + /** + * 验证时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime validateTime; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysDictDataVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysDictDataVo.java new file mode 100644 index 0000000..96a916e --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysDictDataVo.java @@ -0,0 +1,35 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.leocoder.heritage.domain.model.vo.base.BaseVo; + +/** + * @author Leocoder + * @description [字典数据表-模型][Vo类] + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysDictDataVo extends BaseVo { + + /** + * 字典标签 + */ + private String dictLabel; + + /** + * 字典键值 + */ + private String dictValue; + + /** + * 字典类型 + */ + private String dictType; + + /** + * 状态(0正常 1停用) + */ + private String dictStatus; + +} \ No newline at end of file diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysDictTypeVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysDictTypeVo.java new file mode 100644 index 0000000..97f4862 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysDictTypeVo.java @@ -0,0 +1,30 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.leocoder.heritage.domain.model.vo.base.BaseVo; + +/** + * @author Leocoder + * @description [字典类型表-模型][Vo类] + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysDictTypeVo extends BaseVo { + + /** + * 字典名称 + */ + private String dictName; + + /** + * 字典类型 + */ + private String dictType; + + /** + * 状态[0-正常 1-停用] + */ + private String dictStatus; + +} \ No newline at end of file diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysFileVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysFileVo.java new file mode 100755 index 0000000..15da100 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysFileVo.java @@ -0,0 +1,31 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.leocoder.heritage.domain.model.vo.base.BaseVo; + +/** + * @description [文件资源表-模型][Vo类] + * @author Leocoder + */ +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SysFileVo extends BaseVo { + + /** 文件原始名称 */ + private String fileName; + + /** 文件后缀 */ + private String fileSuffix; + + /** 文件服务类型[1-LOCAL,3-OSS] */ + private String fileService; + + /** 文件类型[0-全部 1-图片 2-文档 3-音频 4-视频 5-压缩包 6-应用程序 9-其他] */ + private String fileType; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysJobVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysJobVo.java new file mode 100644 index 0000000..3463156 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysJobVo.java @@ -0,0 +1,65 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import org.leocoder.heritage.domain.model.vo.base.BaseVo; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author Leocoder + * @description [定时任务查询视图对象] + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysJobVo extends BaseVo { + + /** + * 主键ID + */ + private Long jobId; + + /** + * 任务名称 + */ + private String jobName; + + /** + * 任务类型[1-管理平台 2-小程序 3-App] + */ + private String jobType; + + /** + * cron执行表达式 + */ + private String cronExpression; + + /** + * cron计划策略[1-立即执行 2-执行一次 3-放弃执行] + */ + private String policyStatus; + + /** + * 任务状态 [0正常 1暂停] + */ + private String jobStatus; + + /** + * 任务参数 + */ + private String jobParams; + + /** + * 类路径 + */ + private String classPath; + + /** + * 方法名称 + */ + private String methodName; + + /** + * 参数备注 + */ + private String remark; + +} \ No newline at end of file diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysLoginLogVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysLoginLogVo.java new file mode 100755 index 0000000..16155b8 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysLoginLogVo.java @@ -0,0 +1,39 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.leocoder.heritage.domain.model.vo.base.BaseVo; + +/** + * @author Leocoder + * @description [系统访问记录-模型][Vo类] + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysLoginLogVo extends BaseVo { + + /** + * 登录账号 + */ + private String loginName; + + /** + * 登录IP地址 + */ + private String loginIp; + + /** + * 登录状态[0-成功 1-失败] + */ + private String loginStatus; + + /** + * 登录开始时间 + */ + private String beginTime; + + /** + * 登录结束时间 + */ + private String endTime; +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysLoginUserVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysLoginUserVo.java new file mode 100755 index 0000000..f8c8d49 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysLoginUserVo.java @@ -0,0 +1,55 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.leocoder.heritage.domain.model.vo.base.BaseVo; + +/** + * @author Leocoder + * @description [用户信息表-模型](Vo类) + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysLoginUserVo extends BaseVo { + + /** + * 登录账号 + */ + private String loginName; + + /** + * 用户昵称 + */ + private String userName; + + /** + * 用户类型[1-系统用户 2-注册用户] + */ + private String userType; + + /** + * 手机号码 + */ + private String phone; + + /** + * 用户性别[1-男 1-女 3-未知] + */ + private String sex; + + /** + * 帐号状态[0-启用 1-停用] + */ + private String userStatus; + + /** + * 开始时间 + */ + private String beginTime; + + /** + * 结束时间 + */ + private String endTime; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysLoginVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysLoginVo.java new file mode 100755 index 0000000..8b9edde --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysLoginVo.java @@ -0,0 +1,46 @@ +package org.leocoder.heritage.domain.model.vo.system; + +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 SysLoginVo { + + /** + * 账户 + */ + @Length(min = 3, max = 16, message = "账号长度为 3-16 位") + @Pattern(regexp = "^[A-Za-z0-9]+$", message = "账号格式为数字以及字母") + @NotBlank(message = "请输入登录名") + private String loginName; + + /** + * 密码 + */ + @NotBlank(message = "请输入密码") + private String password; + + /** + * 验证码uuid,用来获取redis的验证码 + */ + @NotBlank(message = "验证码已失效") + private String codeKey; + + /** + * 验证码 + */ + @NotBlank(message = "请输入验证码") + private String securityCode; + + /** + * 记住登录,默认为:false + */ + private Boolean rememberMe = false; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysMenuVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysMenuVo.java new file mode 100755 index 0000000..c0292bd --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysMenuVo.java @@ -0,0 +1,30 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.leocoder.heritage.domain.model.vo.base.BaseVo; + +/** + * @author Leocoder + * @description [菜单权限表-模型][Vo类] + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysMenuVo extends BaseVo { + + /** + * 菜单名称 + */ + private String menuName; + + /** + * 是否删除[0-开启 1-暂停] + */ + private String menuStatus; + + /** + * 权限标识 + */ + private String auth; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysOperLogVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysOperLogVo.java new file mode 100644 index 0000000..cc5894a --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysOperLogVo.java @@ -0,0 +1,79 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.leocoder.heritage.domain.model.vo.base.BaseVo; + +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [操作日志查询VO] + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class SysOperLogVo extends BaseVo { + + /** + * 操作名称 + */ + private String operName; + + /** + * 操作类型 + */ + private String operType; + + /** + * 系统类型 + */ + private String systemType; + + /** + * 操作人员 + */ + private String operMan; + + /** + * 操作状态 + */ + private String operStatus; + + /** + * 操作时间-开始 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime operTimeStart; + + /** + * 操作时间-结束 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime operTimeEnd; + + /** + * IP地址 + */ + private String operIp; + + /** + * 方法名称 + */ + private String methodName; + + /** + * 请求URL + */ + private String operUrl; + + /** + * 请求方式 + */ + private String requestMethod; + + /** + * 操作地点 + */ + private String operLocation; +} \ No newline at end of file diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysPictureVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysPictureVo.java new file mode 100755 index 0000000..00ad9dd --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysPictureVo.java @@ -0,0 +1,60 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.leocoder.heritage.domain.model.vo.base.BaseVo; + +import java.util.Date; + +/** + * @description [图库表-模型][Vo类] + * @author Leocoder + */ +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SysPictureVo extends BaseVo { + + /** 主键 */ + private Long pictureId; + + /** 图片原始名称 */ + private String pictureName; + + /** 图片新名称 */ + private String newName; + + /** 图片类型[0-全部 1-用户头像 2-动漫分类 3-美女分类 4-风景分类 5-明星分类 6-动物分类 9-其他] */ + private String pictureType; + + /** 图片大小[KB/MB/GB] */ + private String pictureSize; + + /** 图片后缀 */ + private String pictureSuffix; + + /** 图片上传路径 */ + private String pictureUpload; + + /** 图片回显路径 */ + private String picturePath; + + /** 图片服务类型[1-LOCAL,3-OSS] */ + private String pictureService; + + /** 创建时间 */ + private Date createTime; + + /** 创建人 */ + private String createBy; + + /** 修改时间 */ + private Date updateTime; + + /** 修改人 */ + private String updateBy; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysPwdVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysPwdVo.java new file mode 100755 index 0000000..d6c90f1 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysPwdVo.java @@ -0,0 +1,35 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Leocoder + * @description [修改密码-模型][Vo类] + */ +@NoArgsConstructor +@AllArgsConstructor +@Data +public class SysPwdVo { + + /** + * 原始密码 + */ + @NotBlank(message = "密码不能为空") + private String password; + + /** + * 新密码 + */ + @NotBlank(message = "新密码不能为空") + private String newPassword; + + /** + * 确认密码 + */ + @NotBlank(message = "确认密码不能为空") + private String confirmPassword; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysRegisterVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysRegisterVo.java new file mode 100755 index 0000000..ebe719e --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysRegisterVo.java @@ -0,0 +1,41 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Leocoder + * @description [注册-模型][Vo类] + */ +@NoArgsConstructor +@AllArgsConstructor +@Data +public class SysRegisterVo { + + /** + * 登录名 + */ + @NotBlank(message = "请输入登录名") + private String regLoginName; + + /** + * 密码 + */ + @NotBlank(message = "请输入密码") + private String regPwd; + + /** + * 确认密码 + */ + @NotBlank(message = "请输入确认密码") + private String regConfirmPwd; + + /** + * 注册邀请码 + */ + @NotBlank(message = "请输入注册邀请码") + private String regCode; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysRoleVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysRoleVo.java new file mode 100755 index 0000000..eca38bd --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysRoleVo.java @@ -0,0 +1,40 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.leocoder.heritage.domain.model.vo.base.BaseVo; + +/** + * @author Leocoder + * @description [角色信息表-模型][Vo类] + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysRoleVo extends BaseVo { + + /** + * 角色名称 + */ + private String roleName; + + /** + * 角色权限字符串 + */ + private String roleCode; + + /** + * 角色状态(0正常 1停用) + */ + private String roleStatus; + + /** + * 开始时间 + */ + private String beginTime; + + /** + * 结束时间 + */ + private String endTime; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysUserOnlineVo.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysUserOnlineVo.java new file mode 100755 index 0000000..ece802f --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/model/vo/system/SysUserOnlineVo.java @@ -0,0 +1,34 @@ +package org.leocoder.heritage.domain.model.vo.system; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.leocoder.heritage.domain.model.vo.base.BaseVo; + +/** + * @author Leocoder + * @description [在线用户-模型][Vo类] + */ +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SysUserOnlineVo extends BaseVo { + + /** + * IP + */ + private String loginIp; + + /** + * 登录名称 + */ + private String loginName; + + /** + * 用户名字 + */ + private String userName; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/GenColumn.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/GenColumn.java new file mode 100755 index 0000000..510d330 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/GenColumn.java @@ -0,0 +1,150 @@ +package org.leocoder.heritage.domain.pojo.gen; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [代码生成字段表-模型} + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("gen_column") +public class GenColumn implements Serializable { + + /** + * 主键ID + */ + @TableId(value = "column_id", type = IdType.ASSIGN_ID) + private Long columnId; + + /** + * 数据库名[默认本地:local] + */ + @TableField(value = "table_schema") + private String tableSchema; + + /** + * 归属表编号 + */ + @TableField(value = "table_name") + private String tableName; + + /** + * 列名称 + */ + @TableField(value = "column_name") + private String columnName; + + /** + * 列类型 + */ + @TableField(value = "column_type") + private String columnType; + + /** + * 数据库字段是否为空[0-是,1-否] + */ + @TableField(value = "is_nullable") + private String isNullable; + + /** + * 列描述 + */ + @TableField(value = "column_comment") + private String columnComment; + + /** + * JAVA类型 + */ + @TableField(value = "java_type") + private String javaType; + + /** + * JAVA字段名 + */ + @TableField(value = "java_field") + private String javaField; + + /** + * 是否主键[0-是,1-否] + */ + @TableField(value = "is_pk") + private String isPk; + + /** + * 是否列表展示字段[0-是 1-否] + */ + @TableField(value = "is_list") + private String isList; + + /** + * 是否搜索展示字段[0-是 1-否] + */ + @TableField(value = "is_search") + private String isSearch; + + /** + * 条件搜索类型[EQ、LIKE等] + */ + @TableField(value = "search_type") + private String searchType; + + /** + * 是否表单展示字段[0-是 1-否] + */ + @TableField(value = "is_form") + private String isForm; + + /** + * 是否添加规则校验[0-是 1-否] + */ + @TableField(value = "is_rule") + private String isRule; + + /** + * 显示类型[文本框-input、下拉框-select、复选框-checkbox、单选框-radio、日期控件-datatime、文本域-textarea] + */ + @TableField(value = "element_type") + private String elementType; + + /** + * 字典类型 + */ + @TableField(value = "dict_type") + private String dictType; + + /** + * 创建者 + */ + @TableField(value = "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(value = "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; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/GenTable.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/GenTable.java new file mode 100755 index 0000000..55579c1 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/GenTable.java @@ -0,0 +1,168 @@ +package org.leocoder.heritage.domain.pojo.gen; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [代码生成业务表-模型] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("gen_table") +public class GenTable implements Serializable { + + /** + * 编号 + */ + @TableId(value = "table_id", type = IdType.ASSIGN_ID) + private Long tableId; + + /** + * 表名称 + */ + @TableField(value = "table_name") + private String tableName; + + /** + * 数据库名[空-默认数据库,有值-指定数据库] + */ + @TableField(value = "table_schema") + private String tableSchema; + + /** + * 表描述 + */ + @TableField(value = "table_comment") + private String tableComment; + + /** + * 实体类名称 + */ + @TableField(value = "class_name") + private String className; + + /** + * 数据权限字符 + */ + @TableField(value = "table_auth") + private String tableAuth; + + /** + * 中文菜单名称 + */ + @TableField(value = "zh_name") + private String zhName; + + /** + * 英文菜单名称 + */ + @TableField(value = "en_name") + private String enName; + + /** + * 菜单图标 + */ + @TableField(value = "table_icon") + private String tableIcon; + + /** + * 父级菜单 + */ + @TableField(value = "parent_id") + private Long parentId; + + /** + * 父级菜单 + */ + @TableField(value = "table_path") + private String tablePath; + + /** + * 使用的模板[table单表操作 tree树表操作] + */ + @TableField(value = "table_template") + private String tableTemplate; + + /** + * 树编码字段 + */ + @TableField(value = "tree_id") + private String treeId; + + /** + * 树父编码字段 + */ + @TableField(value = "tree_pid") + private String treePid; + + /** + * 树编码名称 + */ + @TableField(value = "tree_name") + private String treeName; + + /** + * 包路径 + */ + @TableField(value = "package_path") + private String packagePath; + + /** + * 模块文件夹名字 + */ + @TableField(value = "module_folder") + private String moduleFolder; + + /** + * 页面文件夹名字 + */ + @TableField(value = "page_folder") + private String pageFolder; + + /** + * 作者 + */ + @TableField(value = "author") + private String author; + + /** + * 生成路径 + */ + @TableField(value = "gen_path") + private String genPath; + + /** + * 创建者 + */ + @TableField(value = "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(value = "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; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/TableColumn.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/TableColumn.java new file mode 100755 index 0000000..9f1fd84 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/TableColumn.java @@ -0,0 +1,41 @@ +package org.leocoder.heritage.domain.pojo.gen; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Leocoder + * @description [数据库表字段-模型] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class TableColumn { + + /** + * 数据库字段名称 + */ + private String columnName; + + /** + * 数据库字段类型 + */ + private String columnType; + + /** + * 数据库字段是否默认为空[0-是,1-否] + */ + private String isNullable; + + /** + * 数据库字段是否主键[0-是,1-否] + */ + private String isPk; + + /** + * 数据库字段注释 + */ + private String columnComment; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/TableData.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/TableData.java new file mode 100755 index 0000000..565437b --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/TableData.java @@ -0,0 +1,41 @@ +package org.leocoder.heritage.domain.pojo.gen; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.leocoder.heritage.domain.model.vo.base.BaseVo; + +import java.util.List; + +/** + * @author Leocoder + * @description [数据库表-模型] + */ +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +public class TableData extends BaseVo { + + /** + * 数据库名称 + */ + private String tableSchema; + + /** + * 数据库表名 + */ + private String tableName; + + /** + * 表注释 + */ + private String tableComment; + + /** + * 导入表传递的表名 + */ + private List tableNameList; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysDictData.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysDictData.java new file mode 100644 index 0000000..d272d8d --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysDictData.java @@ -0,0 +1,110 @@ +package org.leocoder.heritage.domain.pojo.system; + +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("sys_dict_data") +public class SysDictData implements Serializable { + + /** + * 字典编码 + */ + @TableId(value = "dict_id", type = IdType.ASSIGN_ID) + private Long dictId; + + /** + * 字典标签 + */ + @NotBlank(message = "字典标签不能为空") + @TableField(value = "dict_label") + private String dictLabel; + + /** + * 字典键值 + */ + @NotBlank(message = "字典键值不能为空") + @TableField(value = "dict_value") + private String dictValue; + + /** + * 字典类型 + */ + @NotBlank(message = "字典类型不能为空") + @TableField(value = "dict_type") + private String dictType; + + /** + * 字典状态[0启用 1停用] + */ + @NotBlank(message = "字典状态不能为空") + @TableField(value = "dict_status") + private String dictStatus; + + /** + * ElementPlus官方颜色[默认-primary] + */ + @NotBlank(message = "标签不能为空") + @TableField(value = "dict_tag") + private String dictTag; + + /** + * tags自定义背景颜色[有值会进行覆盖ElementPlus官方颜色][例如:16进制或者pink等] + */ + @TableField(value = "dict_color") + private String dictColor; + + /** + * 显示顺序 + */ + @NotNull(message = "显示顺序不能为空") + @TableField(value = "sorted") + private Integer sorted; + + /** + * 创建者 + */ + @TableField(value = "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(value = "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; + + /** + * 备注 + */ + @TableField(value = "remark") + private String remark; + +} \ No newline at end of file diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysDictType.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysDictType.java new file mode 100644 index 0000000..01cca32 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysDictType.java @@ -0,0 +1,81 @@ +package org.leocoder.heritage.domain.pojo.system; + +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("sys_dict_type") +public class SysDictType implements Serializable { + + /** + * 字典主键 + */ + @TableId(value = "dict_id", type = IdType.ASSIGN_ID) + private Long dictId; + + /** + * 字典类型 + */ + @NotBlank(message = "字典类型不能为空") + @TableField("dict_type") + private String dictType; + + /** + * 字典名称 + */ + @NotBlank(message = "字典名称不能为空") + @TableField("dict_name") + private String dictName; + + /** + * 字典状态[0-正常 1-停用] + */ + @NotBlank(message = "字典状态不能为空") + @TableField("dict_status") + private String dictStatus; + + /** + * 创建者 + */ + @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; + + /** + * 备注 + */ + @TableField("remark") + private String remark; +} \ No newline at end of file diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysFile.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysFile.java new file mode 100755 index 0000000..4deedc5 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysFile.java @@ -0,0 +1,76 @@ +package org.leocoder.heritage.domain.pojo.system; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @description [文件资源表-模型] + * @author Leocoder + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("sys_file") +public class SysFile implements Serializable { + + /** 主键 */ + @TableId(value = "file_id", type = IdType.ASSIGN_ID) + private Long fileId; + + /** 文件原始名称 */ + @TableField(value = "file_name") + private String fileName; + + /** 文件新名称 */ + @TableField(value = "new_name") + private String newName; + + /** 文件类型[0-全部 1-图片 2-文档 3-音频 4-视频 5-压缩包 6-应用程序 9-其他] */ + @TableField(value = "file_type") + private String fileType; + + /** 文件大小[KB/MB/GB] */ + @TableField(value = "file_size") + private String fileSize; + + /** 文件后缀 */ + @TableField(value = "file_suffix") + private String fileSuffix; + + /** 文件上传路径 */ + @TableField(value = "file_upload") + private String fileUpload; + + /** 文件回显路径 */ + @TableField(value = "file_path") + private String filePath; + + /** 文件服务类型[1-LOCAL,3-OSS] */ + @TableField(value = "file_service") + private String fileService; + + /** 创建时间 */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** 创建人 */ + @TableField(value = "create_by") + private String createBy; + + /** 修改时间 */ + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + /** 修改人 */ + @TableField(value = "update_by") + private String updateBy; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysJob.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysJob.java new file mode 100644 index 0000000..8b933c8 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysJob.java @@ -0,0 +1,149 @@ +package org.leocoder.heritage.domain.pojo.system; + +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("sys_job") +public class SysJob implements Serializable { + + /** + * 任务ID + */ + @TableId(value = "job_id", type = IdType.ASSIGN_ID) + private Long jobId; + + /** + * 任务名称 + */ + @NotBlank(message = "任务名称不能为空") + @TableField("job_name") + private String jobName; + + /** + * 任务类型[1-管理平台 2-小程序 3-App] + */ + @NotBlank(message = "任务类型不能为空") + @TableField("job_type") + private String jobType; + + /** + * 类路径 + */ + @NotBlank(message = "类路径不能为空") + @TableField("class_path") + private String classPath; + + /** + * 方法名称 + */ + @NotBlank(message = "方法名称不能为空") + @TableField("method_name") + private String methodName; + + /** + * cron执行表达式 + */ + @NotBlank(message = "cron执行表达式不能为空") + @TableField("cron_expression") + private String cronExpression; + + /** + * cron计划策略[1-立即执行 2-执行一次 3-放弃执行] + */ + @NotBlank(message = "cron计划策略不能为空") + @TableField("policy_status") + private String policyStatus; + + /** + * 任务状态 [0正常 1暂停] + */ + @NotBlank(message = "任务状态不能为空") + @TableField("job_status") + private String jobStatus; + + /** + * 任务参数 + */ + @TableField("job_params") + private String jobParams; + + /** + * 任务备注 + */ + @TableField("remark") + private String remark; + + /** + * 创建者 + */ + @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; + + /** + * @description [获取任务状态文本] + * @author Leocoder + */ + public String getJobStatusText() { + return "0".equals(jobStatus) ? "正常" : "暂停"; + } + + /** + * @description [获取策略状态文本] + * @author Leocoder + */ + public String getPolicyStatusText() { + switch (policyStatus) { + case "1": return "立即执行"; + case "2": return "执行一次"; + case "3": return "放弃执行"; + default: return "未知"; + } + } + + /** + * @description [获取任务类型文本] + * @author Leocoder + */ + public String getJobTypeText() { + switch (jobType) { + case "1": return "管理平台"; + case "2": return "小程序"; + case "3": return "App"; + default: return "其他"; + } + } +} \ No newline at end of file diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysLoginLog.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysLoginLog.java new file mode 100755 index 0000000..da5b3ee --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysLoginLog.java @@ -0,0 +1,88 @@ +package org.leocoder.heritage.domain.pojo.system; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +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("sys_login_log") +public class SysLoginLog implements Serializable { + + /** + * 访问ID + */ + @TableId(value = "login_id", type = IdType.ASSIGN_ID) + private Long loginId; + + /** + * 登录账号 + */ + @NotBlank(message = "登录账号不能为空") + @TableField("login_name") + private String loginName; + + /** + * 登录设备(PC、手机、平板) + */ + @NotBlank(message = "登录设备不能为空") + @TableField("device_name") + private String deviceName; + + /** + * 登录IP地址 + */ + @TableField("login_ip") + private String loginIp; + + /** + * 登录地址 + */ + @TableField("login_address") + private String loginAddress; + + /** + * 浏览器类型 + */ + @TableField("browser") + private String browser; + + /** + * 操作系统 + */ + @TableField("os") + private String os; + + /** + * 登录状态[0-成功 1-失败] + */ + @TableField("login_status") + private String loginStatus; + + /** + * 提示消息 + */ + @TableField("message") + private String message; + + /** + * 访问时间 + */ + @TableField("login_time") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime loginTime; +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysLoginUser.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysLoginUser.java new file mode 100755 index 0000000..e948dbd --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysLoginUser.java @@ -0,0 +1,196 @@ +package org.leocoder.heritage.domain.pojo.system; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.*; +import com.alibaba.excel.enums.BooleanEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.validator.constraints.Length; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author Leocoder + * @description [系统用户-模型] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +// 默认不管加不加ExcelProperty的注解的所有字段都会参与读写,加了ExcelIgnoreUnannotated注解以后,不加ExcelProperty注解的字段就不会参与 +@ExcelIgnoreUnannotated +// 设置单元格高度 +@ContentRowHeight(15) +// 设置标题高度 +@HeadRowHeight(17) +// 设置单元格内容居中 +@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER) +// 设置标题字体样式 +@HeadFontStyle(fontName = "仿宋",color = 20, bold = BooleanEnum.FALSE) +// 设置单元格字体样式 +@ContentFontStyle(fontName = "仿宋",color = 30, bold = BooleanEnum.FALSE) +@TableName("sys_login_user") +public class SysLoginUser implements java.io.Serializable { + + /** + * 用户ID + */ + // 使用@ExcelIgnore注解:默认所有字段都会和excel去匹配,加了这个注解会忽略该字段 + @TableId(value = "user_id", type = IdType.ASSIGN_ID) + private Long userId; + + /** + * 登录账号,value属性设置列的名称,index属性设置设置列的序号从 0 开始 + */ + @Length(min = 3, max = 16, message = "账号长度为 3-16 位") + @Pattern(regexp = "^[A-Za-z0-9]+$", message = "账号格式为数字以及字母") + @NotBlank(message = "登录账号不能为空") + @ColumnWidth(20) + @ExcelProperty(value = "登录账号", index = 0) + @TableField("login_name") + private String loginName; + + /** + * 用户真实姓名 + */ + @NotBlank(message = "用户真实姓名不能为空") + @ColumnWidth(20) + @ExcelProperty(value = "用户名字", index = 1) + @TableField("user_name") + private String userName; + + /** + * 用户密码 + */ + @TableField("password") + private String password; + + /** + * 用户类型[1-系统用户 2-注册用户 3-微信用户] + */ + @TableField("user_type") + private String userType; + + /** + * 用户邮箱 + */ + @ColumnWidth(30) + @ExcelProperty(value = "用户邮箱", index = 2) + @TableField("email") + private String email; + + /** + * 手机号码 + */ + // @CoderDesensitize(rule = DesensitizeRuleEnum.MOBILE_PHONE) + @NotBlank(message = "手机号码不能为空") + @ColumnWidth(20) + @ExcelProperty(value = "手机号码", index = 3) + @TableField("phone") + private String phone; + + /** + * 用户性别[1-男 2-女 3-未知] + */ + // @CoderDict(dictKey = "sys_user_sex", dictValue = "sex") + @NotBlank(message = "用户性别不能为空") + @ColumnWidth(20) + @ExcelProperty(value = "用户性别[1-男 2-女 3-未知]", index = 4) + @TableField("sex") + private String sex; + + /** + * 头像路径 + */ + @ColumnWidth(20) + @ExcelProperty(value = "头像路径", index = 5) + @TableField("avatar") + private String avatar; + + /** + * 盐加密 + */ + @TableField("salt") + private String salt; + + /** + * 帐号状态[0-启用 1-停用] + */ + // @CoderDict(dictKey = "sys_switch_status", dictValue = "userStatus") + @NotBlank(message = "帐号状态不能为空") + @TableField("user_status") + private String userStatus; + + /** + * 登录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("pwd_update_time") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime pwdUpdateTime; + + /** + * 备注 + */ + @TableField("remark") + private String remark; + + /** + * 创建者 + */ + @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; + + + /** + * 岗位ID + */ + @TableField(exist = false) + private List postIds; + + /** + * 角色ID + */ + @TableField(exist = false) + private List roleIds; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysMenu.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysMenu.java new file mode 100755 index 0000000..f19bf0d --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysMenu.java @@ -0,0 +1,170 @@ +package org.leocoder.heritage.domain.pojo.system; + +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("sys_menu") +public class SysMenu implements Serializable { + + /** + * 菜单ID + */ + @TableId(value = "menu_id", type = IdType.ASSIGN_ID) + private Long menuId; + + /** + * 菜单名称 + */ + @NotBlank(message = "菜单名称不能为空") + @TableField(value = "menu_name") + private String menuName; + + /** + * 英文菜单 + */ + @TableField(value = "en_name") + private String enName; + + /** + * 父菜单ID + */ + @NotNull(message = "上级菜单不能为空") + @TableField(value = "parent_id") + private Long parentId; + + /** + * 菜单类型[1-目录 2-菜单 3-按钮] + */ + @NotBlank(message = "菜单类型不能为空") + @TableField(value = "menu_type") + private String menuType; + + /** + * 路由地址 + */ + @TableField(value = "path") + private String path; + + /** + * 路由名称[例如:userPage] + */ + @TableField(value = "name") + private String name; + + /** + * vue页面路径 + */ + @TableField(value = "component") + private String component; + + /** + * 菜单图标 + */ + @TableField(value = "icon") + private String icon; + + /** + * 权限标识 + */ + @TableField(value = "auth") + private String auth; + + /** + * 菜单状态[0-启用 1-停用] + */ + @NotBlank(message = "菜单状态不能为空") + @TableField(value = "menu_status") + private String menuStatus; + + /** + * 选中路由 + */ + @TableField(value = "active_menu") + private String activeMenu; + + /** + * 是否隐藏[0-隐藏 1-显示] + */ + @NotBlank(message = "是否隐藏菜单不能为空") + @TableField(value = "is_hide") + private String isHide; + + /** + * 是否外链[空值不跳转,有值则跳转链接] + */ + @TableField(value = "is_link") + private String isLink; + + /** + * 是否缓存[0-是 1-否] + */ + @TableField(value = "is_keep_alive") + private String isKeepAlive; + + /** + * 是否全屏[0-是 1-否] + */ + @TableField(value = "is_Full") + private String isFull; + + /** + * 是否固定项[0-是 1-否][例如:首页] + */ + @TableField(value = "is_affix") + private String isAffix; + + /** + * 是否展开[0-是 1-否] + */ + @TableField(value = "is_spread") + private String isSpread; + + /** + * 显示顺序 + */ + @NotNull(message = "显示顺序不能为空") + @TableField(value = "sorted") + private Integer sorted; + + /** + * 创建者 + */ + @TableField(value = "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(value = "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; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysOperLog.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysOperLog.java new file mode 100644 index 0000000..9948140 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysOperLog.java @@ -0,0 +1,134 @@ +package org.leocoder.heritage.domain.pojo.system; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author Leocoder + * @description [操作日志实体类] + */ +@Data +@TableName("sys_oper_log") +public class SysOperLog { + + /** + * 操作主键 + */ + @TableId(value = "oper_id", type = IdType.AUTO) + private Long operId; + + /** + * 操作名称 + */ + private String operName; + + /** + * 操作类型 + */ + private String operType; + + /** + * 方法名称 + */ + private String methodName; + + /** + * 请求方式 + */ + private String requestMethod; + + /** + * 系统类型 + */ + private String systemType; + + /** + * 操作人员 + */ + private String operMan; + + /** + * 请求URL + */ + private String operUrl; + + /** + * 主机地址 + */ + private String operIp; + + /** + * 操作地点 + */ + private String operLocation; + + /** + * 请求参数 + */ + private String operParam; + + /** + * 返回参数 + */ + private String jsonResult; + + /** + * 操作状态 + */ + private String operStatus; + + /** + * 错误消息 + */ + private String errorMsg; + + /** + * 操作时间 + */ + private LocalDateTime operTime; + + /** + * 消耗时间 + */ + private String costTime; + + /** + * @description [获取操作状态文本] + * @author Leocoder + */ + public String getOperStatusText() { + return "0".equals(operStatus) ? "正常" : "异常"; + } + + /** + * @description [获取操作类型文本] + * @author Leocoder + */ + public String getOperTypeText() { + switch (operType) { + case "INSERT": return "新增"; + case "UPDATE": return "修改"; + case "DELETE": return "删除"; + case "SELECT": return "查询"; + case "IMPORT": return "导入"; + case "EXPORT": return "导出"; + default: return "其它"; + } + } + + /** + * @description [获取系统类型文本] + * @author Leocoder + */ + public String getSystemTypeText() { + switch (systemType) { + case "MANAGER": return "后台用户"; + case "PHONE": return "手机端用户"; + default: return "其它"; + } + } +} \ No newline at end of file diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysPicture.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysPicture.java new file mode 100755 index 0000000..c3f63b1 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysPicture.java @@ -0,0 +1,76 @@ +package org.leocoder.heritage.domain.pojo.system; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @description [图库表-模型] + * @author Leocoder + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("sys_picture") +public class SysPicture implements Serializable { + + /** 主键 */ + @TableId(value = "picture_id", type = IdType.ASSIGN_ID) + private Long pictureId; + + /** 图片原始名称 */ + @TableField(value = "picture_name") + private String pictureName; + + /** 图片新名称 */ + @TableField(value = "new_name") + private String newName; + + /** 图片类型[0-全部 1-用户头像 2-动漫分类 3-美女分类 4-风景分类 5-明星分类 6-动物分类 9-其他] */ + @TableField(value = "picture_type") + private String pictureType; + + /** 图片大小[KB/MB/GB] */ + @TableField(value = "picture_size") + private String pictureSize; + + /** 图片后缀 */ + @TableField(value = "picture_suffix") + private String pictureSuffix; + + /** 图片上传路径 */ + @TableField(value = "picture_upload") + private String pictureUpload; + + /** 图片回显路径 */ + @TableField(value = "picture_path") + private String picturePath; + + /** 图片服务类型[1-LOCAL,3-OSS] */ + @TableField(value = "picture_service") + private String pictureService; + + /** 创建时间 */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** 创建人 */ + @TableField(value = "create_by") + private String createBy; + + /** 修改时间 */ + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + /** 修改人 */ + @TableField(value = "update_by") + private String updateBy; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysRole.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysRole.java new file mode 100755 index 0000000..de191c8 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysRole.java @@ -0,0 +1,88 @@ +package org.leocoder.heritage.domain.pojo.system; + +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("sys_role") +public class SysRole implements Serializable { + + /** + * 角色ID + */ + @TableId(value = "role_id", type = IdType.ASSIGN_ID) + private Long roleId; + + /** + * 角色名称 + */ + @NotBlank(message = "角色名称不能为空") + @TableField("role_name") + private String roleName; + + /** + * 角色权限字符串 + */ + @TableField("role_code") + private String roleCode; + + /** + * 角色状态[0-正常 1-停用] + */ + @NotBlank(message = "角色状态不能为空") + @TableField("role_status") + private String roleStatus; + + /** + * 显示顺序 + */ + @NotNull(message = "显示顺序不能为空") + @TableField("sorted") + private Integer sorted; + + /** + * 创建者 + */ + @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; + + /** + * 备注 + */ + @TableField("remark") + private String remark; +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysUserRole.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysUserRole.java new file mode 100755 index 0000000..9056c3d --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/system/SysUserRole.java @@ -0,0 +1,32 @@ +package org.leocoder.heritage.domain.pojo.system; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Leocoder + * @description [系统用户角色-模型] + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("sys_user_role") +public class SysUserRole { + + /** + * 用户ID + */ + @TableId(value = "user_id", type = IdType.NONE) + private Long userId; + + /** + * 角色ID + */ + @TableId(value = "user_id", type = IdType.NONE) + private Long roleId; + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/validator/anno/ValidPhone.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/validator/anno/ValidPhone.java new file mode 100755 index 0000000..94e9c6f --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/validator/anno/ValidPhone.java @@ -0,0 +1,32 @@ +package org.leocoder.heritage.domain.validator.anno; + +import jakarta.validation.Constraint; +import jakarta.validation.Payload; +import org.leocoder.heritage.domain.validator.valid.PhoneValidator; + +import java.lang.annotation.*; + +/** + * @author Leocoder + * @description [ValidPhone] + */ +@Documented +@Constraint(validatedBy = PhoneValidator.class) +@Target({ElementType.METHOD, ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface ValidPhone { + + String message() default "手机格式不正确!"; + + Class[] groups() default {}; + + Class[] payload() default {}; + + @Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE}) + @Retention(RetentionPolicy.RUNTIME) + @Documented + public @interface List { + ValidPhone[] value(); + } + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/validator/anno/ValidURL.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/validator/anno/ValidURL.java new file mode 100755 index 0000000..4b00e92 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/validator/anno/ValidURL.java @@ -0,0 +1,17 @@ +package org.leocoder.heritage.domain.validator.anno; + +import jakarta.validation.Constraint; +import org.leocoder.heritage.domain.validator.valid.URLValidator; + +import java.lang.annotation.*; + +/** + * @author Leocoder + * @description [CoderValidURL] + */ +@Documented +@Constraint(validatedBy = URLValidator.class) +@Target({ElementType.METHOD, ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface ValidURL { +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/validator/utils/ValidatorUtil.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/validator/utils/ValidatorUtil.java new file mode 100755 index 0000000..cc2f9e2 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/validator/utils/ValidatorUtil.java @@ -0,0 +1,121 @@ +package org.leocoder.heritage.domain.validator.utils; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author Leocoder + * @description [校验工具类] + */ +public class ValidatorUtil { + + public static void main(String[] args) { + // System.out.println(MD5Util.md5( "123456"+"111.!@3")); + System.out.println(isValidatorPhone("18593114301")); + System.out.println(isValidatorPhone("110110110")); + System.out.println(isValidatorPhone("Coder-Admin")); + System.out.println(isURL("Coder-Admin")); + System.out.println(isURL("http://www.baidu.com")); + System.out.println("ok" + isURL("https://uncss-online.com/")); + System.out.println("ok11" + isURL("http://weathernew.pae.baidu.com/weathernew/pc?query=%E6%A2%85%E5%B7%9E%E5%A4%A9%E6%B0%94&srcid=4982&city_name=%E6%A2%85%E5%B7%9E&province_name=%E5%B9%BF%E4%B8%9C")); + System.out.println(isEmail("http://www.baidu.com")); + System.out.println(isEmail("Coder-admin@163.com")); + System.out.println(isEmail("yuxintao6@163.com")); + } + + /** + * @description [验证手机号码] + */ + public static boolean isValidatorPhone(String phone) { + String regex = "(^0?1[1|2|3|4|5|7|6|8|9][0-9]\\d{8}$)"; + if (phone.length() != 11) { + return false; + } else { + Pattern p = Pattern.compile(regex); + Matcher m = p.matcher(phone); + boolean isMatch = m.matches(); + return isMatch; + } + } + + + /** + * @description [利用正则表达式判断字符串是否是数字] + */ + public static boolean isNumeric(String str) { + Pattern pattern = Pattern.compile("[0-9]*"); + Matcher isNum = pattern.matcher(str); + if (!isNum.matches()) { + return false; + } + return true; + } + + + /** + * @description [校验邮箱] + */ + public static boolean isEmail(String email) { + if (null == email || "".equals(email)) { + return false; + } + + String regEx1 = "^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+"; + Pattern p = Pattern.compile(regEx1); + Matcher m = p.matcher(email); + if (m.matches()) { + return true; + } else { + return false; + } + } + + /** + * @description [校验url] + */ + public static boolean isURL(String url) { + //String regex = "^([hH][tT]{2}[pP]:/*|[hH][tT]{2}[pP][sS]:/*|[fF][tT][pP]:/*)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\\/])+(\\?{0,1}(([A-Za-z0-9-~]+\\={0,1})([A-Za-z0-9-~]*)\\&{0,1})*)$"; + String regex = "^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"; + Pattern pattern = Pattern.compile(regex); + return pattern.matcher(url).matches(); + } + + /** + * @description [顶级域名判断;如果要忽略大小写,可以直接在传入参数的时候toLowerCase()再做判断] + */ + public static boolean isTopURL(String str) { + //转换为小写 + str = str.toLowerCase(); + String domainRules = "com.cn|net.cn|org.cn|gov.cn|com.hk|公司|中国|网络|com|net|org|int|edu|gov|mil|arpa|Asia|biz|info|name|pro|coop|aero|museum|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cf|cg|ch|ci|ck|cl|cm|cn|co|cq|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|eh|es|et|ev|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gp|gr|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|ml|mm|mn|mo|mp|mq|mr|ms|mt|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|va|vc|ve|vg|vn|vu|wf|ws|ye|yu|za|zm|zr|zw"; + String regex = "^((https|http|ftp|rtsp|mms)?://)" + + "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //ftp的user@ + + "(([0-9]{1,3}\\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184 + + "|" // 允许IP和DOMAIN(域名) + + "(([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]+\\.)?" // 域名- www. + + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\\." // 二级域名 + + "(" + domainRules + "))" // first level domain- .com or .museum + + "(:[0-9]{1,4})?" // 端口- :80 + + "((/?)|" // a slash isn't required if there is no file name + + "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$"; + Pattern pattern = Pattern.compile(regex); + Matcher isUrl = pattern.matcher(str); + return isUrl.matches(); + } + + + /** + * @description [判断字符串是否包含中文] + */ + public static boolean isContainsChinese(String str) { + String regEx = "[\u4e00-\u9fa5]"; + Pattern pat = Pattern.compile(regEx); + Matcher matcher = pat.matcher(str); + boolean flg = false; + if (matcher.find()) { + flg = true; + } + return flg; + } + + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/validator/valid/PhoneValidator.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/validator/valid/PhoneValidator.java new file mode 100755 index 0000000..16dfe78 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/validator/valid/PhoneValidator.java @@ -0,0 +1,33 @@ +package org.leocoder.heritage.domain.validator.valid; + +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; +import org.leocoder.heritage.domain.validator.anno.ValidPhone; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author Leocoder + * @description [PhoneValidator-手机号校验器] + */ +public class PhoneValidator implements ConstraintValidator { + + @Override + public boolean isValid(String phoneNumber, ConstraintValidatorContext constraintValidatorContext) { + // 1: 如果用户没输入直接返回不校验,因为空的判断交给@NotNull去做就行了 + if (phoneNumber == null || phoneNumber.isEmpty()) { + return true; + } + Pattern p = Pattern.compile("^(13[0-9]|14[5|7|9]|15[0|1|2|3|5|6|7|8|9]|17[0|1|6|7|8]|18[0-9])\\d{8}$"); + // 2:如果校验通过就返回true,否则返回false; + Matcher matcher = p.matcher(phoneNumber); + return matcher.matches(); + } + + @Override + public void initialize(ValidPhone constraintAnnotation) { + + } + +} diff --git a/heritage-model/src/main/java/org/leocoder/heritage/domain/validator/valid/URLValidator.java b/heritage-model/src/main/java/org/leocoder/heritage/domain/validator/valid/URLValidator.java new file mode 100755 index 0000000..ce68ad4 --- /dev/null +++ b/heritage-model/src/main/java/org/leocoder/heritage/domain/validator/valid/URLValidator.java @@ -0,0 +1,33 @@ +package org.leocoder.heritage.domain.validator.valid; + +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; +import org.leocoder.heritage.domain.validator.anno.ValidURL; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author Leocoder + * @description [URLValidator-URL校验器] + */ +public class URLValidator implements ConstraintValidator { + + @Override + public boolean isValid(String urlValue, ConstraintValidatorContext constraintValidatorContext) { + // 1、如果用户没输入直接返回不校验,因为空的判断交给@NotNull去做就行了 + if (urlValue == null || urlValue.isEmpty()) { + return true; + } + Pattern p = Pattern.compile("^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"); + // 2、如果校验通过就返回true,否则返回false; + Matcher matcher = p.matcher(urlValue); + return matcher.matches(); + } + + @Override + public void initialize(ValidURL constraintAnnotation) { + + } + +}