您的位置:首页 > 数据库 > Redis

基于springboot+redis+bootstrap+mysql开发一套属于自己的分布式springcloud云权限架构(十三)【权限架构生产者(改造角色管理)】

2018-02-22 21:35 711 查看
     在第十二章我们完成了对菜单管理的集成,在第九章我们完成了角色了管理,但是我们并没有将菜单和角色两者关联上,因此本章将在这两章的基础上进行一次改造,使得我们的菜单和角色产生关联。
     打开我们的UserRoleService.java改造成以下的内容:
package com.produce.sys.service;

import com.base.entity.QueryUserRole;
import com.base.entity.RoleAssociateTree;
import com.base.entity.Tree;
import com.base.entity.UserRole;
import com.produce.common.base.dao.GenericDao;
import com.produce.common.base.service.GenericService;
import com.produce.sys.dao.RoleAssociateTreeDao;
import com.produce.sys.dao.UserRoleDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
*@author linzf
**/
@Service("userRoleService")
@Transactional(rollbackFor={IllegalArgumentException.class})
public class UserRoleService extends GenericService<UserRole, QueryUserRole> {
@Autowired
@SuppressWarnings("SpringJavaAutowiringInspection")
private UserRoleDao userRoleDao;
@Autowired
@SuppressWarnings("SpringJavaAutowiringInspection")
private RoleAssociateTreeDao roleAssociateTreeDao;

@Override
protected GenericDao<UserRole, QueryUserRole> getDao() {
return userRoleDao;
}

/**
* 功能描述:获取权限菜单数据
* @param entity
* @return
*/
public UserRole getUserRoleAssociate(UserRole entity){
return userRoleDao.getUserRoleAssociate(entity);
}

/**
* 功能描述:删除角色数据
* @param entityList
* @return
* @throws Exception
*/
@Override
public boolean removeBath(List<UserRole> entityList) throws Exception {
for(UserRole userRole:entityList){
roleAssociateTreeDao.removeTreeByRoleId(userRole);
}
return super.removeBath(entityList);
}

/**
* 增加角色数据
* @param entity 保存对象
* @return
* @throws Exception
*/
@Override
public boolean save(UserRole entity) throws Exception {
entity.packagingTrees(entity.getTreeArray());
List<Tree> treeList = entity.getTreeList();
boolean success = super.save(entity);
for(Tree tree:treeList){
roleAssociateTreeDao.save(new RoleAssociateTree(entity.getId(),tree.getId()));
}
return success;
}

@Override
public boolean update(UserRole entity) throws Exception {
entity.packagingTrees(entity.getTreeArray());
List<Tree> treeList = entity.getTreeList();
roleAssociateTreeDao.removeTreeByRoleId(entity);
for(Tree tree:treeList){
roleAssociateTreeDao.save(new RoleAssociateTree(entity.getId(),tree.getId()));
}
return super.update(entity);
}
}     接着打开我们的RoleController.java改造成以下的内容:package com.produce.sys.controller;

import com.base.entity.QueryUserRole;
import com.base.entity.Tree;
import com.base.entity.UserRole;
import com.produce.common.base.constant.SystemStaticConst;
import com.produce.common.base.controller.GenericController;
import com.produce.common.base.service.GenericService;
import com.produce.sys.service.TreeService;
import com.produce.sys.service.UserRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/*
* 类描述:
* @auther linzf
* @create 2018/2/6 0006
*/
@RestController
@RequestMapping("/role")
public class RoleController extends GenericController<UserRole, QueryUserRole> {

@Autowired
private UserRoleService userRoleService;

@Autowired
private TreeService treeService;

@Override
protected GenericService<UserRole, QueryUserRole> getService() {
return userRoleService;
}

@RequestMapping(value = "/loadRoleTree",method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE)
public Map<String,Object> loadRoleTree(@RequestBody UserRole entity){
entity = userRoleService.getUserRoleAssociate(entity);
List<Tree> treeList = treeService.query(null);
if(entity!=null){
for(Tree tree:entity.getTreeList()){
treeList.stream().forEach(t->{
if(t.getId()==tree.getId()){
t.setChecked(true);
}
});
}
}
Map<String,Object> result = new HashMap<String, Object>();
result.put(SystemStaticConst.RESULT, SystemStaticConst.SUCCESS);
result.put("data",treeList);
return result;
}

}
     到此处我们已经完成了对权限架构生产者的集成工作,在下一章节我们将阐述如何实现权限架构消费者的实现。
     到此为止的GitHub项目地址:https://github.com/185594-5-27/spring-cloud-rbac/tree/master-base-produce-complete

上一篇文章地址:基于springboot+redis+bootstrap+mysql开发一套属于自己的分布式springcloud云权限架构(十二)【权限架构生产者(菜单管理)】下一篇文章地址:基于springboot+redis+bootstrap+mysql开发一套属于自己的分布式springcloud云权限架构(十四)【权限架构消费者(通用类编写)】
QQ交流群:578746866
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