Эх сурвалжийг харах

修复站点信息、导航接口

tsurumure 2 сар өмнө
parent
commit
15ef2c0d58

+ 14 - 7
src/main/java/com/backendsys/modules/cms/navigation/controller/NavigationController.java

@@ -4,9 +4,12 @@ import com.backendsys.modules.cms.navigation.entity.Navigation;
 import com.backendsys.modules.cms.navigation.service.NavigationService;
 import com.backendsys.modules.cms.navigation.service.NavigationService;
 import com.backendsys.modules.common.aspect.SysLog;
 import com.backendsys.modules.common.aspect.SysLog;
 import com.backendsys.modules.common.config.security.annotations.Anonymous;
 import com.backendsys.modules.common.config.security.annotations.Anonymous;
+import com.backendsys.modules.common.config.security.utils.HttpRequestUtil;
 import com.backendsys.modules.common.utils.Result;
 import com.backendsys.modules.common.utils.Result;
+import com.backendsys.utils.LanguageUtil;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Controller;
 import org.springframework.stereotype.Controller;
@@ -18,6 +21,9 @@ import org.springframework.web.bind.annotation.*;
 @Tag(name = "导航管理")
 @Tag(name = "导航管理")
 public class NavigationController {
 public class NavigationController {
 
 
+    @Autowired
+    private LanguageUtil languageUtil;
+
     @Autowired
     @Autowired
     private NavigationService navigationService;
     private NavigationService navigationService;
 
 
@@ -28,6 +34,14 @@ public class NavigationController {
         return Result.success().put("data", navigationService.selectNavigationList(navigation));
         return Result.success().put("data", navigationService.selectNavigationList(navigation));
     }
     }
 
 
+    @Anonymous
+    @Operation(summary = "获取导航列表 (公共)")
+    @GetMapping("/api/app/cms/navigation/getNavigationList")
+    public Result getNavigationPublic() {
+        String lang = languageUtil.getLang();
+        return Result.success().put("data", navigationService.selectNavigationTemplate(lang));
+    }
+
     @Operation(summary = "获取导航详情")
     @Operation(summary = "获取导航详情")
     @PreAuthorize("@sr.hasPermission('10.6.1')")
     @PreAuthorize("@sr.hasPermission('10.6.1')")
     @GetMapping("/api/cms/navigation/getNavigationDetail")
     @GetMapping("/api/cms/navigation/getNavigationDetail")
@@ -67,11 +81,4 @@ public class NavigationController {
         return Result.success().put("data", navigationService.deleteNavigationBatch(navigation));
         return Result.success().put("data", navigationService.deleteNavigationBatch(navigation));
     }
     }
 
 
-    @Anonymous
-    @Operation(summary = "获取导航列表 (公开)")
-    @GetMapping("/api/app/cms/navigation/getNavigationList")
-    public Result getNavigationPublic() {
-        return Result.success().put("data", navigationService.selectNavigationList(null));
-    }
-    
 }
 }

+ 2 - 2
src/main/java/com/backendsys/modules/cms/siteinfo/controller/SiteInfoController.java

@@ -26,7 +26,7 @@ public class SiteInfoController {
     @PreAuthorize("@sr.hasPermission('10.5')")
     @PreAuthorize("@sr.hasPermission('10.5')")
     @GetMapping("/api/cms/site/getSiteInfo")
     @GetMapping("/api/cms/site/getSiteInfo")
     public Result getSiteInfo() {
     public Result getSiteInfo() {
-        return Result.success().put("data", siteInfoService.selectSiteInfo(null));
+        return Result.success().put("data", siteInfoService.selectSiteInfo());
     }
     }
 
 
     @Operation(summary = "编辑站点信息")
     @Operation(summary = "编辑站点信息")
@@ -41,7 +41,7 @@ public class SiteInfoController {
     @Operation(summary = "获取站点信息 (公开)")
     @Operation(summary = "获取站点信息 (公开)")
     @GetMapping("/api/app/cms/site/getSiteInfo")
     @GetMapping("/api/app/cms/site/getSiteInfo")
     public Result getSiteInfoPublic() {
     public Result getSiteInfoPublic() {
-        return Result.success().put("data", siteInfoService.selectSiteInfo(null));
+        return Result.success().put("data", siteInfoService.selectSiteInfo());
     }
     }
 
 
 }
 }

+ 1 - 1
src/main/java/com/backendsys/modules/cms/siteinfo/service/SiteInfoService.java

