This commit is contained in:
xiangwb
2017-11-15 13:46:40 +08:00
parent 3879c4e287
commit cbf6486631
8 changed files with 185 additions and 41 deletions
@@ -18,6 +18,8 @@ public interface SysAuthorityRepository extends JpaRepository<SysAuthority, Stri
List<SysAuthority> getByParentIdAndEnable(String parentId, String enable);
List<SysAuthority> getByParentId(String parentId);
List<SysAuthority> getByEnableAndIdIn(String enable, List<String> ids);
}
@@ -56,7 +56,6 @@ public class SysAuthorityService {
result.setMessage("保存权限失败");
}
return result;
}
/**
@@ -128,7 +127,7 @@ public class SysAuthorityService {
}
/**
* 查询所有子节点
* 根据状态查询所有子节点
*
* @param parentId
* @param enable
@@ -137,7 +136,10 @@ public class SysAuthorityService {
public List<SysAuthority> listByParentEnable(String parentId, String enable) {
if (StringUtils.isEmpty(parentId))
parentId = CommonConstant.ROOT;
return sysAuthorityRepository.getByParentIdAndEnable(parentId, enable);
if (StringUtils.isNotEmpty(enable))
return sysAuthorityRepository.getByParentIdAndEnable(parentId, enable);
else
return sysAuthorityRepository.getByParentId(parentId);
}
/**
@@ -158,27 +160,6 @@ public class SysAuthorityService {
return list;
}
/**
* 递归查询父节点下所有权限的id集合,并将状态设置为禁用(禁用权限时用)
*
* @param parentId
* @return
*/
public List<SysAuthority> queryAllChildren(String parentId) {
//获取结果
List<SysAuthority> sysAuthoritys = listByParentEnable(parentId, CommonConstant.ISENABLE);
//遍历子集
List<SysAuthority> list = new ArrayList<>();
if (CollectionUtils.isNotEmpty(sysAuthoritys)) {
for (SysAuthority sysAuthority : sysAuthoritys) {
sysAuthority.setEnable(CommonConstant.ISNOTENABLE);
sysAuthority.setModifiedTime(new Date());
list.add(sysAuthority);
list.addAll(queryAllChildren(sysAuthority.getId()));
}
}
return list;
}
/**
* 根据父节点禁用所有子节点
@@ -204,7 +185,11 @@ public class SysAuthorityService {
*/
public List<SysAuthVo> queryAllChildren(String parentId, String enable) {
List<SysAuthVo> list = new ArrayList<>();
List<SysAuthority> authoritys = sysAuthorityRepository.getByParentIdAndEnable(parentId, enable);
List<SysAuthority> authoritys;
if (StringUtils.isNotEmpty(enable))
authoritys = sysAuthorityRepository.getByParentIdAndEnable(parentId, enable);
else
authoritys = sysAuthorityRepository.getByParentId(parentId);
if (CollectionUtils.isEmpty(authoritys))
return list;
SysAuthVo vo;
@@ -216,6 +201,28 @@ public class SysAuthorityService {
return list;
}
/**
* 递归查询父节点下所有权限的id集合,并将状态设置为禁用(禁用权限时用)
*
* @param parentId
* @return
*/
private List<SysAuthority> queryAllChildren(String parentId) {
//获取结果
List<SysAuthority> sysAuthoritys = listByParentEnable(parentId, CommonConstant.ISENABLE);
//遍历子集
List<SysAuthority> list = new ArrayList<>();
if (CollectionUtils.isNotEmpty(sysAuthoritys)) {
for (SysAuthority sysAuthority : sysAuthoritys) {
sysAuthority.setEnable(CommonConstant.ISNOTENABLE);
sysAuthority.setModifiedTime(new Date());
list.add(sysAuthority);
list.addAll(queryAllChildren(sysAuthority.getId()));
}
}
return list;
}
/**
* 检查code是否唯一 true唯一
*
@@ -62,4 +62,18 @@ public class SysRoleAuthorityService {
public List<SysRoleAuthority> listByRoleId(String roleId) {
return sysRoleAuthorityRepository.getByRoleId(roleId);
}
/**
* 批量删除
*
* @param roleAuthorities
* @return
*/
public RestMessage removeBatch(List<SysRoleAuthority> roleAuthorities) {
RestMessage result = new RestMessage();
sysRoleAuthorityRepository.deleteInBatch(roleAuthorities);
result.setSuccess(true);
result.setMessage("批量删除成功");
return result;
}
}
@@ -1,6 +1,7 @@
package com.xwbing.service;
import com.xwbing.entity.SysRole;
import com.xwbing.entity.SysRoleAuthority;
import com.xwbing.entity.SysUserRole;
import com.xwbing.exception.BusinessException;
import com.xwbing.repository.SysRoleRepository;
@@ -30,6 +31,8 @@ public class SysRoleService {
private SysRoleRepository sysRoleRepository;
@Resource
private SysUserRoleService sysUserRoleService;
@Resource
private SysRoleAuthorityService sysRoleAuthorityService;
private final Logger logger = LoggerFactory.getLogger(SysRoleService.class);
/**
@@ -68,7 +71,12 @@ public class SysRoleService {
SysRole one = getById(id);
if (one == null)
throw new BusinessException("该角色不存在");
//删除角色
sysRoleRepository.delete(id);
//删除角色权限
List<SysRoleAuthority> roleAuthorities = sysRoleAuthorityService.listByRoleId(id);
if (CollectionUtils.isNotEmpty(roleAuthorities))
sysRoleAuthorityService.removeBatch(roleAuthorities);
result.setMessage("删除成功");
result.setSuccess(true);
return result;
@@ -61,4 +61,18 @@ public class SysUserRoleService {
public List<SysUserRole> listByUserId(String userId) {
return sysUserRoleRepository.getByUserId(userId);
}
/**
* 批量删除
*
* @param userRoles
* @return
*/
public RestMessage removeBatch(List<SysUserRole> userRoles) {
RestMessage result = new RestMessage();
sysUserRoleRepository.deleteInBatch(userRoles);
result.setSuccess(true);
result.setMessage("批量删除成功");
return result;
}
}
@@ -36,6 +36,8 @@ public class SysUserService {
private SysRoleService sysRoleService;
@Resource
private SysAuthorityService sysAuthorityService;
@Resource
private SysUserRoleService sysUserRoleService;
/**
* 增
@@ -89,7 +91,13 @@ public class SysUserService {
if (CommonEnum.YesOrNoEnum.YES.getCode().equals(old.getAdmin())) {
throw new BusinessException("不能对管理员进行删除操作");
}
//删除用户
sysUserRepository.delete(id);
//删除用户角色
List<SysUserRole> sysUserRoles = sysUserRoleService.listByUserId(id);
if (CollectionUtils.isNotEmpty(sysUserRoles)) {
sysUserRoleService.removeBatch(sysUserRoles);
}
result.setMessage("删除成功");
result.setSuccess(true);
return result;
@@ -302,8 +310,8 @@ public class SysUserService {
List<SysRole> sysRoles = sysRoleService.listByUserIdEnable(userId, enable);
if (CollectionUtils.isEmpty(sysRoles))
return list;
List<SysAuthority> temp;
//遍获取每个角色拥有的权限,并去重
List<SysAuthority> temp;
for (SysRole sysRole : sysRoles) {
temp = sysAuthorityService.listByRoleIdEnable(sysRole.getId(), enable);
if (CollectionUtils.isNotEmpty(temp)) {