(BY框架)登录人员只看到与自己有关的信息

需求:

入库提醒列表,需要业务员只能看到关于自己的跟单的订单产品入库

方案:

主页面绑定入库提醒Grid,通过SQL查询对应数据并筛选。

以下方法写在BindGrid方法中:

判断登录人员是否是业务员或者销售经理,如果是对应角色,则将该业务员的可见标识(销售订单绑定跟单员后会储存此类标识)放入变量中。

string prefix = "";
            string ids = DB.Select<Entity.SysRole>().Where(u => u.RoleName == "销售经理").First(u => u.ID) + ","
           + DB.Select<Entity.SysRole>().Where(u => u.RoleName == "业务员").First(u => u.ID);
            if (ids.Contains(cUser.RoleID.ToString()) && cUser.RoleID != 1)
            {
                prefix = cUser.VisiblePrefix;
            }

将登录人员对应消息查询SQL分割判断,并取出与该条消息相关的SQL语句。(此处选择拼接SQL语句然后利用Free SQL 中 withsql关键词直接进行查询)

string roleId = ConvertEx.ToString(cUser.RoleID);
            Entity.SysRole mo = DBServices.SysRole.GetRoleByCache(long.Parse(roleId));
            if (mo.MsgSql != null && mo.MsgSql != string.Empty)
            {
                string para = "YRKTX==";
                string roleMsgSql = mo.MsgSql.Trim();
                try
                {
                    string[] sqlTxts = roleMsgSql.Split(';');
                    roleMsgSql = sqlTxts.Where(x => x.Contains(para)).FirstOrDefault();
                    if (!string.IsNullOrEmpty(roleMsgSql))
                    {
                        roleMsgSql = roleMsgSql.Replace(para, "");
                        roleMsgSql = roleMsgSql + string.Format(@" where c.CreateTime > '{0}' and c.Code like '%{1}%' and c.prefix like '%{2}%'", DateTime.Now.AddMonths(-2), TextBox11.Text.Trim(), prefix);
                        var dt = DB.Select<Object>().WithSql(roleMsgSql)
                            .As("a")
                            .ToDataTable("*");
                        DataView dataViewTemp = dt.DefaultView;
                        dataViewTemp.Sort = "CreatedTime desc";
                        Grid_YRKTX.DataSource = dataViewTemp;
                        Grid_YRKTX.DataBind();
                    }
                }
                catch (Exception)
                {
                    NotifyError("已入库提醒配置消息不正确!");
                }
            }
           //将有数据时的表单展示出来
           if (Grid_YRKTX.Rows.Count <= 0)
            {
                Grid_YRKTX.Hidden = true;
            }
            else
            {
                Grid_YRKTX.Hidden = false;
            }
        

使用拼接SQL

优点:较易分析语法错误和数据差异,数据集成简单,将生成的SQL语句直接通过数据库查询,可得到结果,不需要进行二次操作。

缺点:可读性较差。限制条件需要对上下文和需求追溯。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值