角色增加空树接口,删除改为物理删除

This commit is contained in:
s2042968 2025-01-06 15:28:21 +08:00
parent 0e7a54ba50
commit 1d76327674
6 changed files with 86 additions and 31 deletions

View File

@ -58,4 +58,10 @@ public class RoleController {
public ElectromagneticResult<?> getRoleNames() { public ElectromagneticResult<?> getRoleNames() {
return ElectromagneticResultUtil.success(roleService.getAllRoleNames()); return ElectromagneticResultUtil.success(roleService.getAllRoleNames());
} }
@ApiOperation(value="获得角色配置模版", notes = "")
@GetMapping(value = "/getRoleTemplate")
public ElectromagneticResult<?> getRoleTemplate() {
return ElectromagneticResultUtil.success(roleService.getRoleTemplate());
}
} }

View File

@ -63,11 +63,5 @@ public class Role {
*/ */
@TableField(value = "gmt_modified", fill = FieldFill.UPDATE) @TableField(value = "gmt_modified", fill = FieldFill.UPDATE)
private Date gmtModified; private Date gmtModified;
/**
* 是否有效:0-无效 1-有效
*/
@TableField(value = "effect_flag")
private Integer effectFlag;
} }

View File

@ -65,5 +65,12 @@ public interface RoleService extends IService<Role> {
* @return * @return
*/ */
RoleDTO getRoleByName(String roleName); RoleDTO getRoleByName(String roleName);
/**
* 空树
*
* @return
*/
RoleDTO getRoleTemplate();
} }

View File

