最近,公司老大给了这个任务,功能差很少完成了,现将一些通过分享给你们!前端
------------------开始设计时-----------------web
思路:sql
思路:sql语句加上对应的where条件 ,来对查询到的全部数据作进一步的筛选。json
实现步骤:后端
-----------------------功能完成后的表-------------------------------api
用户表spa
角色表设计
菜单表blog
关系表 接口
-------------------------开发过程当中发现的问题------------------------------
1. 返回当前用户的菜单按钮数据
A方式 经过关系表查询 , 这种方式查询不方便 (若是用EF的导航属性的话,实现起来仍是相对简洁些的) ,可是作数据修改的时候很方便 ,能够直接对关系表作操做。
B方式 经过存储的MenuIds去菜单表中作查询,这种方式查看查询方便,可是修改不方便,须要 在 用户更新角色数据、角色更新权限数据、权限数据更新时,去更新用户表里面的MenuIds值 非常繁琐
我采用的方式:因为我的比较懒,喜欢数据可以直观些,也不太知道哪一种方式好,就把2种方式都用了! 可是我的建议,仍是用第一种方式,不要弄复杂了,功能能实现就行!
过后分析总结: A方式 在表里就不须要加MenuIds、RoleIds字段来处理,直接经过 用户角色列表,操做关系表 rel_userRole、rel_roleMenu表来处理,因为咱们现有公司该表没有作软删除的设计,还须要在删除 单条menuId、roleId值时,去这些关系表里删除对应的记录
B方式 实际上就不须要建关系表了, 而要加上MenuIds、RoleIds字段值,而后经过这些MenuIds、RoleIds去Menu表、Role表中找出对应的记录就能够了。 在进行menu表、role表数据进行更新时要找出它所影响的 用户数据、角色数据是哪些、而后更新这些数据的MenuIds、RoleIds值
2. 菜单表父子结构的数据
A方式 直接将表数据交给前端人员处理成树形结构
B方式 本身在后端处理这些数据,而后将处理的树形结构数据返回给前端人员,具体实现方法,我将在个人下一篇博客里写出来