@@ -8,7 +8,7 @@ import java.util.Map;
 public interface SiteInfoService {
 public interface SiteInfoService {
 
 
     // 获取站点信息
     // 获取站点信息
-    SiteInfo selectSiteInfo(String lang);
+    SiteInfo selectSiteInfo();
     // 编辑站点信息
     // 编辑站点信息
     Map<String, Object> updateSiteInfo(SiteInfo siteInfo);
     Map<String, Object> updateSiteInfo(SiteInfo siteInfo);
 
 

+ 6 - 15
src/main/java/com/backendsys/modules/cms/siteinfo/service/impl/SiteInfoServiceImpl.java

@@ -20,7 +20,10 @@ public class SiteInfoServiceImpl implements SiteInfoService {
 
 
     @Value("${DEFAULT_LANGUAGE}")
     @Value("${DEFAULT_LANGUAGE}")
     private String DEFAULT_LANGUAGE;
     private String DEFAULT_LANGUAGE;
-    
+
+    @Autowired
+    private LanguageUtil languageUtil;
+
     @Autowired
     @Autowired
     private HttpRequestUtil httpRequestUtil;
     private HttpRequestUtil httpRequestUtil;
 
 
@@ -31,21 +34,9 @@ public class SiteInfoServiceImpl implements SiteInfoService {
      * 获取站点信息
      * 获取站点信息
      */
      */
     @Override
     @Override
-    public SiteInfo selectSiteInfo(String paramLang) {
-
-        String lang = DEFAULT_LANGUAGE;
-
-        HttpServletRequest request = httpRequestUtil.getRequest();
-        String headerLang = request.getHeader("Lang");
-
-        // [Header] 从头部信息来的 Lang
-        if (StrUtil.isNotEmpty(headerLang)) lang = headerLang;
-        // [Param] 从参数来的 Lang
-        if (StrUtil.isNotEmpty(paramLang)) lang = paramLang;
-
-        // [入参] 比 [头部] 优先级高
+    public SiteInfo selectSiteInfo() {
         LambdaQueryWrapper<SiteInfo> wrapper = new LambdaQueryWrapper();
         LambdaQueryWrapper<SiteInfo> wrapper = new LambdaQueryWrapper();
-        wrapper.eq(SiteInfo::getLanguage, lang);
+        wrapper.eq(SiteInfo::getLanguage, languageUtil.getLang());
         return siteInfoDao.selectOne(wrapper);
         return siteInfoDao.selectOne(wrapper);
     }
     }
 
 

+ 2 - 2
src/main/java/com/backendsys/modules/common/aspect/PagesAspect.java

@@ -64,12 +64,12 @@ public class PagesAspect {
 				model.addAttribute("sysLanguage", sysLanguageService.selectLanguageList());
 				model.addAttribute("sysLanguage", sysLanguageService.selectLanguageList());
 
 
 				// [Get] 获取站点信息
 				// [Get] 获取站点信息
-				SiteInfo siteInfo = siteInfoService.selectSiteInfo(lang);
+				SiteInfo siteInfo = siteInfoService.selectSiteInfo();
 				if (siteInfo == null) {
 				if (siteInfo == null) {
 					request.setAttribute("errorMessage", "站点信息不存在 " + "(" + lang + ")");
 					request.setAttribute("errorMessage", "站点信息不存在 " + "(" + lang + ")");
 					response.sendRedirect(request.getContextPath() + "/error");
 					response.sendRedirect(request.getContextPath() + "/error");
 				}
 				}
-				model.addAttribute("siteInfo", siteInfoService.selectSiteInfo(lang));
+				model.addAttribute("siteInfo", siteInfoService.selectSiteInfo());
 
 
 				// [Get] 获取导航
 				// [Get] 获取导航
 				model.addAttribute("navigation", navigationService.selectNavigationTemplate(lang));
 				model.addAttribute("navigation", navigationService.selectNavigationTemplate(lang));

+ 31 - 7
src/main/java/com/backendsys/utils/LanguageUtil.java

@@ -1,5 +1,6 @@
 package com.backendsys.utils;
 package com.backendsys.utils;
 
 
+import com.backendsys.modules.common.config.security.utils.HttpRequestUtil;
 import com.backendsys.modules.common.config.security.utils.TokenUtil;
 import com.backendsys.modules.common.config.security.utils.TokenUtil;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
@@ -9,6 +10,8 @@ import java.util.Map;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 import java.lang.reflect.Field;
 import java.lang.reflect.Field;
 
 
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -19,21 +22,42 @@ import org.springframework.stereotype.Component;
 public class LanguageUtil {
 public class LanguageUtil {
 
 
     @Autowired
     @Autowired
-    private TokenUtil tokenUtil;
-    @Autowired
-    private StringRedisTemplate stringRedisTemplate;
+    private HttpRequestUtil httpRequestUtil;
 
 
     @Value("${DEFAULT_LANGUAGE}")
     @Value("${DEFAULT_LANGUAGE}")
     private String DEFAULT_LANGUAGE;
     private String DEFAULT_LANGUAGE;
 
 
+    /**
+     * 1.通过 headers: { lang } 获取语言
+     * 2.通过 cookies: { lang } 获取语言
+     */
     public String getLang() {
     public String getLang() {
-        // 配置语言参数
-        String langRedisKey = "lang:" + tokenUtil.getLoginUUID();
-        String lang = stringRedisTemplate.opsForValue().get(langRedisKey);
-        if (lang.isEmpty()) lang = DEFAULT_LANGUAGE;
+        HttpServletRequest request = httpRequestUtil.getRequest();
+        // [Header] 从头部信息来的 Lang
+        String lang = request.getHeader("lang");
+        if (lang == null || lang.isEmpty()) {
+            // [Cookie] 从Cookie信息来的 Lang
+            lang = getCookieValue(request, "lang");
+            if (lang == null || lang.isEmpty()) {
+                lang = DEFAULT_LANGUAGE;
+            }
+        }
         return lang;
         return lang;
     }
     }
 
 
+    // 通过Cookie名称获取Cookie的值
+    private String getCookieValue(HttpServletRequest request, String name) {
+        Cookie[] cookies = request.getCookies();
+        if (cookies != null) {
+            for (Cookie cookie : cookies) {
+                if (name.equals(cookie.getName())) {
+                    return cookie.getValue();
+                }
+            }
+        }
+        return null;
+    }
+
     /**
     /**
      *  完整示例:
      *  完整示例:
         Map<String, Object> fieldPrimary = Collections.singletonMap("article_id", cmsArticleDTO.getArticle_id());
         Map<String, Object> fieldPrimary = Collections.singletonMap("article_id", cmsArticleDTO.getArticle_id());