* 一个注解只能对应一个模板 + *
* * @author Lion Li * @version 3.5.0 @@ -16,12 +17,16 @@ import java.lang.annotation.*; public @interface DataColumn { /** - * 占位符关键字 + * 数据权限模板的占位符关键字,默认为 "deptName" + * + * @return 占位符关键字数组 */ String[] key() default "deptName"; /** - * 占位符替换值 + * 数据权限模板的占位符替换值,默认为 "dept_id" + * + * @return 占位符替换值数组 */ String[] value() default "dept_id"; diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/annotation/DataPermission.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/annotation/DataPermission.java index f4351e3..6fd3c3e 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/annotation/DataPermission.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/annotation/DataPermission.java @@ -3,7 +3,7 @@ package org.dromara.common.mybatis.annotation; import java.lang.annotation.*; /** - * 数据权限组 + * 数据权限组注解,用于标记数据权限配置数组 * * @author Lion Li * @version 3.5.0 @@ -13,6 +13,11 @@ import java.lang.annotation.*; @Documented public @interface DataPermission { + /** + * 数据权限配置数组,用于指定数据权限的占位符关键字和替换值 + * + * @return 数据权限配置数组 + */ DataColumn[] value(); } diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java index 820b49a..13a7941 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java @@ -17,7 +17,6 @@ import java.util.Map; * * @author Lion Li */ - @Data public class BaseEntity implements Serializable { diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java index 08723f6..956be9f 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java @@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.toolkit.Db; import org.apache.ibatis.logging.Log; import org.apache.ibatis.logging.LogFactory; import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StreamUtils; import java.io.Serializable; import java.util.Collection; @@ -34,73 +35,125 @@ public interface BaseMapperPlus> P selectVoPage(IPage VO对象分页列表的类型
+ * @return 查询到的VO对象分页列表,经过转换为指定的VO类后返回
*/
default
- * 语法支持 spel 模板表达式
- *
- * 内置数据 user 当前用户 内容参考 LoginUser
- * 如需扩展数据 可使用 {@link DataPermissionHelper} 操作
- * 内置服务 sdss 系统数据权限服务 内容参考 SysDataScopeService
- * 如需扩展更多自定义服务 可以参考 sdss 自行编写
+ * 支持使用 SpEL 模板表达式定义 SQL 查询条件
+ * 内置数据:
+ * - {@code user}: 当前登录用户信息,参考 {@link LoginUser}
+ * 内置服务:
+ * - {@code sdss}: 系统数据权限服务,参考 {@link ISysDataScopeService}
+ * 如需扩展数据,可以通过 {@link DataPermissionHelper} 进行操作
+ * 如需扩展服务,可以通过 {@link ISysDataScopeService} 自行编写
+ * 禁止在忽略数据权限中执行忽略数据权限 禁止在忽略数据权限中执行忽略数据权限
* 如果为未登录状态下 那么只在当前线程内生效
+ *
+ * @param tenantId 租户id
+ * @param global 是否全局生效
*/
- public static void setDynamic(String tenantId) {
+ public static void setDynamic(String tenantId, boolean global) {
if (!isEnable()) {
return;
}
- if (!isLogin()) {
+ if (!isLogin() || !global) {
TEMP_DYNAMIC_TENANT.set(tenantId);
return;
}
String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
RedisUtils.setCacheObject(cacheKey, tenantId);
- SaHolder.getStorage().set(cacheKey, tenantId);
}
/**
@@ -109,13 +114,13 @@ public class TenantHelper {
if (!isLogin()) {
return TEMP_DYNAMIC_TENANT.get();
}
- String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
- String tenantId = (String) SaHolder.getStorage().get(cacheKey);
+ // 如果线程内有值 优先返回
+ String tenantId = TEMP_DYNAMIC_TENANT.get();
if (StringUtils.isNotBlank(tenantId)) {
return tenantId;
}
+ String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
tenantId = RedisUtils.getCacheObject(cacheKey);
- SaHolder.getStorage().set(cacheKey, tenantId);
return tenantId;
}
@@ -130,9 +135,9 @@ public class TenantHelper {
TEMP_DYNAMIC_TENANT.remove();
return;
}
+ TEMP_DYNAMIC_TENANT.remove();
String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
RedisUtils.deleteObject(cacheKey);
- SaHolder.getStorage().delete(cacheKey);
}
/**
diff --git a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/UndertowConfig.java b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/UndertowConfig.java
index 0f78928..ac50dd2 100644
--- a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/UndertowConfig.java
+++ b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/UndertowConfig.java
@@ -16,15 +16,11 @@ import org.springframework.core.task.VirtualThreadTaskExecutor;
@AutoConfiguration
public class UndertowConfig implements WebServerFactoryCustomizer TODO
- *
- * @author cjw
- * @version V1.0.0
- * @date 2024/6/3 16:45
- */
-@AutoMappers({
- @AutoMapper(target = SysOssResource.class, reverseConvertGenerate = false),
- @AutoMapper(target = SysOssTextbook.class, reverseConvertGenerate = false)
-})
-public class OssFileBo {
-
- /**
- *
- */
- private Long ossId;
-
- /**
- *
- */
- private Long catalogId;
-
- /**
- * 1课件,2课堂,3作业,4试卷
- */
- private Integer type;
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java
index bd0b8e9..d86e799 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java
@@ -109,10 +109,11 @@ public class SysTenantBo extends BaseEntity {
* 租户状态(0正常 1停用)
*/
private String status;
+
@NotNull(message = "我的空间总容量不能为空", groups = { AddGroup.class })
private Long personTotalVolume;
+
@NotNull(message = "学校资源总容量不能为空", groups = { AddGroup.class })
private Long schoolTotalVolume;
-
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java
index 3681b19..7ad2759 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java
@@ -34,11 +34,6 @@ public class SysUserBo extends BaseEntity {
*/
private Long deptId;
- /**
- * 教职工ID
- */
- private Long teacherId;
-
/**
* 用户账号
*/
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserProfileBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserProfileBo.java
index fb4c605..846dd79 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserProfileBo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserProfileBo.java
@@ -1,14 +1,16 @@
package org.dromara.system.domain.bo;
-import org.dromara.common.core.xss.Xss;
-import org.dromara.common.mybatis.core.domain.BaseEntity;
-import org.dromara.common.sensitive.annotation.Sensitive;
-import org.dromara.common.sensitive.core.SensitiveStrategy;
import jakarta.validation.constraints.Email;
+import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
+import org.dromara.common.core.constant.RegexConstants;
+import org.dromara.common.core.xss.Xss;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.sensitive.annotation.Sensitive;
+import org.dromara.common.sensitive.core.SensitiveStrategy;
/**
* 个人信息业务处理
@@ -21,11 +23,6 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
public class SysUserProfileBo extends BaseEntity {
- /**
- * 用户ID
- */
- private Long userId;
-
/**
* 用户昵称
*/
@@ -44,6 +41,7 @@ public class SysUserProfileBo extends BaseEntity {
/**
* 手机号码
*/
+ @Pattern(regexp = RegexConstants.MOBILE, message = "手机号格式不正确")
@Sensitive(strategy = SensitiveStrategy.PHONE)
private String phonenumber;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssUploadVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssUploadVo.java
index cf87fdc..11e0ff8 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssUploadVo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssUploadVo.java
@@ -15,14 +15,14 @@ public class SysOssUploadVo {
*/
private String url;
- /**
- * 对象存储主键
- */
- private String ossId;
-
/**
* 文件名
*/
private String fileName;
+ /**
+ * 对象存储主键
+ */
+ private String ossId;
+
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssVo.java
index 18b8b80..c8e6b93 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssVo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssVo.java
@@ -67,7 +67,7 @@ public class SysOssVo implements Serializable {
/**
* 上传人名称
*/
- @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy")
+ @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy")
private String createByName;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java
index f058015..6a45315 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java
@@ -1,16 +1,16 @@
package org.dromara.system.domain.vo;
+import java.util.Date;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
-import io.github.linpeilie.annotations.AutoMapper;
-import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.system.domain.SysTenant;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
-import java.util.Date;
/**
@@ -111,7 +111,5 @@ public class SysTenantVo implements Serializable {
@ExcelDictFormat(readConverterExp = "0=正常,1=停用")
private String status;
- private Date createTime;
-
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java
index 7589376..d1f4059 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java
@@ -43,11 +43,6 @@ public class SysUserVo implements Serializable {
*/
private Long deptId;
- /**
- * 教职工ID
- */
- private Long teacherId;
-
/**
* 用户账号
*/
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java
index b2be0e9..ac646c0 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java
@@ -18,13 +18,6 @@ import java.util.List;
*/
public interface SysMenuMapper extends BaseMapperPlus