动吧项目用户管理
0. 业务分析
用户的管理分为用户查询,添加,更新,禁用等功能
其中的关系为: 1.一个部门有多个用户,部门和用户的关系为一对多的关系
2.一个用户有多个日志,用户和日志的关系为一对多的关系
3. 一个用户可以有多个角色,一个角色可以有多个用户,用户和角色之前的关系为多对多的关系
4.一个角色可有多个菜单的权限,一个菜单可以有多个角色可以观看,角色和菜单的关系为多对多的关系
5. 部门分为一级部门和二级部门等,属于自关联
6. 菜单分为一级菜单和二级菜单等,属于自关联
数据表与逻辑描述:
系统用户 sys_user
系统角色 sys_roles
系统菜单 sys_menu
1. 将角色授权用户
2. 将菜单访问授权角色
3. 用户基于授权访问菜单资源
角色和用户之间的关系表:sys_user_roles
角色和菜单之间的关系表:sys_roles_menu
1.用户数据查询
1.1 数据库设计
用户表设计
1 CREATE TABLE `sys_users` ( 2 `id` int(11) NOT NULL AUTO_INCREMENT, 3 `username` varchar(50) NOT NULL COMMENT '用户名', 4 `password` varchar(100) DEFAULT NULL COMMENT '密码', 5 `salt` varchar(50) DEFAULT NULL COMMENT '盐', 6 `email` varchar(100) DEFAULT NULL COMMENT '邮箱', 7 `mobile` varchar(100) DEFAULT NULL COMMENT '手机号', 8 `valid` tinyint(4) DEFAULT NULL COMMENT '状态', 9 `deptId` int(11) DEFAULT NULL, 10 `createdTime` datetime DEFAULT NULL COMMENT '创建时间', 11 `modifiedTime` datetime DEFAULT NULL COMMENT '修改时间', 12 `createdUser` varchar(20) DEFAULT NULL COMMENT '创建用户', 13 `modifiedUser` varchar(20) DEFAULT NULL COMMENT '修改用户', 14 PRIMARY KEY (`id`), 15 UNIQUE KEY `username` (`username`) 16 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='系统用户';
角色表设计
1 CREATE TABLE `sys_roles` ( 2 `id` bigint(20) NOT NULL AUTO_INCREMENT, 3 `name` varchar(100) DEFAULT NULL COMMENT '角色名称', 4 `note` varchar(500) DEFAULT NULL COMMENT '备注', 5 `createdTime` datetime DEFAULT NULL COMMENT '创建时间', 6 `modifiedTime` datetime DEFAULT NULL COMMENT '修改时间', 7 `createdUser` varchar(20) DEFAULT NULL COMMENT '创建用户', 8 `modifiedUser` varchar(20) DEFAULT NULL COMMENT '修改用户', 9 PRIMARY KEY (`id`) 10 ) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8 COMMENT='角色';
角色和用户关系表设计
1 CREATE TABLE `sys_user_roles` ( 2 `id` int(11) NOT NULL AUTO_INCREMENT, 3 `user_id` int(11) DEFAULT NULL COMMENT '用户ID', 4 `role_id` int(11) DEFAULT NULL COMMENT '角色ID', 5 PRIMARY KEY (`id`) 6 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户与角色对应关系';
1.2 用户列表页面呈现
将用户表中的数据添加后,进行用户界面的显示
在PageController中添加返回用户页面相关方法
PageController:项目中所有页面的处理,计划都放在这个controller中
1 //rest 风格(一种架构风格)的url,其语法结构{变量名}/{变量} 2 //PathVariable注解用于修饰方法参数,可以从rest风格的url中取和参数名对应的值 3 @RequestMapping("{module}/{moduleUI}") 4 public String doModuleUI(@PathVariable String moduleUI) { 5 return "sys/"+moduleUI; 6 }
准备用户列表界面:user_list.html,在首页starter.html页面中异步加载用户列表页面
1 $(function(){ 2 doLoadUI("load-user-id","user/user_list") 3 }) 4 //基于不同对象的点击事件执行资源加载操作 5 function doLoadUI(id,url){ 6 $("#"+id).click(function(){//click事件处理函数 7 //jquery中的load函数为一个异步加载的ajax函数。 8 //此函数用于在指定位置异步加载资源(并将返回的资源填充到这个指定位置) 9 $("#mainContentId").load(url); 10 }) 11 }
pojo类:封装从数据库查询到的用户以及用户对应的部门信息
1 @Data 2 public class SysUserDept implements Serializable { 3 private static final long serialVersionUID = 3776304095517793129L; 4 private Integer id; 5 private String username; 6 private String password;//md5 7 private String salt; 8 private String email; 9 private String mobile; 10 private Integer valid=1; 11 private SysDept sysDept; //private Integer deptId; 12 private Date createdTime; 13 private Date modifiedTime; 14 private String createdUser; 15 private String modifiedUser; 16 }
用户的密码使用md5加密和盐值加密
dao类:定义用户数据层接口对象,通过此对象实现用户业务的数据操作
1 /** 2 * 基于条件查询记录总数 3 * @param username 4 * @return 5 */ 6 int getRowCount(String username); 7 /** 8 * 基于条件查询当前页要呈现的记录 9 * @param username 10 * @param startIndex 11 * @param pageSize 12 * @return 13 */ 14 List<SysUserDept> findPageObjects(String username, 15 Integer startIndex, 16 Integer pageSize);
2
3
4
1
1