此功能分公司与城市运营产看本部门的套餐

using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ZLCRM.Plugin.RetrieveMultiple.Common;

namespace ZLCRM.Plugin.RetrieveMultiple
{
    public class Product : IPlugin
    {

        public void Execute(IServiceProvider serviceProvider)
        {
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService adminOrgService = factory.CreateOrganizationService(null);//管理员服务
            IOrganizationService curUserOrgService = factory.CreateOrganizationService(context.InitiatingUserId);//当前用户服务

            int  contextId=0;
            if (context.MessageName == "RetrieveMultiple")
            {
                if (context.Stage != 20)
                {

                    return;
                }
                if (context.PrimaryEntityName != "product")
                {

                    return;
                }
                List<string> roleList = GetUserRoleCode(context.InitiatingUserId, adminOrgService);

                QueryExpression query = (QueryExpression)context.InputParameters["Query"];
                //判断是否是套餐(产品\套餐  公用同一个产品及套餐 )


                var product_kit = query.Criteria.Conditions.ToList().Where(q => q.AttributeName == "zhaopin_is_product_kit").ToList();
                var iskit = product_kit.Count > 0 ? Convert .ToInt32( product_kit[0].Values[0]).ToString() : "string.Empty";


                if (iskit == "1")
                    {
                        //throw new InvalidPluginExecutionException(product_kit[0].Values[0].ToString());
                        if (roleList.Contains(((int)RoleCode.CityManager).ToString())) //城市经理
                        {
                            Guid branchId = Guid.Empty;
                            Guid businessLineId = Guid.Empty;
                            GetUserInfo(context.InitiatingUserId, adminOrgService, out branchId, out businessLineId);
                            if (context.InputParameters["Query"].GetType().Name == "QueryExpression")
                            {
                                if (query.EntityName == "product")
                                {

                                    if (branchId != Guid.Empty)
                                    {
                                        LinkEntity Likbranch = new LinkEntity("zhaopin_product_zhaopin_branch", "zhaopin_branch", "zhaopin_branchid", "zhaopin_branchid", JoinOperator.Inner);//套餐
                                        Likbranch.EntityAlias = "bu";
                                        LinkEntity Likproduct = new LinkEntity("product", "zhaopin_product_zhaopin_branch", "productid", "productid", JoinOperator.Inner);//套餐
                                        Likproduct.EntityAlias = "po";
                                        Likbranch.LinkCriteria.AddCondition("zhaopin_branchid", ConditionOperator.Equal, branchId);

                                        Likproduct.LinkEntities.Add(Likbranch);

                                        query.LinkEntities.Add(Likproduct);

                                    }

                                }
                            }

                        }
                        else if (roleList.Contains(((int)RoleCode.CityOperation).ToString())) //分公司运营
                        {
                            Guid branchId = Guid.Empty;
                            Guid businessLineId = Guid.Empty;
                            GetUserInfo(context.InitiatingUserId, adminOrgService, out branchId, out businessLineId);

                            if (context.InputParameters["Query"].GetType().Name == "QueryExpression")
                            {
                                if (query.EntityName == "product")
                                {

                                    if (branchId != Guid.Empty)
                                    {
                                        LinkEntity Likbranch = new LinkEntity("zhaopin_product_zhaopin_branch", "zhaopin_branch", "zhaopin_branchid", "zhaopin_branchid", JoinOperator.Inner);//套餐
                                        Likbranch.EntityAlias = "bu";
                                        LinkEntity Likproduct = new LinkEntity("product", "zhaopin_product_zhaopin_branch", "productid", "productid", JoinOperator.Inner);//套餐
                                        Likproduct.EntityAlias = "po";
                                        Likbranch.LinkCriteria.AddCondition("zhaopin_branchid", ConditionOperator.Equal, branchId);

                                        Likproduct.LinkEntities.Add(Likbranch);

                                        query.LinkEntities.Add(Likproduct);

                                    }

                                    context.InputParameters["Query"] = query;
                                }
                            }
                        }
                        else if (roleList.Contains(((int)RoleCode.KA).ToString()))
                        {
                            Guid branchId = Guid.Empty;
                            Guid businessLineId = Guid.Empty;
                            GetUserInfo(context.InitiatingUserId, adminOrgService, out branchId, out businessLineId);
                            if (context.InputParameters["Query"].GetType().Name == "QueryExpression")
                            {
                                if (query.EntityName == "product")
                                {
                                    if (branchId != Guid.Empty)
                                    {
                                        LinkEntity Likbranch = new LinkEntity("zhaopin_product_zhaopin_branch", "zhaopin_branch", "zhaopin_branchid", "zhaopin_branchid", JoinOperator.Inner);//套餐
                                        Likbranch.EntityAlias = "bu";
                                        LinkEntity Likproduct = new LinkEntity("product", "zhaopin_product_zhaopin_branch", "productid", "productid", JoinOperator.Inner);//套餐
                                        Likproduct.EntityAlias = "po";
                                        Likbranch.LinkCriteria.AddCondition("zhaopin_branchid", ConditionOperator.Equal, branchId);

                                        Likproduct.LinkEntities.Add(Likbranch);

                                        query.LinkEntities.Add(Likproduct);

                                    }

                                }
                            }
                        }
                    }

                }
            }

