首页>代码>ssm+apache shiro实现按钮级别的网站权限控制项目实例>/SSMShiro/src/main/java/com/sharainy/contoller/RoleController.java
package com.sharainy.contoller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.sharainy.pojo.Resource;
import com.sharainy.pojo.Role;
import com.sharainy.pojo.RoleResource;
import com.sharainy.service.IResourceService;
import com.sharainy.service.IRoleService;
/**
*@标题RoleController
* @作者: Sharainy
* @创建时间: 2018-06-29 0029
* @描述:
*/
@Controller
@RequestMapping("/admin/role")
public class RoleController {
private static final Logger logger = LoggerFactory.getLogger(RoleController.class);
@Autowired
private IRoleService roleService;
@Autowired
private IResourceService resourceService;
/**
* 跳转到查询所有角色的页面
* @return
*/
@RequiresPermissions("role:list")
@RequestMapping(value = "/list",method = RequestMethod.GET)
public String list(Model model){
List<Role> roleList = roleService.list();
model.addAttribute("roleList",roleList);
return "role/list";
}
/**
* 跳转到添加角色的页面
* @return
*/
@RequiresPermissions("role:add")
@RequestMapping(value = "/add",method = RequestMethod.GET)
public String add(Model model){
// 为了表单回显的须要,要在 Model 里添加一个新对象
model.addAttribute("role",new Role());
return "role/add";
}
/**
* 添加用户角色的后台方法
* @param role
* @return
*/
@RequiresPermissions("role:add")
@RequestMapping(value = "/add",method = RequestMethod.POST)
public String add(Role role){
logger.debug(role.toString());
roleService.add(role);
return "redirect:list";
}
/**
* 跳转到更新角色的页面
* @param id
* @param model
* @return
*/
@RequiresPermissions("role:update")
@RequestMapping(value = "/update/{id}",method = RequestMethod.GET)
public String update(@PathVariable("id") Integer id, Model model){
Role role = roleService.load(id);
model.addAttribute("role",role);
return "role/update";
}
/**
* 修改角色对象的方法
* @param role
* @return
*/
@RequiresPermissions("role:update")
@RequestMapping(value = "/update/{id}",method = RequestMethod.POST)
public String update(Role role){
logger.debug(role.toString());
roleService.update(role);
return "redirect:/admin/role/list";
}
@RequestMapping(value = "/resources/{id}",method = RequestMethod.GET)
public String listResources(@PathVariable("id") Integer id,Model model){
/**
* 查询这个角色拥有的资源集合
*/
List<Resource> hasResourceList = roleService.listRoleResource(id);
List<Integer> hasResourceIds = new ArrayList<>();
for(Resource resource:hasResourceList){
hasResourceIds.add(resource.getId());
}
// 查询所有资源列表
List<Resource> resourceAllList = resourceService.listResource();
// 查询角色对象
Role role = roleService.load(id);
model.addAttribute("hasResourceIds",hasResourceIds);
model.addAttribute("resourceList",resourceAllList);
model.addAttribute("role",role);
return "role/resources";
}
/**
* 设置用户权限
* @return
*/
@ResponseBody
@RequestMapping(value = "/resource",method = RequestMethod.POST)
public Map<String,Object> resource(RoleResource roleResource,Integer check){
logger.debug(roleResource.toString());
Integer roleId = roleResource.getRoleId();
Integer resourceId = roleResource.getResourceId();
Map<String,Object> result = new HashMap<>();
if(check != null){
if(check == 0){
roleService.deleteRoleResource(roleId,resourceId);
}
if(check == 1){
roleService.addRoleResource(roleId,resourceId);
}
result.put("success",true);
}else {
result.put("success",false);
result.put("errorInfo","数据修改失败");
}
return result;
}
/**
*
* @param roleIds
*/
@RequiresPermissions("role:delete")
@ResponseBody
@RequestMapping(value = "/delete",method = RequestMethod.POST)
public Map<String,Object> deleteRole(@RequestParam("roleIds[]") List<Integer> roleIds){
logger.debug(roleIds.toString());
for(Integer roleId:roleIds){
logger.debug(roleId.toString());
}
// 先批量删除角色,再从角色资源表中删除角色资源数据
roleService.deleteRoleAndResource(roleIds);
// 用户绑定到这个角色上,也应该删除
roleService.deleteRoleAndUser(roleIds);
Map<String,Object> result = new HashMap<>();
result.put("success",true);
return result;
}
}
最近下载更多

最近浏览