众筹网站项目第七天之用户角色分配(1)
打开原教程视频
注:本人是渣渣,有错请谅解。
实现用户角色分配功能
1、数据准备
insert into `t_role` (`id`, `name`) values('1','PM - 项目经理');
insert into `t_role` (`id`, `name`) values('2','SE - 软件工程师');
insert into `t_role` (`id`, `name`) values('3','PG - 程序员');
insert into `t_role` (`id`, `name`) values('4','TL - 组长');
insert into `t_role` (`id`, `name`) values('5','GL - 组长');
insert into `t_role` (`id`, `name`) values('6','QA - 品质保证');
insert into `t_role` (`id`, `name`) values('7','QC - 品质控制');
insert into `t_role` (`id`, `name`) values('8','SA - 软件架构师');
insert into `t_role` (`id`, `name`) values('9','CMO / CMS - 配置管理员');
2、页面准备
在main工程下的/WEB-INF/jsp/user目录下创建assignRole.jsp文件,在文件中添加下面代码
<%--Created by IntelliJ IDEA.User: 黄彬Date: 2020/6/15Time: 22:27To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="zh-CN">
<head><base href="<%=basePath%>"/><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=""><link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"><link rel="stylesheet" href="css/font-awesome.min.css"><link rel="stylesheet" href="css/main.css"><link rel="stylesheet" href="css/doc.min.css"><style>.tree li {list-style-type: none;cursor:pointer;}</style>
</head><body><nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"><div class="container-fluid"><div class="navbar-header"><div><a class="navbar-brand" style="font-size:32px;" href="user.html">众筹平台 - 用户维护</a></div></div><div id="navbar" class="navbar-collapse collapse"><ul class="nav navbar-nav navbar-right"><li style="padding-top:8px;"><div class="btn-group"><button type="button" class="btn btn-default btn-success dropdown-toggle" data-toggle="dropdown"><i class="glyphicon glyphicon-user"></i> ${sessionScope.user.username} <span class="caret"></span></button><ul class="dropdown-menu" role="menu"><li><a href="#"><i class="glyphicon glyphicon-cog"></i> 个人设置</a></li><li><a href="#"><i class="glyphicon glyphicon-comment"></i> 消息</a></li><li class="divider"></li><li><a href="dispatcherController/logout.do"><i class="glyphicon glyphicon-off"></i> 退出系统</a></li></ul></div></li><li style="margin-left:10px;padding-top:8px;"><button type="button" class="btn btn-default btn-danger"><span class="glyphicon glyphicon-question-sign"></span> 帮助</button></li></ul><form class="navbar-form navbar-right"><input type="text" class="form-control" placeholder="Search..."></form></div></div>
</nav><div class="container-fluid"><div class="row"><div class="col-sm-3 col-md-2 sidebar"><div class="tree">
<%-- <ul style="padding-left:0px;" class="list-group">--%>
<%-- <li class="list-group-item tree-closed" >--%>
<%-- <a href="main.html"><i class="glyphicon glyphicon-dashboard"></i> 控制面板</a>--%>
<%-- </li>--%>
<%-- <li class="list-group-item">--%>
<%-- <span><i class="glyphicon glyphicon glyphicon-tasks"></i> 权限管理 <span class="badge" style="float:right">3</span></span>--%>
<%-- <ul style="margin-top:10px;">--%>
<%-- <li style="height:30px;">--%>
<%-- <a href="user.html" style="color:red;"><i class="glyphicon glyphicon-user"></i> 用户维护</a>--%>
<%-- </li>--%>
<%-- <li style="height:30px;">--%>
<%-- <a href="role.html"><i class="glyphicon glyphicon-certificate"></i> 角色维护</a>--%>
<%-- </li>--%>
<%-- <li style="height:30px;">--%>
<%-- <a href="permission.html"><i class="glyphicon glyphicon-lock"></i> 许可维护</a>--%>
<%-- </li>--%>
<%-- </ul>--%>
<%-- </li>--%>
<%-- <li class="list-group-item tree-closed">--%>
<%-- <span><i class="glyphicon glyphicon-ok"></i> 业务审核 <span class="badge" style="float:right">3</span></span>--%>
<%-- <ul style="margin-top:10px;display:none;">--%>
<%-- <li style="height:30px;">--%>
<%-- <a href="auth_cert.html"><i class="glyphicon glyphicon-check"></i> 实名认证审核</a>--%>
<%-- </li>--%>
<%-- <li style="height:30px;">--%>
<%-- <a href="auth_adv.html"><i class="glyphicon glyphicon-check"></i> 广告审核</a>--%>
<%-- </li>--%>
<%-- <li style="height:30px;">--%>
<%-- <a href="auth_project.html"><i class="glyphicon glyphicon-check"></i> 项目审核</a>--%>
<%-- </li>--%>
<%-- </ul>--%>
<%-- </li>--%>
<%-- <li class="list-group-item tree-closed">--%>
<%-- <span><i class="glyphicon glyphicon-th-large"></i> 业务管理 <span class="badge" style="float:right">7</span></span>--%>
<%-- <ul style="margin-top:10px;display:none;">--%>
<%-- <li style="height:30px;">--%>
<%-- <a href="cert.html"><i class="glyphicon glyphicon-picture"></i> 资质维护</a>--%>
<%-- </li>--%>
<%-- <li style="height:30px;">--%>
<%-- <a href="type.html"><i class="glyphicon glyphicon-equalizer"></i> 分类管理</a>--%>
<%-- </li>--%>
<%-- <li style="height:30px;">--%>
<%-- <a href="process.html"><i class="glyphicon glyphicon-random"></i> 流程管理</a>--%>
<%-- </li>--%>
<%-- <li style="height:30px;">--%>
<%-- <a href="advertisement.html"><i class="glyphicon glyphicon-hdd"></i> 广告管理</a>--%>
<%-- </li>--%>
<%-- <li style="height:30px;">--%>
<%-- <a href="message.html"><i class="glyphicon glyphicon-comment"></i> 消息模板</a>--%>
<%-- </li>--%>
<%-- <li style="height:30px;">--%>
<%-- <a href="project_type.html"><i class="glyphicon glyphicon-list"></i> 项目分类</a>--%>
<%-- </li>--%>
<%-- <li style="height:30px;">--%>
<%-- <a href="tag.html"><i class="glyphicon glyphicon-tags"></i> 项目标签</a>--%>
<%-- </li>--%>
<%-- </ul>--%>
<%-- </li>--%>
<%-- <li class="list-group-item tree-closed" >--%>
<%-- <a href="param.html"><i class="glyphicon glyphicon-list-alt"></i> 参数管理</a>--%>
<%-- </li>--%>
<%-- </ul>--%><jsp:include page="/WEB-INF/jsp/common/menu.jsp"></jsp:include></div></div><div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main"><ol class="breadcrumb"><li><a href="#">首页</a></li><li><a href="#">数据列表</a></li><li class="active">分配角色</li></ol><div class="panel panel-default"><div class="panel-body"><form role="form" class="form-inline"><div class="form-group"><label for="exampleInputPassword1">未分配角色列表</label><br><select id="unAssign" class="form-control" multiple size="10" style="width:150px;overflow-y:auto;">
<%-- 展示未分配的角色 --%><c:forEach items="${unAssignRoles}" var="unAssignRole"><option value="${unAssignRole.id}">${unAssignRole.name}</option></c:forEach></select></div><div class="form-group"><ul><li id="unAssignButton" class="btn btn-default glyphicon glyphicon-chevron-right"></li><br><li id="assignButton" class="btn btn-default glyphicon glyphicon-chevron-left" style="margin-top:20px;"></li></ul></div><div class="form-group" style="margin-left:40px;"><label for="exampleInputPassword1">已分配角色列表</label><br><select id="assign" class="form-control" multiple size="10" style="width:150px;overflow-y:auto;">
<%-- 展示已分配的角色--%><c:forEach items="${assignRoles}" var="assignRole"><option value="${assignRole.id}">${assignRole.name}</option></c:forEach></select></div></form></div></div></div></div>
</div>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button><h4 class="modal-title" id="myModalLabel">帮助</h4></div><div class="modal-body"><div class="bs-callout bs-callout-info"><h4>测试标题1</h4><p>测试内容1,测试内容1,测试内容1,测试内容1,测试内容1,测试内容1</p></div><div class="bs-callout bs-callout-info"><h4>测试标题2</h4><p>测试内容2,测试内容2,测试内容2,测试内容2,测试内容2,测试内容2</p></div></div><!--<div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button><button type="button" class="btn btn-primary">Save changes</button></div>--></div></div>
</div>
<script src="jquery/jquery-2.1.1.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
<script src="script/docs.min.js"></script>
<script type="text/javascript" src="jquery/layer/layer.js"></script>
<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");}}});});//添加角色按钮事件处理$("#unAssignButton").click(function () {//获取选中的角色的idvar items = $("#unAssign option:selected");//判断长度if (items.length==0) {layer.msg("请选择分配的角色", {time:1500, icon:5, shift:6}); //弹出时间,图标,特效return false;}else {//封装数据到jsonvar jsonObject = {id : "${param.id}"//用户id};$.each(items,function (index,role) {//角色idjsonObject["roleID["+index+"]"] = this.value;});var saving=-1;$.ajax({type : "post",data : jsonObject,url : "userController/saveUserRole" ,beforeSend : function(){saving=layer.msg('Loading', {icon: 16});return true;},success : function (result) {layer.close(saving);if(result.success) {$("#assign").append(items.clone());items.remove();}else {layer.msg("分配失败!!!", {time:1500, icon:5, shift:6}); //弹出时间,图标,特效}},error : function (result) {layer.msg(result.message, {time:1500, icon:5, shift:6}); //弹出时间,图标,特效}});}});//取消角色按钮事件处理$("#assignButton").click(function () {//获取选中的角色的idvar items = $("#assign option:selected");//取消已选定的角色//判断长度if (items.length==0) {layer.msg("请选择删除的角色", {time:1500, icon:5, shift:6}); //弹出时间,图标,特效return false;}else {//封装数据到jsonvar jsonObject = {//用户idid : "${param.id}"};$.each(items,function (index,role) {//角色idjsonObject["roleID["+index+"]"] = this.value;});var deleting=-1;$.ajax({type : "post",data : jsonObject,url : "userController/deleteUserRole" ,beforeSend : function(){deleting=layer.msg('Loading', {icon: 16});return true;},success : function (result) {layer.close(deleting);if(result.success) {$("#unAssign").append(items.clone());//将选定的角色进行添加items.remove();}else {layer.msg("删除失败!!!", {time:1500, icon:5, shift:6}); //弹出时间,图标,特效}},error : function (result) {layer.msg(result.message, {time:1500, icon:5, shift:6}); //弹出时间,图标,特效}});}});
</script>
</body>
</html>
3、添加页面跳转的处理路径和controller方法
/*** 跳转至角色分配页面* @return*/@RequestMapping(value = "/toAssignRole")public String toAssignRole(Integer id, Map<String, List<Role>> roleMap){List<Role> assignRoles = new ArrayList<Role>();List<Role> unAssignRoles = new ArrayList<Role>();//查询该用户已分配得角色的idList<Integer> RoleIDs = userService.selectAssignRole(id);//查询所有角色List<Role> allRole = userService.selectAllRole();for (Role role : allRole) { //对角色是否分配进行判断if (RoleIDs.contains(role.getId())){assignRoles.add(role);}else { unAssignRoles.add(role);}}//将数据封装并返回前端页面roleMap.put("assignRoles",assignRoles);roleMap.put("unAssignRoles",unAssignRoles);return "user/assignRole";}
/*** 处理用户角色删除* @param id* @param data* @return*/@ResponseBody@RequestMapping(value = "/deleteUserRole")public Object deleteUserRole(Integer id , Data data){AjaxResult result = new AjaxResult();try {userService.deleteUserRole(id ,data);result.setSuccess(true);}catch (Exception e){result.setSuccess(false);result.setMessage("出现异常!!!");}return result;}
/*** 处理用户角色分配* @param id* @param data* @return*/@ResponseBody@RequestMapping(value = "/saveUserRole")public Object saveUserRole(Integer id , Data data){AjaxResult result = new AjaxResult();try {userService.saveUserRole(id ,data);result.setSuccess(true);}catch (Exception e){e.printStackTrace();result.setSuccess(false);result.setMessage("出现异常!!!");}return result;}
5、service、dao层的数据处理和sql查询语句
页面数据查询:
public List<Integer> selectAssignRole(int userID) {return userMapper.selectAssignRole(userID);}
public List<Role> selectAll() {return roleMapper.selectAll();}
<select id="selectAssignRole" resultType="int" parameterType="int" >select roleid from t_user_role where userid = #{userID}</select><select id="selectAllRole" resultType="com.bin.crowdfunding.bean.Role">select * from t_role</select>
添加用户角色:
public Integer saveUserRole(Integer userID, Data data) {return userMapper.saveUserRole(userID,data);}
<insert id="saveUserRole"><foreach collection="data.roleID" separator=";" item="roleID">insert into t_user_role(userid , roleid) values(#{userID},#{roleID})</foreach></insert>
删除用户角色:
public Integer deleteUserRole(Integer userID, Data data) {return userMapper.deleteUserRole(userID,data);}
<delete id="deleteUserRole">delete from t_user_role where userid= #{userID} and roleid in<foreach collection="data.roleID" open="(" separator="," close=")" item="roleID">#{roleID}</foreach></delete>
6、测试效果
查看数据库的t_user_role表,检查数据的真实性:
众筹网站项目第七天之用户角色分配(1)相关推荐
- 众筹网站项目第五天之用户的增、删、改
打开原教程视频 注:本人是渣渣,有错请谅解. 增加用户 流程:点击新增按钮->跳转至用户信息填写页面->点击添加将数据保存到后台服务器并转到用户列表. 1.在userList.jsp的新增 ...
- 众筹网站项目第七天之zTree树形结构实现(2)
打开原教程视频 注:本人是渣渣,有错请谅解. 许可维护页面的zTree树形结构实现 实现效果: 实现过程 1.数据准备 在数据库中插入相应的数据 insert into `t_permission` ...
- 进销存系统_用户角色分配(12)
一.用户角色分配 1.1.用户角色分配界面原型 添加用户记录 更新用户记录 1.2.用户角色分配实现流程 添加用户-角色分配 更新用户-角色分配 代码 RoleServiceImpl.java @Ov ...
- 众筹网站项目第一天之项目环境搭建和环境测试
打开原教程视频 注:本人是编程小白,这个是我第一个尝试的项目,编写该系列博客是为了记录第一次做项目的经历,其中肯定会有不少不成熟的操作甚至错误之处,如果可以,希望大神指出,谢谢大家. 资料准备 点击获 ...
- 众筹网站项目第四天之异步请求的分页查询和模糊条件查询(2)
打开原教程视频 注:本人是渣渣,有错请谅解. 异步请求的分页查询和模糊条件查询 同步请求和异步请求的区别在实现登录功能时已经介绍过了,下图便是实现异步请求分页查询的时序图. 可以看出我们首先进行用户列 ...
- [附源码]计算机毕业设计JAVA创意众筹网站
[附源码]计算机毕业设计JAVA创意众筹网站 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Intell ...
- 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理
系列文章 七天学会ASP.NET MVC (一)--深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)--ASP.NET MVC 数据传递 七天学会ASP.NET MVC (三)- ...
- 【SSH框架/国际物流商综平台】-05 单点登录 用户-角色-权限分配 Ztree.js structs2.0 异常框架 细粒度权限控制 BaseEntitity中createby degree
回顾 Shiro安全框架 认证,授权,加密,会话管理(单点登录),缓存,与web集成 单点登录(SSO Single Sign on)的原理 就是将原有的各个系统的会话管理机制,抽取出来交给第三方集中 ...
- 后台用户角色权限管理设计
目录 1.概述 2.设计 2.1 用户管理 2.2 角色管理 2.3 权限管理 2.4 用户.角色.权限的关系 3.总结 1.概述 在设计产品后台系统设置时,可根据不同项目的实际需求来设计后台系统设置 ...
最新文章
- 自学python推荐书籍 知乎-在知乎上学 Python - 爬虫篇
- 使用xmanager连接centos5.5
- Android 线程 thread 两种实现方法!
- datatables屏蔽警告弹窗
- Ant—使用Ant构建一个简单的Java工程(两)
- 怎么简单的锁定文件夹_简单性与鲁棒性–在锁定文件处理中展示
- SQL Server2008 查找用户登录日志
- 计算机国二笔试试题,全国计算机等考试二笔试试题(2).ppt
- 23种设计模式(二十二)行为变化之命令模式
- 学习3ds max插件开发过程中的一些小结
- Bootstarp4 文字排版
- 海南大学考研经验分享之(考研数学)
- vibe算法 c++实现
- 改进的协同过滤推荐算法
- SOUI实例之扫雷一
- MVC进阶学习--View和Controller之间的数据传递(一)
- linux xsh加密传输,WBB - 解决Xshell迁移/同步xsh文件时,ssh秘钥密码/密码丢失问题...
- 海康威视监控插件使用步骤
- 新手怎样才能快速的学会建网站
- eclips 快捷键大全
热门文章
- Python模拟登录某橙色软件并获取所有订单,康康买了啥奇奇怪怪的东西?
- 机器学习入门三剑客之Matplotlib
- PS后期合成深海海底水下人像摄影效果
- PLC学习第一篇:PLC程序架构
- 基于朴素贝叶斯分类器的西瓜数据集 2.0 预测分类_朴素贝叶斯为什么被称为“朴素”?...
- tgp进游戏不显示服务器连接异常,TGP启用腾讯游戏提示“TCLS_CORE异常退出”的解决方法...
- 西部世界又一发现:ION—存储在IPFS上的去中心化身份服务
- Swagger2的配置教程
- swagger2 使用教程
- 杂-格签名中常见数字的意义