12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package com.backendsys.modules.common.aspect;
- import cn.hutool.core.date.DateUtil;
- import cn.hutool.core.util.StrUtil;
- import com.backendsys.modules.cms.navigation.entity.Navigation;
- import com.backendsys.modules.cms.navigation.service.NavigationService;
- import com.backendsys.modules.common.config.security.utils.HttpRequestUtil;
- import com.backendsys.modules.common.utils.CookieUtil;
- import com.backendsys.modules.system.service.SysLanguageService;
- import jakarta.servlet.http.HttpServletRequest;
- import jakarta.servlet.http.HttpServletResponse;
- import org.aspectj.lang.annotation.AfterThrowing;
- import org.aspectj.lang.reflect.MethodSignature;
- import org.springframework.ui.Model;
- import com.backendsys.modules.cms.siteinfo.entity.SiteInfo;
- import com.backendsys.modules.cms.siteinfo.service.SiteInfoService;
- import org.aspectj.lang.JoinPoint;
- import org.aspectj.lang.annotation.Aspect;
- import org.aspectj.lang.annotation.Before;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import org.springframework.web.context.request.RequestContextHolder;
- import org.springframework.web.context.request.ServletRequestAttributes;
- import org.springframework.web.method.HandlerMethod;
- import java.io.IOException;
- import java.lang.reflect.Method;
- import java.util.List;
- /**
- * 视图自动添加:站点信息、导航
- */
- @Aspect
- @Component
- public class PagesAspect {
- @Autowired
- private HttpRequestUtil httpRequestUtil;
- @Autowired
- private SysLanguageService sysLanguageService;
- @Autowired
- private SiteInfoService siteInfoService;
- @Autowired
- private NavigationService navigationService;
- @Before("@annotation(org.springframework.web.bind.annotation.GetMapping) && @annotation(pages)")
- public void beforeGet(JoinPoint joinPoint, Pages pages) throws IOException {
- HttpServletRequest request = httpRequestUtil.getRequest();
- HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
- // 从 JoinPoint 获取控制器方法的参数
- Object[] args = joinPoint.getArgs();
- for (Object arg : args) {
- if (arg instanceof Model) {
- Model model = (Model) arg;
- // [Cookie] 获取/设置默认语言 (默认是:中文)
- String lang = CookieUtil.getCurrentLang(request);
- model.addAttribute("lang", lang);
- // [Get] 获取系统语言列表
- model.addAttribute("sysLanguage", sysLanguageService.selectLanguageList());
- // [Get] 获取站点信息
- SiteInfo siteInfo = siteInfoService.selectSiteInfo();
- if (siteInfo == null) {
- request.setAttribute("errorMessage", "站点信息不存在 " + "(" + lang + ")");
- response.sendRedirect(request.getContextPath() + "/error");
- }
- model.addAttribute("siteInfo", siteInfoService.selectSiteInfo());
- // [Get] 获取导航
- model.addAttribute("navigation", navigationService.selectNavigationTemplate(lang));
- // 其他信息
- model.addAttribute("timestamp", DateUtil.current()); // 当前时间戳
- model.addAttribute("request_uri", request.getRequestURI()); // 当前访问路径
- model.addAttribute("request_query_string", request.getQueryString()); // 当前访问路径参数
- break;
- }
- }
- }
- }
|