From 64f7ccb9ef8b5a0618e65cddc14b981c1f108ba3 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 04 十一月 2024 09:01:59 +0800
Subject: [PATCH] 代码提交

---
 xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/service/impl/SysRoleServiceImpl.java |  124 ++++++++++++++++++++++++++++++++++++++---
 1 files changed, 114 insertions(+), 10 deletions(-)

diff --git a/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/service/impl/SysRoleServiceImpl.java b/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/service/impl/SysRoleServiceImpl.java
index 3929769..87836a7 100644
--- a/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/service/impl/SysRoleServiceImpl.java
+++ b/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/service/impl/SysRoleServiceImpl.java
@@ -1,19 +1,17 @@
 package com.xinquan.system.service.impl;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
+import java.util.stream.Collectors;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xinquan.common.core.web.page.PageInfo;
+import com.xinquan.system.api.domain.SysMenu;
 import com.xinquan.system.domain.SysRoleDept;
 import com.xinquan.system.domain.SysRoleMenu;
 import com.xinquan.system.domain.SysUserRole;
-import com.xinquan.system.mapper.SysRoleDeptMapper;
-import com.xinquan.system.mapper.SysRoleMapper;
-import com.xinquan.system.mapper.SysRoleMenuMapper;
-import com.xinquan.system.mapper.SysUserRoleMapper;
+import com.xinquan.system.domain.dto.SysRoleDTO;
+import com.xinquan.system.domain.dto.SysRoleQuery;
+import com.xinquan.system.mapper.*;
 import com.xinquan.system.service.ISysRoleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -46,6 +44,8 @@
 
     @Autowired
     private SysRoleDeptMapper roleDeptMapper;
+    @Autowired
+    private SysMenuMapper menuMapper;
 
     /**
      * 根据条件分页查询角色数据
@@ -373,7 +373,7 @@
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int deleteRoleByIds(Long[] roleIds)
+    public int deleteRoleByIds(List<Long> roleIds)
     {
         for (Long roleId : roleIds)
         {
@@ -443,4 +443,108 @@
     public List<SysRole> isExitUpdate(String roleName, Long roleId) {
         return roleMapper.isExitUpdate(roleName,roleId);
     }
+
+    @Override
+    public PageInfo<SysRole> selectList(SysRoleQuery query) {
+        PageInfo<SysRole> pageInfo = new PageInfo<>(query.getPageCurr(), query.getPageSize());
+        List<SysRole> list = roleMapper.selectList(query,pageInfo);
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
+    @Override
+    public Boolean isExit(Long id, String roleName) {
+        int count = this.selectCountByRoleName(roleName);
+        if (StringUtils.isNotNull(id)) {
+            // 修改
+            SysRole sysRole = roleMapper.selectRoleById(id);
+            return Objects.nonNull(sysRole) && !sysRole.getRoleName().equals(roleName) && count > 0;
+        } else {
+            // 新增
+            return count > 0;
+        }
+    }
+    @Override
+    public List<SysMenu> getMenuLevelList(List<Long> menusId) {
+        //获取当前的权限菜单
+        List<SysMenu> all = roleMenuMapper.getAllInIds(menusId);
+        // 第三级
+        List<SysMenu> s3 = all.stream().filter(e -> e.getMenuType().equals("F")).collect(Collectors.toList());
+        // 第二级
+        List<SysMenu> s2 = all.stream().filter(e -> e.getMenuType().equals("C")).collect(Collectors.toList());
+        // 第一级
+        List<SysMenu> s1 = all.stream().filter(e -> e.getMenuType().equals("M")).collect(Collectors.toList());
+
+        for (SysMenu menu : s2) {
+            List<SysMenu> collect = s3.stream().filter(e -> e.getParentId().equals(menu.getMenuId())).collect(Collectors.toList());
+            menu.setChildren(collect);
+        }
+        for (SysMenu menu : s1) {
+            List<SysMenu> collect = s2.stream().filter(e -> e.getParentId().equals(menu.getMenuId())).collect(Collectors.toList());
+            menu.setChildren(collect);
+        }
+        return s1;
+    }
+    @Override
+    public List<SysMenu> roleInfoFromUserId(Long userId) {
+        List<SysRole> sysRole = roleMapper.selectRoleByUserId(userId);
+        List<SysMenu> menus2 = new ArrayList<>();
+        for (SysRole role : sysRole) {
+            List<SysMenu> menus1 = menuMapper.selectListByRoleId(role.getRoleId());
+            menus2.addAll(menus1);
+        }
+        List<SysMenu> menus = menus2.stream().distinct().collect(Collectors.toList());
+        // 获取当前角色的菜单列表
+        if(menus.size()==0){
+            return new ArrayList<>();
+        }
+        List<Long> menusId = menus.stream().map(SysMenu::getMenuId).collect(Collectors.toList());
+        // 获取当前的权限菜单(有层级)
+        return this.getMenuLevelList(menusId);
+    }
+    @Override
+    public int selectCountByRoleName(String roleName) {
+        return roleMapper.selectCountByRoleName(roleName);
+    }
+    @Override
+    public int editRole(SysRoleDTO dto) {
+        // 修改角色信息
+        SysRole sysRole = new SysRole();
+        sysRole.setRoleId(dto.getRoleId());
+        sysRole.setRoleName(dto.getRoleName());
+        sysRole.setRemark(dto.getRemark());
+        roleMapper.updateRole(sysRole);
+        // 删除角色与菜单关联
+        roleMenuMapper.deleteRoleMenuByRoleId(dto.getRoleId());
+
+        // 添加角色权限中间表
+        List<Long> menuIds = dto.getMenuIds();
+        List<SysRoleMenu> sysRoleMenus = new ArrayList<>();
+        for (Long menuId : menuIds) {
+            SysRoleMenu sysRoleMenu = new SysRoleMenu();
+            sysRoleMenu.setRoleId(dto.getRoleId());
+            sysRoleMenu.setMenuId(menuId);
+            sysRoleMenus.add(sysRoleMenu);
+        }
+
+        return roleMenuMapper.batchRoleMenu(sysRoleMenus);
+    }
+    @Override
+    public void saveRole(SysRoleDTO dto) {
+        // 添加角色
+        SysRole sysRole = new SysRole();
+        sysRole.setRoleName(dto.getRoleName());
+        sysRole.setRemark(dto.getRemark());
+        roleMapper.insertRole(sysRole);
+
+        // 添加角色权限中间表
+        List<Long> menuIds = dto.getMenuIds();
+        List<SysRoleMenu> sysRoleMenus = new ArrayList<>();
+        for (Long menuId : menuIds) {
+            SysRoleMenu sysRoleMenu = new SysRoleMenu();
+            sysRoleMenu.setRoleId(sysRole.getRoleId());
+            sysRoleMenu.setMenuId(menuId);
+            sysRoleMenus.add(sysRoleMenu);
+        }
+        roleMenuMapper.batchRoleMenu(sysRoleMenus);
+    }
 }

--
Gitblit v1.7.1