Browse Source

修改失效函数

wanggaokun 1 year ago
parent
commit
8e29c7196b

+ 4 - 2
eco-common/common-core/src/main/java/org/eco/common/core/config/AsyncConfig.java

@@ -5,7 +5,7 @@ import org.eco.common.core.exception.BusinessException;
 import org.eco.common.core.utils.SpringUtils;
 import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
 import org.springframework.boot.autoconfigure.AutoConfiguration;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.core.task.VirtualThreadTaskExecutor;
 import org.springframework.scheduling.annotation.AsyncConfigurer;
 
 import java.util.Arrays;
@@ -16,7 +16,6 @@ import java.util.concurrent.Executor;
  *
  * @author wgk
  */
-@ConditionalOnProperty(prefix = "spring.threads.virtual", name = "enabled", havingValue = "false")
 @AutoConfiguration
 public class AsyncConfig implements AsyncConfigurer {
 
@@ -25,6 +24,9 @@ public class AsyncConfig implements AsyncConfigurer {
      */
     @Override
     public Executor getAsyncExecutor() {
+        if (SpringUtils.isVirtual()) {
+            return new VirtualThreadTaskExecutor("async-");
+        }
         return SpringUtils.getBean("scheduledExecutorService");
     }
 

+ 6 - 0
eco-common/common-core/src/main/java/org/eco/common/core/utils/SpringUtils.java

@@ -3,7 +3,9 @@ package org.eco.common.core.utils;
 import cn.hutool.extra.spring.SpringUtil;
 import org.springframework.aop.framework.AopContext;
 import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.boot.autoconfigure.thread.Threading;
 import org.springframework.context.ApplicationContext;
+import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
 
 /**
@@ -88,4 +90,8 @@ public final class SpringUtils extends SpringUtil {
         return StringUtils.isNotEmpty(activeProfiles) ? activeProfiles[0] : null;
     }
 
+    public static boolean isVirtual() {
+        return Threading.VIRTUAL.isActive(getBean(Environment.class));
+    }
+
 }

+ 7 - 7
eco-start/src/main/java/org/eco/web/service/impl/PasswordAuthStrategy.java

@@ -4,9 +4,9 @@ import cn.dev33.satoken.secure.BCrypt;
 import cn.dev33.satoken.stp.SaLoginModel;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.util.ObjectUtil;
-import org.eco.web.domain.vo.LoginVo;
-import org.eco.web.service.IAuthStrategy;
-import org.eco.web.service.SysLoginService;
+import jakarta.annotation.Resource;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.eco.common.core.constant.Constants;
 import org.eco.common.core.constant.GlobalConstants;
 import org.eco.common.core.core.domain.model.LoginUser;
@@ -26,9 +26,9 @@ import org.eco.common.web.config.properties.CaptchaProperties;
 import org.eco.system.domain.SysClient;
 import org.eco.system.domain.vo.SysUserVo;
 import org.eco.system.service.ISysUserService;
-import jakarta.annotation.Resource;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
+import org.eco.web.domain.vo.LoginVo;
+import org.eco.web.service.IAuthStrategy;
+import org.eco.web.service.SysLoginService;
 import org.springframework.stereotype.Service;
 
 /**
@@ -98,7 +98,7 @@ public class PasswordAuthStrategy implements IAuthStrategy {
      * @param uuid     唯一标识
      */
     private void validateCaptcha(Long tenantId, String username, String code, String uuid) {
-        String verifyKey = GlobalConstants.CAPTCHA_CODE_KEY + StringUtils.defaultString(uuid, "");
+        String verifyKey = GlobalConstants.CAPTCHA_CODE_KEY + StringUtils.blankToDefault(uuid, "");
         String captcha = RedisUtils.getCacheObject(verifyKey);
         RedisUtils.deleteObject(verifyKey);
         if (captcha == null) {