From aabd41ce0194ca594e558c8f324b45b4dd0e0c33 Mon Sep 17 00:00:00 2001 From: none Date: Thu, 9 Mar 2023 16:34:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=B3=BB=E7=BB=9F=E9=85=8D?= =?UTF-8?q?=E7=BD=AEapi=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../playedu/api/PlayEduBackendThreadLocal.java | 10 ++++++++++ .../xyz/playedu/api/config/WebMvcConfig.java | 4 ++-- .../controller/backend/SystemController.java | 9 +++------ ...AuthMiddleware.java => AdminMiddleware.java} | 17 +++++++++++++++-- .../playedu/api/service/AppConfigService.java | 2 ++ .../api/service/impl/AppConfigServiceImpl.java | 5 +++++ 6 files changed, 37 insertions(+), 10 deletions(-) rename src/main/java/xyz/playedu/api/middleware/{AdminAuthMiddleware.java => AdminMiddleware.java} (84%) 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)); + } }