Pārlūkot izejas kodu

Fix 修复跳转到租户页面,左侧导航栏显示不正确的问题

YueYunyun 1 gadu atpakaļ
vecāks
revīzija
abc94706b4

+ 9 - 1
SERVER/VberAdminPlusV3/vber-modules/vber-system/src/main/java/com/vber/system/controller/system/SysMenuController.java

@@ -11,6 +11,7 @@ import com.vber.common.core.utils.StringUtils;
 import com.vber.common.log.annotation.Log;
 import com.vber.common.log.enums.BusinessType;
 import com.vber.common.satoken.utils.LoginHelper;
+import com.vber.common.tenant.helper.TenantHelper;
 import com.vber.common.web.core.BaseController;
 import com.vber.system.domain.SysMenu;
 import com.vber.system.domain.bo.SysMenuBo;
@@ -44,7 +45,14 @@ public class SysMenuController extends BaseController {
      */
     @GetMapping("/getRouters")
     public R<List<RouterVo>> getRouters() {
-        List<SysMenu> menus = menuService.selectMenuTreeByUserId(LoginHelper.getUserId());
+        List<SysMenu> menus;
+        System.out.println(LoginHelper.getTenantId());
+        System.out.println(TenantHelper.getTenantId());
+        if (LoginHelper.getTenantId().equals(TenantHelper.getTenantId())) {
+            menus = menuService.selectMenuTreeByUserId(LoginHelper.getUserId());
+        } else {
+            menus = menuService.selectMenuTreeByTenantId(TenantHelper.getTenantId());
+        }
         return R.ok(menuService.buildMenus(menus));
     }
 

+ 9 - 0
SERVER/VberAdminPlusV3/vber-modules/vber-system/src/main/java/com/vber/system/mapper/SysMenuMapper.java

@@ -73,6 +73,14 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo> {
      */
     List<SysMenu> selectMenuTreeByUserId(Long userId);
 
+    /**
+     * 根据租户ID查询菜单
+     *
+     * @param tenantId 租户ID
+     * @return 菜单列表
+     */
+    List<SysMenu> selectMenuTreeByTenantId(@Param("tenantId") String tenantId, @Param("roleKey") String roleKey);
+
     /**
      * 根据角色ID查询菜单树信息
      *
@@ -83,4 +91,5 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo> {
     List<Long> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly);
 
     List<SysMenuVo> selectBtnListByPerms(@Param("perms") String perms);
+
 }

+ 9 - 0
SERVER/VberAdminPlusV3/vber-modules/vber-system/src/main/java/com/vber/system/service/ISysMenuService.java

@@ -24,6 +24,7 @@ public interface ISysMenuService {
      */
     List<SysMenuVo> selectMenuList(Long userId);
 
+
     /**
      * 根据用户查询系统菜单列表
      *
@@ -66,6 +67,14 @@ public interface ISysMenuService {
      */
     List<SysMenu> selectMenuTreeByUserId(Long userId);
 
+    /**
+     * 根据租户ID查询菜单树信息
+     *
+     * @param tenantId 租户ID
+     * @return 菜单列表
+     */
+    List<SysMenu> selectMenuTreeByTenantId(String tenantId);
+
     /**
      * 根据角色ID查询菜单树信息
      *

+ 7 - 0
SERVER/VberAdminPlusV3/vber-modules/vber-system/src/main/java/com/vber/system/service/impl/SysMenuServiceImpl.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.vber.common.core.config.VbConfig;
+import com.vber.common.core.constant.TenantConstants;
 import com.vber.common.core.constant.UserConstants;
 import com.vber.common.core.utils.MapstructUtils;
 import com.vber.common.core.utils.StreamUtils;
@@ -154,6 +155,12 @@ public class SysMenuServiceImpl implements ISysMenuService {
         return getChildPerms(menus, 0);
     }
 
+    @Override
+    public List<SysMenu> selectMenuTreeByTenantId(String tenantId) {
+        List<SysMenu> menus = baseMapper.selectMenuTreeByTenantId(tenantId, TenantConstants.TENANT_ADMIN_ROLE_KEY);
+        return getChildPerms(menus, 0);
+    }
+
     /**
      * 根据角色ID查询菜单树信息
      *

+ 66 - 36
SERVER/VberAdminPlusV3/vber-modules/vber-system/src/main/resources/mapper/system/SysMenuMapper.xml

@@ -7,7 +7,7 @@
     </resultMap>
 
     <select id="selectMenuListByUserId" resultMap="SysMenuResult">
-        select distinct m.menu_id,
+        SELECT DISTINCT m.menu_id,
                         m.parent_id,
                         m.menu_name,
                         m.path,
@@ -24,15 +24,14 @@
                         m.btn_script,
                         m.order_num,
                         m.create_time
-        from sys_menu m
-                 left join sys_role_menu rm on m.menu_id = rm.menu_id
-                 left join sys_user_role sur on rm.role_id = sur.role_id
-                 left join sys_role ro on sur.role_id = ro.role_id
-            ${ew.getCustomSqlSegment}
+        FROM sys_menu m
+                 LEFT JOIN sys_role_menu rm ON m.menu_id = rm.menu_id
+                 LEFT JOIN sys_user_role sur ON rm.role_id = sur.role_id
+                 LEFT JOIN sys_role ro ON sur.role_id = ro.role_id ${ew.getCustomSqlSegment}
     </select>
 
     <select id="selectMenuTreeByUserId" parameterType="Long" resultMap="SysMenuResult">
-        select distinct m.menu_id,
+        SELECT DISTINCT m.menu_id,
                         m.parent_id,
                         m.menu_name,
                         m.path,
@@ -49,16 +48,47 @@
                         m.btn_script,
                         m.order_num,
                         m.create_time
-        from sys_menu m
-                 left join sys_role_menu rm on m.menu_id = rm.menu_id
-                 left join sys_user_role sur on rm.role_id = sur.role_id
-                 left join sys_role ro on sur.role_id = ro.role_id
-                 left join sys_user u on sur.user_id = u.user_id
-        where u.user_id = #{userId}
-          and m.menu_type in ('M', 'C')
-          and m.status = '0'
-          and ro.status = '0'
-        order by m.parent_id, m.order_num
+        FROM sys_menu m
+                 LEFT JOIN sys_role_menu rm ON m.menu_id = rm.menu_id
+                 LEFT JOIN sys_user_role sur ON rm.role_id = sur.role_id
+                 LEFT JOIN sys_role ro ON sur.role_id = ro.role_id
+                 LEFT JOIN sys_user u ON sur.user_id = u.user_id
+        WHERE u.user_id = #{userId}
+          AND m.menu_type IN ('M', 'C')
+          AND m.status = '0'
+          AND ro.status = '0'
+        ORDER BY m.parent_id, m.order_num
+    </select>
+
+    <select id="selectMenuTreeByTenantId" resultMap="SysMenuResult">
+        SELECT DISTINCT m.menu_id,
+                        m.parent_id,
+                        m.menu_name,
+                        m.path,
+                        m.component,
+                        m.query_param,
+                        m.visible,
+                        m.status,
+                        m.perms,
+                        m.is_frame,
+                        m.is_cache,
+                        m.menu_type,
+                        m.icon,
+                        m.btn_class,
+                        m.btn_script,
+                        m.order_num,
+                        m.create_time
+        FROM sys_menu m
+                 LEFT JOIN sys_role_menu rm ON m.menu_id = rm.menu_id
+                 LEFT JOIN sys_user_role sur ON rm.role_id = sur.role_id
+                 LEFT JOIN sys_role ro ON sur.role_id = ro.role_id
+                 LEFT JOIN sys_tenant t ON ro.tenant_id = t.tenant_id
+        WHERE t.tenant_id = #{tenantId}
+          AND ro.role_key = #{roleKey}
+          AND ro.status = '0'
+          AND m.menu_type IN ('M', 'C')
+          AND m.status = '0'
+        ORDER BY m.parent_id, m.order_num
     </select>
 
     <select id="selectMenuListByRoleId" resultType="Long">
@@ -74,31 +104,31 @@
     </select>
 
     <select id="selectMenuPerms" resultType="String">
-        select distinct m.perms
-        from sys_menu m
+        SELECT DISTINCT m.perms
+        FROM sys_menu m
     </select>
 
     <select id="selectMenuPermsByUserId" parameterType="Long" resultType="String">
-        select distinct m.perms
-        from sys_menu m
-                 left join sys_role_menu rm on m.menu_id = rm.menu_id
-                 left join sys_user_role sur on rm.role_id = sur.role_id
-                 left join sys_role r on r.role_id = sur.role_id
-        where m.status = '0'
-          and r.status = '0'
-          and sur.user_id = #{userId}
+        SELECT DISTINCT m.perms
+        FROM sys_menu m
+                 LEFT JOIN sys_role_menu rm ON m.menu_id = rm.menu_id
+                 LEFT JOIN sys_user_role sur ON rm.role_id = sur.role_id
+                 LEFT JOIN sys_role r ON r.role_id = sur.role_id
+        WHERE m.status = '0'
+          AND r.status = '0'
+          AND sur.user_id = #{userId}
     </select>
 
     <select id="selectMenuPermsByRoleId" parameterType="Long" resultType="String">
-        select distinct m.perms
-        from sys_menu m
-                 left join sys_role_menu rm on m.menu_id = rm.menu_id
-        where m.status = '0'
-          and rm.role_id = #{roleId}
+        SELECT DISTINCT m.perms
+        FROM sys_menu m
+                 LEFT JOIN sys_role_menu rm ON m.menu_id = rm.menu_id
+        WHERE m.status = '0'
+          AND rm.role_id = #{roleId}
     </select>
 
     <select id="selectBtnListByPerms" resultType="com.vber.system.domain.vo.SysMenuVo">
-        select distinct m.menu_id,
+        SELECT DISTINCT m.menu_id,
                         m.parent_id,
                         m.menu_name,
                         m.path,
@@ -115,9 +145,9 @@
                         m.icon,
                         m.order_num,
                         m.create_time
-        from sys_menu m2
-                 left join sys_menu m on m.parent_id = m2.menu_id
-        where m2.perms = #{perms}
+        FROM sys_menu m2
+                 LEFT JOIN sys_menu m ON m.parent_id = m2.menu_id
+        WHERE m2.perms = #{perms}
           AND m.visible = '0'
           AND m.status = '0'
           AND m.btn_script != ''

+ 1 - 0
UI/VAP_V3.VUE/src/core/services/RequestService.ts

@@ -50,6 +50,7 @@ Rs.interceptors.request.use(
 		config = Object.assign({}, defaultOption, config)
 		config.headers["Content-Language"] = getLanguage()
 		config.headers["TenantId"] = appStore.tenantStore.getTenantId()
+		console.log("TenantId-" + config.url, appStore.tenantStore.getTenantId())
 		if (!config.url) {
 			console.log("请求URL不能为空", config)
 			throw new Error("请求URL不能为空")

+ 18 - 1
UI/VAP_V3.VUE/src/router/_staticRouter.ts

@@ -13,7 +13,24 @@ export const staticRouter: RouteRecordRaw[] = [
 			}
 		]
 	},
-
+	{
+		name: "redirect",
+		path: "/redirect/:path(.*)",
+		component: () => import("@/views/redirect/index.vue"),
+		meta: {
+			title: "加载中...",
+			noCache: true
+		}
+	},
+	{
+		name: "redirect-tenant",
+		path: "/redirect-tenant/:tenant/:path(.*)",
+		component: () => import("@/views/redirect/tenant.vue"),
+		meta: {
+			title: "加载中...",
+			noCache: true
+		}
+	},
 	{
 		path: "/",
 		children: [

+ 6 - 20
UI/VAP_V3.VUE/src/router/index.ts

@@ -40,24 +40,6 @@ export const constantRoutes: RouteRecordRaw[] = [
 					title: "个人中心",
 					noCache: false
 				}
-			},
-			{
-				name: "redirect",
-				path: "/redirect/:path(.*)",
-				component: () => import("@/views/redirect/index.vue"),
-				meta: {
-					title: "加载中...",
-					noCache: true
-				}
-			},
-			{
-				name: "redirect-tenant",
-				path: "/redirect-tenant/:tenant/:path(.*)",
-				component: () => import("@/views/redirect/tenant.vue"),
-				meta: {
-					title: "加载中...",
-					noCache: true
-				}
 			}
 		]
 	},
@@ -152,9 +134,13 @@ router.beforeEach((to, _from, next) => {
 				authStore
 					.getInfo()
 					.then(() => {
-						appStore.menuStore.generateRoutes().then(() => {
+						if (to.path.search("/redirect-tenant") == 0) {
 							next({ ...to, replace: true })
-						})
+						} else {
+							appStore.menuStore.generateRoutes().then(() => {
+								next({ ...to, replace: true })
+							})
+						}
 					})
 					.catch((err) => {
 						authStore.logout().then(() => {

+ 5 - 2
UI/VAP_V3.VUE/src/views/redirect/tenant.vue

@@ -10,6 +10,9 @@ const router = useRouter()
 const { params, query } = route
 const { path, tenant } = params
 const tenantId = tenant == "0" ? "" : tenant + ""
-appStore.tenantStore.setTenantNewPage(tenantId)
-router.replace({ path: "" + path, query })
+appStore.tenantStore.setTenantNewPage(tenantId).then(() => {
+	appStore.menuStore.generateRoutes().then(() => {
+		router.replace({ path: "" + path, query })
+	})
+})
 </script>