예제 #1
0
        public byte[] GetTemplateStream(int tenantId, int userId)
        {
            try
            {
                //构造excel数据
                var workbook = new HSSFWorkbook();
                var sheet    = workbook.CreateSheet("人员信息表");
                sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 26));
                sheet.SetColumnWidth(0, 30 * 256);
                sheet.SetColumnWidth(1, 30 * 256);
                sheet.SetColumnWidth(2, 30 * 256);
                IRow warningRow = sheet.CreateRow(0);
                warningRow.CreateCell(0).SetCellValue("注意:邮箱与手机必须有一个不为空,否则会导入失败;(从第三行开始导入数据)");

                IRow titleRow = sheet.CreateRow(1);
                titleRow.CreateCell(0).SetCellValue("姓名");
                titleRow.CreateCell(1).SetCellValue("邮箱");
                titleRow.CreateCell(2).SetCellValue("手机");
                using (var ms = new MemoryStream())
                {
                    workbook.Write(ms);
                    return(ms.GetBuffer());
                }
            }
            catch (Exception ex)
            {
                AppConnectLogHelper.ErrorFormat("调用GetTemplateStream获取模板数据流报错:{0}", ex.Message);
                return(new byte[] { });
            }
        }
예제 #2
0
        public ActionResult AuthorizeForMsg(string redirect_url, int tenant_id = 0, string appaccount_id = "", int type = 12, int app_id = 100)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(redirect_url))
                {
                    return(Redirect(AppConnectHostConfig.Cache[0] + HostConst.Error + "?message=回调地址无效"));
                }

                InitIdentity();

                //获取sign
                var signQuery = ProviderGateway.AppUserAccountProvider.GetSginQuery(_AccountAppId, _AccountOpenId, app_id);

                var url = Infrastructure.Helper.UrlHelper.AddQuery(redirect_url, signQuery);
                AppConnectLogHelper.DebugFormat("AuthorizeAuthorizeForMsg---最终跳转URL:{0},_AccountAppId{1},_AccountOpenId{2},app_id{3}", url, _AccountAppId, _AccountOpenId, app_id);
                return(Redirect(url));
                //  return Redirect(Infrastructure.Helper.UrlHelper.AddQuery(redirect_url, signQuery));
            }
            catch (Exception ex)
            {
                AppConnectLogHelper.ErrorFormat("AuthorizeForMsg异常:{0}", Newtonsoft.Json.JsonConvert.SerializeObject(ex));
                throw;
            }
        }
예제 #3
0
        public MessageSendResult Send(AppAccountInfo appAccount, MessageInfo message)
        {
            var result = new MessageSendResult();

            if (appAccount == null)
            {
                appAccount = ProviderGateway.AppAccountProvider.Get(message.AppAccountId);
            }
            var token = ProviderGateway.TokenProvider.GetToken(appAccount);

            if (string.IsNullOrWhiteSpace(message.ToOpenId))
            {
                var appUsers  = ProviderGateway.AppUserAccountProvider.GetListByUserId(message.TenantId, message.ToUser.Split('|'), appAccount.AppId);
                var toOpenIds = new List <string>();
                foreach (var appUser in appUsers)
                {
                    toOpenIds.Add(appUser.OpenId);
                }
                message.ToOpenId = string.Join("|", toOpenIds);
            }

            var description = new StringBuilder();

            foreach (var detail in message.Content.Detail)
            {
                if (string.IsNullOrWhiteSpace(detail.Text))
                {
                    description.AppendFormat("{0}\n", detail.Value);
                }
                else
                {
                    description.AppendFormat("{0}:{1}\n", detail.Text, detail.Value);
                }
            }
            var picUrl = MediaDataHelper.GetPicUrl(message.ProductId, appAccount.Type.ToString());

            AppConnectLogHelper.DebugFormat("调用企业微信发送消息:Token{0};ToOpenId{1}; AgentId{2} ContentUrl{3}, ContentTitle{4}, description:{5}, pic:{6},tenantId:{7}", token, message.ToOpenId, appAccount.AgentId, message.Content.Url, message.Content.Title, description.ToString(), picUrl, appAccount.TenantId);

            if (string.IsNullOrEmpty(message.Content.Url))
            {
                message.Content.Url = AppConnectHostConfig.Cache[0] + string.Format("/Common/Error?title={0}&message={1}", HttpUtility.UrlEncode("友情提醒"), HttpUtility.UrlEncode("抱歉,此消息暂不支持在此查看,请在电脑浏览器中查看"));
            }
            WorkMessageSendResult sendResult = new WorkMessageSendResult();

            sendResult = WeChatSDK.Work.Message.SendNews(token, message.ToOpenId, Convert.ToInt32(appAccount.AgentId), message.Content.Title, description.ToString(), message.Content.Url, picUrl);
            if (sendResult.ErrCode == 0)
            {
                result.State = MessageState.Success;
                AppConnectLogHelper.DebugFormat("企业微信发送消息成功{0}", JsonConvert.SerializeObject(sendResult));
            }
            else
            {
                result.State = MessageState.Failed;
                AppConnectLogHelper.ErrorFormat("企业微信发送消息失败,errorCode:{0},errorMsg:{1},tenantId:{2},userId:{3}", sendResult.ErrCode, sendResult.ErrMsg, appAccount.TenantId, message.ToOpenId);
            }

            result.ErrMsg = SerializeHelper.Serialize(sendResult);
            return(result);
        }
