!286 合并 多租户功能

* add 新增 ruoyi-common-tenant 多租户模块 全框架适配多租户改动
* update 优化 隐藏页面主键
* remove 移除 缓存列表功能(多租户缓存功能繁杂多样 没有办法在页面管理)
* update 重构 全局缓存KEY 与 常用缓存KEY做区分
* update 重构 OssFactory 加载方式 改为每次比对配置做实例更新
* update 优化 SaTokenDao 改为 Bean 注入 便于扩展
* update 重构 项目初始化数据改为懒加载 不提供热加载
* update 重构 验证码开关使用配置文件(经调查少有动态开启需求)
* update 优化 启用 sqlserver 高版本语法 简化sql脚本语法
* update 优化 DataPermissionHelper 增加 开启/关闭 忽略数据权限功能
* update 优化 连接池增加 keepaliveTime 探活参数
* update 优化 调整连接池最长生命周期 防止出现警告
* update 优化 代码生成页面模板 校验不必要的表单数据
* add 新增 StringUtils splitTo 与 splitList 方法 优化业务代码
This commit is contained in:
疯狂的狮子Li
2023-02-16 09:06:10 +00:00
parent a8d5644f2e
commit 45ac0f23e1
187 changed files with 6486 additions and 2372 deletions

View File

@@ -2,7 +2,7 @@ package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import com.ruoyi.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -15,7 +15,7 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_config")
public class SysConfig extends BaseEntity {
public class SysConfig extends TenantEntity {
/**
* 参数主键

View File

@@ -3,11 +3,7 @@ package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.mybatis.core.domain.TreeEntity;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import com.ruoyi.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -22,7 +18,7 @@ import java.io.Serial;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_dept")
public class SysDept extends TreeEntity<SysDept> {
public class SysDept extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
@@ -33,6 +29,11 @@ public class SysDept extends TreeEntity<SysDept> {
@TableId(value = "dept_id")
private Long deptId;
/**
* 父部门ID
*/
private Long parentId;
/**
* 部门名称
*/

View File

@@ -3,7 +3,7 @@ package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import com.ruoyi.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -16,7 +16,7 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_dict_data")
public class SysDictData extends BaseEntity {
public class SysDictData extends TenantEntity {
/**
* 字典编码

View File

@@ -2,7 +2,7 @@ package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import com.ruoyi.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -15,7 +15,7 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_dict_type")
public class SysDictType extends BaseEntity {
public class SysDictType extends TenantEntity {
/**
* 字典主键

View File

@@ -1,19 +1,12 @@
package com.ruoyi.system.domain;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 系统访问记录表 sys_logininfor
@@ -23,7 +16,6 @@ import java.util.Map;
@Data
@TableName("sys_logininfor")
@ExcelIgnoreUnannotated
public class SysLogininfor implements Serializable {
@Serial
@@ -32,63 +24,52 @@ public class SysLogininfor implements Serializable {
/**
* ID
*/
@ExcelProperty(value = "序号")
@TableId(value = "info_id")
private Long infoId;
/**
* 租户编号
*/
private String tenantId;
/**
* 用户账号
*/
@ExcelProperty(value = "用户账号")
private String userName;
/**
* 登录状态 0成功 1失败
*/
@ExcelProperty(value = "登录状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_common_status")
private String status;
/**
* 登录IP地址
*/
@ExcelProperty(value = "登录地址")
private String ipaddr;
/**
* 登录地点
*/
@ExcelProperty(value = "登录地点")
private String loginLocation;
/**
* 浏览器类型
*/
@ExcelProperty(value = "浏览器")
private String browser;
/**
* 操作系统
*/
@ExcelProperty(value = "操作系统")
private String os;
/**
* 提示消息
*/
@ExcelProperty(value = "提示消息")
private String msg;
/**
* 访问时间
*/
@ExcelProperty(value = "访问时间")
private Date loginTime;
/**
* 请求参数
*/
@TableField(exist = false)
private Map<String, Object> params = new HashMap<>();
}

View File

@@ -1,14 +1,18 @@
package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.mybatis.core.domain.TreeEntity;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.ArrayList;
import java.util.List;
/**
* 菜单权限表 sys_menu
*
@@ -18,7 +22,7 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_menu")
public class SysMenu extends TreeEntity<SysMenu> {
public class SysMenu extends BaseEntity {
/**
* 菜单ID
@@ -26,6 +30,11 @@ public class SysMenu extends TreeEntity<SysMenu> {
@TableId(value = "menu_id")
private Long menuId;
/**
* 父菜单ID
*/
private Long parentId;
/**
* 菜单名称
*/
@@ -91,6 +100,18 @@ public class SysMenu extends TreeEntity<SysMenu> {
*/
private String remark;
/**
* 父菜单名称
*/
@TableField(exist = false)
private String parentName;
/**
* 子菜单
*/
@TableField(exist = false)
private List<SysMenu> children = new ArrayList<>();
/**
* 获取路由名称
*/

View File

@@ -2,7 +2,7 @@ package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import com.ruoyi.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -15,7 +15,7 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_notice")
public class SysNotice extends BaseEntity {
public class SysNotice extends TenantEntity {
/**
* 公告ID

View File

@@ -1,19 +1,12 @@
package com.ruoyi.system.domain;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 操作日志记录表 oper_log
@@ -23,7 +16,6 @@ import java.util.Map;
@Data
@TableName("sys_oper_log")
@ExcelIgnoreUnannotated
public class SysOperLog implements Serializable {
@Serial
@@ -32,113 +24,87 @@ public class SysOperLog implements Serializable {
/**
* 日志主键
*/
@ExcelProperty(value = "日志主键")
@TableId(value = "oper_id")
private Long operId;
/**
* 租户编号
*/
private String tenantId;
/**
* 操作模块
*/
@ExcelProperty(value = "操作模块")
private String title;
/**
* 业务类型0其它 1新增 2修改 3删除
*/
@ExcelProperty(value = "业务类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_oper_type")
private Integer businessType;
/**
* 业务类型数组
*/
@TableField(exist = false)
private Integer[] businessTypes;
/**
* 请求方法
*/
@ExcelProperty(value = "请求方法")
private String method;
/**
* 请求方式
*/
@ExcelProperty(value = "请求方式")
private String requestMethod;
/**
* 操作类别0其它 1后台用户 2手机端用户
*/
@ExcelProperty(value = "操作类别", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=其它,1=后台用户,2=手机端用户")
private Integer operatorType;
/**
* 操作人员
*/
@ExcelProperty(value = "操作人员")
private String operName;
/**
* 部门名称
*/
@ExcelProperty(value = "部门名称")
private String deptName;
/**
* 请求url
*/
@ExcelProperty(value = "请求地址")
private String operUrl;
/**
* 操作地址
*/
@ExcelProperty(value = "操作地址")
private String operIp;
/**
* 操作地点
*/
@ExcelProperty(value = "操作地点")
private String operLocation;
/**
* 请求参数
*/
@ExcelProperty(value = "请求参数")
private String operParam;
/**
* 返回参数
*/
@ExcelProperty(value = "返回参数")
private String jsonResult;
/**
* 操作状态0正常 1异常
*/
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_common_status")
private Integer status;
/**
* 错误消息
*/
@ExcelProperty(value = "错误消息")
private String errorMsg;
/**
* 操作时间
*/
@ExcelProperty(value = "操作时间")
private Date operTime;
/**
* 请求参数
*/
@TableField(exist = false)
private Map<String, Object> params = new HashMap<>();
}

View File

@@ -2,7 +2,7 @@ package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import com.ruoyi.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -14,7 +14,7 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_oss")
public class SysOss extends BaseEntity {
public class SysOss extends TenantEntity {
/**
* 对象存储主键

View File

@@ -2,7 +2,7 @@ package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import com.ruoyi.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -14,7 +14,7 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_oss_config")
public class SysOssConfig extends BaseEntity {
public class SysOssConfig extends TenantEntity {
/**
* 主建

View File

@@ -1,20 +1,11 @@
package com.ruoyi.system.domain;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import com.ruoyi.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
/**
* 岗位表 sys_post
*
@@ -24,7 +15,7 @@ import jakarta.validation.constraints.Size;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_post")
public class SysPost extends BaseEntity {
public class SysPost extends TenantEntity {
/**
* 岗位序号
@@ -57,10 +48,4 @@ public class SysPost extends BaseEntity {
*/
private String remark;
/**
* 用户是否存在此岗位标识 默认不存在
*/
@TableField(exist = false)
private boolean flag = false;
}

View File

@@ -1,16 +1,13 @@
package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import com.ruoyi.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.util.Set;
/**
* 角色表 sys_role
*
@@ -21,7 +18,7 @@ import java.util.Set;
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("sys_role")
public class SysRole extends BaseEntity {
public class SysRole extends TenantEntity {
/**
* 角色ID
@@ -75,30 +72,6 @@ public class SysRole extends BaseEntity {
*/
private String remark;
/**
* 用户是否存在此角色标识 默认不存在
*/
@TableField(exist = false)
private boolean flag = false;
/**
* 菜单组
*/
@TableField(exist = false)
private Long[] menuIds;
/**
* 部门组(数据权限)
*/
@TableField(exist = false)
private Long[] deptIds;
/**
* 角色菜单权限
*/
@TableField(exist = false)
private Set<String> permissions;
public SysRole(Long roleId) {
this.roleId = roleId;
}

View File

@@ -0,0 +1,103 @@
package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.util.Date;
/**
* 租户对象 sys_tenant
*
* @author Michelle.Chung
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_tenant")
public class SysTenant extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 租户编号
*/
private String tenantId;
/**
* 联系人
*/
private String contactUserName;
/**
* 联系电话
*/
private String contactPhone;
/**
* 企业名称
*/
private String companyName;
/**
* 统一社会信用代码
*/
private String licenseNumber;
/**
* 地址
*/
private String address;
/**
* 域名
*/
private String domain;
/**
* 企业简介
*/
private String intro;
/**
* 备注
*/
private String remark;
/**
* 租户套餐编号
*/
private Long packageId;
/**
* 过期时间
*/
private Date expireTime;
/**
* 用户数量(-1不限制
*/
private Long accountCount;
/**
* 租户状态0正常 1停用
*/
private String status;
/**
* 删除标志0代表存在 2代表删除
*/
@TableLogic
private String delFlag;
}

View File

@@ -0,0 +1,54 @@
package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
/**
* 租户套餐对象 sys_tenant_package
*
* @author Michelle.Chung
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_tenant_package")
public class SysTenantPackage extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 租户套餐id
*/
@TableId(value = "package_id")
private Long packageId;
/**
* 套餐名称
*/
private String packageName;
/**
* 关联菜单id
*/
private String menuIds;
/**
* 备注
*/
private String remark;
/**
* 菜单树选择项是否关联显示( 0父子不互相关联显示 1父子互相关联显示
*/
private Boolean menuCheckStrictly;
/**
* 状态0正常 1停用
*/
private String status;
/**
* 删除标志0代表存在 2代表删除
*/
@TableLogic
private String delFlag;
}

View File

@@ -2,7 +2,7 @@ package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import com.ruoyi.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@@ -19,7 +19,7 @@ import java.util.Date;
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("sys_user")
public class SysUser extends BaseEntity {
public class SysUser extends TenantEntity {
/**
* 用户ID
@@ -108,7 +108,7 @@ public class SysUser extends BaseEntity {
this.userId = userId;
}
public boolean isAdmin() {
public boolean isSuperAdmin() {
return UserConstants.SUPER_ADMIN_ID.equals(this.userId);
}

View File

@@ -2,7 +2,7 @@ package com.ruoyi.system.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.mybatis.core.domain.TreeEntity;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
@@ -18,7 +18,7 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
public class SysDeptBo extends TreeEntity<SysDeptBo> {
public class SysDeptBo extends BaseEntity {
/**
* 部门id
@@ -26,6 +26,11 @@ public class SysDeptBo extends TreeEntity<SysDeptBo> {
@NotNull(message = "部门id不能为空", groups = { EditGroup.class })
private Long deptId;
/**
* 父部门ID
*/
private Long parentId;
/**
* 部门名称
*/
@@ -37,7 +42,7 @@ public class SysDeptBo extends TreeEntity<SysDeptBo> {
* 显示顺序
*/
@NotNull(message = "显示顺序不能为空")
private Long orderNum;
private Integer orderNum;
/**
* 负责人

View File

@@ -0,0 +1,74 @@
package com.ruoyi.system.domain.bo;
import lombok.Data;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 系统访问记录业务对象 sys_logininfor
*
* @author Michelle.Chung
*/
@Data
public class SysLogininforBo {
/**
* 访问ID
*/
private Long infoId;
/**
* 租户编号
*/
private String tenantId;
/**
* 用户账号
*/
private String userName;
/**
* 登录IP地址
*/
private String ipaddr;
/**
* 登录地点
*/
private String loginLocation;
/**
* 浏览器类型
*/
private String browser;
/**
* 操作系统
*/
private String os;
/**
* 登录状态0成功 1失败
*/
private String status;
/**
* 提示消息
*/
private String msg;
/**
* 访问时间
*/
private Date loginTime;
/**
* 请求参数
*/
private Map<String, Object> params = new HashMap<>();
}

View File

@@ -3,7 +3,7 @@ package com.ruoyi.system.domain.bo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.mybatis.core.domain.TreeEntity;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
@@ -18,7 +18,7 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
public class SysMenuBo extends TreeEntity<SysMenuBo> {
public class SysMenuBo extends BaseEntity {
/**
* 菜单ID
@@ -26,6 +26,11 @@ public class SysMenuBo extends TreeEntity<SysMenuBo> {
@NotNull(message = "菜单ID不能为空", groups = { EditGroup.class })
private Long menuId;
/**
* 父菜单ID
*/
private Long parentId;
/**
* 菜单名称
*/

View File

@@ -0,0 +1,116 @@
package com.ruoyi.system.domain.bo;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 操作日志记录业务对象 sys_oper_log
*
* @author Michelle.Chung
* @date 2023-02-07
*/
@Data
public class SysOperLogBo {
/**
* 日志主键
*/
private Long operId;
/**
* 租户编号
*/
private String tenantId;
/**
* 模块标题
*/
private String title;
/**
* 业务类型0其它 1新增 2修改 3删除
*/
private Integer businessType;
/**
* 业务类型数组
*/
private Integer[] businessTypes;
/**
* 方法名称
*/
private String method;
/**
* 请求方式
*/
private String requestMethod;
/**
* 操作类别0其它 1后台用户 2手机端用户
*/
private Integer operatorType;
/**
* 操作人员
*/
private String operName;
/**
* 部门名称
*/
private String deptName;
/**
* 请求URL
*/
private String operUrl;
/**
* 主机地址
*/
private String operIp;
/**
* 操作地点
*/
private String operLocation;
/**
* 请求参数
*/
private String operParam;
/**
* 返回参数
*/
private String jsonResult;
/**
* 操作状态0正常 1异常
*/
private Integer status;
/**
* 错误消息
*/
private String errorMsg;
/**
* 操作时间
*/
private Date operTime;
/**
* 请求参数
*/
@TableField(exist = false)
private Map<String, Object> params = new HashMap<>();
}

View File

@@ -1,6 +1,7 @@
package com.ruoyi.system.domain.bo;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import com.ruoyi.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

View File

@@ -3,6 +3,7 @@ package com.ruoyi.system.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import com.ruoyi.common.tenant.core.TenantEntity;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;

View File

@@ -3,6 +3,7 @@ package com.ruoyi.system.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import com.ruoyi.common.tenant.core.TenantEntity;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;

View File

@@ -3,11 +3,12 @@ package com.ruoyi.system.domain.bo;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import lombok.NoArgsConstructor;
/**
@@ -72,11 +73,21 @@ public class SysRoleBo extends BaseEntity {
*/
private String remark;
/**
* 菜单组
*/
private Long[] menuIds;
/**
* 部门组(数据权限)
*/
private Long[] deptIds;
public SysRoleBo(Long roleId) {
this.roleId = roleId;
}
public boolean isAdmin() {
public boolean isSuperAdmin() {
return UserConstants.SUPER_ADMIN_ID.equals(this.roleId);
}

View File

@@ -0,0 +1,111 @@
package com.ruoyi.system.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
/**
* 租户业务对象 sys_tenant
*
* @author Michelle.Chung
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class SysTenantBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 租户编号
*/
private String tenantId;
/**
* 联系人
*/
@NotBlank(message = "联系人不能为空", groups = { AddGroup.class, EditGroup.class })
private String contactUserName;
/**
* 联系电话
*/
@NotBlank(message = "联系电话不能为空", groups = { AddGroup.class, EditGroup.class })
private String contactPhone;
/**
* 企业名称
*/
@NotBlank(message = "企业名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String companyName;
/**
* 用户名(创建系统用户)
*/
@NotBlank(message = "用户名不能为空", groups = { AddGroup.class })
private String username;
/**
* 密码(创建系统用户)
*/
@NotBlank(message = "密码不能为空", groups = { AddGroup.class })
private String password;
/**
* 统一社会信用代码
*/
private String licenseNumber;
/**
* 地址
*/
private String address;
/**
* 域名
*/
private String domain;
/**
* 企业简介
*/
private String intro;
/**
* 备注
*/
private String remark;
/**
* 租户套餐编号
*/
@NotNull(message = "租户套餐不能为空", groups = { AddGroup.class })
private Long packageId;
/**
* 过期时间
*/
private Date expireTime;
/**
* 用户数量(-1不限制
*/
private Long accountCount;
/**
* 租户状态0正常 1停用
*/
private String status;
}

View File

@@ -0,0 +1,54 @@
package com.ruoyi.system.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
/**
* 租户套餐业务对象 sys_tenant_package
*
* @author Michelle.Chung
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class SysTenantPackageBo extends BaseEntity {
/**
* 租户套餐id
*/
@NotNull(message = "租户套餐id不能为空", groups = { EditGroup.class })
private Long packageId;
/**
* 套餐名称
*/
@NotBlank(message = "套餐名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String packageName;
/**
* 关联菜单id
*/
private Long[] menuIds;
/**
* 备注
*/
private String remark;
/**
* 菜单树选择项是否关联显示
*/
private Boolean menuCheckStrictly;
/**
* 状态0正常 1停用
*/
private String status;
}

View File

@@ -123,7 +123,7 @@ public class SysUserBo extends BaseEntity {
this.userId = userId;
}
public boolean isAdmin() {
public boolean isSuperAdmin() {
return UserConstants.SUPER_ADMIN_ID.equals(this.userId);
}

View File

@@ -52,7 +52,7 @@ public class SysDeptVo implements Serializable {
/**
* 显示顺序
*/
private Long orderNum;
private Integer orderNum;
/**
* 负责人

View File

@@ -0,0 +1,90 @@
package com.ruoyi.system.domain.vo;
import java.util.Date;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 系统访问记录视图对象 sys_logininfor
*
* @author Michelle.Chung
* @date 2023-02-07
*/
@Data
@ExcelIgnoreUnannotated
public class SysLogininforVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 访问ID
*/
@ExcelProperty(value = "序号")
private Long infoId;
/**
* 租户编号
*/
private String tenantId;
/**
* 用户账号
*/
@ExcelProperty(value = "用户账号")
private String userName;
/**
* 登录状态0成功 1失败
*/
@ExcelProperty(value = "登录状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_common_status")
private String status;
/**
* 登录IP地址
*/
@ExcelProperty(value = "登录地址")
private String ipaddr;
/**
* 登录地点
*/
@ExcelProperty(value = "登录地点")
private String loginLocation;
/**
* 浏览器类型
*/
@ExcelProperty(value = "浏览器")
private String browser;
/**
* 操作系统
*/
@ExcelProperty(value = "操作系统")
private String os;
/**
* 提示消息
*/
@ExcelProperty(value = "提示消息")
private String msg;
/**
* 访问时间
*/
@ExcelProperty(value = "访问时间")
private Date loginTime;
}

View File

@@ -0,0 +1,138 @@
package com.ruoyi.system.domain.vo;
import java.util.Date;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 操作日志记录视图对象 sys_oper_log
*
* @author Michelle.Chung
* @date 2023-02-07
*/
@Data
@ExcelIgnoreUnannotated
public class SysOperLogVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 日志主键
*/
@ExcelProperty(value = "日志主键")
private Long operId;
/**
* 租户编号
*/
private String tenantId;
/**
* 模块标题
*/
@ExcelProperty(value = "操作模块")
private String title;
/**
* 业务类型0其它 1新增 2修改 3删除
*/
@ExcelProperty(value = "业务类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_oper_type")
private Integer businessType;
/**
* 业务类型数组
*/
private Integer[] businessTypes;
/**
* 方法名称
*/
@ExcelProperty(value = "请求方法")
private String method;
/**
* 请求方式
*/
@ExcelProperty(value = "请求方式")
private String requestMethod;
/**
* 操作类别0其它 1后台用户 2手机端用户
*/
@ExcelProperty(value = "操作类别", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=其它,1=后台用户,2=手机端用户")
private Integer operatorType;
/**
* 操作人员
*/
@ExcelProperty(value = "操作人员")
private String operName;
/**
* 部门名称
*/
@ExcelProperty(value = "部门名称")
private String deptName;
/**
* 请求URL
*/
@ExcelProperty(value = "请求地址")
private String operUrl;
/**
* 主机地址
*/
@ExcelProperty(value = "操作地址")
private String operIp;
/**
* 操作地点
*/
@ExcelProperty(value = "操作地点")
private String operLocation;
/**
* 请求参数
*/
@ExcelProperty(value = "请求参数")
private String operParam;
/**
* 返回参数
*/
@ExcelProperty(value = "返回参数")
private String jsonResult;
/**
* 操作状态0正常 1异常
*/
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_common_status")
private Integer status;
/**
* 错误消息
*/
@ExcelProperty(value = "错误消息")
private String errorMsg;
/**
* 操作时间
*/
@ExcelProperty(value = "操作时间")
private Date operTime;
}

View File

@@ -10,7 +10,6 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.Set;
/**
* 角色信息视图对象 sys_role
@@ -91,12 +90,7 @@ public class SysRoleVo implements Serializable {
*/
private boolean flag = false;
/**
* 角色菜单权限
*/
private Set<String> permissions;
public boolean isAdmin() {
public boolean isSuperAdmin() {
return UserConstants.SUPER_ADMIN_ID.equals(this.roleId);
}

View File

@@ -0,0 +1,63 @@
package com.ruoyi.system.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 租户套餐视图对象 sys_tenant_package
*
* @author Michelle.Chung
*/
@Data
@ExcelIgnoreUnannotated
public class SysTenantPackageVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 租户套餐id
*/
@ExcelProperty(value = "租户套餐id")
private Long packageId;
/**
* 套餐名称
*/
@ExcelProperty(value = "套餐名称")
private String packageName;
/**
* 关联菜单id
*/
@ExcelProperty(value = "关联菜单id")
private String menuIds;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 菜单树选择项是否关联显示
*/
@ExcelProperty(value = "菜单树选择项是否关联显示")
private Boolean menuCheckStrictly;
/**
* 状态0正常 1停用
*/
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=正常,1=停用")
private String status;
}

View File

@@ -0,0 +1,112 @@
package com.ruoyi.system.domain.vo;
import java.util.Date;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 租户视图对象 sys_tenant
*
* @author Michelle.Chung
*/
@Data
@ExcelIgnoreUnannotated
public class SysTenantVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 租户编号
*/
@ExcelProperty(value = "租户编号")
private String tenantId;
/**
* 联系人
*/
@ExcelProperty(value = "联系人")
private String contactUserName;
/**
* 联系电话
*/
@ExcelProperty(value = "联系电话")
private String contactPhone;
/**
* 企业名称
*/
@ExcelProperty(value = "企业名称")
private String companyName;
/**
* 统一社会信用代码
*/
@ExcelProperty(value = "统一社会信用代码")
private String licenseNumber;
/**
* 地址
*/
@ExcelProperty(value = "地址")
private String address;
/**
* 域名
*/
@ExcelProperty(value = "域名")
private String domain;
/**
* 企业简介
*/
@ExcelProperty(value = "企业简介")
private String intro;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 租户套餐编号
*/
@ExcelProperty(value = "租户套餐编号")
private Long packageId;
/**
* 过期时间
*/
@ExcelProperty(value = "过期时间")
private Date expireTime;
/**
* 用户数量(-1不限制
*/
@ExcelProperty(value = "用户数量")
private Long accountCount;
/**
* 租户状态0正常 1停用
*/
@ExcelProperty(value = "租户状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=正常,1=停用")
private String status;
}

View File

@@ -1,6 +1,5 @@
package com.ruoyi.system.domain.vo;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.translation.annotation.Translation;
import com.ruoyi.common.translation.constant.TransConstant;
import lombok.Data;
@@ -27,6 +26,11 @@ public class SysUserVo implements Serializable {
*/
private Long userId;
/**
* 租户ID
*/
private String tenantId;
/**
* 部门ID
*/
@@ -123,8 +127,4 @@ public class SysUserVo implements Serializable {
*/
private Long roleId;
public boolean isAdmin() {
return UserConstants.SUPER_ADMIN_ID.equals(this.userId);
}
}