diff --git a/config/nacos/application-common.yml b/config/nacos/application-common.yml
index 8249270b..e60c9d3e 100644
--- a/config/nacos/application-common.yml
+++ b/config/nacos/application-common.yml
@@ -100,8 +100,8 @@ spring:
redis:
host: localhost
port: 6379
- # 密码(如没有密码请注释掉)
- # password:
+ # redis 密码必须配置
+ password: ruoyi123
database: 0
timeout: 10s
ssl.enabled: false
diff --git a/config/nacos/ruoyi-gateway.yml b/config/nacos/ruoyi-gateway.yml
index ba82112a..b51856f7 100644
--- a/config/nacos/ruoyi-gateway.yml
+++ b/config/nacos/ruoyi-gateway.yml
@@ -92,6 +92,8 @@ spring:
server-addr: ${spring.cloud.nacos.server-addr}
dataId: sentinel-${spring.application.name}.json
groupId: ${spring.cloud.nacos.config.group}
+ username: ${spring.cloud.nacos.username}
+ password: ${spring.cloud.nacos.password}
namespace: ${spring.profiles.active}
data-type: json
rule-type: gw-flow
diff --git a/docker/rabbitmq/Dockerfile b/docker/rabbitmq/Dockerfile
index 2fd2d79d..47e0a05e 100644
--- a/docker/rabbitmq/Dockerfile
+++ b/docker/rabbitmq/Dockerfile
@@ -1,6 +1,6 @@
FROM rabbitmq:3.13.3-management
-MAINTAINER Lion Li
+LABEL maintainer="Lion Li"
ADD ./rabbitmq_delayed_message_exchange-3.13.0.ez /plugins
diff --git a/docker/skywalking/agent/plugins/apm-seata-skywalking-plugin-1.7.1.jar b/docker/skywalking/agent/plugins/apm-seata-skywalking-plugin-1.7.1.jar
new file mode 100644
index 00000000..2e944fa4
Binary files /dev/null and b/docker/skywalking/agent/plugins/apm-seata-skywalking-plugin-1.7.1.jar differ
diff --git a/docker/skywalking/agent/plugins/apm-seata-skywalking-plugin-2.1.0.jar b/docker/skywalking/agent/plugins/apm-seata-skywalking-plugin-2.1.0.jar
deleted file mode 100644
index 5f9d562e..00000000
Binary files a/docker/skywalking/agent/plugins/apm-seata-skywalking-plugin-2.1.0.jar and /dev/null differ
diff --git a/pom.xml b/pom.xml
index abeb7a18..3ba38fce 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
RuoYi-Cloud-Plus微服务系统
- 2.2.0-BETA2
+ 2.2.0
UTF-8
UTF-8
17
diff --git a/ruoyi-api/ruoyi-api-bom/pom.xml b/ruoyi-api/ruoyi-api-bom/pom.xml
index 748bcb68..8bdae831 100644
--- a/ruoyi-api/ruoyi-api-bom/pom.xml
+++ b/ruoyi-api/ruoyi-api-bom/pom.xml
@@ -15,7 +15,7 @@
- 2.2.0-BETA2
+ 2.2.0
diff --git a/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteFileServiceMock.java b/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteFileServiceMock.java
index 2b79e22f..5ce7c5a0 100644
--- a/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteFileServiceMock.java
+++ b/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteFileServiceMock.java
@@ -20,6 +20,7 @@ public class RemoteFileServiceMock implements RemoteFileService {
* @param file 文件信息
* @return 结果
*/
+ @Override
public RemoteFile upload(String name, String originalFilename, String contentType, byte[] file) {
log.warn("服务调用异常 -> 降级处理");
return null;
@@ -31,11 +32,18 @@ public class RemoteFileServiceMock implements RemoteFileService {
* @param ossIds ossId串逗号分隔
* @return url串逗号分隔
*/
+ @Override
public String selectUrlByIds(String ossIds) {
log.warn("服务调用异常 -> 降级处理");
return StringUtils.EMPTY;
}
+ /**
+ * 通过ossId查询列表
+ *
+ * @param ossIds ossId串逗号分隔
+ * @return 列表
+ */
@Override
public List selectByIds(String ossIds) {
log.warn("服务调用异常 -> 降级处理");
diff --git a/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteMessageService.java b/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteMessageService.java
index c6ea3f51..6c168507 100644
--- a/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteMessageService.java
+++ b/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteMessageService.java
@@ -15,5 +15,10 @@ public interface RemoteMessageService {
*/
void publishMessage(Long sessionKey, String message);
+ /**
+ * 发布订阅的消息(群发)
+ *
+ * @param message 消息内容
+ */
void publishAll(String message);
}
diff --git a/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteMessageServiceStub.java b/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteMessageServiceStub.java
index 3c9ec8bf..68f55401 100644
--- a/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteMessageServiceStub.java
+++ b/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteMessageServiceStub.java
@@ -20,6 +20,7 @@ public class RemoteMessageServiceStub implements RemoteMessageService {
* @param sessionKey session主键 一般为用户id
* @param message 消息文本
*/
+ @Override
public void publishMessage(Long sessionKey, String message) {
try {
remoteMessageService.publishMessage(sessionKey, message);
@@ -28,6 +29,12 @@ public class RemoteMessageServiceStub implements RemoteMessageService {
}
}
+ /**
+ * 发布订阅的消息(群发)
+ *
+ * @param message 消息内容
+ */
+ @Override
public void publishAll(String message) {
try {
remoteMessageService.publishAll(message);
diff --git a/ruoyi-auth/Dockerfile b/ruoyi-auth/Dockerfile
index 406bb65d..393ab9e5 100644
--- a/ruoyi-auth/Dockerfile
+++ b/ruoyi-auth/Dockerfile
@@ -1,7 +1,9 @@
+# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
+FROM bellsoft/liberica-openjdk-alpine:17.0.11-cds
+#FROM bellsoft/liberica-openjdk-alpine:21.0.3-cds
#FROM findepi/graalvm:java17-native
-FROM openjdk:17.0.2-oraclelinux8
-MAINTAINER Lion Li
+LABEL maintainer="Lion Li"
RUN mkdir -p /ruoyi/auth/logs \
/ruoyi/auth/temp \
@@ -9,6 +11,10 @@ RUN mkdir -p /ruoyi/auth/logs \
WORKDIR /ruoyi/auth
+# 补全alpine镜像缺失字体问题
+RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
+RUN apk add fontconfig && apk add --update ttf-dejavu && fc-cache --force
+
ENV SERVER_PORT=9210 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
EXPOSE ${SERVER_PORT}
diff --git a/ruoyi-auth/src/main/java/org/dromara/auth/service/impl/SocialAuthStrategy.java b/ruoyi-auth/src/main/java/org/dromara/auth/service/impl/SocialAuthStrategy.java
index 1b652297..20293ccb 100644
--- a/ruoyi-auth/src/main/java/org/dromara/auth/service/impl/SocialAuthStrategy.java
+++ b/ruoyi-auth/src/main/java/org/dromara/auth/service/impl/SocialAuthStrategy.java
@@ -14,8 +14,8 @@ import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.auth.domain.vo.LoginVo;
import org.dromara.auth.form.SocialLoginBody;
import org.dromara.auth.service.IAuthStrategy;
-import org.dromara.auth.service.SysLoginService;
import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.ValidatorUtils;
import org.dromara.common.json.utils.JsonUtils;
import org.dromara.common.satoken.utils.LoginHelper;
@@ -43,7 +43,6 @@ import java.util.Optional;
public class SocialAuthStrategy implements IAuthStrategy {
private final SocialProperties socialProperties;
- private final SysLoginService loginService;
@DubboReference
private RemoteSocialService remoteSocialService;
@@ -83,7 +82,7 @@ public class SocialAuthStrategy implements IAuthStrategy {
}
RemoteSocialVo socialVo;
if (TenantHelper.isEnable()) {
- Optional opt = list.stream().filter(x -> x.getTenantId().equals(loginBody.getTenantId())).findAny();
+ Optional opt = StreamUtils.findAny(list, x -> x.getTenantId().equals(loginBody.getTenantId()));
if (opt.isEmpty()) {
throw new ServiceException("对不起,你没有权限登录当前租户!");
}
diff --git a/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml b/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml
index 57504d4b..e2f4f110 100644
--- a/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml
+++ b/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml
@@ -14,7 +14,7 @@
- 2.2.0-BETA2
+ 2.2.0
2023.0.1.0
1.8.8
1.7.1
diff --git a/ruoyi-common/ruoyi-common-bom/pom.xml b/ruoyi-common/ruoyi-common-bom/pom.xml
index 0b599698..dcafd753 100644
--- a/ruoyi-common/ruoyi-common-bom/pom.xml
+++ b/ruoyi-common/ruoyi-common-bom/pom.xml
@@ -14,7 +14,7 @@
- 2.2.0-BETA2
+ 2.2.0
@@ -40,6 +40,7 @@
${revision}
+
org.dromara
ruoyi-common-satoken
@@ -88,91 +89,105 @@
${revision}
+
org.dromara
ruoyi-common-job
${revision}
+
org.dromara
ruoyi-common-dubbo
${revision}
+
org.dromara
ruoyi-common-seata
${revision}
+
org.dromara
ruoyi-common-loadbalancer
${revision}
+
org.dromara
ruoyi-common-oss
${revision}
-
+
org.dromara
ruoyi-common-ratelimiter
${revision}
+
org.dromara
ruoyi-common-idempotent
${revision}
+
org.dromara
ruoyi-common-mail
${revision}
+
org.dromara
ruoyi-common-sms
${revision}
+
org.dromara
ruoyi-common-logstash
${revision}
+
org.dromara
ruoyi-common-elasticsearch
${revision}
+
org.dromara
ruoyi-common-sentinel
${revision}
+
org.dromara
ruoyi-common-skylog
${revision}
+
org.dromara
ruoyi-common-prometheus
${revision}
+
org.dromara
ruoyi-common-translation
@@ -193,6 +208,7 @@
${revision}
+
org.dromara
ruoyi-common-encrypt
@@ -206,24 +222,28 @@
${revision}
+
org.dromara
ruoyi-common-websocket
${revision}
+
org.dromara
ruoyi-common-social
${revision}
+
org.dromara
ruoyi-common-nacos
${revision}
+
org.dromara
ruoyi-common-bus
diff --git a/ruoyi-common/ruoyi-common-bus/pom.xml b/ruoyi-common/ruoyi-common-bus/pom.xml
index d89de614..e0256f86 100644
--- a/ruoyi-common/ruoyi-common-bus/pom.xml
+++ b/ruoyi-common/ruoyi-common-bus/pom.xml
@@ -12,7 +12,7 @@
ruoyi-common-bus
- ruoyi-common-bus 模块
+ ruoyi-common-bus 消息总线模块
@@ -25,6 +25,11 @@
+
+
+
+
+
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java
index 967612ef..f9e53a50 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java
@@ -34,6 +34,34 @@ public class StreamUtils {
return collection.stream().filter(function).collect(Collectors.toList());
}
+ /**
+ * 找到流中满足条件的第一个元素
+ *
+ * @param collection 需要查询的集合
+ * @param function 过滤方法
+ * @return 找到符合条件的第一个元素,没有则返回null
+ */
+ public static E findFirst(Collection collection, Predicate function) {
+ if (CollUtil.isEmpty(collection)) {
+ return null;
+ }
+ return collection.stream().filter(function).findFirst().orElse(null);
+ }
+
+ /**
+ * 找到流中任意一个满足条件的元素
+ *
+ * @param collection 需要查询的集合
+ * @param function 过滤方法
+ * @return 找到符合条件的任意一个元素,没有则返回null
+ */
+ public static Optional findAny(Collection collection, Predicate function) {
+ if (CollUtil.isEmpty(collection)) {
+ return Optional.empty();
+ }
+ return collection.stream().filter(function).findAny();
+ }
+
/**
* 将collection拼接
*
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ValidatorUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ValidatorUtils.java
index f94f9164..bc9c371e 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ValidatorUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ValidatorUtils.java
@@ -18,6 +18,13 @@ public class ValidatorUtils {
private static final Validator VALID = SpringUtils.getBean(Validator.class);
+ /**
+ * 对给定对象进行参数校验,并根据指定的校验组进行校验
+ *
+ * @param object 要进行校验的对象
+ * @param groups 校验组
+ * @throws ConstraintViolationException 如果校验不通过,则抛出参数校验异常
+ */
public static void validate(T object, Class>... groups) {
Set> validate = VALID.validate(object, groups);
if (!validate.isEmpty()) {
diff --git a/ruoyi-common/ruoyi-common-dubbo/pom.xml b/ruoyi-common/ruoyi-common-dubbo/pom.xml
index b5cee969..5f0088c3 100644
--- a/ruoyi-common/ruoyi-common-dubbo/pom.xml
+++ b/ruoyi-common/ruoyi-common-dubbo/pom.xml
@@ -12,7 +12,7 @@
ruoyi-common-dubbo
- ruoyi-common-dubbo
+ ruoyi-common-dubbo RPC服务
diff --git a/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/utils/JsonUtils.java b/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/utils/JsonUtils.java
index 42af8daf..65c2faae 100644
--- a/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/utils/JsonUtils.java
+++ b/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/utils/JsonUtils.java
@@ -7,10 +7,10 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.exc.MismatchedInputException;
-import org.dromara.common.core.utils.SpringUtils;
-import org.dromara.common.core.utils.StringUtils;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
+import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.core.utils.StringUtils;
import java.io.IOException;
import java.util.ArrayList;
@@ -30,6 +30,13 @@ public class JsonUtils {
return OBJECT_MAPPER;
}
+ /**
+ * 将对象转换为JSON格式的字符串
+ *
+ * @param object 要转换的对象
+ * @return JSON格式的字符串,如果对象为null,则返回null
+ * @throws RuntimeException 如果转换过程中发生JSON处理异常,则抛出运行时异常
+ */
public static String toJsonString(Object object) {
if (ObjectUtil.isNull(object)) {
return null;
@@ -41,6 +48,15 @@ public class JsonUtils {
}
}
+ /**
+ * 将JSON格式的字符串转换为指定类型的对象
+ *
+ * @param text JSON格式的字符串
+ * @param clazz 要转换的目标对象类型
+ * @param 目标对象的泛型类型
+ * @return 转换后的对象,如果字符串为空则返回null
+ * @throws RuntimeException 如果转换过程中发生IO异常,则抛出运行时异常
+ */
public static T parseObject(String text, Class clazz) {
if (StringUtils.isEmpty(text)) {
return null;
@@ -52,6 +68,15 @@ public class JsonUtils {
}
}
+ /**
+ * 将字节数组转换为指定类型的对象
+ *
+ * @param bytes 字节数组
+ * @param clazz 要转换的目标对象类型
+ * @param 目标对象的泛型类型
+ * @return 转换后的对象,如果字节数组为空则返回null
+ * @throws RuntimeException 如果转换过程中发生IO异常,则抛出运行时异常
+ */
public static T parseObject(byte[] bytes, Class clazz) {
if (ArrayUtil.isEmpty(bytes)) {
return null;
@@ -63,6 +88,15 @@ public class JsonUtils {
}
}
+ /**
+ * 将JSON格式的字符串转换为指定类型的对象,支持复杂类型
+ *
+ * @param text JSON格式的字符串
+ * @param typeReference 指定类型的TypeReference对象
+ * @param 目标对象的泛型类型
+ * @return 转换后的对象,如果字符串为空则返回null
+ * @throws RuntimeException 如果转换过程中发生IO异常,则抛出运行时异常
+ */
public static T parseObject(String text, TypeReference typeReference) {
if (StringUtils.isBlank(text)) {
return null;
@@ -74,6 +108,13 @@ public class JsonUtils {
}
}
+ /**
+ * 将JSON格式的字符串转换为Dict对象
+ *
+ * @param text JSON格式的字符串
+ * @return 转换后的Dict对象,如果字符串为空或者不是JSON格式则返回null
+ * @throws RuntimeException 如果转换过程中发生IO异常,则抛出运行时异常
+ */
public static Dict parseMap(String text) {
if (StringUtils.isBlank(text)) {
return null;
@@ -88,6 +129,13 @@ public class JsonUtils {
}
}
+ /**
+ * 将JSON格式的字符串转换为Dict对象的列表
+ *
+ * @param text JSON格式的字符串
+ * @return 转换后的Dict对象的列表,如果字符串为空则返回null
+ * @throws RuntimeException 如果转换过程中发生IO异常,则抛出运行时异常
+ */
public static List parseArrayMap(String text) {
if (StringUtils.isBlank(text)) {
return null;
@@ -99,6 +147,15 @@ public class JsonUtils {
}
}
+ /**
+ * 将JSON格式的字符串转换为指定类型对象的列表
+ *
+ * @param text JSON格式的字符串
+ * @param clazz 要转换的目标对象类型
+ * @param 目标对象的泛型类型
+ * @return 转换后的对象的列表,如果字符串为空则返回空列表
+ * @throws RuntimeException 如果转换过程中发生IO异常,则抛出运行时异常
+ */
public static List parseArray(String text, Class clazz) {
if (StringUtils.isEmpty(text)) {
return new ArrayList<>();
diff --git a/ruoyi-common/ruoyi-common-mail/src/main/java/org/dromara/common/mail/config/MailConfig.java b/ruoyi-common/ruoyi-common-mail/src/main/java/org/dromara/common/mail/config/MailConfig.java
deleted file mode 100644
index 1b51c272..00000000
--- a/ruoyi-common/ruoyi-common-mail/src/main/java/org/dromara/common/mail/config/MailConfig.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.dromara.common.mail.config;
-
-import org.dromara.common.mail.config.properties.MailProperties;
-import org.dromara.common.mail.utils.MailAccount;
-import org.springframework.boot.autoconfigure.AutoConfiguration;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-
-/**
- * JavaMail 配置
- *
- * @author Michelle.Chung
- */
-@AutoConfiguration
-@EnableConfigurationProperties(MailProperties.class)
-public class MailConfig {
-
- @Bean
- @ConditionalOnProperty(value = "mail.enabled", havingValue = "true")
- public MailAccount mailAccount(MailProperties mailProperties) {
- MailAccount account = new MailAccount();
- account.setHost(mailProperties.getHost());
- account.setPort(mailProperties.getPort());
- account.setAuth(mailProperties.getAuth());
- account.setFrom(mailProperties.getFrom());
- account.setUser(mailProperties.getUser());
- account.setPass(mailProperties.getPass());
- account.setSocketFactoryPort(mailProperties.getPort());
- account.setStarttlsEnable(mailProperties.getStarttlsEnable());
- account.setSslEnable(mailProperties.getSslEnable());
- account.setTimeout(mailProperties.getTimeout());
- account.setConnectionTimeout(mailProperties.getConnectionTimeout());
- return account;
- }
-
-}
diff --git a/ruoyi-common/ruoyi-common-nacos/pom.xml b/ruoyi-common/ruoyi-common-nacos/pom.xml
index bdee2fd2..9a87e45b 100644
--- a/ruoyi-common/ruoyi-common-nacos/pom.xml
+++ b/ruoyi-common/ruoyi-common-nacos/pom.xml
@@ -11,7 +11,7 @@
ruoyi-common-nacos
- ruoyi-common-nacos
+ ruoyi-common-nacos 配置中心
diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/RedisUtils.java b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/RedisUtils.java
index 3fc3aac0..67be2fb7 100644
--- a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/RedisUtils.java
+++ b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/RedisUtils.java
@@ -65,6 +65,12 @@ public class RedisUtils {
consumer.accept(msg);
}
+ /**
+ * 发布消息到指定的频道
+ *
+ * @param channelKey 通道key
+ * @param msg 发送数据
+ */
public static void publish(String channelKey, T msg) {
RTopic topic = CLIENT.getTopic(channelKey);
topic.publish(msg);
diff --git a/ruoyi-common/ruoyi-common-satoken/pom.xml b/ruoyi-common/ruoyi-common-satoken/pom.xml
index 733927be..ecdb7630 100644
--- a/ruoyi-common/ruoyi-common-satoken/pom.xml
+++ b/ruoyi-common/ruoyi-common-satoken/pom.xml
@@ -12,7 +12,7 @@
ruoyi-common-satoken
- ruoyi-common-satoken
+ ruoyi-common-satoken 权限认证服务
diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java
index ae067e89..896d3726 100644
--- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java
+++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java
@@ -193,7 +193,11 @@ public class LoginHelper {
* @return 结果
*/
public static boolean isLogin() {
- return getLoginUser() != null;
+ try {
+ return getLoginUser() != null;
+ } catch (Exception e) {
+ return false;
+ }
}
}
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 0f789286..39092cce 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,12 @@ import org.springframework.core.task.VirtualThreadTaskExecutor;
@AutoConfiguration
public class UndertowConfig implements WebServerFactoryCustomizer {
- /**
- * 设置 Undertow 的 websocket 缓冲池
- */
@Override
public void customize(UndertowServletWebServerFactory factory) {
// 默认不直接分配内存 如果项目中使用了 websocket 建议直接分配
factory.addDeploymentInfoCustomizers(deploymentInfo -> {
WebSocketDeploymentInfo webSocketDeploymentInfo = new WebSocketDeploymentInfo();
- webSocketDeploymentInfo.setBuffers(new DefaultByteBufferPool(false, 512));
+ webSocketDeploymentInfo.setBuffers(new DefaultByteBufferPool(true, 1024));
deploymentInfo.addServletContextAttribute("io.undertow.websockets.jsr.WebSocketDeploymentInfo", webSocketDeploymentInfo);
// 使用虚拟线程
if (SpringUtils.isVirtual()) {
diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/interceptor/PlusWebSocketInterceptor.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/interceptor/PlusWebSocketInterceptor.java
index 9f570a3a..fafe699d 100644
--- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/interceptor/PlusWebSocketInterceptor.java
+++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/interceptor/PlusWebSocketInterceptor.java
@@ -1,5 +1,6 @@
package org.dromara.common.websocket.interceptor;
+import cn.dev33.satoken.exception.NotLoginException;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.api.model.LoginUser;
@@ -31,9 +32,14 @@ public class PlusWebSocketInterceptor implements HandshakeInterceptor {
*/
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map attributes) {
- LoginUser loginUser = LoginHelper.getLoginUser();
- attributes.put(LOGIN_USER_KEY, loginUser);
- return true;
+ try {
+ LoginUser loginUser = LoginHelper.getLoginUser();
+ attributes.put(LOGIN_USER_KEY, loginUser);
+ return true;
+ } catch (NotLoginException e) {
+ log.error("WebSocket 认证失败'{}',无法访问系统资源", e.getMessage());
+ return false;
+ }
}
/**
diff --git a/ruoyi-gateway/Dockerfile b/ruoyi-gateway/Dockerfile
index a0b24dbf..ae82e1f6 100644
--- a/ruoyi-gateway/Dockerfile
+++ b/ruoyi-gateway/Dockerfile
@@ -1,7 +1,9 @@
+# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
+FROM bellsoft/liberica-openjdk-alpine:17.0.11-cds
+#FROM bellsoft/liberica-openjdk-alpine:21.0.3-cds
#FROM findepi/graalvm:java17-native
-FROM openjdk:17.0.2-oraclelinux8
-MAINTAINER Lion Li
+LABEL maintainer="Lion Li"
RUN mkdir -p /ruoyi/gateway/logs \
/ruoyi/gateway/temp \
diff --git a/ruoyi-modules/ruoyi-gen/Dockerfile b/ruoyi-modules/ruoyi-gen/Dockerfile
index 5e7dab3f..82454309 100644
--- a/ruoyi-modules/ruoyi-gen/Dockerfile
+++ b/ruoyi-modules/ruoyi-gen/Dockerfile
@@ -1,7 +1,9 @@
+# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
+FROM bellsoft/liberica-openjdk-alpine:17.0.11-cds
+#FROM bellsoft/liberica-openjdk-alpine:21.0.3-cds
#FROM findepi/graalvm:java17-native
-FROM openjdk:17.0.2-oraclelinux8
-MAINTAINER Lion Li
+LABEL maintainer="Lion Li"
RUN mkdir -p /ruoyi/gen/logs
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/service.java.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/service.java.vm
index f1fa3d99..9f69eacd 100644
--- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/service.java.vm
+++ b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/service.java.vm
@@ -21,33 +21,53 @@ public interface I${ClassName}Service {
/**
* 查询${functionName}
+ *
+ * @param ${pkColumn.javaField} 主键
+ * @return ${functionName}
*/
${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField});
#if($table.crud)
/**
- * 查询${functionName}列表
+ * 分页查询${functionName}列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return ${functionName}分页列表
*/
TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery);
#end
/**
- * 查询${functionName}列表
+ * 查询符合条件的${functionName}列表
+ *
+ * @param bo 查询条件
+ * @return ${functionName}列表
*/
List<${ClassName}Vo> queryList(${ClassName}Bo bo);
/**
* 新增${functionName}
+ *
+ * @param bo ${functionName}
+ * @return 是否新增成功
*/
Boolean insertByBo(${ClassName}Bo bo);
/**
* 修改${functionName}
+ *
+ * @param bo ${functionName}
+ * @return 是否修改成功
*/
Boolean updateByBo(${ClassName}Bo bo);
/**
* 校验并批量删除${functionName}信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<${pkColumn.javaType}> ids, Boolean isValid);
}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm
index e0642f1a..67690ca6 100644
--- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm
+++ b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm
@@ -35,6 +35,9 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
/**
* 查询${functionName}
+ *
+ * @param ${pkColumn.javaField} 主键
+ * @return ${functionName}
*/
@Override
public ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}){
@@ -43,7 +46,11 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
#if($table.crud)
/**
- * 查询${functionName}列表
+ * 分页查询${functionName}列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return ${functionName}分页列表
*/
@Override
public TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery) {
@@ -54,7 +61,10 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
#end
/**
- * 查询${functionName}列表
+ * 查询符合条件的${functionName}列表
+ *
+ * @param bo 查询条件
+ * @return ${functionName}列表
*/
@Override
public List<${ClassName}Vo> queryList(${ClassName}Bo bo) {
@@ -91,6 +101,9 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
/**
* 新增${functionName}
+ *
+ * @param bo ${functionName}
+ * @return 是否新增成功
*/
@Override
public Boolean insertByBo(${ClassName}Bo bo) {
@@ -106,6 +119,9 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
/**
* 修改${functionName}
+ *
+ * @param bo ${functionName}
+ * @return 是否修改成功
*/
@Override
public Boolean updateByBo(${ClassName}Bo bo) {
@@ -122,7 +138,11 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
}
/**
- * 批量删除${functionName}
+ * 校验并批量删除${functionName}信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<${pkColumn.javaType}> ids, Boolean isValid) {
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/ts/types.ts.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/ts/types.ts.vm
index 4e0ab5ee..c3f6ed1f 100644
--- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/ts/types.ts.vm
+++ b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/ts/types.ts.vm
@@ -1,6 +1,6 @@
export interface ${BusinessName}VO {
#foreach ($column in $columns)
-#if($column.insert || $column.edit)
+#if($column.list)
/**
* $column.columnComment
*/
@@ -35,6 +35,7 @@ export interface ${BusinessName}Form extends BaseEntity {
}
export interface ${BusinessName}Query #if(!${treeCode})extends PageQuery #end{
+
#foreach ($column in $columns)
#if($column.query)
/**
@@ -47,4 +48,11 @@ export interface ${BusinessName}Query #if(!${treeCode})extends PageQuery #end{
#end
#end
#end
+ /**
+ * 日期范围参数
+ */
+ params?: any;
}
+
+
+
diff --git a/ruoyi-modules/ruoyi-job/Dockerfile b/ruoyi-modules/ruoyi-job/Dockerfile
index 2f182dda..4c9c194f 100644
--- a/ruoyi-modules/ruoyi-job/Dockerfile
+++ b/ruoyi-modules/ruoyi-job/Dockerfile
@@ -1,7 +1,9 @@
+# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
+FROM bellsoft/liberica-openjdk-alpine:17.0.11-cds
+#FROM bellsoft/liberica-openjdk-alpine:21.0.3-cds
#FROM findepi/graalvm:java17-native
-FROM openjdk:17.0.2-oraclelinux8
-MAINTAINER Lion Li
+LABEL maintainer="Lion Li"
RUN mkdir -p /ruoyi/job/logs \
/ruoyi/job/temp \
diff --git a/ruoyi-modules/ruoyi-resource/Dockerfile b/ruoyi-modules/ruoyi-resource/Dockerfile
index 78569b9d..05991dbe 100644
--- a/ruoyi-modules/ruoyi-resource/Dockerfile
+++ b/ruoyi-modules/ruoyi-resource/Dockerfile
@@ -1,7 +1,9 @@
+# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
+FROM bellsoft/liberica-openjdk-alpine:17.0.11-cds
+#FROM bellsoft/liberica-openjdk-alpine:21.0.3-cds
#FROM findepi/graalvm:java17-native
-FROM openjdk:17.0.2-oraclelinux8
-MAINTAINER Lion Li
+LABEL maintainer="Lion Li"
RUN mkdir -p /ruoyi/resource/logs \
/ruoyi/resource/temp \
diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteFileServiceImpl.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteFileServiceImpl.java
index f3fe1478..61d0371d 100644
--- a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteFileServiceImpl.java
+++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteFileServiceImpl.java
@@ -81,6 +81,7 @@ public class RemoteFileServiceImpl implements RemoteFileService {
* @param ossIds ossId串逗号分隔
* @return 列表
*/
+ @Override
public List selectByIds(String ossIds){
List sysOssVos = sysOssService.listByIds(StringUtils.splitTo(ossIds, Convert::toLong));
return MapstructUtils.convert(sysOssVos, RemoteFile.class);
diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteMailServiceImpl.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteMailServiceImpl.java
index 81badffe..b31c65fa 100644
--- a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteMailServiceImpl.java
+++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteMailServiceImpl.java
@@ -26,6 +26,7 @@ public class RemoteMailServiceImpl implements RemoteMailService {
* @param subject 标题
* @param text 内容
*/
+ @Override
public void send(String to, String subject, String text) throws ServiceException {
MailUtils.sendText(to, subject, text);
}
diff --git a/ruoyi-modules/ruoyi-system/Dockerfile b/ruoyi-modules/ruoyi-system/Dockerfile
index 1984ac3c..9414ea04 100644
--- a/ruoyi-modules/ruoyi-system/Dockerfile
+++ b/ruoyi-modules/ruoyi-system/Dockerfile
@@ -1,7 +1,9 @@
+# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
+FROM bellsoft/liberica-openjdk-alpine:17.0.11-cds
+#FROM bellsoft/liberica-openjdk-alpine:21.0.3-cds
#FROM findepi/graalvm:java17-native
-FROM openjdk:17.0.2-oraclelinux8
-MAINTAINER Lion Li
+LABEL maintainer="Lion Li"
RUN mkdir -p /ruoyi/system/logs \
/ruoyi/system/temp \
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java
index b00b1fb1..07901bce 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java
@@ -75,8 +75,6 @@ public class SysDeptController extends BaseController {
public R add(@Validated @RequestBody SysDeptBo dept) {
if (!deptService.checkDeptNameUnique(dept)) {
return R.fail("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在");
- } else if (StringUtils.isNotBlank(dept.getDeptCategory()) && !deptService.checkDeptCategoryUnique(dept)) {
- return R.fail("新增部门'" + dept.getDeptName() + "'失败,部门类别编码已存在");
}
return toAjax(deptService.insertDept(dept));
}
@@ -92,8 +90,6 @@ public class SysDeptController extends BaseController {
deptService.checkDeptDataScope(deptId);
if (!deptService.checkDeptNameUnique(dept)) {
return R.fail("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
- } else if (StringUtils.isNotBlank(dept.getDeptCategory()) && !deptService.checkDeptCategoryUnique(dept)) {
- return R.fail("修改部门'" + dept.getDeptName() + "'失败,部门类别编码已存在");
} else if (dept.getParentId().equals(deptId)) {
return R.fail("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
} else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus())) {
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 011254ea..7ad2759b 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
@@ -103,6 +103,11 @@ public class SysUserBo extends BaseEntity {
*/
private Long roleId;
+ /**
+ * 排除不查询的用户(工作流用)
+ */
+ private String excludeUserIds;
+
public SysUserBo(Long userId) {
this.userId = userId;
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java
index bc9a4665..dbd417b9 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java
@@ -18,6 +18,12 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
private final ISysDeptService sysDeptService;
+ /**
+ * 通过部门ID查询部门名称
+ *
+ * @param deptIds 部门ID串逗号分隔
+ * @return 部门名称串逗号分隔
+ */
@Override
public String selectDeptNameByIds(String deptIds) {
return sysDeptService.selectDeptNameByIds(deptIds);
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDictServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDictServiceImpl.java
index 10f9dffe..1caf755c 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDictServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDictServiceImpl.java
@@ -23,7 +23,12 @@ public class RemoteDictServiceImpl implements RemoteDictService {
private final ISysDictTypeService sysDictTypeService;
-
+ /**
+ * 根据字典类型查询字典数据
+ *
+ * @param dictType 字典类型
+ * @return 字典数据集合信息
+ */
@Override
public List selectDictDataByType(String dictType) {
List list = sysDictTypeService.selectDictDataByType(dictType);
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteLogServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteLogServiceImpl.java
index bcb0e058..48a8d489 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteLogServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteLogServiceImpl.java
@@ -26,6 +26,11 @@ public class RemoteLogServiceImpl implements RemoteLogService {
private final ISysOperLogService operLogService;
private final ISysLogininforService logininforService;
+ /**
+ * 保存系统日志
+ *
+ * @param remoteOperLogBo 日志实体
+ */
@Async
@Override
public void saveLog(RemoteOperLogBo remoteOperLogBo) {
@@ -33,6 +38,11 @@ public class RemoteLogServiceImpl implements RemoteLogService {
operLogService.insertOperlog(sysOperLogBo);
}
+ /**
+ * 保存访问记录
+ *
+ * @param remoteLogininforBo 访问实体
+ */
@Async
@Override
public void saveLogininfor(RemoteLogininforBo remoteLogininforBo) {
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteSocialServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteSocialServiceImpl.java
index 7adf2584..b5e1af1e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteSocialServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteSocialServiceImpl.java
@@ -26,7 +26,10 @@ public class RemoteSocialServiceImpl implements RemoteSocialService {
private final ISysSocialService sysSocialService;
/**
- * 根据 authId 查询用户信息
+ * 根据 authId 查询用户授权信息
+ *
+ * @param authId 认证id
+ * @return 授权信息
*/
@Override
public List selectByAuthId(String authId) {
@@ -34,6 +37,11 @@ public class RemoteSocialServiceImpl implements RemoteSocialService {
return MapstructUtils.convert(list, RemoteSocialVo.class);
}
+ /**
+ * 查询列表
+ *
+ * @param bo 社会化关系业务对象
+ */
@Override
public List queryList(RemoteSocialBo bo) {
SysSocialBo params = MapstructUtils.convert(bo, SysSocialBo.class);
@@ -43,6 +51,8 @@ public class RemoteSocialServiceImpl implements RemoteSocialService {
/**
* 保存社会化关系
+ *
+ * @param bo 社会化关系业务对象
*/
@Override
public void insertByBo(RemoteSocialBo bo) {
@@ -51,6 +61,8 @@ public class RemoteSocialServiceImpl implements RemoteSocialService {
/**
* 更新社会化关系
+ *
+ * @param bo 社会化关系业务对象
*/
@Override
public void updateByBo(RemoteSocialBo bo) {
@@ -59,6 +71,9 @@ public class RemoteSocialServiceImpl implements RemoteSocialService {
/**
* 删除社会化关系
+ *
+ * @param socialId 社会化关系ID
+ * @return 结果
*/
@Override
public Boolean deleteWithValidById(Long socialId) {
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
index 36871495..5c017abf 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
@@ -46,6 +46,13 @@ public class RemoteUserServiceImpl implements RemoteUserService {
private final ISysDeptService deptService;
private final SysUserMapper userMapper;
+ /**
+ * 通过用户名查询用户信息
+ *
+ * @param username 用户名
+ * @param tenantId 租户id
+ * @return 结果
+ */
@Override
public LoginUser getUserInfo(String username, String tenantId) throws UserException {
return TenantHelper.dynamic(tenantId, () -> {
@@ -62,6 +69,13 @@ public class RemoteUserServiceImpl implements RemoteUserService {
});
}
+ /**
+ * 通过用户id查询用户信息
+ *
+ * @param userId 用户id
+ * @param tenantId 租户id
+ * @return 结果
+ */
@Override
public LoginUser getUserInfo(Long userId, String tenantId) throws UserException {
return TenantHelper.dynamic(tenantId, () -> {
@@ -78,6 +92,13 @@ public class RemoteUserServiceImpl implements RemoteUserService {
});
}
+ /**
+ * 通过手机号查询用户信息
+ *
+ * @param phonenumber 手机号
+ * @param tenantId 租户id
+ * @return 结果
+ */
@Override
public LoginUser getUserInfoByPhonenumber(String phonenumber, String tenantId) throws UserException {
return TenantHelper.dynamic(tenantId, () -> {
@@ -94,6 +115,13 @@ public class RemoteUserServiceImpl implements RemoteUserService {
});
}
+ /**
+ * 通过邮箱查询用户信息
+ *
+ * @param email 邮箱
+ * @param tenantId 租户id
+ * @return 结果
+ */
@Override
public LoginUser getUserInfoByEmail(String email, String tenantId) throws UserException {
return TenantHelper.dynamic(tenantId, () -> {
@@ -110,6 +138,12 @@ public class RemoteUserServiceImpl implements RemoteUserService {
});
}
+ /**
+ * 通过openid查询用户信息
+ *
+ * @param openid openid
+ * @return 结果
+ */
@Override
public XcxLoginUser getUserInfoByOpenid(String openid) throws UserException {
// todo 自行实现 userService.selectUserByOpenid(openid);
@@ -131,6 +165,12 @@ public class RemoteUserServiceImpl implements RemoteUserService {
return loginUser;
}
+ /**
+ * 注册用户信息
+ *
+ * @param remoteUserBo 用户信息
+ * @return 结果
+ */
@Override
public Boolean registerUserInfo(RemoteUserBo remoteUserBo) throws UserException, ServiceException {
SysUserBo sysUserBo = MapstructUtils.convert(remoteUserBo, SysUserBo.class);
@@ -219,7 +259,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
loginUser.setRolePermission(permissionService.getRolePermission(userVo.getUserId()));
TenantHelper.dynamic(userVo.getTenantId(), () -> {
SysDeptVo dept = null;
- if (ObjectUtil.isNotNull(userVo.getUserId())) {
+ if (ObjectUtil.isNotNull(userVo.getDeptId())) {
dept = deptService.selectDeptById(userVo.getDeptId());
}
loginUser.setDeptName(ObjectUtil.isNull(dept) ? "" : dept.getDeptName());
@@ -246,12 +286,24 @@ public class RemoteUserServiceImpl implements RemoteUserService {
DataPermissionHelper.ignore(() -> userMapper.updateById(sysUser));
}
+ /**
+ * 通过用户ID查询用户列表
+ *
+ * @param userIds 用户ids
+ * @return 用户列表
+ */
@Override
public List selectListByIds(List userIds) {
List sysUserVos = userService.selectUserByIds(userIds, null);
return MapstructUtils.convert(sysUserVos, RemoteUserVo.class);
}
+ /**
+ * 通过角色ID查询用户ID
+ *
+ * @param roleIds 角色ids
+ * @return 用户ids
+ */
@Override
public List selectUserIdsByRoleIds(List roleIds) {
return userService.selectUserIdsByRoleIds(roleIds);
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
index b4fc94cc..d0d7c93e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
@@ -100,13 +100,6 @@ public interface ISysDeptService {
*/
boolean checkDeptNameUnique(SysDeptBo dept);
- /**
- * 校验部门类别编码是否唯一
- *
- * @param dept 部门信息
- * @return 结果
- */
- boolean checkDeptCategoryUnique(SysDeptBo dept);
/**
* 校验部门是否有数据权限
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java
index 57d34b69..099dee42 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java
@@ -12,45 +12,60 @@ import java.util.List;
*/
public interface ISysSocialService {
-
/**
- * 查询社会化关系
+ * 根据ID查询社会化关系
+ *
+ * @param id 社会化关系的唯一标识符
+ * @return 返回与给定ID对应的SysSocialVo对象,如果未找到则返回null
*/
SysSocialVo queryById(String id);
/**
* 查询社会化关系列表
+ *
+ * @param bo 用于过滤查询条件的SysSocialBo对象
+ * @return 返回符合条件的SysSocialVo对象列表
*/
List queryList(SysSocialBo bo);
/**
- * 查询社会化关系列表
+ * 根据用户ID查询社会化关系列表
+ *
+ * @param userId 用户的唯一标识符
+ * @return 返回与给定用户ID相关联的SysSocialVo对象列表
*/
List queryListByUserId(Long userId);
/**
* 新增授权关系
+ *
+ * @param bo 包含新增授权关系信息的SysSocialBo对象
+ * @return 返回新增操作的结果,成功返回true,失败返回false
*/
Boolean insertByBo(SysSocialBo bo);
/**
* 更新社会化关系
+ *
+ * @param bo 包含更新信息的SysSocialBo对象
+ * @return 返回更新操作的结果,成功返回true,失败返回false
*/
-
Boolean updateByBo(SysSocialBo bo);
/**
* 删除社会化关系信息
+ *
+ * @param id 要删除的社会化关系的唯一标识符
+ * @return 返回删除操作的结果,成功返回true,失败返回false
*/
Boolean deleteWithValidById(Long id);
-
/**
- * 根据 authId 查询 SysSocial 表和 SysUser 表,返回 SysSocialAuthResult 映射的对象
+ * 根据认证ID查询社会化关系和用户信息
+ *
* @param authId 认证ID
- * @return SysSocial
+ * @return 返回包含SysSocial和用户信息的SysSocialVo对象列表
*/
List selectByAuthId(String authId);
-
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
index d421e313..f4c1a40b 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
@@ -223,20 +223,6 @@ public class SysDeptServiceImpl implements ISysDeptService {
return !exist;
}
- /**
- * 校验部门类别编码是否唯一
- *
- * @param dept 部门信息
- * @return 结果
- */
- @Override
- public boolean checkDeptCategoryUnique(SysDeptBo dept) {
- boolean exist = baseMapper.exists(new LambdaQueryWrapper()
- .eq(SysDept::getDeptCategory, dept.getDeptCategory())
- .ne(ObjectUtil.isNotNull(dept.getDeptId()), SysDept::getDeptId, dept.getDeptId()));
- return !exist;
- }
-
/**
* 校验部门是否有数据权限
*
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java
index 3f72ae36..49ceacf1 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java
@@ -37,7 +37,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
-import java.util.stream.Collectors;
/**
* 角色 业务层处理
@@ -106,7 +105,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
List userRoles = baseMapper.selectRolesByUserId(userId);
List roles = selectRoleAll();
// 使用HashSet提高查找效率
- Set userRoleIds = userRoles.stream().map(SysRoleVo::getRoleId).collect(Collectors.toSet());
+ Set userRoleIds = StreamUtils.toSet(userRoles, SysRoleVo::getRoleId);
for (SysRoleVo role : roles) {
if (userRoleIds.contains(role.getRoleId())) {
role.setFlag(true);
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java
index d8eed0f3..365045ce 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java
@@ -26,9 +26,11 @@ public class SysSocialServiceImpl implements ISysSocialService {
private final SysSocialMapper baseMapper;
-
/**
- * 查询社会化关系
+ * 根据ID查询社会化关系
+ *
+ * @param id 社会化关系的唯一标识符
+ * @return 返回与给定ID对应的SysSocialVo对象,如果未找到则返回null
*/
@Override
public SysSocialVo queryById(String id) {
@@ -36,7 +38,10 @@ public class SysSocialServiceImpl implements ISysSocialService {
}
/**
- * 授权列表
+ * 查询社会化关系列表
+ *
+ * @param bo 用于过滤查询条件的SysSocialBo对象
+ * @return 返回符合条件的SysSocialVo对象列表
*/
@Override
public List queryList(SysSocialBo bo) {
@@ -47,14 +52,22 @@ public class SysSocialServiceImpl implements ISysSocialService {
return baseMapper.selectVoList(lqw);
}
+ /**
+ * 根据用户ID查询社会化关系列表
+ *
+ * @param userId 用户的唯一标识符
+ * @return 返回与给定用户ID相关联的SysSocialVo对象列表
+ */
@Override
public List queryListByUserId(Long userId) {
return baseMapper.selectVoList(new LambdaQueryWrapper().eq(SysSocial::getUserId, userId));
}
-
/**
- * 新增社会化关系
+ * 新增授权关系
+ *
+ * @param bo 包含新增授权关系信息的SysSocialBo对象
+ * @return 返回新增操作的结果,成功返回true,失败返回false
*/
@Override
public Boolean insertByBo(SysSocialBo bo) {
@@ -73,6 +86,9 @@ public class SysSocialServiceImpl implements ISysSocialService {
/**
* 更新社会化关系
+ *
+ * @param bo 包含更新信息的SysSocialBo对象
+ * @return 返回更新操作的结果,成功返回true,失败返回false
*/
@Override
public Boolean updateByBo(SysSocialBo bo) {
@@ -81,7 +97,6 @@ public class SysSocialServiceImpl implements ISysSocialService {
return baseMapper.updateById(update) > 0;
}
-
/**
* 保存前的数据校验
*/
@@ -89,21 +104,22 @@ public class SysSocialServiceImpl implements ISysSocialService {
//TODO 做一些数据校验,如唯一约束
}
-
/**
- * 删除社会化关系
+ * 删除社会化关系信息
+ *
+ * @param id 要删除的社会化关系的唯一标识符
+ * @return 返回删除操作的结果,成功返回true,失败返回false
*/
@Override
public Boolean deleteWithValidById(Long id) {
return baseMapper.deleteById(id) > 0;
}
-
/**
- * 根据 authId 查询用户信息
+ * 根据认证ID查询社会化关系和用户信息
*
- * @param authId 认证id
- * @return 授权信息
+ * @param authId 认证ID
+ * @return 返回包含SysSocial和用户信息的SysSocialVo对象列表
*/
@Override
public List selectByAuthId(String authId) {
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
index 8fc8142a..68e4ae85 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
@@ -95,6 +95,9 @@ public class SysUserServiceImpl implements ISysUserService {
ids.add(user.getDeptId());
w.in("u.dept_id", ids);
}).orderByAsc("u.user_id");
+ if (StringUtils.isNotBlank(user.getExcludeUserIds())) {
+ wrapper.notIn("u.user_id", StringUtils.splitList(user.getExcludeUserIds()));
+ }
return wrapper;
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
index cf3468ed..b9eced80 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
@@ -12,7 +12,7 @@
m.perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
- left join sys_role r on sur.role_id = r.role_id
+ left join sys_role r on rm.role_id = r.role_id
${ew.getCustomSqlSegment}
diff --git a/ruoyi-modules/ruoyi-workflow/Dockerfile b/ruoyi-modules/ruoyi-workflow/Dockerfile
index 42a0ee94..c312b820 100644
--- a/ruoyi-modules/ruoyi-workflow/Dockerfile
+++ b/ruoyi-modules/ruoyi-workflow/Dockerfile
@@ -1,7 +1,9 @@
+# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
+FROM bellsoft/liberica-openjdk-alpine:17.0.11-cds
+#FROM bellsoft/liberica-openjdk-alpine:21.0.3-cds
#FROM findepi/graalvm:java17-native
-FROM openjdk:17.0.2-oraclelinux8
-MAINTAINER Lion Li
+LABEL maintainer="Lion Li"
RUN mkdir -p /ruoyi/workflow/logs \
/ruoyi/workflow/temp \
@@ -9,6 +11,10 @@ RUN mkdir -p /ruoyi/workflow/logs \
WORKDIR /ruoyi/workflow
+# 补全alpine镜像缺失字体问题
+RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
+RUN apk add fontconfig && apk add --update ttf-dejavu && fc-cache --force
+
ENV SERVER_PORT=9205 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
EXPOSE ${SERVER_PORT}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/DeleteSequenceMultiInstanceCmd.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/DeleteSequenceMultiInstanceCmd.java
index 6773eeff..a61daebc 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/DeleteSequenceMultiInstanceCmd.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/DeleteSequenceMultiInstanceCmd.java
@@ -2,6 +2,7 @@ package org.dromara.workflow.flowable.cmd;
import cn.hutool.core.util.ObjectUtil;
import lombok.AllArgsConstructor;
+import org.dromara.common.core.utils.StreamUtils;
import org.flowable.common.engine.impl.interceptor.Command;
import org.flowable.common.engine.impl.interceptor.CommandContext;
import org.flowable.engine.impl.persistence.entity.ExecutionEntity;
@@ -59,7 +60,7 @@ public class DeleteSequenceMultiInstanceCmd implements Command {
}
List userIdList = new ArrayList<>();
userIds.forEach(e -> {
- Long userId = assignees.stream().filter(id -> ObjectUtil.equals(id, e)).findFirst().orElse(null);
+ Long userId = StreamUtils.findFirst(assignees, id -> ObjectUtil.equals(id, e));
if (userId == null) {
userIdList.add(e);
}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java
index 76a3966b..4b90554a 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java
@@ -259,23 +259,23 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
List highLightedFlowList = QueryUtils.hisActivityInstanceQuery(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();
for (HistoricActivityInstance tempActivity : highLightedFlowList) {
Map task = new HashMap<>();
- if (!FlowConstant.SEQUENCE_FLOW.equals(tempActivity.getActivityType()) &&
- !FlowConstant.PARALLEL_GATEWAY.equals(tempActivity.getActivityType()) &&
- !FlowConstant.EXCLUSIVE_GATEWAY.equals(tempActivity.getActivityType()) &&
- !FlowConstant.INCLUSIVE_GATEWAY.equals(tempActivity.getActivityType())
- ) {
- task.put("key", tempActivity.getActivityId());
- task.put("completed", tempActivity.getEndTime() != null);
- task.put("activityType", tempActivity.getActivityType());
- taskList.add(task);
+ switch (tempActivity.getActivityType()) {
+ case FlowConstant.SEQUENCE_FLOW, FlowConstant.PARALLEL_GATEWAY,
+ FlowConstant.EXCLUSIVE_GATEWAY, FlowConstant.INCLUSIVE_GATEWAY -> {}
+ default -> {
+ task.put("key", tempActivity.getActivityId());
+ task.put("completed", tempActivity.getEndTime() != null);
+ task.put("activityType", tempActivity.getActivityType());
+ taskList.add(task);
+ }
}
}
ProcessInstance processInstance = QueryUtils.instanceQuery(processInstanceId).singleResult();
if (processInstance != null) {
- taskList = taskList.stream().filter(e -> !e.get("activityType").equals(FlowConstant.END_EVENT)).collect(Collectors.toList());
+ taskList = StreamUtils.filter(taskList, e -> !e.get("activityType").equals(FlowConstant.END_EVENT));
}
//查询出运行中节点
- List