Browse Source

Merge branch 'han' of uskycloud/usky-cloud into system-165

hanzhengyi 8 months ago
parent
commit
062d576bce

+ 6 - 6
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/controller/web/SysMenuController.java

@@ -155,18 +155,18 @@ public class SysMenuController extends BaseController
      *
      * @return 路由信息
      */
-    @GetMapping("getRouters1/{platformId}")
-    public ApiResult getRouters1(@PathVariable("platformId") Integer platformId)
+    @GetMapping("getRouters1")
+    public ApiResult getRouters1()
     {
         Long userId = SecurityUtils.getUserId();
         SysUser sysUser = userService.selectUserByIdOne(userId);
         List<SysMenu> menus = new ArrayList<>();
         if ("01".equals(sysUser.getUserType())){
-            menus = menuService.selectMenuTreeByUserIdOne1(SecurityUtils.getTenantId(),platformId);
+            menus = menuService.selectMenuTreeByUserIdOne(SecurityUtils.getTenantId());
         }else {
-            menus = menuService.selectMenuTreeByUserId1(userId,platformId);
+            menus = menuService.selectMenuTreeByUserId(userId);
         }
-        return ApiResult.success(menuService.buildMenus(menus));
+        return ApiResult.success(menuService.buildPlatformMenus(menus));
     }
 
     /**
@@ -192,7 +192,7 @@ public class SysMenuController extends BaseController
         }else {
             menus = menuService.selectMenuTreeByUserId(userId);
         }
-        return ApiResult.success(menuService.buildMenus(menus));
+        return ApiResult.success(menuService.buildPlatformMenus(menus));
     }
 
     /**

+ 5 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/mapper/SysPlatformMapper.java

@@ -7,6 +7,7 @@ import com.usky.system.domain.SysPlatform;
 import com.usky.system.domain.SysPlatformMenu;
 import com.usky.system.service.vo.SysPlatformVo;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
 
 import java.util.List;
 
@@ -18,6 +19,7 @@ import java.util.List;
  * @author ya
  * @since 2022-05-18
  */
