10-角色授权-难(3课时)

角色授权:

菜单链接/admin/power/goPower
PowerController.java对应的action

@RequestMapping("/goPower")
public String goPower() {
    return "power";
}

四部分:

1)显示角色下拉列表框
step1 页面部分新增下拉列表power.jsp


其中:
class="mini-combobox" (下拉列表固定写法)
url:是初始化时请求的后台地址 会返回对象集合,集合里有role对象,role对象里有rolename,roleid,通过如下形式进行前后台绑定
emptyText="请选择..." 初始显示的内容

textField="rolename" valueField="roleid"

step 2后台PowerController.java

@RequestMapping("/getRole")
    public @ResponseBody List getRole(){
        //查询所有的角色
        List roles=iPowerSercive.getRole();
        System.out.println(roles);
        return roles;
    }
//省略service mapper代码

2)显示菜单(权限)checkbox

step1 页面部分新增下拉列表power.jsp

   

其中:
class="mini-checkboxlist" (checkbox固定写法)
url:是初始化时请求的后台地址 会返回对象集合,集合里有role对象,role对象里有id,text,通过如下形式进行前后台绑定
value="" 初始选中的内容(多个选项值之间用逗号分隔。框架支持的格式是1,2,3)
textField="text" valueField="id"

step 2后台PowerController.java

@RequestMapping("/getPower")
public @ResponseBody List getPower(){
    List power=iPowerSercive.getPower();
    return power;
}
//省略service mapper代码
  1. 实现级联。选中某个角色时,对应的菜单权限变化
    首选页面部分,第一部分里
    onvaluechanged="onDeptChanged" 触发一上事件

controller

@RequestMapping("/getPowerById")
public @ResponseBody ResultMsg getPowerById(String roleid){
    ResultMsg msg=iPowerSercive.getPowerById(roleid);
    return msg;
}

IPowerSercive

 ResultMsg getPowerById(String roleid);

PowerServiceImpl

@Override
public ResultMsg getPowerById(String roleid) {
    ResultMsg rst=new ResultMsg();
    Role role=new Role();
    role.setRoleid(roleid);
    List s=iPowerMapper.getPowerById(role);
    String powers=String.join(",",s);
    rst.setMsg(powers);
    return rst;
}

4)添加

 

对应的js

 function setPowers() {
        //获取选中的权限值,逗号分隔
        var newpowers=powers.getValue();
        //获取角色id
        var roleid=roles.getValue();
        //如果没有变化 ,提示一下
        if(oldpowers==newpowers){
            alert("请设置后再保存")
        }else{//如果权限的变更,发请求到后台,更改权限列表
            $.ajax({            
                type:"get",
                url: "<%=request.getContextPath()%>/admin/power/setPowers?roleid="+roleid+"&oldpowers="+oldpowers+"&newpowers="+newpowers, 
                dataType:"json",            
                success : function(rst) {               
                    alert(rst.msg)
                    roles.setValue("");
                    powers.setValue("");
                    powers.disable();
                }
            });
        }
    }

controller

@RequestMapping("/setPowers")
public @ResponseBody ResultMsg setPowers(String roleid,String oldpowers,String newpowers){      
    ResultMsg msg=iPowerSercive.setPowers(roleid,oldpowers,newpowers);
    return msg;
}

IPowerSercive接口

ResultMsg setPowers(String roleid, String oldpowers, String newpowers);

PowerServiceImpl实现类

@Override
public ResultMsg setPowers(String roleid, String oldpowers, String newpowers) {
    //ResultMsg用来返回设置好的权限的
    ResultMsg msg=new ResultMsg();
    Map addPowers;
    int dels=0;
    int adds=0;
    boolean flagdel=DataComparison.getDelPowers(oldpowers);
    if(flagdel){
        dels=iPowerMapper.delPowers(roleid);
    }
    //把添加的权限拼装成map,为了foreach循环,做批量添加
    addPowers=DataComparison.getAddPowers(newpowers);
    if(addPowers!=null){
        adds=iPowerMapper.addPowers(roleid,addPowers);
    }
    if(adds==addPowers.size()){
        msg.setCode(1);
        msg.setMsg("设置成功");
    }else{
        msg.setCode(0);
        msg.setMsg("设置失败");
    }
    return msg;
}

IPowerMapper

@Delete("delete from t_role_menu where roleid=#{roleid} ")
int delPowers(@Param("roleid") String rolieid);
@Insert({
    ""
})
int addPowers(@Param("roleid") String roleid,@Param("addPowers") Map addPowers);

DataComparison类

package com.neuedu.utils;

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

public class DataComparison {
    public static boolean getDelPowers(String oldpowers) {
        List powerList = new ArrayList();
        if (oldpowers.equals("") || oldpowers.equals(null)) {
            return false;
        } else {
            return true;
        }

    }

    public static Map getAddPowers(String newpowers) {
        Map powerMap = new HashMap<>();
        if (newpowers.equals("") || newpowers.equals(null)) {
            return null;
        } else {
            String[] addpowers = newpowers.split(",");
            for (int i = 0; i < addpowers.length; i++) {
                String uuid = UuidGenerateUtil.getUUID();
                powerMap.put(uuid, addpowers[i]);
            }
            return powerMap;
        }
    }

}

完整界面代码power.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>


Binding 数据绑定



 

    

角色授权

Description

你可能感兴趣的:(10-角色授权-难(3课时))