有意思的业务~根据角色与信息状态,显示指定信息列表

简介:

事情是这样的,一个需求,根据当前登陆用户的角色,显示指定的信息列表。

说明:角色与信息的状态有关系,如管理员,可以看到状态为1和2的记录,而普通用户只能看到状态是1的记录,对于这种需要,我们可以设置一张表来实现,当然直接写在程序中也可以

Role_Status_R表如下:

RoleID int Not null

Status varchar(200) [可以使用int类型,但要求你的值必须是通过位移运算产生的]

数据库结构如下:

当然也可以设计一个字典来维护它们的关系,但不利于以后扩展,建议使用数据库方式,字典方式代码如下:

1            //用户角色与状态关系字典   
2             Dictionary<int, int[]> Role_Status_R = new Dictionary<int, int[]>();
3             Role_Status_R.Add(1, new int[] { });
4             Role_Status_R.Add(2, new int[] { 1, 4 });

 一个用户可以有多个角色,就是说,它应该是多个角色所对应的状态值之和,当我们有了角色所能看到的“状态值”后,在获取数据时,对数据集的status字段进行过滤即可。

下面说一下流程:

1 用户登陆,将角色ID存储到session中(或者其它服务器缓存中),代码如下:

 1            //将用户角色写入session中
 2             int[] urole = new Common.Background.Data.WebManageUser_WebManageRolesRepository().GetModel().Where(i => i.ManageUserID == id).Select(i => i.ManageRoleID).ToArray();
 3             string roles = "";
 4             Array.ForEach(urole, i =>
 5             {
 6                 roles += i + ",";
 7             });
 8             SessionAction.WriteSession("userRole", roles);
 9             string trueName = wu == null ? string.Empty : wu.RealName;
10             SessionAction.WriteSession("trueName", trueName);
11             string a = WebSession.TrueName;
12         }

 2 在查询列表时,从session中取出来,做一下处理,代码如下:

1             //用户的角色管理
2             int[] statusList = { 0 };
3             Array.ForEach(SessionAction.ReadSession("userRole").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), i =>
4             {
5                 statusList.Concat(OrderBuy_Info.Role_Status_R[Convert.ToInt32(i)]);
6             });
7             query = query.And(p => statusList.Distinct().Contains(p.Status));

3 将query这个表达式树的结果,传入结果集即可。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:有意思的业务~根据角色与信息状态,显示指定信息列表,如需转载请自行联系原博主。

目录
相关文章
|
1月前
|
存储 监控 安全
安全信息事件管理
【10月更文挑战第14天】安全信息事件管理
41 12
|
3月前
|
Java 数据安全/隐私保护 uml
某系统提供了用户信息操作模块,用户可以修改自己的各项信息。为了使操作过程更加人性化,现使用备忘录模式对系统进行改进,使得用户在进行了错误操作之后可以恢复到操作之前的状态。用户信息中包含账号、密码、电话
该博客文章通过Java代码示例介绍了备忘录模式(Memento Pattern)的应用,通过创建备忘录对象保存用户信息的状态,允许用户在进行错误操作后能够恢复到之前的状态。
某系统提供了用户信息操作模块,用户可以修改自己的各项信息。为了使操作过程更加人性化,现使用备忘录模式对系统进行改进,使得用户在进行了错误操作之后可以恢复到操作之前的状态。用户信息中包含账号、密码、电话
|
5月前
|
开发工具 git
大事件项目19_个人中心_基本资料调接口更新保存
大事件项目19_个人中心_基本资料调接口更新保存
|
5月前
|
JSON 数据库 数据格式
大事件后端项目22----文章分类列表
大事件后端项目22----文章分类列表
|
Shell Perl
显示系统一些基本信息
显示信息如下: 系统版本 系统内核 虚拟平台 主机名 ip地址 开机信息有没有报错,有的话输出到屏幕
65 1
|
存储 缓存 NoSQL
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 上
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 上
141 0
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能   上
|
存储 NoSQL Java
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 下
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 下
165 0
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能   下
|
前端开发
前端工作总结108-修改新增按钮显示逻辑
前端工作总结108-修改新增按钮显示逻辑
108 0
前端工作总结108-修改新增按钮显示逻辑
|
前端开发
前端工作总结122-无法选中的状态一定要绑定在select上面
前端工作总结122-无法选中的状态一定要绑定在select上面
75 0
|
前端开发
企业微信开发(3)——更改应用可见性、外部联系人变更事件、成员变更事件
在变更应用可见性时,需要变更本地可见人员数据表,并且调用企业微信的发送消息接口,主动发送消息给新增可见范围的人员,告诉他该应用是可见的。
1492 0
企业微信开发(3)——更改应用可见性、外部联系人变更事件、成员变更事件
下一篇
无影云桌面