785834757 před 6 měsíci
rodič
revize
3fb1e4de87

+ 10 - 1
platform/src/main/java/com/jzg/controller/SysMenuController.java

@@ -56,9 +56,18 @@ public class SysMenuController extends BaseController {
         return HttpResult.ok(sysMenuService.findTree(systemCode, 0));
     }
 
+    @GetMapping(value = "/getRoleMenuTree")
+    public HttpResult getRoleMenuTree(){
+        String userId = getUserId();
+        String systemCode = getSystemCode();
+        List<SysMenu> roleMenuTree = sysMenuService.getRoleMenuTree(systemCode, userId);
+        return HttpResult.ok(roleMenuTree);
+    }
+
     @GetMapping(value = "/getAllButtons")
     public HttpResult getAllButtons(){
-        return HttpResult.ok(sysMenuService.getAllButtons());
+        String userId = getUserId();
+        return HttpResult.ok(sysMenuService.getAllButtons(userId));
     }
 
     @GetMapping(value = "/getSystemMenu")

+ 2 - 0
platform/src/main/java/com/jzg/mapper/SysMenuMapper.java

@@ -14,4 +14,6 @@ public interface SysMenuMapper extends BaseMapper<SysMenu> {
     public List<SysMenu> getSystemMenus(String systemCode);
 
     public List<SysMenu> getSystemMenusRecursion(String systemCode);
+
+    public List<SysMenu> getMenuByRoleId(String roleId);
 }

+ 2 - 0
platform/src/main/java/com/jzg/mapper/SysRolePermsMapper.java

@@ -16,4 +16,6 @@ public interface SysRolePermsMapper extends BaseMapper<SysRolePerms> {
      * @return
      */
     List<SysRolePerms> getByRoleId(@Param("id") String id);
+
+    List<SysRolePerms> getByRoleIdNew(@Param("roleId") String roleId);
 }

+ 10 - 1
platform/src/main/java/com/jzg/service/SysMenuService.java

@@ -12,14 +12,23 @@ import java.util.List;
 public interface SysMenuService extends IService<SysMenu> {
     public List<SysMenu> findTree(String systemCode, int menuType);
 
+    public List<SysMenu> getRoleMenuTree(String systemCode, String username);
+
     public List<SysMenu> findByUser(String userName);
 
-    public List<String> getAllButtons();
+    public List<String> getAllButtons(String userId);
 
     public List<SysMenu> getSystemMenu(String systemCode);
 
     public Boolean saveSystemMenu(SystemMenuVo systemMenuVo);
 
+    /**
+     * 根据角色id获取菜单
+     * @param roleId
+     * @return
+     */
+    public List<SysMenu> getMenuByRoleId(String roleId);
+
 
 }
 

+ 1 - 0
platform/src/main/java/com/jzg/service/UserRoleService.java

@@ -66,4 +66,5 @@ public interface UserRoleService extends IService<SysRole> {
     public boolean roleDeleteValid(SysRoleVo sysRoleVo);
 
 
+
 }

+ 39 - 3
platform/src/main/java/com/jzg/service/impl/SysMenuServiceImpl.java

@@ -6,10 +6,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.entity.po.SysMenu;
 import com.jzg.commons.entity.po.SysSystemMenu;
+import com.jzg.commons.entity.po.SysUserRole;
 import com.jzg.commons.entity.vo.SystemMenuVo;
 import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.mapper.SysMenuMapper;
 import com.jzg.mapper.SysSystemMenuMapper;
+import com.jzg.mapper.SysUserRoleMapper;
 import com.jzg.service.SysMenuService;
 import com.jzg.service.SysUserService;
 import lombok.RequiredArgsConstructor;
@@ -34,6 +36,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
 
     private final SysSystemMenuMapper sysSystemMenuMapper;
 
+    private final SysUserRoleMapper sysUserRoleMapper;
+
 
     @Override
     public List<SysMenu> findTree(String systemCode, int menuType) {
@@ -57,6 +61,25 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
         return sysMenus;
     }
 
