其他分享
首页 > 其他分享> > 项目1-角色模块

项目1-角色模块

作者:互联网

角色模块

Controller

package com.atguigu.atcrowdfunding.controller;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.atguigu.atcrowdfunding.bean.TRole;
import com.atguigu.atcrowdfunding.service.TRoleService;
import com.atguigu.atcrowdfunding.util.Datas;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

@Controller
public class TRoleController {

	@Autowired
	TRoleService roleService ;
	
	Logger log = LoggerFactory.getLogger(TRoleController.class);
	
	
	@ResponseBody
	@RequestMapping("/role/listPermissionIdByRoleId")
	public List<Integer> listPermissionIdByRoleId(Integer roleId) {
	
		log.debug("roleId={}",roleId);
		
		List<Integer> list = roleService.listPermissionIdByRoleId(roleId);
		
		return list;
	}
	
	@ResponseBody
	@RequestMapping("/role/doAssignPermissionToRole")
	public String doAssignPermissionToRole(Integer roleId, Datas ds) {
	
		log.debug("roleId={}",roleId);
		log.debug("permissionIds={}",ds.getIds());
		
		roleService.saveRoleAndPermissionRelationship(roleId,ds.getIds());
		
		return "ok";
	}
	
	@ResponseBody
	@RequestMapping("/role/doDelete")
	public String doDelete(Integer id) {
		roleService.deleteTRole(id);
		return "ok";
	}
	
	@ResponseBody
	@RequestMapping("/role/doUpdate")
	public String doUpdate(TRole role) {
		roleService.updateTRole(role);
		return "ok";
	}
	
	
	@ResponseBody
	@RequestMapping("/role/getRoleById")
	public TRole getRoleById(Integer id) {
		return roleService.getRoleById(id);
	}
	
	@PreAuthorize("hasRole('PM - 项目经理')")
	@ResponseBody
	@RequestMapping("/role/doAdd")
	public String doAdd(TRole role) {
		roleService.saveTRole(role);
		return "ok";
	}
	
	
	@RequestMapping("/role/index")
	public String index() {
		
		return "role/index";
	}
	