예제 #4
0
        private static void AddCloudData(int tenantId, List <AppUserAccountInfo> appUserAccountInfos, ref string message)
        {
            try
            {
                message += string.Format("租户:{0} 开始处理数据\r\n", tenantId);
                BeisenUserDao.SetContext(tenantId);
                //先删除该租户数据
                List <string> delObjectIds = new List <string>();
                var           multiDataDic = GetMultiTenantData(tenantId);
                foreach (var item in multiDataDic)
                {
                    if (!delObjectIds.Contains(Convert.ToString(item.ID)))
                    {
                        delObjectIds.Add(Convert.ToString(item.ID));
                    }
                }
                CloudDataHelper.Delete("AppConnect.AppUser", tenantId, delObjectIds.ToArray());

                message += string.Format("租户:{0} 开始删除{1}条数据\r\n", tenantId, delObjectIds.Count);

                var metaObject = CloudDataHelper.GetMetaObject(tenantId, "AppConnect.AppUser");
                List <ObjectData> objectDatas = new List <ObjectData>();
                foreach (var appUserAccountInfo in appUserAccountInfos)
                {
                    ObjectData objectData = new ObjectData(metaObject);
                    objectData.ID                 = Guid.NewGuid();
                    objectData.CreatedBy          = appUserAccountInfo.UserId;
                    objectData.CreatedTime        = appUserAccountInfo.CreateTime;
                    objectData.ModifiedBy         = appUserAccountInfo.UserId;
                    objectData.ModifiedTime       = appUserAccountInfo.ModifyTime;
                    objectData["StdIsDeleted"]    = false;
                    objectData["TenantId"]        = appUserAccountInfo.TenantId;
                    objectData["UserId"]          = appUserAccountInfo.UserId;
                    objectData["UserEmail"]       = appUserAccountInfo.BeisenAccount;
                    objectData["State"]           = appUserAccountInfo.StateNotEnum;
                    objectData["ActivateTime"]    = appUserAccountInfo.CreateTime;
                    objectData["OpenId"]          = appUserAccountInfo.OpenId;
                    objectData["AppId"]           = appUserAccountInfo.AppId;
                    objectData["SqlId"]           = appUserAccountInfo.Id;
                    objectData["LoginType"]       = appUserAccountInfo.TypeNotEnum;
                    objectData["SqlId"]           = appUserAccountInfo.Id;
                    objectData["MasterAccountId"] = appUserAccountInfo.MasterAccountId;
                    objectDatas.Add(objectData);
                }
                CloudDataHelper.Add(metaObject, objectDatas);
                message += string.Format("租户:{0} 处理完毕,共处理{1}条数据 \r\n", tenantId, objectDatas.Count);
            }
            catch (Exception ex)
            {
                message += string.Format("租户:{0} 修复数据失败!\r\n", tenantId);
                AppConnectLogHelper.ErrorFormat(message, ex);
                Froms.MessageBox.Show(ex.Message);
            }
        }