+    @Override
+    public List<SysMenu> getRoleMenuTree(String systemCode, String userId) {
+        SysUserRole sysUserRole = sysUserRoleMapper.selectOne(new LambdaQueryWrapper<SysUserRole>()
+                .eq(SysUserRole::getUserId, userId));
+        List<SysMenu> menus = this.getMenuByRoleId(sysUserRole.getRoleId());
+        List<SysMenu> sysMenus = new ArrayList<>();
+        for (SysMenu menu : menus) {
+            if (menu.getParentId() == null || menu.getParentId().equalsIgnoreCase("0")) {
+                menu.setLevel(0);
+                if (!exists(sysMenus, menu)) {
+                    sysMenus.add(menu);
+                }
+            }
+        }
+        sysMenus.sort((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()));
+        findChildren(sysMenus, menus, 1);
+        return sysMenus;
+    }
+
     @Override
     public List<SysMenu> findByUser(String systemCode) {
          LambdaQueryWrapper<SysMenu> lqw = new LambdaQueryWrapper<>();
@@ -66,13 +89,20 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
     }
 
     @Override
-    public List<String> getAllButtons() {
+    public List<String> getAllButtons(String userId) {
+
         LambdaQueryWrapper<SysMenu> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        lambdaQueryWrapper.eq(SysMenu::getType,"3");
+        lambdaQueryWrapper.eq(SysMenu::getType,"2");
         List<SysMenu> sysMenus = baseMapper.selectList(lambdaQueryWrapper);
+        SysUserRole sysUserRole = sysUserRoleMapper.selectOne(new LambdaQueryWrapper<SysUserRole>()
+                .eq(SysUserRole::getUserId, userId));
+        List<SysMenu> menus = this.getMenuByRoleId(sysUserRole.getRoleId());
+
         List<String> perms = new ArrayList<>();
         sysMenus.forEach(item->{
-            perms.add(item.getPerms());
+            if(menus.stream().anyMatch(x -> x.getId().equals(item.getId()))){
+                perms.add(item.getPerms());
+            }
         });
         return perms;
     }
@@ -121,6 +151,12 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
         return true;
     }
 
+    @Override
+    public List<SysMenu> getMenuByRoleId(String roleId) {
+        List<SysMenu> menuByRoleId = sysMenuMapper.getMenuByRoleId(roleId);
+        return menuByRoleId;
+    }
+
     private void findChildren(List<SysMenu> SysMenus, List<SysMenu> menus, int menuType) {
 
         for (SysMenu SysMenu : SysMenus) {

+ 1 - 2
platform/src/main/java/com/jzg/service/impl/UserRoleServiceImpl.java

@@ -64,8 +64,7 @@ public class UserRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
         if(Objects.isNull(sysRole)){
             throw new SystemException("角色不存在");
         }
-        List<SysRolePerms> sysRolePerms = sysRolePermsMapper.selectList(new LambdaQueryWrapper<SysRolePerms>()
-                .eq(SysRolePerms::getRoleId, roleId));
+        List<SysRolePerms> sysRolePerms = sysRolePermsMapper.getByRoleIdNew(roleId);
         SysRoleVo sysRoleVo = new SysRoleVo(sysRole,sysRolePerms);
 
         //获取角色数据权限

+ 10 - 0
platform/src/main/resources/mapper/SysMenuMapper.xml

@@ -34,4 +34,14 @@
         ORDER BY parent_id, id;
 
     </select>
+
+    <select id="getMenuByRoleId" resultType="com.jzg.commons.entity.po.SysMenu">
+        SELECT
+            sm.*
+        FROM
+            sys_role_perms srp
+                LEFT JOIN sys_menu sm ON srp.perms_id = sm.id
+        WHERE
+            srp.role_id = #{roleId}
+    </select>
 </mapper>

+ 12 - 0
platform/src/main/resources/mapper/SysRolePermsMapper.xml

@@ -11,4 +11,16 @@
             </if>
         </where>
     </select>
+
+    <select id="getByRoleIdNew" resultType="com.jzg.commons.entity.po.SysRolePerms">
+        SELECT
+            srp.id AS role_id,
+            sm.id AS perms_id,
+            sm.perms
+        FROM
+            sys_menu sm
+                LEFT JOIN sys_role_perms srp ON srp.perms_id = sm.id
+        WHERE
+            role_id = #{roleId}
+    </select>
 </mapper>