前言
项目背景
用户固有属性:
- 用户id
- username
- 联系方式
- 等等
app需要获取的用户的:
- 用户组,用户具有组权利;
- 用户在所在组的岗位,岗位类型很多,用户具有岗位权利,不同组不同岗位权利不同;
- 用户特权Vip,电话服务等等很多,有些特权是固有的,有些是付费购买的;
注意:一个用户可以在不同用户组担任职务。
项目简要流程
用户登录→之后显示用户所拥有的权利。不具有的权利不能显示
分析:
1,2两项权利都是根据岗位及所在组所与生俱有的。
第3项是个性化定制的。
用户权利可以分为两大类:
①:打包特权,即特权包(里面有一些权利)类似于:套餐
②:单个的特权,个性化定制的特权,组合较为灵活。类似于:自由组合
而现在的用户权利是由①+②组成的,而且更要命的是:一个用户可以有多个套餐再加上N个自由组合。这样一个权利体系就很复杂了。即:
特权=(套餐x+套餐y+...)+(个性化特权x+个性化特权y+....)
用户的各项权利,后台都有存储。
项目中的问题与解决方案
现在的问题是,后台的这些权利,前台怎样获取?
方案一:在登录的同时,获取用户的所有权利,当然,数据量相当大。具有很大的缺点,而且不利于分离出用户权利。
方案二:将用户所在组特权,岗位特权,包特权(xx级别会员),个性特权分别生成一个唯一识别码。当然如果量不太大的话你也可以将这些唯一识别码合并成一个。
解决方案详解
解决方案示例图在线查看地址
唯一识别码怎么定义?
首先规定这个识别码是数值型的。
先说说“用户个性化自由组合特权”的唯一标识码
CP(Custom Privilege):用户个性化自由组合特权;单种特权类型多,并且一个用户可以购买多个特权;
个性化特权,姑且假设有31个,如果再多,你再添加位或者再来一个识别码
32位的int值 | 0111 1111 | … | …. | 1111 1111 |
---|