	/**
	 * 启用消息转换器:HttpMessageConverter
	 * 
	 * 如果返回结果为对象(Entity Class,List,Map..)类型:启用这个转换器->MappingJackson2HttpMessageConverter 将对象序列化为json串,使用Jackson组件转换
	 * 如果返回结果为String类型:启用这个转换器->StringHttpMessageConverter  将字符串原样输出。
	 * 
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/role/loadData")
	public PageInfo<TRole> loadData(@RequestParam(value="pageNum",required=false,defaultValue="1") Integer pageNum,
								    @RequestParam(value="pageSize",required=false,defaultValue="2") Integer pageSize,
								    @RequestParam(value="condition",required=false,defaultValue="")  String condition) {
		
		PageHelper.startPage(pageNum, pageSize);
		
		Map<String,Object> paramMap = new HashMap<String,Object>();
		
		paramMap.put("condition",condition);
		
		PageInfo<TRole> page = roleService.listRolePage(paramMap) ;		
		
		return page;//转换为json串返回
	}
	
}

service

package com.atguigu.atcrowdfunding.service.impl;

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import com.atguigu.atcrowdfunding.bean.TRole;
import com.atguigu.atcrowdfunding.bean.TRoleExample;
import com.atguigu.atcrowdfunding.bean.TRolePermissionExample;
import com.atguigu.atcrowdfunding.mapper.TAdminRoleMapper;
import com.atguigu.atcrowdfunding.mapper.TRoleMapper;
import com.atguigu.atcrowdfunding.mapper.TRolePermissionMapper;
import com.atguigu.atcrowdfunding.service.TRoleService;
import com.github.pagehelper.PageInfo;

@Service
public class TRoleServiceImpl implements TRoleService {

	@Autowired
	TRoleMapper roleMapper ;
	
	@Autowired
	TAdminRoleMapper adminRoleMapper;
	
	@Autowired
	TRolePermissionMapper rolePermissionMapper;

	@Override
	public PageInfo<TRole> listRolePage(Map<String, Object> paramMap) {
		
		String condition = (String)paramMap.get("condition");
		
		List<TRole> list = null ;
		
		if(StringUtils.isEmpty(condition)) {
			list = roleMapper.selectByExample(null);
		}else {
			
			TRoleExample example = new TRoleExample();
			example.createCriteria().andNameLike("%"+condition+"%");
			
			list = roleMapper.selectByExample(example);
		}
		
		PageInfo<TRole> page = new PageInfo<TRole>(list,5);
		
		return page;
	}

	//@PreAuthorize("hasRole('PM - 项目经理')")
	@Override
	public void saveTRole(TRole role) {
		roleMapper.insertSelective(role);
	}

	@Override
	public TRole getRoleById(Integer id) {
		return roleMapper.selectByPrimaryKey(id);
	}

	@Override
	public void updateTRole(TRole role) {
		roleMapper.updateByPrimaryKeySelective(role);
	}

	@Override
	public void deleteTRole(Integer id) {
		roleMapper.deleteByPrimaryKey(id);
	}

	@Override
	public List<TRole> listAllRole() {
		return roleMapper.selectByExample(null);
	}

	@Override
	public List<Integer> getRoleIdByAdminId(String id) {
		return adminRoleMapper.getRoleIdByAdminId(id);
	}

	@Override
	public void saveAdminAndRoleRelationship(Integer[] roleId, Integer adminId) {
		adminRoleMapper.saveAdminAndRoleRelationship(roleId,adminId);
	}

	@Override
	public void deleteAdminAndRoleRelationship(Integer[] roleId, Integer adminId) {
		adminRoleMapper.deleteAdminAndRoleRelationship(roleId,adminId);
	}

	@Override
	public void saveRoleAndPermissionRelationship(Integer roleId, List<Integer> ids) {
		
		//先删除之前分配过的,然后再重新分配所有打钩的
		TRolePermissionExample example = new TRolePermissionExample();
		example.createCriteria().andRoleidEqualTo(roleId);
		rolePermissionMapper.deleteByExample(example);
		
		rolePermissionMapper.saveRoleAndPermissionRelationship(roleId,ids);
	}

	@Override
	public List<Integer> listPermissionIdByRoleId(Integer roleId) {
		return rolePermissionMapper.listPermissionIdByRoleId(roleId);
	}
}

页面

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

    pageEncoding="UTF-8"%>

<%@ taglib prefix="security" 
uri="http://www.springframework.org/security/tags" %>

<!DOCTYPE html>

<html lang="zh-CN">

  <head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, 
initial-scale=1">

    <meta name="description" content="">

    <meta name="author" content="">



<%@ include file="/WEB-INF/jsp/common/css.jsp" %>

     <style>

     .tree li {

        list-style-type: none;

          cursor:pointer;

     }

     table tbody tr:nth-child(odd){background:#F4F4F4;}

     table tbody td:nth-child(even){color:#C00;}

     </style>

  </head>



  <body>



    <jsp:include 
page="/WEB-INF/jsp/common/top.jsp"></jsp:include>



    <div class="container-fluid">

      <div class="row">

        <jsp:include 
page="/WEB-INF/jsp/common/sidebar.jsp"></jsp:include>

        <div class="col-sm-9 col-sm-offset-3 col-md-10 
col-md-offset-2 main">

              <div class="panel panel-default">

                <div class="panel-heading">

                   <h3 class="panel-title"><i 
class="glyphicon glyphicon-th"></i> 数据列表</h3>

                </div>

                <div class="panel-body">

<form class="form-inline" role="form" 
style="float:left;">

  <div class="form-group has-feedback">

    <div class="input-group">

      <div class="input-group-addon">查询条件</div>

      <input id="condition" class="form-control 
has-success" type="text" placeholder="请输入查询条件">

    </div>

  </div>

  <button id="queryBtn" type="button" class="btn 
btn-warning"><i class="glyphicon glyphicon-search"></i> 
查询</button>

</form>

<button type="button" class="btn btn-danger" 
style="float:right;margin-left:10px;"><i class=" 
glyphicon glyphicon-remove"></i> 删除</button>



<security:authorize access="hasRole('PM - 项目经理')">

<button id="addBtn" type="button" class="btn btn-primary" 
style="float:right;" ><i class="glyphicon 
glyphicon-plus"></i> 新增</button>

</security:authorize>

<br>

 <hr style="clear:both;">

          <div class="table-responsive">

            <table class="table  table-bordered">

              <thead>

                <tr >

                  <th width="30">#</th>

                     <th width="30"><input 
type="checkbox"></th>

                  <th>名称</th>

                  <th width="100">操作</th>

                </tr>

              </thead>

              <tbody>

                        

              </tbody>

                <tfoot>

                   <tr >

                        <td colspan="6" align="center">

                             <ul class="pagination"></ul>

                         </td>

                    </tr>



                </tfoot>

            </table>

          </div>

                </div>

              </div>

        </div>

      </div>

    </div>

    

    

    

    

<!-- 添加数据 模态框 -->

<div class="modal fade" id="addModal" tabindex="-1" 
role="dialog" aria-labelledby="myModalLabel">

  <div class="modal-dialog" role="document">

    <div class="modal-content">

      <div class="modal-header">

        <button type="button" class="close" 
data-dismiss="modal" aria-label="Close"><span 
aria-hidden="true">&times;</span></button>

        <h4 class="modal-title" id="myModalLabel">添加角色</h4>

      </div>

      <div class="modal-body">

            <div class="form-group">

              <label for="exampleInputPassword1">角色名称</label>

              <input type="text" class="form-control" 
id="name" name="name" placeholder="请输入角色名称">

            </div>

      </div>

      <div class="modal-footer">

        <button type="button" class="btn btn-default" 
data-dismiss="modal">关闭</button>

        <button id="saveBtn" type="button" class="btn 
btn-primary">保存</button>

      </div>

    </div>

  </div>

</div>

    

    

    

    

<!-- 修改数据 模态框 -->

<div class="modal fade" id="updateModal" tabindex="-1" 
role="dialog" aria-labelledby="myModalLabel">

  <div class="modal-dialog" role="document">

    <div class="modal-content">

      <div class="modal-header">

        <button type="button" class="close" 
data-dismiss="modal" aria-label="Close"><span 
aria-hidden="true">&times;</span></button>

        <h4 class="modal-title" id="myModalLabel">修改角色</h4>

      </div>

      <div class="modal-body">

            <div class="form-group">

              <label for="exampleInputPassword1">角色名称</label>

              <input type="hidden" name="id">

              <input type="text" class="form-control" 
id="name" name="name" placeholder="请输入角色名称">

            </div>

      </div>

      <div class="modal-footer">

        <button type="button" class="btn btn-default" 
data-dismiss="modal">关闭</button>

        <button id="updateBtn" type="button" class="btn 
btn-primary">修改</button>

      </div>

    </div>

  </div>

</div>

    

    

    

    

    

    

<!-- 修改数据 模态框 -->

<div class="modal fade" id="assignModal" tabindex="-1" 
role="dialog" aria-labelledby="myModalLabel">

  <div class="modal-dialog" role="document">

    <div class="modal-content">

      <div class="modal-header">

        <button type="button" class="close" 
data-dismiss="modal" aria-label="Close"><span 
aria-hidden="true">&times;</span></button>

        <h4 class="modal-title" id="myModalLabel">给角色分配权限</h4>

      </div>

      <div class="modal-body">

            <ul id="treeDemo" class="ztree"></ul>

      </div>

      <div class="modal-footer">

        <button type="button" class="btn btn-default" 
data-dismiss="modal">关闭</button>

        <button id="assignBtn" type="button" class="btn 
btn-primary">分配</button>

      </div>

    </div>

  </div>

</div>    

    

    

    

    

    

    

    

    

    

    

    

    



<%@ include file="/WEB-INF/jsp/common/js.jsp" %>

        <script type="text/javascript">

            $(function () { //页面加载完成需要执行事件处理

                  $(".list-group-item").click(function(){

                       if ( $(this).find("ul") ) {

                             $(this).toggleClass("tree-closed");

                             if ( 
$(this).hasClass("tree-closed") ) {

                                  $("ul", this).hide("fast");

                             } else {

                                  $("ul", 
this).show("fast");

                             }

                        }

                   });

            

            

                initData(1);

            });

            

            

            //======分页查询 开始================================================================

            var json = {

                    pageNum:1,

                    pageSize:2

               };

            

            function initData(pageNum){

                

                //1.发起ajax请求,获取分页数据

                

                json.pageNum = pageNum;

                

                var index = -1 ;

                

                $.ajax({

                    type:'post',

                    url:"${PATH}/role/loadData",

                    data:json,

                    beforeSend:function(){

                         index = 
layer.load(0,{time:10*1000});

                         return true ;

                    },

                    success:function(result){

                         

                         console.log(result);

                         layer.close(index);

                         

                         initShow(result);

                         

                         initNavg(result);

                    }

                });

                

            }

            

            

            //2.展示数据

          function initShow(result){

               console.log(result);

               

               $('tbody').empty();

               

               var list = result.list;                

               

               $.each(list,function(i,e){

                        var tr = $('<tr></tr>');

                        

                        tr.append('<td>'+(i+1)+'</td>');

                        tr.append('<td><input 
type="checkbox"></td>');

                        tr.append('<td>'+e.name+'</td>');

                        

                        var td = $('<td></td>');

                        td.append('<button type="button" 
roleId="'+e.id+'" class="assignPermissionClass btn 
btn-success btn-xs"><i class=" glyphicon 
glyphicon-check"></i></button>');

                        td.append(' <button type="button" 
roleId="'+e.id+'" class="updateClass btn btn-primary 
btn-xs"><i class=" glyphicon 
glyphicon-pencil"></i></button>');

                        td.append(' <button type="button" 
roleId="'+e.id+'" class="deleteClass btn btn-danger 
btn-xs"><i class=" glyphicon 
glyphicon-remove"></i></button>');

               

                        tr.append(td);

                        

                        tr.appendTo($('tbody'));

               });

          }

          

          //3.展示分页条

              function initNavg(result){

                   console.log(result);

                   

                   $('.pagination').empty();

                   

                   var navigatepageNums = 
result.navigatepageNums;

                   

                   if(result.isFirstPage){

                        $('.pagination').append($('<li 
class="disabled"><a href="#">上一页</a></li>'));

                   }else{

                        $('.pagination').append($('<li><a 
onclick="initData('+(result.pageNum-1)+')">上一页</a></li>'));

                   }

                   

                   

                   $.each(navigatepageNums,function(i,num){

                        

                        if(num == result.pageNum){

                             $('.pagination').append($('<li class="active"><a 
href="#">'+num+' <span 
class="sr-only">(current)</span></a></li>'));

                        }else{

                             $('.pagination').append($('<li><a 
onclick="initData('+num+')">'+num+'</a></li>'));

                        }

                        

                   });

                   

                   if(result.isLastPage){

                        $('.pagination').append($('<li 
class="disabled"><a href="#">下一页</a></li>'));

                   }else{

                        $('.pagination').append($('<li><a 
onclick="initData('+(result.pageNum+1)+')">下一页</a></li>'));

                   }

                   

          }

            

              //======分页查询 结束================================================================

          

          

          $("#queryBtn").click(function(){

               var condition = $("#condition").val();

               

               json.condition = condition;

               

               initData(1);

          });

          

          

          //===添加 开始==============================================================

               

          $("#addBtn").click(function(){

               $("#addModal").modal({

                    show:true,

                    backdrop:'static',

                    keyboard:false

               });

          });

               

          

          $("#saveBtn").click(function(){

               var name = $("#addModal 
input[name='name']").val();

               

               $.ajax({

                    type:"post",

                    url:"${PATH}/role/doAdd",

                    data:{

                         name:name

                    },

                    beforeSend:function(){

                         return true ;

                    },

                    success:function(result){

                         if("ok"==result){

                              layer.msg("保存成功",{time:1000},function(){

                                  $("#addModal").modal('hide');

                                  $("#addModal 
input[name='name']").val("");

                                  initData(1); //添加后初始化第一页,倒序排序。

                              });

                         }else if("403"==result){

                              layer.msg("您无权访问该功能!");

                         }else{

                              layer.msg("保存失败");

                         }

                    }

               });

               

          });

               

          //===添加 结束==============================================================

          

          

          //===修改 开始==============================================================

          /* 

          $(".updateClass").click(function(){

               alert("update");

          });

           */

