8 用户管理

2020-04-03  本文已影响0人  wqjcarnation

目标

用户添加时给用户赋角色

1、FindAllRoleServlet(/findAllRole)

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //查询t_role里所有的信息,做为一个list传到前台下拉列表数据备用
    IRoleService roleservice=new RoleServiceImpl();
    List<SysRole> roleList = null;
    try {
        roleList = roleservice.findAll();
    } catch (ClassNotFoundException | SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }//roleid rolename
    //把list包装成resp
    ResponseBean resp=new ResponseBean();
    //转成json,传到前台
    resp.setList(roleList);
    ObjectMapper om=new ObjectMapper();
    String json=om.writeValueAsString(resp);
    System.out.println(json);
    response.getWriter().write(json);
    
}

2、前台register.vue增加角色下拉列表

<el-form-item label="角色">
<el-select v-model="ruleForm.power" placeholder="请选择角色">
<el-option
v-for="role in roleList"
:key="role.roleId"
:label="role.roleName"
:value="role.roleId">
</el-option>
</el-select>
</el-form-item>

return {
roleList:[],
ruleForm: {
。。。。
power:''
},

mounted(){
  this.$axios.get("http://localhost:8082/vue-servlet/findAllRole")
  .then(response=>{
    console.log(response);
    this.roleList=response.data.list;
  })
}

3、用户注册时,后台获取角色 id

    @WebServlet("/regServlet")
    public class RegisterServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //获取前台的请求参数
    String username=request.getParameter("username");
    String password=request.getParameter("pass");
    String email=request.getParameter("email");
    String idcard=request.getParameter("idcard");
    String type=request.getParameter("typestr");
    String roleid=request.getParameter("power");
    
    //@TODO 进行必要的验证
    //@TODO 调用service进行处理---dao---jdbc
    //给前台一个响应结果
    response.getWriter().print("success");
}

根据用户的角色显示不同的菜单

查询该用户的菜单权限

简洁方法

新建视图:v_role_menu_parent

select a.*,b.parentid
from t_role_menu a,t_menu b
where a.menuid=b.menuid

读取菜单
父菜单
select *
from t_menu
where visible=0 and parentID=0
and parentid in(select parentid from v_role_menu_parent where roleid='5d8b69537ca04463ba1db331dfb231d0')

子菜单
select * from t_menu
where visible=0 and parentid=2
and menuid in (select menuid from t_role_menu where roleid='5d8b69537ca04463ba1db331dfb231d0')

改造FindMenuByParentId

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //获取页面传输的parentId
    String parentId=request.getParameter("parentId");
    //调用后台查询
    IMenuService us = new MenuServiceImpl();
    List<SysMenu> menuList=null;
    try {
        HttpSession session=request.getSession();
        User u=(User) session.getAttribute("user");
        String role=u.getPower();
        //menuList = us.getMenuList(parentId);
        menuList = us.getMenuListByRole(parentId,role);
    } catch (ClassNotFoundException | SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //拼装response对象
    ResponseBean resp=new ResponseBean();
    resp.setList(menuList);
    resp.setCode("0");
    //转json
    ObjectMapper om=new  ObjectMapper();
    String json=om.writeValueAsString(resp);
    System.out.println(json);
    //打印到前台 
    response.getWriter().print(json);
    
}

新增加查询方法

@Override
public List<SysMenu> getMenuListByRole(String parentId,String role) throws SQLException, ClassNotFoundException {
    List<SysMenu> list=new ArrayList();
       Connection conn=DBUtil.getConnection();
       PreparedStatement ps=null;
       ResultSet rs=null;
       String sql="";
       if(parentId.equals("0")){
           sql="select * from t_menu  where visible=0 and parentID=? and parentid in(select parentid from v_role_menu_parent  where roleid=?)";
       }else{
           sql="select * from t_menu  where visible=0 and  parentID=? and menuid  in(select menuid  from v_role_menu_parent  where roleid=?)";
       }
        try {
            ps=conn.prepareStatement(sql);
            ps.setInt(1, Integer.parseInt(parentId));
            ps.setString(2, role);
            rs=ps.executeQuery();
            while(rs.next()){//如果有该用户
                SysMenu obj=new SysMenu();
                obj.setMenuId(rs.getInt("menuId"));
                obj.setMenuName(rs.getString("menuName"));
                obj.setPath(rs.getString("path"));
                obj.setIcon(rs.getString("icon"));
                obj.setVisible(rs.getString("visible"));
                obj.setParentId(rs.getInt("parentId"));
                obj.setParentName(rs.getString("parentName"));
                obj.setOrderNum(rs.getString("orderNum"));
                list.add(obj);
            }
        } catch (SQLException e) {

            e.printStackTrace();
        }
        DBUtil.closeDB(rs, ps, conn);
        return list;
}

效果

普通管理员

image.png

超级管理员


image.png
上一篇 下一篇

猜你喜欢

热点阅读