예제 #5
0
        /// <summary>
        /// 批量获取元数据对象
        /// </summary>
        /// <param name="tenantId"></param>
        /// <param name="metaObjectNames"></param>
        /// <returns></returns>
        public static Dictionary <string, MetaObject> GetMetaObjects(int tenantId, params string[] metaObjectNames)
        {
            Dictionary <string, MetaObject> dic = new Dictionary <string, MetaObject>();

            foreach (var metaObjectName in metaObjectNames)
            {
                try
                {
                    dic.Add(metaObjectName, MetaObjectProvider.GetObjectMeta(metaObjectName, tenantId));
                }
                catch (Exception ex)
                {
                    AppConnectLogHelper.ErrorFormat("批量获取元数据对象出现了问题,出错对象名为}");
                }
            }

            return(dic);
        }
예제 #6
0
 private static void AddCLoud(int tenantId, List <AppUserAccountInfo> appUserAccountInfos, ref string message)
 {
     try
     {
         BeisenUserDao.SetContext(tenantId);
         message += string.Format("租户:{0} 开始处理\r\n", tenantId);
         var metaObject = CloudDataHelper.GetMetaObject(tenantId, "AppConnect.AppUser");
         List <ObjectData> objectDatas    = new List <ObjectData>();
         var appUserAccountInfos_tenantId = appUserAccountInfos.Where(w => w.TenantId == tenantId).ToList();
         if (appUserAccountInfos_tenantId != null && appUserAccountInfos_tenantId.Count > 0)
         {
             appUserAccountInfos_tenantId.ForEach(appUserAccountInfo =>
             {
                 ObjectData objectData         = new ObjectData(metaObject);
                 objectData.ID                 = Guid.NewGuid();
                 objectData.CreatedBy          = appUserAccountInfo.UserId;
                 objectData.CreatedTime        = DateTime.Now;
                 objectData.ModifiedBy         = appUserAccountInfo.UserId;
                 objectData.ModifiedTime       = DateTime.Now;
                 objectData["StdIsDeleted"]    = false;
                 objectData["TenantId"]        = appUserAccountInfo.TenantId;
                 objectData["UserId"]          = appUserAccountInfo.UserId;
                 objectData["UserEmail"]       = appUserAccountInfo.BeisenAccount;
                 objectData["State"]           = appUserAccountInfo.StateNotEnum;
                 objectData["ActivateTime"]    = DateTime.Now;
                 objectData["OpenId"]          = appUserAccountInfo.OpenId;
                 objectData["AppId"]           = appUserAccountInfo.AppId;
                 objectData["SqlId"]           = appUserAccountInfo.Id;
                 objectData["LoginType"]       = appUserAccountInfo.TypeNotEnum;
                 objectData["SqlId"]           = appUserAccountInfo.Id;
                 objectData["MasterAccountId"] = appUserAccountInfo.MasterAccountId;
                 objectDatas.Add(objectData);
             });
         }
         CloudDataHelper.Add(metaObject, objectDatas);
         message += string.Format("租户:{0} 处理完毕,共处理{objectDatas.Count}条数据 \r\n", tenantId);
     }
     catch (Exception ex)
     {
         message += string.Format("租户:{0} 修复数据失败!\r\n", tenantId);
         AppConnectLogHelper.ErrorFormat(message, ex);
         Froms.MessageBox.Show(ex.Message);
     }
 }
