博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
crm操作权限
阅读量:6986 次
发布时间:2019-06-27

本文共 2767 字,大约阅读时间需要 9 分钟。

    using System;

    using Microsoft.Xrm.Sdk;
    using Microsoft.Xrm.Sdk.Query;
    using System.Collections.Generic;
    using Microsoft.Crm.Sdk.Messages;

    /// <summary>

    /// 权限
    /// </summary>
    public class PrivilegeHelper
    {
        public static readonly string entityName = "privilege";

        /// <summary>

        /// 查询一个实体的权限
        /// 一般的实体都有8个主要的权限
        /// </summary>
        public List<Privilege> SearchPrivilegeByEntityName(IOrganizationService service, string name)
        {
            List<Privilege> list = new List<Privilege>();
            //一般的实体都有8个权限,这里如果实体是:account
            //prvCreateAccount: 创建客户,prvReadAccount: 读取客户记录,prvWriteAccount: 改动客户
            //prvDeleteAccount: 删除客户,prvAppendAccount: 追加,prvAppendToAccount: 追加到
            //prvAssignAccount: 分配客户,prvShareAccount: 共享客户
            QueryExpression query = new QueryExpression();
            query.EntityName = entityName;
            query.ColumnSet = new ColumnSet("name");
            query.Criteria.AddCondition(new ConditionExpression("name",ConditionOperator.Like,"prv%" + name));
            EntityCollection ec = service.RetrieveMultiple(query);
            if (ec != null && ec.Entities.Count > 0)
            {
                foreach(Entity en in ec.Entities)
                {
                    Privilege p = new Privilege();
                    p.id = en.Id;
                    p.name = en["name"].ToString();
                    list.Add(p);
                }
            }
            return list;
        }

        /// <summary>

        /// 通过id查询一个权限
        /// </summary>
        /// <param name="service">服务</param>
        /// <param name="privilegeId">权限id</param>
        public Privilege SearchPrivilegeById(IOrganizationService service,Guid privilegeId)
        {
            Entity en = service.Retrieve(entityName, privilegeId, new ColumnSet("name"));
            Privilege p = new Privilege() { id = privilegeId };
            p.name = en["name"].ToString();
            return p;
        }

        /// <summary>

        /// 查询一个用户具有的权限
        /// </summary>
        /// <param name="service">服务</param>
        /// <param name="userId">用户</param>
        public void SearchPrivilegeByUserId(IOrganizationService service,Guid userId)
        {
            RetrieveUserPrivilegesRequest request = new RetrieveUserPrivilegesRequest();
            request.UserId = userId;

            RetrieveUserPrivilegesResponse response = (RetrieveUserPrivilegesResponse)service.Execute(request);

            if (response.RolePrivileges != null)
            {
                RolePrivilege[] arrayResult = response.RolePrivileges;
            }
        }

        /// <summary>

        /// 检索系统中定义的特权集
        /// </summary>
        /// <param name="service">服务</param>
        public List<Privilege> SearchAllPrivilege(IOrganizationService service)
        {
            List<Privilege> list = new List<Privilege>();
            RetrievePrivilegeSetRequest request = new RetrievePrivilegeSetRequest();
            RetrievePrivilegeSetResponse response = (RetrievePrivilegeSetResponse)service.Execute(request);
            if (response.EntityCollection != null)
            {
                EntityCollection ec = response.EntityCollection;
                if (ec != null && ec.Entities.Count > 0)
                {
                    foreach (Entity en in ec.Entities)
                    {
                        Privilege p = new Privilege();
                        p.id = en.Id;
                        p.name = en["name"].ToString();
                        list.Add(p);
                    }
                }
            }
            return list;
        }

        public class Privilege

        {
            public Guid id { get; set; }
            public string name { get; set; }
        }
    }

转载地址:http://himpl.baihongyu.com/

你可能感兴趣的文章
那是我夕阳下的奔跑 —— Gemini
查看>>
一个不错的抛物线js效果
查看>>
优麒麟 16.04.6 LTS 版本发布!
查看>>
Ant Motion 1.7.0 发布,React 框架动效解决方案
查看>>
如何解决不能使用Process的Start方法运行一个程序的问题。
查看>>
centos6 简单编译安装 php5.4
查看>>
阿里云RDS PostgreSQL GPU加速规格(支持GIS时空加速)发布 ...
查看>>
树莓派吃灰记——Flask搭建web服务
查看>>
云计算?雾计算?雾里看花——IIoT
查看>>
Composer在Windows和Linux的安装和使用
查看>>
大部分程序员都在抱怨自己工资低,但是真的工资低吗? ...
查看>>
Spring Cloud服务发现/注册
查看>>
对话阿里巴巴副总裁刘松:工业互联网是高门槛蓝海,未来将走向数字孪生 ...
查看>>
不改一行代码定位线上性能问题,可能吗?
查看>>
ceph设计哲学与一些思考
查看>>
推广订单如何计算返利
查看>>
实例规格 ECS (共享计算型)和 (通用型-原独享)性能上有什么区别?
查看>>
Javascript基础之-强制类型转换(三)
查看>>
高并发下linux ulimit优化
查看>>
Dataworks调度能力升级——分支节点
查看>>