角色绑定菜单(或功能)并实现用户菜单更改的思路

背景:一个角色拥有多个菜单,一个菜单属于多个角色,一个用户拥有多个菜单,一个用户可拥有独立的菜单。

操作:在更改了角色绑定菜单后,需要对用户拥有的菜单做刷新,即:当一个角色拥有的菜单增加时,用户对应的菜单视情况新增;当角色拥有的菜单减少时,用户对应的菜单视情况减少。为什么要视情况呢?因为,当一个角色增加菜单时,用户拥有的其他角色包含了该菜单,或者直接拥有了该菜单,同理,减少时亦是如此。

实现思路:

1.校验角色id是否合法,如不合法直接返回。
2.校验菜单的集合是否合法,如不合法直接返回。
3.findall,角色-菜单的集合。
4.findall,角色-用户的集合。
5.findall,用户-菜单的集合。
6.数据匹配与入库。
6.1要更新的菜单的集合是否等于原集合(指的是未做改变时,这个角色对应的菜单的集合。下同),如等于直接返回。
6.2要更新的菜单集合真包含原集合,说明本次有新增。
6.2.1用方法取出要新增的菜单的集合。
6.2.2在角色-用户的集合中取出当前角色所拥有的用户id。
6.2.3在用户-方法的集合中取出这些用户拥有的菜单。
6.2.4遍历6.2.2中取出的用户id的集合。判断本次要新增的菜单,这些用户是否都含有了这些菜单(本次要新增的菜单)?把没有含有该菜单的用户做一个记录,一会要增加。如果含有了,过滤掉。

6.2.5将6.2.4中的结果入库,将本次要更新的角色对应的菜单入库。
return;
6.3要更新的菜单集合真包含于原集合,说明本次有删除。
6.3.1用方法取出要删除的菜单的集合。
6.3.2与6.2.2相同。
6.3.3与6.2.3相同。
6.3.4遍历6.2.2中取出的用户id集合。判断本次要删除的菜单,这个用户是否都含有了这些菜单?把没有含有该菜单的用户过滤掉。如果用户含有有该菜单,判断这个用户所拥有的角色,是否有且只有一个角色。
6.3.5如果是,把这个菜单id和用户id同时记录,一会儿将进行删除。如果否,查询这个菜单对应的角色和用户对应的角色取交集,如果交集有且只有一个元素,记录一会儿将进行删除(这样也避免删除用户直接绑定菜单的情况)。

6.3.6将6.3.5中的结果入库,将本次要更新的角色对应的菜单入库。
return;
6.4要更新的集合与原集合有交集且交集不为空,说明本次既有新增又有删除。情况比较复杂,那么可以分为既有新新增又有删除,这个时候把6.2和6.3中的方法作为抽取,然后用去调6.2和6.3中的方法。

 【2019-08】

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值