From 55c79d4c0e3b07e9b7b28d3a3f424decec06d498 Mon Sep 17 00:00:00 2001
From: 曾富康 <1067864236@qq.com>
Date: 星期五, 26 六月 2026 14:46:53 +0800
Subject: [PATCH] 新增需求

---
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 52 insertions(+), 2 deletions(-)

diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
index 64b9ef1..dc7a76d 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.google.code.kaptcha.Constants;
 import com.stylefeng.guns.core.base.controller.BaseController;
 import com.stylefeng.guns.core.common.exception.InvalidKaptchaException;
@@ -13,11 +14,13 @@
 import com.stylefeng.guns.core.shiro.ShiroUser;
 import com.stylefeng.guns.core.shiro.factory.IShiro;
 import com.stylefeng.guns.core.util.ApiMenuFilter;
+import com.stylefeng.guns.core.util.JwtTokenUtil;
 import com.stylefeng.guns.core.util.KaptchaUtil;
 import com.stylefeng.guns.core.util.SinataUtil;
 import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.system.dao.TCompanyMapper;
 import com.stylefeng.guns.modular.system.dao.UserMapper;
+import com.stylefeng.guns.modular.system.model.Menu;
 import com.stylefeng.guns.modular.system.model.SysUserCompanyScope;
 import com.stylefeng.guns.modular.system.model.TCompany;
 import com.stylefeng.guns.modular.system.model.User;
@@ -32,6 +35,7 @@
 import org.apache.shiro.authc.UsernamePasswordToken;
 import org.apache.shiro.subject.Subject;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -41,6 +45,7 @@
 
 import javax.annotation.Resource;
 import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
 import java.util.*;
 
 import static com.stylefeng.guns.core.support.HttpKit.getIp;
@@ -54,6 +59,10 @@
 @Slf4j
 @Controller
 public class LoginController extends BaseController {
+
+	@Value("${embedded.route-switch-url}")
+	private String routeSwitchUrl;
+
 
 	// 快车相关菜单(isSpe=2时过滤)
 	private static final List<String> SPE_MENUS = Arrays.asList(
@@ -110,7 +119,7 @@
 	 * 跳转到主页
 	 */
 	@RequestMapping(value = "/", method = RequestMethod.GET)
-	public String index(Model model) throws UnsupportedEncodingException {
+	public String index(Model model, String routeRedirect) throws UnsupportedEncodingException {
 		ShiroUser shiroUser = ShiroKit.getUser();
 		if (Objects.isNull(shiroUser)) {
 			ShiroKit.getSubject().logout();
@@ -154,9 +163,37 @@
 		model.addAttribute("avatar", avatar);
 		model.addAttribute("userName", user.getName());
 		model.addAttribute("type", 0);
+		addDefaultPageModel(model, routeRedirect);
 
 
 		return "/index.html";
+	}
+
+	private void addDefaultPageModel(Model model, String routeRedirect) {
+		String defaultPageUrl = getValidRouteRedirect(routeRedirect);
+		String defaultPageTitle = "首页";
+		if (!"/blackboard".equals(defaultPageUrl)) {
+			Menu menu = menuService.selectOne(
+					new EntityWrapper<Menu>().eq("url", defaultPageUrl).eq("status", 1).eq("ismenu", 1));
+			if (menu != null && ToolUtil.isNotEmpty(menu.getName())) {
+				defaultPageTitle = menu.getName();
+			}
+		}
+		model.addAttribute("defaultPageUrl", defaultPageUrl);
+		model.addAttribute("defaultPageTitle", defaultPageTitle);
+	}
+
+	private String getValidRouteRedirect(String routeRedirect) {
+		if (ToolUtil.isEmpty(routeRedirect)) {
+			return "/blackboard";
+		}
+		String url = routeRedirect.trim();
+		String lowerUrl = url.toLowerCase();
+		if (!url.startsWith("/") || url.startsWith("//")
+				|| lowerUrl.contains("http:") || lowerUrl.contains("https:") || lowerUrl.contains("javascript:")) {
+			return "/blackboard";
+		}
+		return url;
 	}
 
 	/**
@@ -252,7 +289,20 @@
 		
 		ShiroKit.getSession().setAttribute("sessionFlag", true);
 		
-		return REDIRECT + "/";
+		return redirectToRouteSwitchPage(shiroUser);
+	}
+
+	private String redirectToRouteSwitchPage(ShiroUser shiroUser) {
+		if (shiroUser == null || shiroUser.getId() == null) {
+			return REDIRECT + "/";
+		}
+		try {
+			String token = JwtTokenUtil.generateToken(shiroUser.getId().toString());
+			return REDIRECT + routeSwitchUrl + URLEncoder.encode(token, "UTF-8");
+		} catch (UnsupportedEncodingException e) {
+			log.error("生成路由切换页token失败", e);
+			return REDIRECT + "/";
+		}
 	}
 
 	@ResponseBody

--
Gitblit v1.7.1