C#后台管理系统根据单位,小组,角色不同条件推送消息

首先看下表之间的关系:

具体图例:

 

发布逻辑:

  1. 可以针对某个角色单独发布
  2. 可以针对某个用户单独发布
  3. 在角色和用户都勾选的情况下,取两者条件的交集,即既满足勾选的角色,又满足勾选的用户。例如:发布勾选的用户为:a(学生),b(老师),c(班委,学生 ) 发布角色为:学生,则最终可以收到发布信息的为a,c

现在的问题是:

  1. 不管使用哪种发布条件,仅可以发布到当前用户下级的角色中。例如:计科1608班A发布表单针对所有角色为学生的用户,仅在计科1608班下级的所有角色可以接收到消息,若计算机学院下的xx 发布表单,则可以发布到计算机学院,计科1608,计科1607下的所有用户,不可发布到外国语学院中
  2. 若当前用户是该单位的创建者,则默认可以发布到该单位下所有用户

 发布信息存储在数据库中为:

roleRange 为针对角色发布字段,userRange为针对某个用户发布字段,两者都可以为空单不能同时为空。

第一条:发布给所有角色为学生的用户

第二条:发布给用户名为xxxxx,xxxxxx,xxxxx且角色为学生或者校长

现在一个用户进入系统,角色去查有没有发布给自己的信息

先说下大概逻辑:

  1. 首先查找所有表单在开始时间小于现在时间,结束时间大于现在时间(不在此范围即填写日期过期)的roleRange,userRange,publishId
  2. 将查到的所有表单roleRange,userRange,publishId作为条件去查找最终针对当前用户发布的表单
  3. 其中又分为根据roleRange查一部分符合条件的信息,根据userRange查一部分符合条件的信息,然后根据不同情况对信息进行筛选融合
  4. publishId即为发布人,它的作用为根据发布人查询发布人所属的单位小组,在第三步中发布人的小组作为筛选条件之一(因为只能发布给当前小组下的成员

具体实现代码:

 

  #region 需要填写表单的数量,和数据 打死不要改!!!!
        //当type=1时获取数量 type=2时获取数据
        [HttpPost]
        public dynamic NeedWriteForm(dynamic obj)
        {
            string formName = obj.name;//前台传来的表单名 用于查询
            string username = HttpContext.Current.Session["username"].ToString();
            long[] allowTaskId = new long[1000]; //假设一个人最多1000条待填信息,存放所有运行的表单id
            string sortName = obj.sortName;
            string sortType = obj.sortType;
            if (sortName == &#
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值