|
@@ -1,14 +1,18 @@
|
|
|
package com.abi.qms.platform.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
import com.abi.qms.platform.dao.entity.UserInfo;
|
|
|
+import com.abi.qms.platform.dao.entity.UserResource;
|
|
|
import com.abi.qms.platform.dao.entity.UserRole;
|
|
|
import com.abi.qms.platform.dao.enums.RoleLevelEnum;
|
|
|
import com.abi.qms.platform.dao.mapper.UserMappingRoleResourceMapper;
|
|
|
+import com.abi.qms.platform.dao.mapper.UserResourceMapper;
|
|
|
import com.abi.qms.platform.dao.mapper.UserRoleMapper;
|
|
|
import com.abi.qms.platform.dao.vo.result.ListRoleVO;
|
|
|
import com.abi.qms.platform.dto.req.*;
|
|
|
import com.abi.qms.platform.dto.res.GetRoleInfoRes;
|
|
|
import com.abi.qms.platform.dto.res.ListResourceRes;
|
|
|
+import com.abi.qms.platform.dto.res.ListResourceTreeByRoleCodeRes;
|
|
|
import com.abi.qms.platform.dto.res.ListRoleRes;
|
|
|
import com.abi.qms.platform.infrastructure.util.AssertUtil;
|
|
|
import com.abi.qms.platform.infrastructure.util.PageUtil;
|
|
@@ -24,7 +28,10 @@ import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -40,14 +47,13 @@ public class RoleManagerServiceImpl implements RoleManagerService {
|
|
|
private UserRoleMapper userRoleMapper;
|
|
|
|
|
|
@Autowired
|
|
|
- private UserMappingRoleResourceMapper userMappingRoleResourceMapper;
|
|
|
+ private UserResourceMapper userResourceMapper;
|
|
|
|
|
|
@Autowired
|
|
|
- private UserResourceService userResourceService;
|
|
|
+ private UserMappingRoleResourceMapper userMappingRoleResourceMapper;
|
|
|
|
|
|
@Autowired
|
|
|
- private UserUtil userUtil;
|
|
|
-
|
|
|
+ private UserResourceService userResourceService;
|
|
|
|
|
|
/**
|
|
|
* 创建角色
|
|
@@ -161,7 +167,7 @@ public class RoleManagerServiceImpl implements RoleManagerService {
|
|
|
@Override
|
|
|
public ListRoleRes listRole(ListRoleReq req) {
|
|
|
//获取当前登录的用户
|
|
|
- UserInfo user = userUtil.getUser();
|
|
|
+ UserInfo user = UserUtil.getUser();
|
|
|
//获取当前用户的角色
|
|
|
UserRole role = getRoleByCode(user.getRoleCode());
|
|
|
|
|
@@ -189,7 +195,7 @@ public class RoleManagerServiceImpl implements RoleManagerService {
|
|
|
@Override
|
|
|
public ListResourceRes listResource() {
|
|
|
//获取当前登录的用户
|
|
|
- UserInfo user = userUtil.getUser();
|
|
|
+ UserInfo user = UserUtil.getUser();
|
|
|
//获取当前用户的角色
|
|
|
UserRole role = getRoleByCode(user.getRoleCode());
|
|
|
|
|
@@ -220,4 +226,96 @@ public class RoleManagerServiceImpl implements RoleManagerService {
|
|
|
return userRoleList.get(0);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取登录角色下级的角色树
|
|
|
+ **/
|
|
|
+ @Override
|
|
|
+ public ListResourceTreeByRoleCodeRes listResourceTreeByRoleCode(ListResourceTreeByRoleCodeReq req) {
|
|
|
+ //获取当前登录的用户
|
|
|
+ UserInfo user = UserUtil.getUser();
|
|
|
+ //获取当前用户的角色
|
|
|
+ UserRole role = getRoleByCode(user.getRoleCode());
|
|
|
+
|
|
|
+ //1-查询角色树
|
|
|
+ List<UserResource> userResourceList = userResourceMapper.listResourceTreeByRoleCode(role.getRoleCode());
|
|
|
+
|
|
|
+ //构造出参
|
|
|
+ ListResourceTreeByRoleCodeRes res = new ListResourceTreeByRoleCodeRes();
|
|
|
+ List<ListResourceTreeByRoleCodeRes.ResourceBean> resourceBeanList = new ArrayList<>();
|
|
|
+
|
|
|
+ //2-转树形
|
|
|
+ if(req.getIsTree()!=null && req.getIsTree()==1){
|
|
|
+ //放一个map,用于快捷查找到list key为父resourceCode
|
|
|
+ Map<String,List<ListResourceTreeByRoleCodeRes.ResourceBean>> resourceListMap = new HashMap<>();
|
|
|
+ //如果父类code为null,那么父list就是顶层list
|
|
|
+ resourceListMap.put(null,resourceBeanList);
|
|
|
+ //开始循环放入,因为查询语句排过序,所以查到的顺序,一定是先父后子
|
|
|
+ for(UserResource resource:userResourceList){
|
|
|
+ //先获取父类列表
|
|
|
+ List<ListResourceTreeByRoleCodeRes.ResourceBean> parentList = resourceListMap.get(resource.getParentResourceCode());
|
|
|
+ //然后放入自己
|
|
|
+ ListResourceTreeByRoleCodeRes.ResourceBean resourceBean = PojoConverterUtils.copy(resource, ListResourceTreeByRoleCodeRes.ResourceBean.class);
|
|
|
+ parentList.add(resourceBean);
|
|
|
+ //如果resourceCode是3位or6位,则需要创建子list
|
|
|
+ if(resourceBean.getResourceCode().length()<=6){
|
|
|
+ resourceBean.setResourceBeanList(new ArrayList<>());
|
|
|
+ resourceListMap.put(resourceBean.getResourceCode(),resourceBean.getResourceBeanList());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ resourceBeanList = PojoConverterUtils.copyList(userResourceList, ListResourceTreeByRoleCodeRes.ResourceBean.class);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //放入出参
|
|
|
+ res.setResourceBeanList(resourceBeanList);
|
|
|
+
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 启用角色
|
|
|
+ **/
|
|
|
+ @Override
|
|
|
+ public void enableRole(EnableRoleReq req) {
|
|
|
+ List<String> roleCodeList = req.getRoleCodeList();
|
|
|
+
|
|
|
+ //循环启用
|
|
|
+ for(String roleCode:roleCodeList){
|
|
|
+ //1-查询角色
|
|
|
+ UserRole role = getRoleByCode(roleCode);
|
|
|
+ AssertUtil.isNull(role,"角色不存在");
|
|
|
+ if(role.getIsEnable()==1){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ //2-修改状态
|
|
|
+ role.setIsEnable(1);
|
|
|
+ userRoleMapper.updateById(role);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 禁用角色
|
|
|
+ **/
|
|
|
+ @Override
|
|
|
+ public void disableRole(DisableRoleReq req) {
|
|
|
+ List<String> roleCodeList = req.getRoleCodeList();
|
|
|
+
|
|
|
+ //循环禁用
|
|
|
+ for(String roleCode:roleCodeList){
|
|
|
+ //1-查询角色
|
|
|
+ UserRole role = getRoleByCode(roleCode);
|
|
|
+ AssertUtil.isNull(role,"角色不存在");
|
|
|
+ if(role.getIsEnable()==0){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ //2-修改状态
|
|
|
+ role.setIsEnable(0);
|
|
|
+ userRoleMapper.updateById(role);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|