package com.fzzy.sys;
|
|
import com.bstek.dorado.annotation.DataProvider;
|
import com.bstek.dorado.annotation.DataResolver;
|
import com.bstek.dorado.annotation.Expose;
|
import com.fzzy.api.utils.ContextUtil;
|
import com.fzzy.sys.entity.SysResource;
|
import com.fzzy.sys.entity.SysRole;
|
import com.fzzy.sys.entity.SysUrl;
|
import com.fzzy.sys.repository.ResourceRepository;
|
import com.fzzy.sys.repository.RoleRepository;
|
import com.fzzy.sys.repository.UrlRepository;
|
import org.apache.commons.lang.StringUtils;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 权限维护
|
*/
|
@Component("sys.rolePR")
|
public class RolePR {
|
|
|
@Autowired
|
private RoleRepository roleRepository;
|
@Autowired
|
private UrlRepository urlRepository;
|
@Autowired
|
private ResourceRepository resourceRepository;
|
|
|
/**
|
* sys.rolePR#findAll
|
* @return
|
*/
|
@DataProvider
|
public List<SysRole> findAll() {
|
return roleRepository.findAll();
|
}
|
|
/**
|
* sys.rolePR#updateSave
|
* @param entity
|
*/
|
@DataResolver
|
public String updateSave(SysRole entity) {
|
|
// 手动将doradoEntity对象转换为标准Bean对象
|
SysRole data = new SysRole();
|
BeanUtils.copyProperties(entity, data);
|
if (StringUtils.isEmpty(data.getId())) {
|
data.setId(ContextUtil.getUUID());
|
}
|
roleRepository.save(data);
|
return null;
|
}
|
|
/**
|
* sys.rolePR#delData
|
*
|
*/
|
@Expose
|
public String delData(SysRole data) {
|
roleRepository.deleteById(data.getId());
|
return null;
|
}
|
|
/**
|
* sys.rolePR#updateSaveResource
|
* @param param
|
* @return
|
*/
|
@Expose
|
public String updateSaveResource(Map<String,Object> param) {
|
if(null == param){
|
return "没有获取到上传参数!";
|
}
|
String roleId = (String) param.get("roleId");
|
if(StringUtils.isEmpty(roleId)){
|
return "没有获取到角色信息!";
|
}
|
List<String> urlIds = (List<String>) param.get("ids");
|
if(urlIds == null){
|
return "没有获取到菜单信息!";
|
}
|
for(int i = 0; i < urlIds.size(); i++){
|
SysResource data = new SysResource();
|
data.setId(ContextUtil.getUUID());
|
data.setRoleId(roleId);
|
data.setUrlId(urlIds.get(i));
|
resourceRepository.save(data);
|
}
|
return null;
|
}
|
|
|
/**
|
* sys.rolePR#findUrlByRoleId
|
*
|
* @return
|
* 可以使用for循环
|
* 不能使用封装好的排序方法和foreach,会产生数组下标越界异常
|
*/
|
@DataProvider
|
public List<SysUrl> findUrlByRoleId(SysUrl sysUrl) {
|
if(sysUrl == null){
|
return null;
|
}
|
String parentId = sysUrl.getId();
|
String roleId = sysUrl.getRoleId();
|
|
//获取所有菜单信息
|
List<SysUrl> urlList = null;
|
if (StringUtils.isEmpty(parentId)) {
|
urlList = urlRepository.listUrl();
|
}else{
|
urlList = urlRepository.listUrlByParent(parentId);
|
}
|
if(urlList != null && urlList.size() > 0){
|
//查看权限中间关系
|
screenUrlByResource(urlList,roleId);
|
}
|
return urlList;
|
}
|
|
public void screenUrlByResource(List<SysUrl> urlList, String roleId){
|
//查询权限菜单关系
|
List<SysResource> sysResourceList = resourceRepository.listResourceByRoleId(roleId);
|
if(sysResourceList != null && sysResourceList.size() > 0){
|
//封装权限菜单关系
|
Map<String,SysResource> map = new HashMap<>();
|
for(int i = 0; i < sysResourceList.size(); i++){
|
map.put(sysResourceList.get(i).getUrlId(),sysResourceList.get(i));
|
}
|
for(int i = 0; i < urlList.size(); i++){
|
urlList.get(i).setUse((map.get(urlList.get(i).getId()) != null));
|
}
|
|
}
|
}
|
|
|
}
|