Search in sources :

Example 1 with SysPermission

use of com.jun.plugin.system.entity.SysPermission in project jun_springboot_api_service by wujun728.

the class PermissionController method updatePermission.

@PutMapping("/permission")
@ApiOperation(value = "更新菜单权限接口")
@LogAnnotation(title = "菜单权限管理", action = "更新菜单权限")
@RequiresPermissions("sys:permission:update")
public DataResult updatePermission(@RequestBody @Valid SysPermission vo) {
    if (StringUtils.isEmpty(vo.getId())) {
        return DataResult.fail("id不能为空");
    }
    SysPermission sysPermission = permissionService.getById(vo.getId());
    if (null == sysPermission) {
        throw new BusinessException(BaseResponseCode.DATA_ERROR);
    }
    // 只有类型变更或者所属菜单变更
    if (sysPermission.getType().equals(vo.getType()) || !sysPermission.getPid().equals(vo.getPid())) {
        verifyFormPid(vo);
    }
    permissionService.updatePermission(vo);
    return DataResult.success();
}
Also used : BusinessException(com.jun.plugin.system.common.exception.BusinessException) SysPermission(com.jun.plugin.system.entity.SysPermission) LogAnnotation(com.jun.plugin.system.common.aop.annotation.LogAnnotation) RequiresPermissions(org.apache.shiro.authz.annotation.RequiresPermissions) ApiOperation(io.swagger.annotations.ApiOperation)

Example 2 with SysPermission

use of com.jun.plugin.system.entity.SysPermission in project jun_springboot_api_service by wujun728.

the class PermissionServiceImpl method selectAllMenuByTree.

/**
 * 获取所有的目录菜单树排除按钮
 * 因为不管是新增或者修改
 * 选择所属菜单目录的时候
 * 都不可能选择到按钮
 * 而且编辑的时候 所属目录不能
 * 选择自己和它的子类
 */
@Override
public List<PermissionRespNode> selectAllMenuByTree(String permissionId) {
    List<SysPermission> list = selectAll();
    if (!CollectionUtils.isEmpty(list) && !StringUtils.isEmpty(permissionId)) {
        for (SysPermission sysPermission : list) {
            if (sysPermission.getId().equals(permissionId)) {
                list.remove(sysPermission);
                break;
            }
        }
    }
    List<PermissionRespNode> result = new ArrayList<>();
    // 新增顶级目录是为了方便添加一级目录
    PermissionRespNode respNode = new PermissionRespNode();
    respNode.setId("0");
    respNode.setTitle("默认顶级菜单");
    respNode.setSpread(true);
    respNode.setChildren(getTree(list, true));
    result.add(respNode);
    return result;
}
Also used : ArrayList(java.util.ArrayList) SysPermission(com.jun.plugin.system.entity.SysPermission) PermissionRespNode(com.jun.plugin.system.vo.resp.PermissionRespNode)

Example 3 with SysPermission

use of com.jun.plugin.system.entity.SysPermission in project jun_springboot_api_service by wujun728.

the class PermissionServiceImpl method deleted.

/**
 * 删除菜单权限
 * 判断是否 有角色关联
 * 判断是否有子集
 */
@Transactional(rollbackFor = Exception.class)
@Override
public void deleted(String permissionId) {
    // 获取关联userId
    List<String> userIds = getUserIdsById(permissionId);
    SysPermission sysPermission = sysPermissionMapper.selectById(permissionId);
    if (null == sysPermission) {
        log.error("传入 的 id:{}不合法", permissionId);
        throw new BusinessException(BaseResponseCode.DATA_ERROR);
    }
    // 获取下一级
    List<SysPermission> childs = sysPermissionMapper.selectList(Wrappers.<SysPermission>lambdaQuery().eq(SysPermission::getPid, permissionId));
    if (!CollectionUtils.isEmpty(childs)) {
        throw new BusinessException(BaseResponseCode.ROLE_PERMISSION_RELATION);
    }
    sysPermissionMapper.deleteById(permissionId);
    // 删除和角色关联
    rolePermissionService.remove(Wrappers.<SysRolePermission>lambdaQuery().eq(SysRolePermission::getPermissionId, permissionId));
    if (!CollectionUtils.isEmpty(userIds)) {
        // 刷新权限
        userIds.parallelStream().forEach(httpSessionService::refreshUerId);
    }
}
Also used : SysRolePermission(com.jun.plugin.system.entity.SysRolePermission) BusinessException(com.jun.plugin.system.common.exception.BusinessException) SysPermission(com.jun.plugin.system.entity.SysPermission) Transactional(org.springframework.transaction.annotation.Transactional)

Example 4 with SysPermission

use of com.jun.plugin.system.entity.SysPermission in project jun_springboot_api_service by wujun728.

the class PermissionServiceImpl method getChildExcBtn.

/**
 * 只递归获取目录和菜单
 */
private List<PermissionRespNode> getChildExcBtn(String id, List<SysPermission> all) {
    List<PermissionRespNode> list = new ArrayList<>();
    for (SysPermission sysPermission : all) {
        if (sysPermission.getPid().equals(id) && sysPermission.getType() != 3) {
            PermissionRespNode permissionRespNode = new PermissionRespNode();
            BeanUtils.copyProperties(sysPermission, permissionRespNode);
            permissionRespNode.setTitle(sysPermission.getName());
            permissionRespNode.setChildren(getChildExcBtn(sysPermission.getId(), all));
            list.add(permissionRespNode);
        }
    }
    return list;
}
Also used : ArrayList(java.util.ArrayList) SysPermission(com.jun.plugin.system.entity.SysPermission) PermissionRespNode(com.jun.plugin.system.vo.resp.PermissionRespNode)

Example 5 with SysPermission

use of com.jun.plugin.system.entity.SysPermission in project jun_springboot_api_service by wujun728.

the class PermissionServiceImpl method getPermissionsByUserId.

/**
 * 获取权限标识
 */
@Override
public Set<String> getPermissionsByUserId(String userId) {
    List<SysPermission> list = getPermission(userId);
    Set<String> permissions = new HashSet<>();
    if (CollectionUtils.isEmpty(list)) {
        return null;
    }
    for (SysPermission sysPermission : list) {
        if (!StringUtils.isEmpty(sysPermission.getPerms())) {
            permissions.add(sysPermission.getPerms());
        }
    }
    return permissions;
}
Also used : SysPermission(com.jun.plugin.system.entity.SysPermission) HashSet(java.util.HashSet)

Aggregations

SysPermission (com.jun.plugin.system.entity.SysPermission)8 PermissionRespNode (com.jun.plugin.system.vo.resp.PermissionRespNode)4 ArrayList (java.util.ArrayList)4 BusinessException (com.jun.plugin.system.common.exception.BusinessException)3 LogAnnotation (com.jun.plugin.system.common.aop.annotation.LogAnnotation)1 SysRolePermission (com.jun.plugin.system.entity.SysRolePermission)1 ApiOperation (io.swagger.annotations.ApiOperation)1 HashSet (java.util.HashSet)1 RequiresPermissions (org.apache.shiro.authz.annotation.RequiresPermissions)1 Transactional (org.springframework.transaction.annotation.Transactional)1