Bladeren bron

权限管理-列表查询3

jichaobo 3 jaren geleden
bovenliggende
commit
4875273867

+ 16 - 9
fiveep-controller/src/main/java/com/bizmatics/controller/web/UserSiteController.java

@@ -2,15 +2,24 @@ package com.bizmatics.controller.web;
 
 
 import com.bizmatics.common.core.bean.ApiResult;
+import com.bizmatics.common.core.exception.BusinessErrorCode;
+import com.bizmatics.common.mvc.utils.ServletUtils;
+import com.bizmatics.model.constants.UserConstants;
 import com.bizmatics.model.system.SysMenu;
+import com.bizmatics.model.system.SysRole;
 import com.bizmatics.service.UserSiteService;
+import com.bizmatics.service.config.security.LoginUser;
 import com.bizmatics.service.system.ISysMenuService;
+import com.bizmatics.service.system.ISysRoleService;
+import com.bizmatics.service.system.ISysUserService;
+import com.bizmatics.service.system.impl.SysPermissionService;
+import com.bizmatics.service.system.impl.TokenService;
+import com.bizmatics.service.util.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import org.springframework.stereotype.Controller;
-
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 用户站点信息
@@ -26,22 +35,20 @@ public class UserSiteController {
     private UserSiteService userSiteService;
     @Autowired
     private ISysMenuService menuService;
-
-
     /**
      * 根据菜单查询按钮
+     *
      * @param menuName 菜单名称
      * @return
      */
     @GetMapping(value = "/getButtonlistone")
-    public ApiResult<List<SysMenu>> getButtonlistone(@RequestParam(value = "menuName", required = false) String menuName){
-        return  ApiResult.success(menuService.getButtonlist(menuName));
+    public ApiResult<List<SysMenu>> getButtonlistone(@RequestParam(value = "menuName", required = false) String menuName) {
+        return ApiResult.success(menuService.getButtonlist(menuName));
     }
 
     @GetMapping(value = "/getAuthority")
-    public ApiResult<List<Object>> getAuthority(@RequestParam(value = "roleId") Long roleId){
-        return  ApiResult.success(menuService.getAuthority(roleId));
+    public ApiResult<List<Object>> getAuthority(@RequestParam(value = "roleId") Long roleId) {
+        return ApiResult.success(menuService.getAuthority(roleId));
     }
-
 }
 

+ 23 - 0
fiveep-controller/src/main/java/com/bizmatics/controller/web/system/SysRoleController.java

@@ -115,6 +115,29 @@ public class SysRoleController extends BaseController
         }
         return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(),"修改角色'" + role.getRoleName() + "'失败,请联系管理员");
     }
+//    @PreAuthorize("@ss.hasPermi('system:role:editOne')")
+    @PutMapping(value = "/editOne")
+    public ApiResult editOne(@Validated @RequestBody SysRole role) {
+        roleService.checkRoleAllowed(role);
+        if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) {
+            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "修改角色'" + role.getRoleName() + "'失败,角色名称已存在");
+        } else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) {
+            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
+        }
+        role.setUpdateBy(SecurityUtils.getUsername());
+
+        if (roleService.updateRoleOne(role) > 0) {
+            // 更新缓存用户权限
+            LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+            if (Objects.nonNull(loginUser.getUser()) && !loginUser.getUser().isAdmin()) {
+                loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser()));
+                loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName()));
+                tokenService.setLoginUser(loginUser);
+            }
+            return ApiResult.success();
+        }
+        return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "修改角色'" + role.getRoleName() + "'失败,请联系管理员");
+    }
 
     /**
      * 修改保存数据权限

+ 3 - 0
fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/system/SysRoleMapper.java

@@ -1,5 +1,6 @@
 package com.bizmatics.persistence.mapper.system;
 
+import com.bizmatics.model.system.SysMenu;
 import com.bizmatics.model.system.SysRole;
 import org.springframework.stereotype.Repository;
 
@@ -107,4 +108,6 @@ public interface SysRoleMapper
      * @return 结果
      */
     public int deleteRoleByIds(Long[] roleIds);
+
+    public List<SysMenu> getMenuIdList(Long[] roleId,String menuType);
 }

+ 15 - 0
fiveep-persistence/src/main/resources/mapper/mysql/system/SysRoleMapper.xml