          $('tbody').on('click','.updateClass',function(){

               //var roleId = this.roleId ;// this DOM对象, dom对象不能获取自定义属性。

               var roleId = $(this).attr("roleId");

               

               $.get("${PATH}/role/getRoleById",{id:roleId},function(result){

                    console.log(result);

                    

                    $("#updateModal").modal({

                         show:true,

                         backdrop:'static',

                         keyboard:false

                    });

                    

                    $("#updateModal 
input[name='name']").val(result.name);

                    $("#updateModal 
input[name='id']").val(result.id);

               });

               

               

               

          });

           

           

          $("#updateBtn").click(function(){

               var name = $("#updateModal 
input[name='name']").val();

               var id = $("#updateModal 
input[name='id']").val();

               

               $.post("${PATH}/role/doUpdate",{id:id,name:name},function(result){

                    if("ok"==result){

                        layer.msg("修改成功",{time:1000},function(){

                             $("#updateModal").modal('hide');

                             initData(json.pageNum); //初始化当前页

                        });

                    }else{

                        layer.msg("修改失败");

                    }

               });

          });

           

           

          //===修改 结束==============================================================

          

          

               

          //===删除 开始==============================================================

          $("tbody").on('click','.deleteClass',function(){

               var id = $(this).attr("roleId");

               

               layer.confirm("您确定要删除吗?",{btn:['确定','取消']},function(index){

                    

                    $.post("${PATH}/role/doDelete",{id:id},function(result){

                         if("ok"==result){

                              layer.msg("删除成功",{time:1000},function(){                             

                                  initData(json.pageNum); //初始化当前页

                              });

                         }else{

                              layer.msg("删除失败");

                         }

                    });

                    

                    layer.close(index);

               },function(index){

                    layer.close(index);

               });

               

          });

          

          //===删除 结束==============================================================

              

               

          //===给角色分配权限 开始==============================================================

          var roleId = '';   

          

          $("tbody").on("click",".assignPermissionClass",function(){

               $("#assignModal").modal({

                    show:true,

                    backdrop:'static',

                    keyboard:false

               });

               

               roleId = $(this).attr("roleId");

               

               initTree();

               

          });

          

          function initTree(){

               

               var setting = {

                         check: {

                              enable: true

                         },

                         data: {

                              simpleData: {

                                  enable: true,

                                  pIdKey: "pid"

                              },

                              key: {

                                  url: "xxx",

                                  name:"title"

                              }

                         },

                         view: {

                              addDiyDom: 
function(treeId,treeNode){

                                  $("#"+treeNode.tId+"_ico").removeClass();

                                  $("#"+treeNode.tId+"_span").before('<span 
class="'+treeNode.icon+'"></span>');

                              }

                         }

                         

               };

               

               

               //多个异步请求,执行先后顺序问题。

               

               //1.加载数据

               $.get("${PATH}/permission/listAllPermissionTree",function(data){            

                    //data.push({"id":0,"title":"系统权限","icon":"glyphicon glyphicon-asterisk"});

                    

                    var treeObj = 
$.fn.zTree.init($("#treeDemo"), setting, data);

                    //var treeObj = 
$.fn.zTree.getZTreeObj("treeDemo");

                    treeObj.expandAll(true);

                    

                    //2.回显已分配许可

                    $.get("${PATH}/role/listPermissionIdByRoleId",{roleId:roleId},function(data){

                         $.each(data,function(i,e){

                              var permissionId = e ;

                              var treeObj = 
$.fn.zTree.getZTreeObj("treeDemo");

                              var node = 
treeObj.getNodeByParam("id", permissionId, null);

                              treeObj.checkNode(node, 
true, false , false);

                         });

                    }); 

               }); 

               

               



          }

               

          $("#assignBtn").click(function(){

               

               var json = {

                         roleId:roleId

               };

               

               console.log(roleId);

               var treeObj = 
$.fn.zTree.getZTreeObj("treeDemo");

               var nodes = treeObj.getCheckedNodes(true);

               $.each(nodes,function(i,e){

                    var permissionId = e.id ;

                    console.log(permissionId);

                    

                    json['ids['+i+']'] = permissionId;

                    

                    //多条数据提交和接收

                    //json['userList[i].name'] = 'xxx';

                    //json['userList[i].age'] = 23;

               });

               

               

               

               $.ajax({

                    type:"post",

                    url:"${PATH}/role/doAssignPermissionToRole",

                    data:json,

                    success:function(result){

                         if("ok"==result){

                              layer.msg("分配成功",{time:1000},function(){

                                  $("#assignModal").modal('hide');

                              });

                         }else{

                              layer.msg("分配失败");

                         }

                    }

               });

               

          });

               

          //===给角色分配权限 结束==============================================================     

               

        </script>

  </body>

</html>

    


mapper

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 
3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper 
namespace="com.atguigu.atcrowdfunding.mapper.TRoleMapper">

  <resultMap id="BaseResultMap" 
type="com.atguigu.atcrowdfunding.bean.TRole">

    <id column="id" jdbcType="INTEGER" property="id" />

    <result column="name" jdbcType="VARCHAR" 
property="name" />

  </resultMap>

  

  

  

  

 <!--  List<TRole> listRoleByAdminId(Integer adminId); 
-->

  <select id="listRoleByAdminId" 
resultMap="BaseResultMap">

     select t_role.* from t_role join t_admin_role

          on t_role.id = t_admin_role.roleid

          where t_admin_role.adminid = #{adminId}

  </select>

  

  

  

  <delete id="deleteBatch">

          delete from t_role where id in

          <foreach collection="idList" item="roleId" 
open="(" separator="," close=")">

               ${roleId}

          </foreach>

  </delete>


一些注解

https://blog.csdn.net/u011410529/article/details/66974974

标签:function,角色,项目,roleId,role,result,模块,import,id
来源: https://www.cnblogs.com/suit000001/p/13832974.html