首页>代码>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;
    }
}
最近下载更多
sweetbox  LV10 2022年7月11日
caozongan  LV19 2022年2月16日
543666826  LV34 2021年11月20日
Seem丶君  LV3 2021年10月18日
缘------  LV9 2021年6月28日
ericxu1116  LV24 2021年6月11日
黄雨地里  LV4 2021年5月15日
缓缓归来  LV11 2021年5月5日
panbiao  LV11 2021年3月31日
jiaerkai  LV10 2020年11月29日
最近浏览更多
xuweiwowzy  LV5 2024年1月14日
Hachi6  LV13 2023年10月11日
矿泉水  LV30 2023年8月20日
dongzhan  LV12 2023年6月30日
wiston 2023年3月30日
暂无贡献等级
一颗葡萄 2022年11月22日
暂无贡献等级
sweetbox  LV10 2022年7月11日
暂无贡献等级
huaua7676  LV30 2022年4月17日
caozongan  LV19 2022年2月16日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友