예제 #7
0
        public ApiResult SendMessage([FromUri] int tenant_id, [FromUri] int user_id, [FromBody] MessageArgumentForTita message)
        {
            Models.MessageSendResult resultMessage = new Models.MessageSendResult();
            var messageInfo = new MessageInfo();

            try
            {
                VaildMessageType(tenant_id, user_id, message);
                messageInfo.TenantId        = tenant_id;
                messageInfo.FromUser        = user_id;
                messageInfo.ToUser          = message.receiverId;
                messageInfo.ProductId       = message.productId;
                messageInfo.MessageTypeList = SpliceMessageType(message.messageType);
                messageInfo.Content         = new MessageContent();
                messageInfo.Content.Url     = message.content.url;
                messageInfo.Content.Title   = message.content.title;
                messageInfo.Content.Detail  = new List <MessageContentDetail>();
                foreach (var detail in message.content.detail)
                {
                    messageInfo.Content.Detail.Add(new MessageContentDetail {
                        Key = detail.key, Text = detail.text, Value = detail.value
                    });
                }
                messageInfo.ContentJson = SerializeHelper.Serialize(messageInfo.Content);
                AppConnectLogHelper.Debug("Send接收到租户:" + tenant_id + "开始发送消息,消息内容:" + Newtonsoft.Json.JsonConvert.SerializeObject(messageInfo));
                var batchId = ProviderGateway.MessageProvider.Send(messageInfo);

                resultMessage.BatchId = batchId;
                resultMessage.ErrCode = 0;
                resultMessage.ErrMsg  = "企业消息发送成功!";
                AppConnectLogHelper.DebugFormat("租户:{0},接收人:{1},产品:{2},消息:{3}发送成功!", messageInfo.TenantId, messageInfo.ToUser, messageInfo.ProductId, JsonConvert.SerializeObject(messageInfo.Content));
            }
            catch (System.Exception ex)
            {
                resultMessage.ErrCode = 500;
                resultMessage.ErrMsg  = string.Format("调用企业发送消息失败:{0}", ex.Message);
                AppConnectLogHelper.ErrorFormat("企业消息发送消息异常:{0}", Newtonsoft.Json.JsonConvert.SerializeObject(ex));
            }

            //调用ISV消息发送
            try
            {
                AppConnectLogHelper.Debug("开始发送ISV消息");
                var    requestUrl  = string.Format("{0}/Api/ISVApi/SendMessage?tenant_id={1}&user_id={2}", AppConnectHostConfig.Cache[0], tenant_id, user_id);
                string resultStr   = HttpClientHelper.HttpPost(requestUrl, message);
                var    resultModel = JsonConvert.DeserializeObject <ApiResultModel>(resultStr);
                if (resultModel.Code != 0)
                {
                    resultMessage.ErrCode = 500;
                    resultMessage.ErrMsg  = "ISV消息发送失败!";
                    AppConnectLogHelper.Error("调用ISV 发送消息api失败");
                }
                AppConnectLogHelper.Debug("调用ISV 发送消息api成功");
            }
            catch (Exception ex)
            {
                resultMessage.ErrCode = 500;
                resultMessage.ErrMsg  = string.Format("调用ISV发送消息失败:{0}", ex.Message);
                AppConnectLogHelper.ErrorFormat("发送消息异常:{0}", JsonConvert.SerializeObject(ex));
            }
            AppConnectLogHelper.DebugFormat("SendMessageResult:{0}", JsonConvert.SerializeObject(resultMessage));
            return(resultMessage);
        }
