Kaynağa Gözat

修改角色逻辑

shiyue 1 yıl önce
ebeveyn
işleme
211fc655fc

+ 4 - 2
energy-manage-service/src/main/java/com/energy/manage/service/controller/system/SysPermissionController.java

@@ -8,7 +8,9 @@ import com.energy.manage.service.config.annotations.UserLoginToken;
 import com.energy.manage.service.domain.dto.system.PermissionDelDto;
 import com.energy.manage.service.domain.dto.system.PermissionDto;
 import com.energy.manage.service.domain.dto.system.PermissionUpdateDto;
+import com.energy.manage.service.domain.dto.system.SystemPermissionListDto;
 import com.energy.manage.service.domain.vo.system.PermissionVo;
+import com.energy.manage.service.domain.vo.system.SystemPermissionVo;
 import com.energy.manage.service.service.system.SysPermissionService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -117,8 +119,8 @@ public class SysPermissionController {
     @UserLoginToken
     @ApiOperation(value = "获取全部权限")
     @PostMapping(value = "getAll")
-    public ResultResp<List<PermissionVo>> getAll() {
-        List<PermissionVo> list = sysPermissionService.getAllPermission();
+    public ResultResp<List<SystemPermissionVo>> getAll(@RequestBody SystemPermissionListDto systemPermissionListDto) {
+        List<SystemPermissionVo> list = sysPermissionService.getAllPermission(systemPermissionListDto);
         return ResultResp.SUCCESS(list);
     }
 }

+ 3 - 2
energy-manage-service/src/main/java/com/energy/manage/service/controller/system/SysRoleController.java

@@ -10,6 +10,7 @@ import com.energy.manage.service.config.annotations.UserLoginToken;
 import com.energy.manage.service.domain.dto.system.*;
 import com.energy.manage.service.domain.vo.system.PermissionVo;
 import com.energy.manage.service.domain.vo.system.SysRelationVo;
+import com.energy.manage.service.domain.vo.system.SystemPermissionVo;
 import com.energy.manage.service.service.system.SysPermissionService;
 import com.energy.manage.service.service.system.SysRoleService;
 import io.swagger.annotations.Api;
@@ -160,11 +161,11 @@ public class SysRoleController {
 	@UserLoginToken
 	@PostMapping(value = "/getRolePermission")
 	@ApiOperation(value = "通过角色获取权限")
-	public ResultResp<List<PermissionVo> > getRolePermission(@RequestBody RoleDelDto roleDelDto) {
+	public ResultResp<List<SystemPermissionVo> > getRolePermission(@RequestBody RoleDelDto roleDelDto) {
 		if (!Optional.ofNullable(roleDelDto.getRoleId()).isPresent()) {
 			return ResultResp.NOTNULLPARAM();
 		}
-		List<PermissionVo> list = permissionService.getRolePermission(roleDelDto.getRoleId());
+		List<SystemPermissionVo> list = permissionService.getRolePermission(roleDelDto.getRoleId());
 		return ResultResp.SUCCESS(list);
 	}
 

+ 18 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/system/SystemPermissionListDto.java

@@ -0,0 +1,18 @@
+package com.energy.manage.service.domain.dto.system;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SystemPermissionListDto {
+
+    @ApiModelProperty(value = "权限id")
+    private Integer permissionId;
+
+    @ApiModelProperty(value = "权限名称")
+    private String permissionName;
+
+    @ApiModelProperty(value = "权限状态")
+    private Integer permissionState;
+
+}

+ 58 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/system/SystemPermissionVo.java

@@ -0,0 +1,58 @@
+package com.energy.manage.service.domain.vo.system;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SystemPermissionVo {
+
+    @ApiModelProperty(value = "权限id")
+    private Integer permissionId;
+
+    @ApiModelProperty(value = "权限名称")
+    private String permissionName;
+
+    @ApiModelProperty(value = "父节点id")
+    private Integer parentId;
+
+    @ApiModelProperty(value = "资源类型(1 为目录 2 为菜单 3为按钮)")
+    private Integer permissionType;
+
+    @ApiModelProperty(value = "是否是外部链接(0 否 1是)")
+    private Integer isExternalLink;
+
+    @ApiModelProperty(value = "外部链接url")
+    private String externalUrl;
+
+    @ApiModelProperty(value = "路由地址")
+    private String permissionUrl;
+
+    @ApiModelProperty(value = "权限标识")
+    private String permissionIdentify;
+
+    @ApiModelProperty(value = "组件路径")
+    private String componentPath;
+
+    @ApiModelProperty(value = "资源状态 0 不可用 1是正常")
+    private Integer permissionState;
+
+    @ApiModelProperty(value = "是否隐藏 0 不隐藏 1隐藏")
+    private Integer isHidden;
+
+    @ApiModelProperty(value = "顺序")
+    private Integer permissionSort;
+
+    @ApiModelProperty(value = "图标icon Url")
+    private String permissionIconUrl;
+
+    @ApiModelProperty(value = "1 选中  0 未选中  2 部分选中")
+    private Integer checked = 0;
+
+    @ApiModelProperty(value = "子节点")
+    private List<SystemPermissionVo> children;
+
+    private Integer permissionDepth;
+
+}

+ 3 - 1
energy-manage-service/src/main/java/com/energy/manage/service/mappers/system/SysPermissionMapper.java

@@ -2,7 +2,9 @@ package com.energy.manage.service.mappers.system;
 
 import com.energy.manage.common.mapper.MyMapper;
 import com.energy.manage.common.po.system.SysPermissionPO;
+import com.energy.manage.service.domain.dto.system.SystemPermissionListDto;
 import com.energy.manage.service.domain.vo.system.PermissionVo;
+import com.energy.manage.service.domain.vo.system.SystemPermissionVo;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -19,7 +21,7 @@ public interface SysPermissionMapper extends MyMapper<SysPermissionPO> {
 
     int getMaxDepth();
 
-    List<PermissionVo> getAllPermission();
+    List<SystemPermissionVo> getAllPermission(@Param("permissionListDto") SystemPermissionListDto systemPermissionListDto);
 
     List<PermissionVo> getRolePermissionByUserId(@Param("userId") Integer userId);
 

+ 4 - 2
energy-manage-service/src/main/java/com/energy/manage/service/service/system/SysPermissionService.java

@@ -4,8 +4,10 @@ package com.energy.manage.service.service.system;
 import com.energy.manage.common.base.BaseService;
 import com.energy.manage.common.po.system.SysPermissionPO;
 import com.energy.manage.service.domain.dto.system.RoleUpdateOrganizationDto;
+import com.energy.manage.service.domain.dto.system.SystemPermissionListDto;
 import com.energy.manage.service.domain.vo.system.PermissionVo;
 import com.energy.manage.service.domain.vo.system.SysRelationVo;
+import com.energy.manage.service.domain.vo.system.SystemPermissionVo;
 
 import java.util.List;
 import java.util.Map;
@@ -18,9 +20,9 @@ public interface SysPermissionService extends BaseService<SysPermissionPO> {
 
     boolean updatePermission(SysPermissionPO po);
 
-    List<PermissionVo> getAllPermission();
+    List<SystemPermissionVo> getAllPermission(SystemPermissionListDto systemPermissionListDto);
 
-    List<PermissionVo> getRolePermission(Integer roleId);
+    List<SystemPermissionVo> getRolePermission(Integer roleId);
 
     List<Map<String, Object>> getRoleOrganization(Integer roleId);
 

+ 10 - 7
energy-manage-service/src/main/java/com/energy/manage/service/service/system/impl/SysPermissionServiceImpl.java

@@ -10,9 +10,11 @@ import com.energy.manage.common.po.system.SysPermissionPO;
 import com.energy.manage.common.po.system.SysRolePermissionPO;
 import com.energy.manage.common.po.windrelation.WindRelationPO;
 import com.energy.manage.service.domain.dto.system.RoleUpdateOrganizationDto;
+import com.energy.manage.service.domain.dto.system.SystemPermissionListDto;
 import com.energy.manage.service.domain.vo.company.WindCompanyPageVo;
 import com.energy.manage.service.domain.vo.system.PermissionVo;
 import com.energy.manage.service.domain.vo.system.SysRelationVo;
+import com.energy.manage.service.domain.vo.system.SystemPermissionVo;
 import com.energy.manage.service.domain.vo.windrelation.WindRelationVo;
 import com.energy.manage.service.mappers.system.SysOrganizationAuthMapper;
 import com.energy.manage.service.mappers.system.SysPermissionMapper;
@@ -77,17 +79,17 @@ public class SysPermissionServiceImpl extends BaseServiceImpl<SysPermissionPO> i
     }
 
     @Override
-    public List<PermissionVo> getAllPermission() {
-        List<PermissionVo> list = sysPermissionMapper.getAllPermission();
-        return TreeUtil.convert2Tree(list);
+    public List<SystemPermissionVo> getAllPermission(SystemPermissionListDto systemPermissionListDto) {
+        List<SystemPermissionVo> list = sysPermissionMapper.getAllPermission(systemPermissionListDto);
+        return TreeUtil.newConvert2Tree(list);
     }
 
     @Override
-    public List<PermissionVo> getRolePermission(Integer roleId) {
+    public List<SystemPermissionVo> getRolePermission(Integer roleId) {
         List<Integer> rolePermission = rolePermissionMapper.getRolePermission(roleId);
-        List<PermissionVo> list = sysPermissionMapper.getAllPermission();
+        List<SystemPermissionVo> list = sysPermissionMapper.getAllPermission(new SystemPermissionListDto());
         list = checkPermission(list, rolePermission);
-        return TreeUtil.convert2Tree(list);
+        return TreeUtil.newConvert2Tree(list);
     }
 
 
@@ -105,6 +107,7 @@ public class SysPermissionServiceImpl extends BaseServiceImpl<SysPermissionPO> i
         }
         sysRelationVos = checkOrganization(sysRelationVos, roleOrganizationCode);
 
+
         // 转化为Map集合
         List<Map<String, Object>> mapList = BeanMapUtils.listBeanToListMap(sysRelationVos);
         // 获取树形结构
@@ -172,7 +175,7 @@ public class SysPermissionServiceImpl extends BaseServiceImpl<SysPermissionPO> i
      * @param pIdList
      * @return
      */
-    private List<PermissionVo> checkPermission(List<PermissionVo> list, final List<Integer> pIdList) {
+    private List<SystemPermissionVo> checkPermission(List<SystemPermissionVo> list, final List<Integer> pIdList) {
         if (CollectionUtils.isEmpty(pIdList)) {
             return list;
         }

+ 79 - 0
energy-manage-service/src/main/java/com/energy/manage/service/util/TreeUtil.java

@@ -2,7 +2,9 @@ package com.energy.manage.service.util;
 
 import com.energy.manage.common.constant.Constants;
 import com.energy.manage.service.domain.vo.system.PermissionVo;
+import com.energy.manage.service.domain.vo.system.SystemPermissionVo;
 import org.apache.commons.collections.CollectionUtils;
+import org.springframework.util.ObjectUtils;
 import org.testng.collections.Lists;
 
 import java.util.*;
@@ -113,4 +115,81 @@ public class TreeUtil {
     list.sort(Comparator.comparing(m -> String.valueOf(m.get("sort"))));
     return list;
   }
+
+  /**
+   * 集合转树结构
+   *
+   * @param dataList
+   * @return
+   */
+  public static List<SystemPermissionVo> newConvert2Tree(List<SystemPermissionVo> dataList) {
+    if (CollectionUtils.isEmpty(dataList)) {
+      return Collections.EMPTY_LIST;
+    }
+    int maxDepth = getNewMaxDepth(dataList);
+    Map<Integer, List<SystemPermissionVo>> dataMap = new HashMap<>(dataList.size());
+    for (int i = maxDepth; i >= 1; i--) {
+      int depth = i;
+      List<SystemPermissionVo> child =
+              dataList.stream().filter(item -> item.getPermissionDepth() == depth)
+                      .collect(Collectors.toList());
+      for (SystemPermissionVo item : child) {
+        List<SystemPermissionVo> childList = dataMap.get(item.getPermissionId());
+        if (!CollectionUtils.isEmpty(childList)) {
+          item.setChildren(childList);
+          int isSelect = item.getChecked();
+          if (isSelect == 1) {
+            // 根据子节点判断本节点是全选还是部分选中,子节点存在未选中或者存在部分选中的时候,当前是部分选中
+            childList.stream().forEach(childItem -> {
+              if (childItem.getChecked().intValue() == Constants.GLOBAL_NOT_USE
+                      || childItem.getChecked().intValue() == 2) {
+                item.setChecked(2);
+              }
+            });
+          }
+        }
+        List<SystemPermissionVo> list = dataMap.get(item.getParentId());
+        if (CollectionUtils.isEmpty(list)) {
+          list = new ArrayList<>();
+        }
+        list.add(item);
+        dataMap.put(item.getParentId(), list);
+      }
+    }
+
+    List<SystemPermissionVo> result = new ArrayList<>();
+    //优化
+    Map<Integer, SystemPermissionVo> existPermissionMap = dataList.stream()
+            .collect(Collectors.toMap(SystemPermissionVo::getPermissionId, v -> v, (key1, key2) -> key2));
+
+    dataMap.forEach((id, list) -> {
+      if (existPermissionMap.containsKey(id)) {
+        return;
+      }
+      result.addAll(list);
+    });
+
+    return result;
+  }
+
+  /**
+   * 内部方法,获取集合内最深的节点数
+   *
+   * @param list
+   * @return
+   */
+  private static int getNewMaxDepth(List<SystemPermissionVo> list) {
+    if (CollectionUtils.isEmpty(list)) {
+      return 0;
+    }
+    int maxDepth = 0;
+    for (SystemPermissionVo item : list) {
+      if(ObjectUtils.isEmpty(item)){
+        continue;
+      }
+      maxDepth = Math.max(maxDepth, item.getPermissionDepth());
+    }
+    return maxDepth;
+  }
+
 }

+ 8 - 1
energy-manage-service/src/main/resources/mybatis/system/PermissionMapper.xml

@@ -20,9 +20,16 @@
         SELECT MAX(permission_depth) FROM sys_permission
     </select>
 
-    <select id="getAllPermission" resultType="com.energy.manage.service.domain.vo.system.PermissionVo">
+    <select id="getAllPermission" resultType="com.energy.manage.service.domain.vo.system.SystemPermissionVo">
         SELECT <include refid="BASE_PERMISSION_SQL"/>
         FROM sys_permission p
+        where 1=1
+        <if test="permissionListDto.permissionState != null">
+            and p.permission_state=#{permissionListDto.permissionState}
+        </if>
+        <if test="permissionListDto.permissionName != null and permissionListDto.permissionName != ''">
+            and p.permission_name like CONCAT("%", #{permissionListDto.permissionName} ,"%")
+        </if>
         ORDER BY p.permission_sort ASC, p.permission_id ASC
     </select>