refactor: 系统功能重构

This commit is contained in:
hxr
2024-06-24 08:15:46 +08:00
parent 5a6ae48bcd
commit 7d1fcfbef4
71 changed files with 900 additions and 1048 deletions

View File

@@ -24,14 +24,19 @@ public class RouteBO {
private String name;
/**
* 菜单类型(1-菜单2-目录3-外链4-按钮权限)
* 菜单类型(1-菜单 2-目录 3-外链 4-按钮)
*/
private MenuTypeEnum type;
/**
* 路由路径(浏览器地址栏路径)
* 路由名称Vue Router 中定义的路由名称)
*/
private String path;
private String routeName;
/**
* 路由路径Vue Router 中定义的 URL 路径)
*/
private String routePath;
/**
* 组件路径(vue页面完整路径省略.vue后缀)

View File

@@ -1,66 +0,0 @@
package com.youlai.system.model.bo;
import lombok.Data;
import java.util.List;
/**
* user表单持久化对象
*
* @author haoxr
* @since 2022/6/10
*/
@Data
public class UserFormBO {
/**
* 用户ID
*/
private Long id;
/**
* 用户名
*/
private String username;
/**
* 用户昵称
*/
private String nickname;
/**
* 手机号
*/
private String mobile;
/**
* 性别(1:男;2:女)
*/
private Integer gender;
/**
* 用户头像
*/
private String avatar;
/**
* 用户邮箱
*/
private String email;
/**
* 状态(1:启用;0:禁用)
*/
private Integer status;
/**
* 部门ID
*/
private Long deptId;
/**
* 角色ID集合
*/
private List<Long> roleIds;
}

View File

@@ -9,17 +9,17 @@ import lombok.NoArgsConstructor;
/**
* 验证码响应对象
*
* @author haoxr
* @author Ray Hao
* @since 2023/03/24
*/
@Schema(description ="验证码响应对象")
@Schema(description = "验证码响应对象")
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CaptchaResult {
@Schema(description = "验证码缓存key")
@Schema(description = "验证码ID")
private String captchaKey;
@Schema(description = "验证码图片Base64字符串")

View File

@@ -1,4 +1,4 @@
package com.youlai.system.model.vo;
package com.youlai.system.model.dto;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
@@ -16,7 +16,7 @@ import java.time.LocalDateTime;
@Data
@ColumnWidth(20)
public class UserExportVO {
public class UserExportDTO {
@ExcelProperty(value = "用户名")
private String username;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.model.vo;
package com.youlai.system.model.dto;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@@ -10,7 +10,7 @@ import lombok.Data;
* @since 2022/4/10
*/
@Data
public class UserImportVO {
public class UserImportDTO {
@ExcelProperty(value = "用户名")
private String username;
@@ -30,4 +30,7 @@ public class UserImportVO {
@ExcelProperty("角色")
private String roleCodes;
@ExcelProperty("部门")
private String deptCode;
}

View File

@@ -4,12 +4,17 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.youlai.system.common.base.BaseEntity;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
/**
* 部门
* 部门 实体
*
* @author Ray
* @since 2024/06/23
*/
@Data
@Getter
@Setter
public class SysDept extends BaseEntity {
/**
* 主键
@@ -22,6 +27,11 @@ public class SysDept extends BaseEntity {
*/
private String name;
/**
* 部门编码
*/
private String code;
/**
* 父节点id
*/
@@ -38,17 +48,18 @@ public class SysDept extends BaseEntity {
private Integer sort;
/**
* 状态(1:正常;0:禁用)
* 状态(1-正常 0-禁用)
*/
private Integer status;
/**
* 逻辑删除标识(1:已删除;0:未删除)
* 创建人 ID
*/
private Integer deleted;
private Long createBy;
/**
* 更新人 ID
*/
private Long updateBy;
}

View File

@@ -1,63 +1,42 @@
package com.youlai.system.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import com.youlai.system.common.base.BaseEntity;
import lombok.Data;
/**
* 字典数据表
* 字典实体
*
* @author haoxr
* @since 2022/12/17
*/
@Data
public class SysDict implements Serializable {
public class SysDict extends BaseEntity {
/**
* 主键
* 主键
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 字典类型编码
*/
private String typeCode;
/**
* 字典项名称
* 类型名称
*/
private String name;
/**
* 字典项值
* 类型编码
*/
private String value;
private String code;
/**
* 排序
*/
private Integer sort;
/**
* 状态(1:正常;0:禁用)
* 状态(0:正常;1:禁用)
*/
private Integer status;
/**
* 是否默认(1:是;0:否)
*/
private Integer defaulted;
/**
* 备注
*/
private String remark;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

View File

@@ -2,35 +2,47 @@ package com.youlai.system.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.youlai.system.common.base.BaseEntity;
import java.io.Serializable;
import lombok.Data;
/**
* 字典类型实体
* 字典实体
*
* @author haoxr
* @since 2022/12/17
*/
@Data
public class SysDictType extends BaseEntity {
public class SysDictItem implements Serializable {
/**
* 主键
* 主键
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 类型名称
* 字典类ID
*/
private Long dictId;
/**
* 字典项名称
*/
private String name;
/**
* 类型编码
* 字典项值
*/
private String code;
private String value;
/**
* 状态(0:正常;1:禁用)
* 排序
*/
private Integer sort;
/**
* 状态1-正常0-禁用
*/
private Integer status;

View File

@@ -2,19 +2,21 @@ package com.youlai.system.model.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.youlai.system.common.base.BaseEntity;
import com.youlai.system.common.enums.MenuTypeEnum;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
/**
* 菜单实体对象
* 菜单 实体
*
* @author haoxr
* @author Ray
* @since 2023/3/6
*/
@TableName(value ="sys_menu")
@Data
public class SysMenu extends BaseEntity {
@Getter
@Setter
public class SysMenu {
/**
* 菜单ID
*/
@@ -37,9 +39,14 @@ public class SysMenu extends BaseEntity {
private MenuTypeEnum type;
/**
* 路由路径(浏览器地址栏路径)
* 路由名称Vue Router 中定义的路由名称)
*/
private String path;
private String routeName;
/**
* 路由路径Vue Router 中定义的 URL 路径)
*/
private String routePath;
/**
* 组件路径(vue页面完整路径省略.vue后缀)
@@ -92,4 +99,14 @@ public class SysMenu extends BaseEntity {
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private String params;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}

View File

@@ -2,18 +2,21 @@ package com.youlai.system.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.youlai.system.common.base.BaseEntity;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
/**
* 角色
* 角色 实体
*
* @author Ray
* @since 2024/6/23
*/
@TableName(value ="sys_role")
@Data
@Getter
@Setter
public class SysRole extends BaseEntity {
/**
*
* 主键
*/
@TableId(type = IdType.AUTO)
private Long id;
@@ -34,17 +37,22 @@ public class SysRole extends BaseEntity {
private Integer sort;
/**
* 角色状态(1-正常0-停用)
* 角色状态(1-正常 0-停用)
*/
private Integer status;
/**
* 逻辑删除标识(0-未删除1-已删除)
*/
private Integer deleted;
/**
* 数据权限
*/
private Integer dataScope;
/**
* 创建人 ID
*/
private Long createBy;
/**
* 更新人 ID
*/
private Long updateBy;
}

View File

@@ -3,15 +3,17 @@ package com.youlai.system.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.youlai.system.common.base.BaseEntity;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
/**
* 用户
* 用户 实体
*/
@Data
@Getter
@Setter
public class SysUser extends BaseEntity {
/**
*
* 用户 ID
*/
@TableId(type = IdType.AUTO)
private Long id;
@@ -27,7 +29,7 @@ public class SysUser extends BaseEntity {
private String nickname;
/**
* 性别((1:男;2:女))
* 性别((1-男 2-女 0-保密)
*/
private Integer gender;
@@ -52,7 +54,7 @@ public class SysUser extends BaseEntity {
private String mobile;
/**
* 用户状态((1:正常;0:禁用))
* 状态((1-正常 0-禁用)
*/
private Integer status;
@@ -62,8 +64,12 @@ public class SysUser extends BaseEntity {
private String email;
/**
* 逻辑删除标识(0:未删除;1:已删除)
* 创建人 ID
*/
private Integer deleted;
private Long createBy;
/**
* 更新人 ID
*/
private Long updateBy;
}

View File

@@ -2,26 +2,31 @@ package com.youlai.system.model.form;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Schema(description = "部门表单对象")
@Data
@Getter
@Setter
public class DeptForm {
@Schema(description="部门ID")
@Schema(description="部门ID", example = "1001")
private Long id;
@Schema(description="部门名称")
@Schema(description="部门名称", example = "研发部")
private String name;
@Schema(description="部门ID")
@Schema(description="部门编号", example = "RD001")
private String code;
@Schema(description="父部门ID", example = "1000")
@NotNull(message = "父部门ID不能为空")
private Long parentId;
@Schema(description="状态(1:启用;0:禁用)")
@Schema(description="状态(1:启用;0:禁用)", example = "1")
private Integer status;
@Schema(description="排序(数字越小排名越靠前)")
@Schema(description="排序(数字越小排名越靠前)", example = "1")
private Integer sort;
}

View File

@@ -3,30 +3,57 @@ package com.youlai.system.model.form;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Schema(description = "字典表单对象")
import java.util.List;
/**
* 字典表单对象
*
* @author Ray Hao
* @since 2.9.0
*/
@Schema(description = "字典")
@Data
public class DictForm {
@Schema(description="字典ID")
@Schema(description = "字典ID",example = "1")
private Long id;
@Schema(description="类型编码")
private String typeCode;
@Schema(description="字典名称")
@Schema(description = "字典名称",example = "性别")
private String name;
@Schema(description="字典值")
private String value;
@Schema(description = "字典编码", example ="gender")
private String code;
@Schema(description="状态(1:启用;0:禁用)")
@Schema(description = "字典状态1-启用0-禁用)", example = "1")
private Integer status;
@Schema(description="排序")
private Integer sort;
@Schema(description = "字典数据项列表",example = "[{\"id\":1,\"name\":\"\",\"value\":\"1\",\"sort\":1,\"status\":1},{\"id\":2,\"name\":\"\",\"value\":\"2\",\"sort\":2,\"status\":1}]")
private List<DictItem> dictItems;
@Schema(description = "字典数据项")
@Getter
@Setter
public static class DictItem {
@Schema(description = "字典ID")
private Long id;
@Schema(description = "字典名称")
private String name;
@Schema(description = "字典值")
private String value;
@Schema(description = "排序")
private Integer sort;
@Schema(description = "状态1-启用0-禁用)")
private Integer status;
}
@Schema(description = "字典备注")
private String remark;
}

View File

@@ -1,26 +0,0 @@
package com.youlai.system.model.form;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "字典类型")
@Data
public class DictTypeForm {
@Schema(description="字典类型ID")
private Long id;
@Schema(description="类型名称")
private String name;
@Schema(description="类型编码")
private String code;
@Schema(description="类型状态(1:启用;0:禁用)")
private Integer status;
@Schema(description = "备注")
private String remark;
}

View File

@@ -6,8 +6,13 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* 菜单表单对象
*
* @author Ray
* @since 2024/06/23
*/
@Schema(description = "菜单表单对象")
@Data
public class MenuForm {
@@ -21,11 +26,14 @@ public class MenuForm {
@Schema(description = "菜单名称")
private String name;
@Schema(description = "菜单类型(1-菜单2-目录3-外链4-按钮权限)")
@Schema(description = "菜单类型1-菜单 2-目录 3-外链 4-按钮")
private MenuTypeEnum type;
@Schema(description = "路由名称")
private String routeName;
@Schema(description = "路由路径")
private String path;
private String routePath;
@Schema(description = "组件路径(vue页面完整路径省略.vue后缀)")
private String component;

View File

@@ -12,6 +12,6 @@ public class DictPageQuery extends BasePageQuery {
@Schema(description="关键字(字典项名称)")
private String keywords;
@Schema(description="字典类型编码")
@Schema(description="字典编码")
private String typeCode;
}

View File

@@ -5,7 +5,7 @@ import com.youlai.system.common.base.BasePageQuery;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description ="字典类型分页查询对象")
@Schema(description ="字典分页查询对象")
@Data
public class DictTypePageQuery extends BasePageQuery {

View File

@@ -20,6 +20,9 @@ public class DeptVO {
@Schema(description = "部门名称")
private String name;
@Schema(description = "部门编号")
private String code;
@Schema(description = "排序")
private Integer sort;

View File

@@ -2,22 +2,58 @@ package com.youlai.system.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Schema(description ="字典分页对象")
@Data
import java.util.List;
/**
* 字典分页VO
*
* @author Ray
* @since 0.0.1
*/
@Schema(description = "字典分页对象")
@Getter
@Setter
public class DictPageVO {
@Schema(description="字典ID")
@Schema(description = "字典ID")
private Long id;
@Schema(description="字典名称")
@Schema(description = "字典名称")
private String name;
@Schema(description="字典")
private String value;
@Schema(description = "字典编码")
private String code;
@Schema(description="状态(1:启用;0:禁用)")
@Schema(description = "字典状态1-启用0-禁用")
private Integer status;
@Schema(description = "字典项列表")
private List<DictItem> dictItems;
@Schema(description = "字典")
@Getter
@Setter
public static class DictItem {
@Schema(description = "字典项ID")
private Long id;
@Schema(description = "字典项名称")
private String name;
@Schema(description = "字典项值")
private String value;
@Schema(description = "排序")
private Integer sort;
@Schema(description = "状态1-启用0-禁用)")
private Integer status;
}
}

View File

@@ -1,23 +0,0 @@
package com.youlai.system.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description ="字典类型分页对象")
@Data
public class DictTypePageVO {
@Schema(description="字典类型ID")
private Long id;
@Schema(description="类型名称")
private String name;
@Schema(description="类型编码")
private String code;
@Schema(description="状态1:启用;0:禁用")
private Integer status;
}

View File

@@ -23,8 +23,11 @@ public class MenuVO {
@Schema(description="菜单类型")
private MenuTypeEnum type;
@Schema(description = "路由名称")
private String routeName;
@Schema(description = "路由路径")
private String path;
private String routePath;
@Schema(description = "组件路径")
private String component;