diff --git a/src/main/java/xyz/playedu/api/PlayEduBackendThreadLocal.java b/src/main/java/xyz/playedu/api/PlayEduBackendThreadLocal.java index b8204f4..40e6ff0 100644 --- a/src/main/java/xyz/playedu/api/PlayEduBackendThreadLocal.java +++ b/src/main/java/xyz/playedu/api/PlayEduBackendThreadLocal.java @@ -4,6 +4,7 @@ import xyz.playedu.api.domain.AdminUser; import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.Map; public class PlayEduBackendThreadLocal { @@ -12,6 +13,7 @@ public class PlayEduBackendThreadLocal { public final static String KEY_ADMIN_USER_ID = "admin_id"; public final static String KEY_ADMIN_USER = "admin_user"; public final static String KEY_ADMIN_PER = "admin_per"; + public final static String KEY_CONFIG = "config"; public PlayEduBackendThreadLocal() { } @@ -57,4 +59,12 @@ public class PlayEduBackendThreadLocal { THREAD_LOCAL.remove(); } + public static void setConfig(Map config) { + put(KEY_CONFIG, config); + } + + public static Map getConfig() { + return (Map) get(KEY_CONFIG); + } + } diff --git a/src/main/java/xyz/playedu/api/config/WebMvcConfig.java b/src/main/java/xyz/playedu/api/config/WebMvcConfig.java index 9dcf563..f13fc47 100644 --- a/src/main/java/xyz/playedu/api/config/WebMvcConfig.java +++ b/src/main/java/xyz/playedu/api/config/WebMvcConfig.java @@ -6,14 +6,14 @@ import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import xyz.playedu.api.middleware.AdminAuthMiddleware; +import xyz.playedu.api.middleware.AdminMiddleware; @Configuration @Slf4j public class WebMvcConfig implements WebMvcConfigurer { @Resource - private AdminAuthMiddleware adminAuthMiddleware; + private AdminMiddleware adminAuthMiddleware; @Override public void addInterceptors(InterceptorRegistry registry) { diff --git a/src/main/java/xyz/playedu/api/controller/backend/SystemController.java b/src/main/java/xyz/playedu/api/controller/backend/SystemController.java index 8d4d74f..e5e8726 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/SystemController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/SystemController.java @@ -4,13 +4,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import xyz.playedu.api.config.MinioConfig; +import xyz.playedu.api.PlayEduBackendThreadLocal; import xyz.playedu.api.service.ImageCaptchaService; import xyz.playedu.api.types.ImageCaptchaResult; import xyz.playedu.api.types.JsonResponse; import java.io.IOException; import java.util.HashMap; +import java.util.Map; @RestController @RequestMapping("/backend/v1/system") @@ -19,9 +20,6 @@ public class SystemController { @Autowired private ImageCaptchaService imageCaptchaService; - @Autowired - private MinioConfig minioConfig; - @GetMapping("/image-captcha") public JsonResponse imageCaptcha() throws IOException { ImageCaptchaResult imageCaptchaResult = imageCaptchaService.generate(); @@ -35,8 +33,7 @@ public class SystemController { @GetMapping("/config") public JsonResponse config() { - HashMap data = new HashMap<>(); - data.put("minio_endpoint", minioConfig.getEndPoint()); + Map data = PlayEduBackendThreadLocal.getConfig(); return JsonResponse.data(data); } diff --git a/src/main/java/xyz/playedu/api/middleware/AdminAuthMiddleware.java b/src/main/java/xyz/playedu/api/middleware/AdminMiddleware.java similarity index 84% rename from src/main/java/xyz/playedu/api/middleware/AdminAuthMiddleware.java rename to src/main/java/xyz/playedu/api/middleware/AdminMiddleware.java index 59a9ba8..b868162 100644 --- a/src/main/java/xyz/playedu/api/middleware/AdminAuthMiddleware.java +++ b/src/main/java/xyz/playedu/api/middleware/AdminMiddleware.java @@ -12,6 +12,7 @@ import xyz.playedu.api.bus.BackendBus; import xyz.playedu.api.constant.SystemConstant; import xyz.playedu.api.domain.AdminUser; import xyz.playedu.api.service.AdminUserService; +import xyz.playedu.api.service.AppConfigService; import xyz.playedu.api.service.JWTService; import xyz.playedu.api.types.JWTPayload; import xyz.playedu.api.types.JsonResponse; @@ -19,10 +20,11 @@ import xyz.playedu.api.util.HelperUtil; import xyz.playedu.api.util.RequestUtil; import java.io.IOException; +import java.util.Map; @Component @Slf4j -public class AdminAuthMiddleware implements HandlerInterceptor { +public class AdminMiddleware implements HandlerInterceptor { @Autowired private JWTService jwtService; @@ -36,9 +38,20 @@ public class AdminAuthMiddleware implements HandlerInterceptor { @Autowired private BackendBus backendBus; + @Autowired + private AppConfigService configService; + @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - if ("OPTIONS".equals(request.getMethod()) || BackendBus.inUnAuthWhitelist(request.getRequestURI())) { + if ("OPTIONS".equals(request.getMethod())) { + return HandlerInterceptor.super.preHandle(request, response, handler); + } + + // 读取全局配置 + Map systemConfig = configService.keyValues(); + PlayEduBackendThreadLocal.setConfig(systemConfig); + + if (BackendBus.inUnAuthWhitelist(request.getRequestURI())) { return HandlerInterceptor.super.preHandle(request, response, handler); } diff --git a/src/main/java/xyz/playedu/api/service/AppConfigService.java b/src/main/java/xyz/playedu/api/service/AppConfigService.java index 0179b5d..150232c 100644 --- a/src/main/java/xyz/playedu/api/service/AppConfigService.java +++ b/src/main/java/xyz/playedu/api/service/AppConfigService.java @@ -20,4 +20,6 @@ public interface AppConfigService extends IService { void saveFromMap(HashMap data); + Map keyValues(); + } diff --git a/src/main/java/xyz/playedu/api/service/impl/AppConfigServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/AppConfigServiceImpl.java index ba4a02f..8253900 100644 --- a/src/main/java/xyz/playedu/api/service/impl/AppConfigServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/AppConfigServiceImpl.java @@ -57,6 +57,11 @@ public class AppConfigServiceImpl extends ServiceImpl keyValues() { + return list(query().getWrapper().eq("is_hidden", 0)).stream().collect(Collectors.toMap(AppConfig::getKeyName, AppConfig::getKeyValue)); + } }