        /// <summary>
        /// 查询用户信息
        /// </summary>
        /// <param name="sysUserId"></param>
        /// <param name="adminOrgService"></param>
        private static void GetUserInfo(Guid sysUserId, IOrganizationService adminOrgService, out Guid branchId, out Guid businessLineId)
        {
            //查询用户所在分公司业务线
            QueryExpression queryUser = new QueryExpression("systemuser");
            queryUser.Criteria = new FilterExpression();
            queryUser.Criteria.AddCondition("systemuserid", ConditionOperator.Equal, sysUserId);
            //关联业务部门
            LinkEntity linkBu = new LinkEntity("systemuser", "businessunit", "businessunitid", "businessunitid", JoinOperator.Inner);
            linkBu.Columns.AddColumns("zhaopin_branch", "zhaopin_business_line");
            linkBu.EntityAlias = "bu";
            queryUser.LinkEntities.Add(linkBu);
            EntityCollection buList = adminOrgService.RetrieveMultiple(queryUser);

            Entity buEntity = buList[0];
            branchId = buEntity.Attributes.Contains("bu.zhaopin_branch") ? (buEntity.GetAttributeValue<AliasedValue>("bu.zhaopin_branch").Value as EntityReference).Id : Guid.Empty;
            businessLineId = buEntity.Attributes.Contains("bu.zhaopin_business_line") ? (buEntity.GetAttributeValue<AliasedValue>("bu.zhaopin_business_line").Value as EntityReference).Id : Guid.Empty;
        }


        /// <summary>
        /// 查询角色编码
        /// </summary>
        /// <param name="context"></param>
        /// <param name="adminOrgService"></param>
        /// <returns></returns>
        private static List<string> GetUserRoleCode(Guid sysUserId, IOrganizationService adminOrgService)
        {
            List<string> lsRole = new List<string>();
            //查询当前用户角色
            QueryExpression queryUserRole = new QueryExpression("zhaopin_systemuser_zhaopin_role");
            queryUserRole.Criteria = new FilterExpression();
            queryUserRole.Criteria.AddCondition("systemuserid", ConditionOperator.Equal, sysUserId);
            //关联角色
            LinkEntity linkRole = new LinkEntity("zhaopin_systemuser_zhaopin_role", "zhaopin_role", "zhaopin_roleid", "zhaopin_roleid", JoinOperator.Inner);
            linkRole.Columns.AddColumn("zhaopin_role_code");
            linkRole.EntityAlias = "role";
            queryUserRole.LinkEntities.Add(linkRole);
            EntityCollection roleList = adminOrgService.RetrieveMultiple(queryUserRole);
            foreach (Entity role in roleList.Entities)
            {
                if (role.Attributes.Contains("role.zhaopin_role_code"))
                {
                    string roleCode = role.GetAttributeValue<AliasedValue>("role.zhaopin_role_code").Value.ToString();
                    lsRole.Add(roleCode);
                }
            }
            return lsRole;
        }



    }
}

 

-------------------------------------------------------------------------------设置一个枚举值-------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CRM.Plugin.RetrieveMultiple.Common
{
    class EnumTypeValues
    {
    }

    /// <summary>
    /// 角色代码枚举
    /// </summary>
    public enum RoleCode
    {
        /// <summary>
        /// KA 销售
        /// </summary>
        KA = 1002,

        /// <summary>
        /// KA 销售经理
        /// </summary>
        KAM = 1004,

        /// <summary>
        /// 大区KA总监
        /// </summary>
        KAD = 1011,

        /// <summary>
        /// 大区总监
        /// </summary>
        TerritoryDirector = 1012,

        /// <summary>
        /// 销售TL
        /// </summary>
        SalesTL = 1018,

        /// <summary>
        /// 城市经理
        /// </summary>
        CityManager = 1005,

        /// <summary>
        /// 城市运营
        /// </summary>
        CityOperation = 1007,

        /// <summary>
        /// 总部客服负责人
        /// </summary>
        HeadQuartersServiceLeader = 1021,

        /// <summary>
        /// 总部客服预订
        /// </summary>
        HeadQuartersReservationServices = 1022,

        /// <summary>
        /// 总部客服预订负责人
        /// </summary>
        HeadQuartersReservationServicesLeader = 1023,

        /// <summary>
        /// 分公司客服
        /// </summary>
        BranchService = 1014,

        /// <summary>
        /// 分公司客服负责人
        /// </summary>
        BranchServiceLeader = 1015,

        /// <summary>
        /// 合同管理员
        /// </summary>
        ContractAdmin = 1036,

        /// <summary>
        /// SMA 总部运营
        /// </summary>
        SMA_HeadQuartersOperation = 1003,

        /// <summary>
        /// 财务
        /// </summary>
        Financial = 1038,

        /// <summary>
        /// 会计
        /// </summary>
        Accountant = 1040,

        /// <summary>
        /// 事业部项目经理
        /// </summary>
        BU_PM = 1039,

        /// <summary>
        /// 大客户运营中心
        /// </summary>
        KA_Operation = 1009,

        /// <summary>
        /// 大客户运营中心及全国KA负责人
        /// </summary>
        KA_OperationLeader = 1010,

        /// <summary>
        /// 总部事业部项目经理
        /// </summary>
        HeadQuarter_PM = 1042,

        /// <summary>
        /// SMA销售
        /// </summary>
        SMA = 1043
    }
}

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值