+@Repository
 public interface SysPlatformMapper extends CrudMapper<SysPlatform> {
 
     List<SysPlatformVo> getPlatformList(@Param("platformName") String platformName,
@@ -40,4 +42,7 @@ public interface SysPlatformMapper extends CrudMapper<SysPlatform> {
 
     List<SysPlatformMenu> getMenuListOne(@Param("platformId") Long platformId,
                                          @Param("menuType")  String menuType);
+
+    List<SysPlatformVo> getRolePlatformList(@Param("tenantId") Integer tenantId,
+                                        @Param("roleId") Integer roleId);
 }

+ 9 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/ISysMenuService.java

@@ -5,6 +5,7 @@ import com.usky.common.mybatis.core.CrudService;
 import com.usky.system.domain.SysMenu;
 import com.usky.system.domain.SysMobileMenu;
 import com.usky.system.domain.SysTenantMenu;
+import com.usky.system.service.vo.PlatformRouterVo;
 import com.usky.system.service.vo.RouterVo;
 import com.usky.system.service.vo.TreeMobileSelect;
 import com.usky.system.service.vo.TreeSelect;
@@ -98,6 +99,14 @@ public interface ISysMenuService extends CrudService<SysMenu>
      */
     public List<RouterVo> buildMenus(List<SysMenu> menus);
 
+    /**
+     * 构建前端路由所需要的菜单(应用级)
+     *
+     * @param menus 菜单列表
+     * @return 路由列表
+     */
+    public List<PlatformRouterVo> buildPlatformMenus(List<SysMenu> menus);
+
 
     /**
      * 构建前端所需要树结构

+ 79 - 4
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysMenuServiceImpl.java

@@ -14,10 +14,7 @@ import com.usky.system.mapper.*;
 import com.usky.system.service.ISysMenuService;
 import com.usky.system.service.SysRoleMenuService;
 import com.usky.system.service.SysTenantMenuService;
-import com.usky.system.service.vo.MetaVo;
-import com.usky.system.service.vo.RouterVo;
-import com.usky.system.service.vo.TreeSelect;
-import com.usky.system.service.vo.TreeMobileSelect;
+import com.usky.system.service.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -62,6 +59,9 @@ public class SysMenuServiceImpl extends AbstractCrudService<SysMenuMapper, SysMe
     @Autowired
     private SysUserMapper sysUserMapper;
 
+    @Autowired
+    private SysPlatformMapper sysPlatformMapper;
+
     /**
      * 根据用户查询系统菜单列表
      *
@@ -291,6 +291,81 @@ public class SysMenuServiceImpl extends AbstractCrudService<SysMenuMapper, SysMe
         return routers;
     }
 
+    /**
+     * 构建前端路由所需要的菜单
+     *
+     * @param menus 菜单列表
+     * @return 路由列表
+     */
+    @Override
+    public List<PlatformRouterVo> buildPlatformMenus(List<SysMenu> menus)
+    {
+        List<PlatformRouterVo> platformRouterVos = new LinkedList<PlatformRouterVo>();
+        LambdaQueryWrapper<SysUserRole> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.in(SysUserRole::getUserId,SecurityUtils.getUserId());
+        List<SysUserRole> userRoleList = sysUserRoleMapper.selectList(queryWrapper);
+        if (CollectionUtils.isNotEmpty(userRoleList)){
+            List<SysPlatformVo> sysPlatformVos = sysPlatformMapper.getRolePlatformList(SecurityUtils.getTenantId(),
+                    userRoleList.get(0).getRoleId().intValue());
+            if (CollectionUtils.isNotEmpty(sysPlatformVos)){
+                for (SysPlatformVo platformVo : sysPlatformVos)
+                {
+                    PlatformRouterVo platformRouterVo = new PlatformRouterVo();
+                    platformRouterVo.setPlatformId(platformVo.getId());
+                    platformRouterVo.setPlatformName(platformVo.getPlatformName());
+                    platformRouterVo.setIcon(platformVo.getIcon());
+                    List<RouterVo> routers = new LinkedList<RouterVo>();
+                    for (SysMenu menu : menus)
+                    {
+                        RouterVo router = new RouterVo();
+                        router.setHidden("1".equals(menu.getVisible()));
+                        router.setName(getRouteName(menu));
+                        router.setPath(getRouterPath(menu));
+                        router.setComponent(getComponent(menu));
+                        router.setMeta(new MetaVo(menu.getMenuName(), menu.getMenuAliasName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath(), menu.getIsFrame(), menu.getIsNew(), menu.getRemark()));
+                        List<SysMenu> cMenus = menu.getChildren();
+                        if (!cMenus.isEmpty() && cMenus.size() > 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType()))
+                        {
+                            router.setAlwaysShow(true);
+                            router.setRedirect("noRedirect");
+                            router.setChildren(buildMenus(cMenus));
+                        }
+                        else if (isMenuFrame(menu))
+                        {
+                            router.setMeta(null);
+                            List<RouterVo> childrenList = new ArrayList<RouterVo>();
+                            RouterVo children = new RouterVo();
+                            children.setPath(menu.getPath());
+                            children.setComponent(menu.getComponent());
+                            children.setName(StringUtils.capitalize(menu.getPath()));
+                            children.setMeta(new MetaVo(menu.getMenuName(), menu.getMenuAliasName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath(), menu.getIsFrame(), menu.getIsNew(), menu.getRemark()));
+                            childrenList.add(children);
+                            router.setChildren(childrenList);
+                        }
+                        else if (menu.getParentId().intValue() == 0 && isInnerLink(menu))
+                        {
+                            router.setMeta(new MetaVo(menu.getMenuName(), menu.getMenuAliasName(), menu.getIcon(), menu.getIsFrame(), menu.getIsNew(), menu.getRemark()));
+                            router.setPath("/inner");
+                            List<RouterVo> childrenList = new ArrayList<RouterVo>();
+                            RouterVo children = new RouterVo();
+                            String routerPath = StringUtils.replaceEach(menu.getPath(), new String[] { Constants.HTTP, Constants.HTTPS }, new String[] { "", "" });
+                            children.setPath(routerPath);
+                            children.setComponent(UserConstants.INNER_LINK);
+                            children.setName(StringUtils.capitalize(routerPath));
+                            children.setMeta(new MetaVo(menu.getMenuName(), menu.getMenuAliasName(), menu.getIcon(), menu.getPath(), menu.getIsFrame(), menu.getIsNew(), menu.getRemark()));
+                            childrenList.add(children);
+                            router.setChildren(childrenList);
+                        }
+                        routers.add(router);
+                    }
+                    platformRouterVo.setRouterVos(routers);
+                    platformRouterVos.add(platformRouterVo);
+                }
+            }
+        }
+        return platformRouterVos;
+    }
+
     /**
      * 构建前端所需要树结构
      *

+ 41 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/vo/PlatformRouterVo.java

@@ -0,0 +1,41 @@
+package com.usky.system.service.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import java.util.List;
+
+/**
+ * <p>
+ * 租户和应用关联表
+ * </p>
+ *
+ * @author han
+ * @since 2024-09-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class PlatformRouterVo {
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 应用ID
+     */
+    private Integer platformId;
+
+    /**
+     * 应用名称
+     */
+    private String platformName;
+
+    /**
+     * 应用图标
+     */
+    private String icon;
+
+    /**
+     * 路由集合
+     */
+    private List<RouterVo> RouterVos;
+}

+ 15 - 0
base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysPlatformMapper.xml

@@ -95,4 +95,19 @@
         </if>
     </select>
 
+    <select id="getRolePlatformList" resultType="com.usky.system.service.vo.SysPlatformVo">
+        SELECT
+        p.*
+        FROM
+        sys_platform p
+        LEFT JOIN sys_tenant_platform tp ON p.id=tp.platform_id
+        LEFT JOIN sys_platform_menu pm ON tp.platform_id=pm.platform_id
+        LEFT JOIN sys_role_menu rm ON pm.menu_id = rm.menu_id
+        WHERE
+        tp.tenant_id = #{tenantId}
+        AND rm.role_id = #{roleId}
+        GROUP BY
+        p.id
+    </select>
+
 </mapper>