动吧项目用户管理

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

 

posted @ 2020-07-20 13:37  罗晓峥  阅读(245)  评论(0编辑  收藏  举报