重构角色管理,数据权限更完善

This commit is contained in:
阿沐 2022-07-23 17:12:00 +08:00
parent f8d6a23cf0
commit 6c6d51a4d2
4 changed files with 61 additions and 5 deletions

View File

@ -15,6 +15,7 @@ import net.maku.system.service.SysRoleMenuService;
import net.maku.system.service.SysRoleService;
import net.maku.system.vo.SysMenuVO;
import net.maku.system.query.SysRoleQuery;
import net.maku.system.vo.SysRoleDataScopeVO;
import net.maku.system.vo.SysRoleVO;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@ -93,6 +94,15 @@ public class SysRoleController {
return Result.ok();
}
@PutMapping("data-scope")
@Operation(summary = "数据权限")
@PreAuthorize("hasAuthority('sys:role:update')")
public Result<String> dataScope(@RequestBody @Valid SysRoleDataScopeVO vo){
sysRoleService.dataScope(vo);
return Result.ok();
}
@DeleteMapping
@Operation(summary = "删除")
@PreAuthorize("hasAuthority('sys:role:delete')")

View File

@ -4,6 +4,7 @@ import net.maku.framework.common.page.PageResult;
import net.maku.framework.common.service.BaseService;
import net.maku.system.entity.SysRoleEntity;
import net.maku.system.query.SysRoleQuery;
import net.maku.system.vo.SysRoleDataScopeVO;
import net.maku.system.vo.SysRoleVO;
import java.util.List;
@ -23,5 +24,7 @@ public interface SysRoleService extends BaseService<SysRoleEntity> {
void update(SysRoleVO vo);
void dataScope(SysRoleDataScopeVO vo);
void delete(List<Long> idList);
}

View File

@ -15,10 +15,12 @@ import net.maku.system.service.SysRoleMenuService;
import net.maku.system.service.SysRoleService;
import net.maku.system.service.SysUserRoleService;
import net.maku.system.query.SysRoleQuery;
import net.maku.system.vo.SysRoleDataScopeVO;
import net.maku.system.vo.SysRoleVO;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.List;
/**
@ -63,14 +65,11 @@ public class SysRoleServiceImpl extends BaseServiceImpl<SysRoleDao, SysRoleEntit
SysRoleEntity entity = SysRoleConvert.INSTANCE.convert(vo);
// 保存角色
entity.setDataScope(DataScopeEnum.CUSTOM.getValue());
entity.setDataScope(DataScopeEnum.SELF.getValue());
baseMapper.insert(entity);
// 保存角色菜单关系
sysRoleMenuService.saveOrUpdate(entity.getId(), vo.getMenuIdList());
// 保存角色数据权限关系
sysRoleDataScopeService.saveOrUpdate(entity.getId(), vo.getOrgIdList());
}
@Override
@ -83,9 +82,22 @@ public class SysRoleServiceImpl extends BaseServiceImpl<SysRoleDao, SysRoleEntit
// 更新角色菜单关系
sysRoleMenuService.saveOrUpdate(entity.getId(), vo.getMenuIdList());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void dataScope(SysRoleDataScopeVO vo) {
SysRoleEntity entity = getById(vo.getId());
entity.setDataScope(vo.getDataScope());
// 更新角色
updateById(entity);
// 更新角色数据权限关系
sysRoleDataScopeService.saveOrUpdate(entity.getId(), vo.getOrgIdList());
if(vo.getDataScope().equals(DataScopeEnum.CUSTOM.getValue())){
sysRoleDataScopeService.saveOrUpdate(entity.getId(), vo.getOrgIdList());
}else {
sysRoleDataScopeService.deleteByRoleIdList(Collections.singletonList(vo.getId()));
}
}
@Override

View File

@ -0,0 +1,31 @@
package net.maku.system.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
/**
* 角色数据权限
*
* @author 阿沐 babamu@126.com
*/
@Data
@Schema(description = "角色数据权限")
public class SysRoleDataScopeVO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@NotNull(message = "角色ID不能为空")
private Long id;
@Schema(description = "数据范围 0全部数据 1本部门及子部门数据 2本部门数据 3本人数据 4自定义数据")
@NotNull(message = "数据范围不能为空")
private Integer dataScope;
@Schema(description = "机构ID列表")
private List<Long> orgIdList;
}