예제 #8
0
        internal void BatchHandleExcelData(int tenantId, int userId, ISheet staffSheet, string appId, bool isAsync)
        {
            List <AppUserAccountInfo> appUserAccountInfoList = new List <AppUserAccountInfo>();

            Dictionary <string, string> emailDic  = new Dictionary <string, string>();
            Dictionary <string, string> mobileDic = new Dictionary <string, string>();
            //将excel数据 转换成datatable,接着转换成Dictionary
            var dataTable = ExcelService.Instance.ExcelToDataTable(staffSheet);

            for (int i = 0; i < dataTable.Rows.Count; i++)
            {
                var openId = Convert.ToString(dataTable.Rows[i][0]);
                var email  = Convert.ToString(dataTable.Rows[i][1]);
                var mobile = Convert.ToString(dataTable.Rows[i][2]);

                if (!string.IsNullOrEmpty(email))
                {
                    emailDic.Add(email, openId);
                }
                else
                {
                    if (!string.IsNullOrEmpty(mobile))
                    {
                        mobileDic.Add(mobile, openId);
                    }
                    else
                    {
                        continue;
                    }
                }
            }
            IEnumerable <string> emailList  = emailDic.Select(t => t.Key);
            IEnumerable <string> mobileList = mobileDic.Select(t => t.Key);
            var emailResult  = GetUserByEmail(tenantId, userId, emailList);
            var mobileResult = GetUserByMobile(tenantId, userId, mobileList);

            foreach (var emailItem in emailResult)
            {
                AppUserAccountInfo userInfo = new AppUserAccountInfo()
                {
                    AppId         = appId,
                    OpenId        = emailDic[emailItem.Key],
                    TenantId      = emailItem.Value.TenantId,
                    UserId        = emailItem.Value.UserId,
                    BeisenAccount = emailItem.Value.Email,
                    Type          = AppUserAccountType.Batch,
                    State         = AppUserAccountState.Activated,
                    CreateTime    = DateTime.Now,
                    ModifyTime    = DateTime.Now,
                    ActivateTime  = DateTime.Now
                };
                appUserAccountInfoList.Add(userInfo);
            }
            foreach (var mobileItem in mobileResult)
            {
                AppUserAccountInfo userInfo = new AppUserAccountInfo()
                {
                    AppId         = appId,
                    OpenId        = mobileDic[mobileItem.Key],
                    TenantId      = mobileItem.Value.TenantId,
                    UserId        = mobileItem.Value.UserId,
                    BeisenAccount = mobileItem.Value.Mobile,
                    Type          = AppUserAccountType.Batch,
                    State         = AppUserAccountState.Activated,
                    CreateTime    = DateTime.Now,
                    ModifyTime    = DateTime.Now,
                    ActivateTime  = DateTime.Now
                };
                appUserAccountInfoList.Add(userInfo);
            }

            foreach (var user in appUserAccountInfoList)
            {
                var rest = ProviderGateway.AppUserAccountProvider.AddOrUpdate(tenantId, user);
                if (rest <= 0)
                {
                    AppConnectLogHelper.ErrorFormat("执行AddOrUpdate失败:tenantId:{0},userInfo:{1}", tenantId, Newtonsoft.Json.JsonConvert.SerializeObject(user));
                }
            }

            if (isAsync)
            {
                TitaMessageHelper.SendMessage(tenantId, userId, "导入数据成功");
            }
        }