@ -61,7 +61,7 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
.eq(EdFileRelation::getId1, queryId2).eq(EdFileRelation::getId2, queryId1); .eq(EdFileRelation::getId1, queryId2).eq(EdFileRelation::getId2, queryId1);
List<EdFileRelation> list = this.list(queryWrapper); List<EdFileRelation> list = this.list(queryWrapper);
if (!list.isEmpty()) { if (!list.isEmpty()) {
throw new BizException (HttpStatus.BAD_REQUEST.value(), "请勿重复建立关系"); throw new BizException (-1, "请勿重复建立关系");
} }
edFileRelation.setId(IdWorker.getSnowFlakeIdString()); edFileRelation.setId(IdWorker.getSnowFlakeIdString());
@ -137,8 +137,6 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
@Override @Override
@Transactional @Transactional
public Boolean checkNameUnique(String parentId, String fileName) { public Boolean checkNameUnique(String parentId, String fileName) {
EdFileInfo fileInfo = edFileInfoService.getById(parentId);
Assert.isTrue(fileInfo.getDataType().equals(EleDataTypeEnum.FOLDER.code) && !fileInfo.getPrjDir(), "层级目录不允许上传文件");
String mainName = FileUtil.mainName(fileName); String mainName = FileUtil.mainName(fileName);
String suffix = FileUtil.getSuffix(fileName); String suffix = FileUtil.getSuffix(fileName);
EdFileInfo newEdFileInfo = new EdFileInfo(); EdFileInfo newEdFileInfo = new EdFileInfo();
@ -184,8 +182,14 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
public ElectromagneticResult<?> uploadFileAndRelation(String parentId, String id, MultipartFile file, String descrption) { public ElectromagneticResult<?> uploadFileAndRelation(String parentId, String id, MultipartFile file, String descrption) {
Assert.isTrue(EleCommonUtil.isFileNameValid(file.getOriginalFilename()), NAME_VALID_MSG); Assert.isTrue(EleCommonUtil.isFileNameValid(file.getOriginalFilename()), NAME_VALID_MSG);
EdFileInfo fileInfo = edFileInfoService.getById(parentId); // 查找下一层看是否存在顶级定义相关文件如果存在则该层属于管理员层级定义的不允许上传文件
Assert.isTrue(fileInfo.getDataType().equals(EleDataTypeEnum.FOLDER.code) && !fileInfo.getPrjDir(), "层级目录不允许上传文件"); long dirCount = edFileInfoService.count(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getParentId, parentId)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getPrjDir, true)
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code));
Assert.isTrue(dirCount == 0, "层级目录不允许上传文件");
String fileName = file.getOriginalFilename(); String fileName = file.getOriginalFilename();
String mainName = FileUtil.mainName(fileName); String mainName = FileUtil.mainName(fileName);
String suffix = FileUtil.getSuffix(fileName); String suffix = FileUtil.getSuffix(fileName);

View File

@ -5,13 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum;
import com.electromagnetic.industry.software.common.exception.BizException; import com.electromagnetic.industry.software.common.exception.BizException;
import com.electromagnetic.industry.software.common.util.EleLog; import com.electromagnetic.industry.software.common.util.EleLog;
import com.electromagnetic.industry.software.common.util.IdWorker; import com.electromagnetic.industry.software.common.util.IdWorker;
import com.electromagnetic.industry.software.common.util.UserThreadLocal; import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper;
import com.electromagnetic.industry.software.manage.mapper.RoleMapper; import com.electromagnetic.industry.software.manage.mapper.RoleMapper;
import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo;
import com.electromagnetic.industry.software.manage.pojo.models.Role; import com.electromagnetic.industry.software.manage.pojo.models.Role;
@ -20,10 +23,7 @@ import com.electromagnetic.industry.software.manage.pojo.models.UserRole;
import com.electromagnetic.industry.software.manage.pojo.req.RoleDTO; import com.electromagnetic.industry.software.manage.pojo.req.RoleDTO;
import com.electromagnetic.industry.software.manage.pojo.req.RolePageDTO; import com.electromagnetic.industry.software.manage.pojo.req.RolePageDTO;
import com.electromagnetic.industry.software.manage.pojo.req.RolePermissionDTO; import com.electromagnetic.industry.software.manage.pojo.req.RolePermissionDTO;
import com.electromagnetic.industry.software.manage.service.PermissionService; import com.electromagnetic.industry.software.manage.service.*;
import com.electromagnetic.industry.software.manage.service.RolePermissionService;
import com.electromagnetic.industry.software.manage.service.RoleService;
import com.electromagnetic.industry.software.manage.service.UserRoleService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -44,14 +44,15 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
private RolePermissionService rolePermissionService; private RolePermissionService rolePermissionService;
@Resource @Resource
private UserRoleService userRoleService; private UserRoleService userRoleService;
@Resource
private CommonService commonService;
@Resource @Resource
private PermissionService permissionService; private PermissionService permissionService;
private EleLog log = new EleLog(RoleServiceImpl.class); private EleLog log = new EleLog(RoleServiceImpl.class);
@Autowired @Resource
private RoleMapper roleMapper; private RoleMapper roleMapper;
@Resource
private EdFileInfoMapper edFileInfoMapper;
/** /**
* 新建角色 * 新建角色
@ -129,17 +130,20 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
@Override @Override
public Boolean deleteRole(String roleId) { public Boolean deleteRole(String roleId) {
// 保留角色权限关联表 // 删除角色权限关联表
LambdaQueryWrapper<RolePermission> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(RolePermission::getRoleId, roleId);
rolePermissionService.remove(queryWrapper);
// 删除用户角色关联表 // 删除用户角色关联表
LambdaQueryWrapper<UserRole> queryWrapper1 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<UserRole> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.eq(UserRole::getRoleId, roleId); queryWrapper1.eq(UserRole::getRoleId, roleId);
userRoleService.remove(queryWrapper1); userRoleService.remove(queryWrapper1);
// 逻辑删除角色 // 删除角色
LambdaUpdateWrapper<Role> queryWrapper2 = new LambdaUpdateWrapper<>(); LambdaQueryWrapper<Role> queryWrapper2 = new LambdaQueryWrapper<>();
queryWrapper2.eq(Role::getRoleId, roleId) queryWrapper2.eq(Role::getRoleId, roleId);
.set(Role::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code); return this.remove(queryWrapper2);
return this.update(queryWrapper2);
} }
/** /**
@ -160,8 +164,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
roleDTO.setRoleName(role.getRoleName()); roleDTO.setRoleName(role.getRoleName());
roleDTO.setRoleDesc(role.getRoleDesc()); roleDTO.setRoleDesc(role.getRoleDesc());
// 查询当前层级树若层级树查询条件修改此处也需修改 List<EdFileInfo> infos = getFiles();
List<EdFileInfo> infos = commonService.selectAllAdminFolder(PRJ_PARENT_ID);
List<RolePermissionDTO> nodes = new ArrayList<>(); List<RolePermissionDTO> nodes = new ArrayList<>();
for (EdFileInfo info : infos) { for (EdFileInfo info : infos) {
@ -223,7 +226,6 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
if (StringUtils.isNotBlank(rolePageDTO.getRoleName())) { if (StringUtils.isNotBlank(rolePageDTO.getRoleName())) {
queryWrapper.eq("r.role_name", rolePageDTO.getRoleName()); queryWrapper.eq("r.role_name", rolePageDTO.getRoleName());
} }
queryWrapper.eq("r.effect_flag", EffectFlagEnum.EFFECT.code);
return roleMapper.getPageRoleDTO(page, queryWrapper); return roleMapper.getPageRoleDTO(page, queryWrapper);
} }
@ -237,8 +239,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
@Override @Override
public List<HashMap<String, String>> getAllRoleNames() { public List<HashMap<String, String>> getAllRoleNames() {
LambdaQueryWrapper<Role> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Role> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(Role::getRoleName) queryWrapper.select(Role::getRoleName);
.eq(Role::getEffectFlag, EffectFlagEnum.EFFECT.code);
List<String> roleNames = this.listObjs(queryWrapper).stream().map(Object::toString).collect(Collectors.toList()); List<String> roleNames = this.listObjs(queryWrapper).stream().map(Object::toString).collect(Collectors.toList());
List<HashMap<String,String>> result = new ArrayList<>(); List<HashMap<String,String>> result = new ArrayList<>();
@ -251,6 +252,38 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
return result; return result;
} }
/**
* 空树
*
* @return
*/
@Transactional
@Override
public RoleDTO getRoleTemplate() {
RoleDTO roleDTO = new RoleDTO();
List<EdFileInfo> infos = getFiles();
List<RolePermissionDTO> nodes = new ArrayList<>();
for (EdFileInfo info : infos) {
RolePermissionDTO rolePermissionDTO = new RolePermissionDTO();
rolePermissionDTO.setId(info.getId());
rolePermissionDTO.setParentId(info.getParentId());
rolePermissionDTO.setFileName(info.getFileName());
List<String> permissionCodes = new ArrayList<>();
Map<String, Boolean> dataAuth = new HashMap<>();
dataAuth.put("data", false);
rolePermissionDTO.setDataAuth(dataAuth);
rolePermissionDTO.setPermission(permissionService.transToMap(permissionCodes));
nodes.add(rolePermissionDTO);
}
roleDTO.setData(buildTree(nodes));
return roleDTO;
}
/** /**
* 校验当前角色名称是否唯一 * 校验当前角色名称是否唯一
* *
@ -320,5 +353,16 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
.peek(node -> node.setChildren(findChildren(node, nodes))) // 递归设置子节点 .peek(node -> node.setChildren(findChildren(node, nodes))) // 递归设置子节点
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
/**
* 获取层级树结构
* @return
*/
private List<EdFileInfo> getFiles() {
return edFileInfoMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code)
.eq(EdFileInfo::getPrjDir, true));
}
} }

View File

@ -49,7 +49,7 @@ public class UserServiceImpl implements UserService {
private TokenMapper tokenMapper; private TokenMapper tokenMapper;
@Resource @Resource
private UserRoleMapper userRoleMapper; private UserRoleMapper userRoleMapper;
@Autowired @Resource
private RoleMapper roleMapper; private RoleMapper roleMapper;
/** /**
@ -278,7 +278,7 @@ public class UserServiceImpl implements UserService {
@Override @Override
public Boolean bindRoles(UserRoleRequest userRolesRequest) { public Boolean bindRoles(UserRoleRequest userRolesRequest) {
if (userRolesRequest == null || userRolesRequest.getBindData().isEmpty()) { if (userRolesRequest == null || userRolesRequest.getBindData().isEmpty()) {
throw new BizException(HttpStatus.BAD_REQUEST.value(), "请勿发布空数据"); throw new BizException(-1, "请勿发布空数据");
} }
for (UserBindRoleDTO dto : userRolesRequest.getBindData()) { for (UserBindRoleDTO dto : userRolesRequest.getBindData()) {
activeRole(dto); activeRole(dto);