@@ -148,5 +148,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  			#{roleId}
         </foreach> 
  	</delete>
+
+	<select id="getMenuIdList" resultType="com.bizmatics.model.system.SysMenu">
+		SELECT
+			*
+		FROM
+			sys_menu
+		WHERE
+			`status` = 0
+		  AND visible = 0
+		  AND menu_type = #{menuType}
+		  AND parent_id IN
+		<foreach collection="array" item="roleId" open="(" separator="," close=")">
+			#{roleId}
+		</foreach> ;
+	</select>
  	
 </mapper> 

+ 2 - 0
fiveep-service/src/main/java/com/bizmatics/service/system/ISysRoleService.java

@@ -107,6 +107,8 @@ public interface ISysRoleService
      */
     public int updateRole(SysRole role);
 
+    public int updateRoleOne(SysRole role);
+
     /**
      * 修改角色状态
      * 

+ 67 - 58
fiveep-service/src/main/java/com/bizmatics/service/system/impl/SysMenuServiceImpl.java

@@ -270,7 +270,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
     }
 
     @Override
-    public List<Object> getAuthority(Long roleId){
+    public List<Object> getAuthority(Long roleId) {
 
 //        SysUser user = SecurityUtils.getLoginUser().getUser();
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
@@ -278,93 +278,102 @@ public class SysMenuServiceImpl implements ISysMenuService {
         List<SysMenu> sysMenuListTwo = new ArrayList<>();
         List<SysMenu> sysMenuListOne = new ArrayList<>();
         List<SysMenu> sysMenuListThree = new ArrayList<>();
-        if (SysUser.isAdmin(loginUser.getUser().getUserId())){
+        List<SysMenu> sysMenuListFour = new ArrayList<>();
+        if (SysUser.isAdmin(loginUser.getUser().getUserId())) {
             //全部目录查询
             sysMenuListTwo = menuMapper.getSysMenuList("M");
             //全部菜单查询
             sysMenuListOne = menuMapper.getSysMenuList("C");
             //全部按钮列表
             sysMenuListThree = menuMapper.getSysMenuList("F");
-        }else {
+            //已选中按钮列表
+            sysMenuListFour = menuMapper.getSysMenuList("F");
+        } else {
             //全部目录查询
-            sysMenuListTwo = menuMapper.getMenuListOne(loginUser.getUser().getUserId(),"M");
+            sysMenuListTwo = menuMapper.getMenuListOne(loginUser.getUser().getUserId(), "M");
             //全部菜单查询
-            sysMenuListOne = menuMapper.getMenuListOne(loginUser.getUser().getUserId(),"C");
+            sysMenuListOne = menuMapper.getMenuListOne(loginUser.getUser().getUserId(), "C");
             //全部按钮列表
-            sysMenuListThree = menuMapper.getMenuListOne(loginUser.getUser().getUserId(),"F");
+            sysMenuListThree = menuMapper.getMenuListOne(loginUser.getUser().getUserId(), "F");
+            //已选中按钮列表
+            sysMenuListFour = menuMapper.getButtonlist(0L, null, roleId);
         }
-        //已选中按钮列表
-        List<SysMenu> sysMenuListFour = menuMapper.getButtonlist(0L, null,roleId);
+
         List<SysMenuTwoVo> sysMenuVoListOne = new ArrayList<>();
         List<SysMenuOneVo> SysMenuVoList = new ArrayList<>();
         List<SysMenuVo> SysMenuVoListOne = new ArrayList<>();
         List<Object> list = new ArrayList<>();
-        if (sysMenuListFour.size()>0){
-            for (int i=0;i<sysMenuListThree.size();i++){
-                SysMenuTwoVo sysMenuTwoVo = new SysMenuTwoVo();
-                sysMenuTwoVo.setId(sysMenuListThree.get(i).getMenuId());
-                sysMenuTwoVo.setName(sysMenuListThree.get(i).getMenuName());
-                sysMenuTwoVo.setFid(sysMenuListThree.get(i).getParentId());
-                long Id=sysMenuListThree.get(i).getMenuId();
-                for (int j=0;j<sysMenuListFour.size();j++){
-                    long MenuId=sysMenuListFour.get(j).getMenuId();
-                    if (Id==MenuId){
+//        if (sysMenuListFour.size()>0){
+        for (int i = 0; i < sysMenuListThree.size(); i++) {
+            SysMenuTwoVo sysMenuTwoVo = new SysMenuTwoVo();
+            sysMenuTwoVo.setId(sysMenuListThree.get(i).getMenuId());
+            sysMenuTwoVo.setName(sysMenuListThree.get(i).getMenuName());
+            sysMenuTwoVo.setFid(sysMenuListThree.get(i).getParentId());
+            long Id = sysMenuListThree.get(i).getMenuId();
+            if (sysMenuListFour.size() > 0) {
+                for (int j = 0; j < sysMenuListFour.size(); j++) {
+                    long MenuId = sysMenuListFour.get(j).getMenuId();
+                    if (Id == MenuId) {
                         sysMenuTwoVo.setChecked(true);
-                    }else {
+                    } else {
                         sysMenuTwoVo.setChecked(false);
                     }
                 }
-                sysMenuVoListOne.add(sysMenuTwoVo);
+            } else {
+                sysMenuTwoVo.setChecked(false);
             }
 
-            for (int i=0;i<sysMenuListOne.size();i++){
-                SysMenuOneVo sysMenuOneVo = new SysMenuOneVo();
-                sysMenuOneVo.setId(sysMenuListOne.get(i).getMenuId());
-                sysMenuOneVo.setMenu(sysMenuListOne.get(i).getMenuName());
-                sysMenuOneVo.setFid(sysMenuListOne.get(i).getParentId());
-                long id = sysMenuListOne.get(i).getMenuId();
-                List<SysMenuTwoVo> sysMenuVoListTwo = new ArrayList<>();
-                for (int j=0;j<sysMenuVoListOne.size();j++){
-                    long FId = sysMenuVoListOne.get(j).getFid();
-                    if (id==FId){
-                        sysMenuVoListTwo.add(sysMenuVoListOne.get(j));
-                    }
+            sysMenuVoListOne.add(sysMenuTwoVo);
+        }
+
+        for (int i = 0; i < sysMenuListOne.size(); i++) {
+            SysMenuOneVo sysMenuOneVo = new SysMenuOneVo();
+            sysMenuOneVo.setId(sysMenuListOne.get(i).getMenuId());
+            sysMenuOneVo.setMenu(sysMenuListOne.get(i).getMenuName());
+            sysMenuOneVo.setFid(sysMenuListOne.get(i).getParentId());
+            long id = sysMenuListOne.get(i).getMenuId();
+            List<SysMenuTwoVo> sysMenuVoListTwo = new ArrayList<>();
+            for (int j = 0; j < sysMenuVoListOne.size(); j++) {
+                long FId = sysMenuVoListOne.get(j).getFid();
+                if (id == FId) {
+                    sysMenuVoListTwo.add(sysMenuVoListOne.get(j));
                 }
-                sysMenuOneVo.setAuthority(sysMenuVoListTwo);
-                SysMenuVoList.add(sysMenuOneVo);
             }
+            sysMenuOneVo.setAuthority(sysMenuVoListTwo);
+            SysMenuVoList.add(sysMenuOneVo);
+        }
 
-            for (int i=0;i<sysMenuListTwo.size();i++){
-                SysMenuVo sysMenuVo = new SysMenuVo();
-                sysMenuVo.setId(sysMenuListTwo.get(i).getMenuId());
-                sysMenuVo.setMenu(sysMenuListTwo.get(i).getMenuName());
-                sysMenuVo.setFid(sysMenuListTwo.get(i).getParentId());
-                long id = sysMenuListTwo.get(i).getMenuId();
-                List<SysMenuOneVo> SysMenuVoListThree = new ArrayList<>();
-                for (int j=0;j<SysMenuVoList.size();j++){
-                    long FId = SysMenuVoList.get(j).getFid();
-                    if (id==FId){
-                        SysMenuVoListThree.add(SysMenuVoList.get(j));
-                    }
+        for (int i = 0; i < sysMenuListTwo.size(); i++) {
+            SysMenuVo sysMenuVo = new SysMenuVo();
+            sysMenuVo.setId(sysMenuListTwo.get(i).getMenuId());
+            sysMenuVo.setMenu(sysMenuListTwo.get(i).getMenuName());
+            sysMenuVo.setFid(sysMenuListTwo.get(i).getParentId());
+            long id = sysMenuListTwo.get(i).getMenuId();
+            List<SysMenuOneVo> SysMenuVoListThree = new ArrayList<>();
+            for (int j = 0; j < SysMenuVoList.size(); j++) {
+                long FId = SysMenuVoList.get(j).getFid();
+                if (id == FId) {
+                    SysMenuVoListThree.add(SysMenuVoList.get(j));
                 }
-                sysMenuVo.setChildren(SysMenuVoListThree);
-                SysMenuVoListOne.add(sysMenuVo);
             }
+            sysMenuVo.setChildren(SysMenuVoListThree);
+            SysMenuVoListOne.add(sysMenuVo);
+        }
 
-            for (int i=0;i<SysMenuVoListOne.size();i++){
-                String name = SysMenuVoListOne.get(i).getMenu();
-                if (name.equals("数据管理")||name.equals("电能质量")||name.equals("系统管理")){
-                    list.add(SysMenuVoListOne.get(i));
-                }else {
-                    for (int j=0;j<SysMenuVoList.size();j++){
-                        String name2 = SysMenuVoList.get(j).getMenu();
-                        if (name.equals(name2)){
-                            list.add(SysMenuVoList.get(j));
-                        }
+        for (int i = 0; i < SysMenuVoListOne.size(); i++) {
+            String name = SysMenuVoListOne.get(i).getMenu();
+            if (name.equals("数据管理") || name.equals("电能质量") || name.equals("系统管理")) {
+                list.add(SysMenuVoListOne.get(i));
+            } else {
+                for (int j = 0; j < SysMenuVoList.size(); j++) {
+                    String name2 = SysMenuVoList.get(j).getMenu();
+                    if (name.equals(name2)) {
+                        list.add(SysMenuVoList.get(j));
                     }
                 }
             }
         }
+//        }
         return list;
     }
 

+ 30 - 4
fiveep-service/src/main/java/com/bizmatics/service/system/impl/SysRoleServiceImpl.java

@@ -3,10 +3,7 @@ package com.bizmatics.service.system.impl;
 import com.bizmatics.common.core.exception.BusinessException;
 import com.bizmatics.common.spring.util.SpringContextUtils;
 import com.bizmatics.model.constants.UserConstants;
-import com.bizmatics.model.system.SysRole;
-import com.bizmatics.model.system.SysRoleDept;
-import com.bizmatics.model.system.SysRoleMenu;
-import com.bizmatics.model.system.SysUserRole;
+import com.bizmatics.model.system.*;
 import com.bizmatics.persistence.mapper.system.SysRoleDeptMapper;
 import com.bizmatics.persistence.mapper.system.SysRoleMapper;
 import com.bizmatics.persistence.mapper.system.SysRoleMenuMapper;
@@ -229,6 +226,35 @@ public class SysRoleServiceImpl implements ISysRoleService
         return insertRoleMenu(role);
     }
 
+    @Override
+    @Transactional
+    public int updateRoleOne(SysRole role)
+    {
+        Long[] arr = role.getMenuIds();
+        //菜单ID
+        List<SysMenu> menuIdList = roleMapper.getMenuIdList(arr, "C");
+        Long arr1[] = new Long[menuIdList.size()];
+        for (int i=0;i<menuIdList.size();i++){
+            arr1[i] = menuIdList.get(i).getMenuId();
+            arr[arr.length] = menuIdList.get(i).getMenuId();
+        }
+        //目录ID
+        List<SysMenu> menuIdListOne = roleMapper.getMenuIdList(arr1, "M");
+        Long arr2[] = new Long[menuIdList.size()];
+        for (int i=0;i<menuIdListOne.size();i++){
+//            arr2[i] = menuIdListOne.get(i).getMenuId();
+            arr[arr.length] = menuIdListOne.get(i).getMenuId();
+        }
+        role.setMenuIds(arr);
+
+        // 修改角色信息
+        roleMapper.updateRole(role);
+        // 删除角色与菜单关联
+        roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId());
+        return insertRoleMenu(role);
+    }
+
+
     /**
      * 修改角色状态
      *