예제 #9
0
        public MessageSendResult Send(AppAccountInfo appAccount, MessageInfo message)
        {
            var result = new MessageSendResult();

            if (appAccount == null)
            {
                appAccount = ProviderGateway.AppAccountProvider.Get(message.AppAccountId);
            }

            var token = ProviderGateway.TokenProvider.GetToken(appAccount);

            if (string.IsNullOrWhiteSpace(message.TemplateId))
            {
                if (string.IsNullOrWhiteSpace(message.TemplateIdShort))
                {
                    result.State  = MessageState.Failed;
                    result.ErrMsg = "模板为空";
                    return(result);
                }
                //跟据数据库中对应关系获取id
                var templateId = ProviderGateway.TemplateMappingProvider.GetTemplateId(appAccount.AppId, message.TemplateIdShort);
                //不存在增加模板
                if (string.IsNullOrWhiteSpace(templateId))
                {
                    var template = Template.AddTemplate(token, message.TemplateIdShort);
                    if (template.ErrCode != 0)
                    {
                        result.State  = MessageState.Failed;
                        result.ErrMsg = SerializeHelper.Serialize(template);
                        return(result);
                    }
                    message.TemplateId = template.TemplateId;
                    ProviderGateway.TemplateMappingProvider.Add(
                        new TemplateMappingInfo
                    {
                        AppId           = appAccount.AppId,
                        TemplateIdShort = message.TemplateIdShort,
                        TemplateId      = template.TemplateId,
                        CreateBy        = message.FromUser
                    });
                }
                else
                {
                    message.TemplateId = templateId;
                }
            }

            if (string.IsNullOrWhiteSpace(message.ToOpenId))
            {
                var appUser = ProviderGateway.AppUserAccountProvider.GetByUserId(message.TenantId, Convert.ToInt32(message.ToUser), appAccount.AppId);
                if (appUser == null)
                {
                    result.State  = MessageState.Failed;
                    result.ErrMsg = "用户未绑定";
                    return(result);
                }
                message.ToOpenId = appUser.OpenId;
            }

            var jsondata = new StringBuilder();

            jsondata.Append("{");
            foreach (var detail in message.Content.Detail)
            {
                jsondata.Append("\"" + detail.Key + "\":{\"value\":\"" + detail.Value + "\"},");
            }
            jsondata.Remove(jsondata.Length - 1, 1);
            jsondata.Append("}");

            var picUrl = MediaDataHelper.GetPicUrl(message.ProductId, appAccount.Type.ToString());

            AppConnectLogHelper.DebugFormat("调用微信服务号发送消息:Token{0};ToOpenId{1}; AgentId{2} ContentUrl{3}, ContentTitle{4}, description:{5}, pic:{6}", token, message.ToOpenId, appAccount.AgentId, message.Content.Url, message.Content.Title, jsondata.ToString(), picUrl);
            if (string.IsNullOrEmpty(message.Content.Url))
            {
                message.Content.Url = AppConnectHostConfig.Cache[0] + string.Format("/Common/Error?title={0}&message={1}", HttpUtility.UrlEncode("友情提醒"), HttpUtility.UrlEncode("抱歉,此消息暂不支持在此查看,请在电脑浏览器中查看"));
            }
            var sendResult = Template.SendTemplateMessageForJson(token, message.ToOpenId, message.TemplateId, "", message.Content.Url, jsondata.ToString());

            if (sendResult.ErrCode != 0)
            {
                result.State  = MessageState.Failed;
                result.ErrMsg = SerializeHelper.Serialize(sendResult);
                AppConnectLogHelper.ErrorFormat("企业微信发送消息失败,errorCode:{0},errorMsg:{1}", sendResult.ErrCode, sendResult.ErrMsg);
                return(result);
            }

            result.State     = MessageState.Success;
            result.MessageId = sendResult.MsgId.ToString();
            result.ErrMsg    = SerializeHelper.Serialize(sendResult);
            return(result);
        }
