From 14f96ba18b58cda204d10608c1abfe9a1d78a495 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期三, 10 六月 2026 20:21:31 +0800
Subject: [PATCH] bug fix

---
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java |   43 +++++++++++++++++++++++++++++++++++++++----
 1 files changed, 39 insertions(+), 4 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 ad02377..64b9ef1 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
@@ -8,6 +8,7 @@
 import com.stylefeng.guns.core.log.LogManager;
 import com.stylefeng.guns.core.log.factory.LogTaskFactory;
 import com.stylefeng.guns.core.node.MenuNode;
+import com.stylefeng.guns.core.shiro.ShiroDbRealm;
 import com.stylefeng.guns.core.shiro.ShiroKit;
 import com.stylefeng.guns.core.shiro.ShiroUser;
 import com.stylefeng.guns.core.shiro.factory.IShiro;
@@ -17,10 +18,12 @@
 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.SysUserCompanyScope;
 import com.stylefeng.guns.modular.system.model.TCompany;
 import com.stylefeng.guns.modular.system.model.User;
 import com.stylefeng.guns.modular.system.service.IMenuService;
 import com.stylefeng.guns.modular.system.service.IRelationService;
+import com.stylefeng.guns.modular.system.service.ISysUserCompanyScopeService;
 import com.stylefeng.guns.modular.system.service.IUserService;
 import com.stylefeng.guns.modular.system.util.HttpRequestUtil;
 import com.stylefeng.guns.modular.system.util.PushURL;
@@ -95,6 +98,12 @@
 	
 	@Autowired
 	private IRelationService relationService;
+
+	@Autowired
+	private ISysUserCompanyScopeService userCompanyScopeService;
+
+	@Autowired
+	private ShiroDbRealm shiroDbRealm;
 	
 	
 	/**
@@ -132,14 +141,13 @@
 			model.addAttribute("tips", "请重新登录");
 			return "/login.html";
 		}
-		//设置上级ID
-		if (SinataUtil.isNotEmpty(user.getObjectId())){
-			shiroUser.setObjectId(user.getObjectId());
-		}
 		//设置角色
 		shiroUser.setRoleType(user.getRoleType());
 
 		model.addAttribute("titles", titles);
+		model.addAttribute("companyScopes", userCompanyScopeService.selectScopesByUserId(shiroUser.getId()));
+		model.addAttribute("currentCompanyId", shiroUser.getObjectId());
+		model.addAttribute("currentCompanyName", tCompany == null ? "" : tCompany.getName());
 
 		//获取用户头像
 		String avatar = user.getAvatar();
@@ -246,6 +254,33 @@
 		
 		return REDIRECT + "/";
 	}
+
+	@ResponseBody
+	@RequestMapping(value = "/mgr/companyScopes", method = RequestMethod.GET)
+	public ResultUtil companyScopes() {
+		ShiroUser shiroUser = ShiroKit.getUser();
+		if (shiroUser == null) {
+			return ResultUtil.error("请重新登录");
+		}
+		return ResultUtil.success(userCompanyScopeService.selectScopesByUserId(shiroUser.getId()));
+	}
+
+	@ResponseBody
+	@RequestMapping(value = "/mgr/switchCompany", method = RequestMethod.POST)
+	public ResultUtil switchCompany(Integer companyId) {
+		ShiroUser shiroUser = ShiroKit.getUser();
+		if (shiroUser == null || companyId == null) {
+			return ResultUtil.error("参数异常");
+		}
+		SysUserCompanyScope scope = userCompanyScopeService.selectActiveScope(shiroUser.getId(), companyId);
+		if (scope == null) {
+			return ResultUtil.error("当前账号未绑定该分公司");
+		}
+		userCompanyScopeService.applyScopeToShiroUser(shiroUser, scope);
+		ShiroKit.setSessionAttr("shiroUser", shiroUser);
+		shiroDbRealm.clearAuthCache(ShiroKit.getSubject().getPrincipals());
+		return ResultUtil.success();
+	}
 	
 	
 	/**

--
Gitblit v1.7.1