feat: 新增heritage-model数据模型模块
- 新增枚举类:菜单状态、菜单类型、操作类型等 - 新增BO类:业务对象,包含表单元素和系统业务对象 - 新增VO类:视图对象,用于接口返回数据 - 新增POJO实体类:对应数据库表结构 - 新增数据验证注解:手机号、URL等自定义验证器
This commit is contained in:
parent
533838cb59
commit
287add8e36
51
heritage-model/pom.xml
Normal file
51
heritage-model/pom.xml
Normal file
@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.leocoder.heritage</groupId>
|
||||
<artifactId>heritage-backend</artifactId>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
|
||||
|
||||
<name>heritage-model</name>
|
||||
<artifactId>heritage-model</artifactId>
|
||||
<description>实体类模块</description>
|
||||
|
||||
<dependencies>
|
||||
<!-- Lombok -->
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
<!-- 实体中会用mp的注解 -->
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
|
||||
</dependency>
|
||||
<!-- 自定义验证注解 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-validation</artifactId>
|
||||
</dependency>
|
||||
<!-- 数据脱敏 -->
|
||||
<dependency>
|
||||
<groupId>org.leocoder.heritage</groupId>
|
||||
<artifactId>heritage-desensitize</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
<!-- 参数校验 -->
|
||||
<dependency>
|
||||
<groupId>org.hibernate.validator</groupId>
|
||||
<artifactId>hibernate-validator</artifactId>
|
||||
</dependency>
|
||||
<!-- EasyExcel -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>easyexcel</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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<String> menuIds;
|
||||
|
||||
/**
|
||||
* 获取Long类型的角色ID
|
||||
*/
|
||||
public Long getRoleIdAsLong() {
|
||||
return roleId != null ? Long.valueOf(roleId) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取Long类型的菜单ID列表
|
||||
*/
|
||||
public List<Long> getMenuIdsAsLong() {
|
||||
if (menuIds == null) {
|
||||
return null;
|
||||
}
|
||||
return menuIds.stream()
|
||||
.filter(id -> id != null && !id.isEmpty())
|
||||
.map(Long::valueOf)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
||||
@ -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<String, Object> params;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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<LoginTrendItemVo> 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;
|
||||
}
|
||||
}
|
||||
@ -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<LoginTrendItemVo> 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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
168
heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/GenTable.java
Executable file
168
heritage-model/src/main/java/org/leocoder/heritage/domain/pojo/gen/GenTable.java
Executable file
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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<String> tableNameList;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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 "其他";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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<Long> postIds;
|
||||
|
||||
/**
|
||||
* 角色ID
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private List<Long> roleIds;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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 "其它";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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<? extends Payload>[] 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();
|
||||
}
|
||||
|
||||
}
|
||||
@ -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 {
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -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<ValidPhone, String> {
|
||||
|
||||
@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) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -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<ValidURL, String> {
|
||||
|
||||
@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) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user