예제 #10
0
        public void OnActionExecuting(ActionExecutingContext filterContext)
        {
            //Log 信息

            try
            {
                var tenant_id     = filterContext.ActionParameters["tenant_id"];
                var appaccount_id = filterContext.ActionParameters["appaccount_id"];
                var app_id        = filterContext.ActionParameters["app_id"];
                var redirect_url  = filterContext.ActionParameters["redirect_url"];
                var logMsg        = string.Format("TenantId:{0},Appaccont_Id:{1},App_Id:{2},Redirect_Url:{3};", tenant_id, appaccount_id, app_id, redirect_url);
                AppConnectLogHelper.Debug(logMsg);

                var cookie = CookieHelper.GetCookie();
                if (cookie != null)
                {
                    var jsonstr = SerializeHelper.Serialize(cookie);
                    var logMsg1 = string.Format("TenantId:{0},Appaccont_Id:{1},App_Id:{2},Redirect_Url:{3};Cookie{4}", tenant_id, appaccount_id, app_id, redirect_url, jsonstr);
                    AppConnectLogHelper.Debug(logMsg1);
                }
                else
                {
                    var logMsg2 = string.Format("Cookie为空: TenantId:{0},Appaccont_Id:{1},App_Id:{2},Redirect_Url:{3};", tenant_id, appaccount_id, app_id, redirect_url);
                    AppConnectLogHelper.Debug(logMsg2);
                }
            }
            catch (System.Exception ex)
            {
            }

            try
            {
                // 临时处理北森cloud应用身份失效情况,暂时直接跳错误页,后续再寻找解决方案
                var controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName.ToLower();
                var actionName     = filterContext.ActionDescriptor.ActionName.ToLower();
                var appType        = filterContext.HttpContext.Request["app_type"];
                if (controllerName == "user" && actionName == "authorize" && !string.IsNullOrWhiteSpace(appType))
                {
                    filterContext.Result = new RedirectResult(AppConnectHostConfig.Cache[0] + HostConst.Error + "?message=您的身份已失效,请重新进入应用");
                    return;
                }

                var  attributes      = filterContext.ActionDescriptor.GetCustomAttributes(false);
                bool isVerifyAccount = false;

                foreach (var attribute in attributes)
                {
                    var attributeFullName = attribute.ToString();
                    if (attributeFullName == "Beisen.AppConnect.Infrastructure.Attribute.AccountIdentityAttribute")
                    {
                        isVerifyAccount = true;
                    }
                }
                if (isVerifyAccount)
                {
                    //用于开发调试
                    //var appId = "wxdcfd8d067c353bed";
                    //var openId = "oeJYSwIG_y0WoXyPiGMSC66B-Gd4";
                    //var cookieDev = CookieHelper.GetCookie();
                    //if (cookieDev.OpenIds == null || !cookieDev.OpenIds.ContainsKey(appId))
                    //{
                    //    if (cookieDev.OpenIds == null)
                    //    {
                    //        cookieDev.OpenIds = new System.Collections.Generic.Dictionary<string, string>();
                    //    }
                    //    cookieDev.OpenIds.Add(appId, openId);
                    //    CookieHelper.SetCookie(cookieDev);
                    //    filterContext.Result = new RedirectResult(filterContext.HttpContext.Request.RawUrl);
                    //    return;
                    //}

                    //var tenantId = ConvertToInt(filterContext.HttpContext.Request["tenant_id"]);
                    //var appAccountId = filterContext.HttpContext.Request["appaccount_id"];
                    var type   = ConvertHelper.ToInt(filterContext.HttpContext.Request["type"]);
                    var cookie = CookieHelper.GetCookie();

                    string redirectUrl = null;
                    //获取登录状态,当有值且为0时是PC登录
                    var loginType = filterContext.HttpContext.Request.QueryString["login_type"];
                    AppConnectLogHelper.DebugFormat("loginType:{0},url:{1}", loginType, filterContext.HttpContext.Request.RawUrl);
                    if (!string.IsNullOrEmpty(loginType) && loginType == "0")//PC登录
                    {
                        redirectUrl = ProviderGateway.AuthorizeProvider.GetAuthorizeUrl(RuntimeContext.AppAccountId, filterContext.HttpContext.Request.RawUrl, type == 0 ? 12 : type, cookie, loginType);
                    }
                    else
                    {
                        redirectUrl = ProviderGateway.AuthorizeProvider.GetAuthorizeUrl(RuntimeContext.AppAccountId, filterContext.HttpContext.Request.RawUrl, type == 0 ? 12 : type, cookie);//移动端
                    }

                    if (redirectUrl != null)
                    {
                        filterContext.Result = new RedirectResult(redirectUrl);
                        return;
                    }

                    if (controllerName == "account" && actionName == "home")
                    {
                        //var tenantId = filterContext.HttpContext.Request["tenant_id"];
                        //var inviteUserId = filterContext.HttpContext.Request["inviteuser_id"];
                        //var isvId = filterContext.HttpContext.Request["isv_id"];
                        //var url = filterContext.HttpContext.Request["redirect_url"];
                        redirectUrl = ProviderGateway.AuthorizeProvider.GetIdentityUrl(RuntimeContext.AppAccountId, filterContext.HttpContext.Request.RawUrl, type == 0 ? 12 : type, cookie, ServiceInterface.Model.Enum.CallbackContentState.RegisterBind);
                    }
                    else
                    {
                        redirectUrl = ProviderGateway.AuthorizeProvider.GetIdentityUrl(RuntimeContext.AppAccountId, filterContext.HttpContext.Request.RawUrl, type == 0 ? 12 : type, cookie);
                    }
                    if (redirectUrl != null)
                    {
                        filterContext.Result = new RedirectResult(redirectUrl);
                        return;
                    }
                    CookieHelper.SetCookie(cookie);
                }
            }
            catch (Exception ex)
            {
                AppConnectLogHelper.ErrorFormat("Filter执行异常:{0}", Newtonsoft.Json.JsonConvert.SerializeObject(ex));
                throw;
            }
        }