/// <summary> /// 初始化分布式节点管理参数 /// </summary> private DistributeDataNodeManagerParams InitNodeDistManagerParams() { DistributeDataNodeManagerParams distManagerParam = null; //分布式管理参数 List <SSY_DATANODE_ADDR> dataNodes = new List <SSY_DATANODE_ADDR>(); UseNodeCollection unc = new UseNodeCollection(); SSY_ResponseResult <UseNodeCollection> res = this.GetUseNodeCollection("1"); if (res.IsCompleted) { #region 初始化数据节点 unc = res.Result; //分布式参数 distManagerParam = new DistributeDataNodeManagerParams(); distManagerParam.DistributeDataNode = new DistributeDataNode(); distManagerParam.DistributeActionIden = DistributeActionIden.Query; //默认给查询,需要在具体业务工作方法重新设定 distManagerParam.DistriActionSqlParams = new List <DistActionSql>(); //由于支持单点操作延后执行,需要在具体业务工作方法重新设定 distManagerParam.DistributeDataNode = new DistributeDataNode(); //只需处理工厂配置参数,其他参数系统框架会自动根据数据节点及配置文件设定 if (unc.DataNodeList.Count > 0) { foreach (var item in unc.DataNodeList) { //若配置加密数据库相关参数,这里需要先进行解密 item.Url_addr = Common.Security.DeEncryptInfo(item.Url_addr.ToString(), item.Encrykeystr, int.Parse(item.Encryhashlenth), item.Isencrydbconn.ToUpper()); item.Data_schema = Common.Security.DeEncryptInfo(item.Data_schema.ToString(), item.Encrykeystr, int.Parse(item.Encryhashlenth), item.Isencrydbconn.ToUpper()); item.Data_user = Common.Security.DeEncryptInfo(item.Data_user.ToString(), item.Encrykeystr, int.Parse(item.Encryhashlenth), item.Isencrydbconn.ToUpper()); item.Data_password = Common.Security.DeEncryptInfo(item.Data_password.ToString(), item.Encrykeystr, int.Parse(item.Encryhashlenth), item.Isencrydbconn.ToUpper()); item.Data_conn = Common.Security.DeEncryptInfo(item.Data_conn.ToString(), item.Encrykeystr, int.Parse(item.Encryhashlenth), item.Isencrydbconn.ToUpper()); dataNodes.Add(item); } distManagerParam.DistributeDataNodes = dataNodes; distManagerParam.DistributeDataNode.DbFactoryName = unc.DataNodeList[0].DBFactoryName; } #endregion } return(distManagerParam); }
/// <summary> /// 获取单个业务服务名称 /// </summary> /// <param name="serviceIden"></param> /// <returns></returns> private string _GetSingleBizSvc(string serviceIden) { string serviceName = string.Empty; List <SSY_SERVICESITE_SERVICES> svcList = new List <SSY_SERVICESITE_SERVICES>(); SSY_SERVICESITE_SERVICES modeltemp = new SSY_SERVICESITE_SERVICES(); SSY_ResponseResult <IEnumerable <SSY_SERVICESITE_SERVICES> > resSvc = this.GetNodeServiceSiteService(modeltemp); svcList = resSvc.Result.ToList <SSY_SERVICESITE_SERVICES>(); if (UtilitysForT <SSY_SERVICESITE_SERVICES> .ListHasData(svcList)) { SSY_SERVICESITE_SERVICES svcTar = svcList.Find(delegate(SSY_SERVICESITE_SERVICES t) { return(t.Servicecode == serviceIden); }); serviceName = svcTar.Service_relaUrl; } return(serviceName); }
/// <summary> /// 获取令牌 /// </summary> /// <param name="req"></param> /// <returns></returns> public string GetToken(string req) { try { //解析参数实体 reqdata = this.AnaRequestData(req); SSY_DYNAMICTOKEN model = this.json.Deserialize <SSY_DYNAMICTOKEN>(reqdata.reqdata); string bizErrStr = ""; //具体失败的业务提示 string FrameSecurity = ""; //获取业务可用节点 UseNodeCollection unc = new UseNodeCollection(); SSY_ResponseResult <UseNodeCollection> res = this.GetUseNodeCollection("1"); if (res.IsCompleted) { unc = res.Result; //获取业务节点地址 List <string> bizNodes = new List <string>(); for (int i = 0; i < unc.BizNodeList.Count; i++) { bizNodes.Add(unc.BizNodeList[i].Url_addr); } //获取业务服务 //string bizSvcName = this._GetSingleBizSvc(SSY_ServiceHost.Frame_FrameSecurityService); //FrameSecurity = this.GetNodeBaseAddr(bizNodes, ServiceType.BizDueWith) + bizSvcName.TrimStart('/'); //调用普通登陆验证服务 DataRow drServ = this.GetServiceConfigOne("framesecurity", "1.0", "normal", "frameMgt", this.serviceConfig); //FrameSecurity = base.envirObj.BizNodeAddr + "/" + drServ["servcodename"].ToString().TrimStart('/'); //获取本地配置业务节点 List <SSY_BIZNODE_ADDR> tmpBizNode = base.json.Deserialize <List <SSY_BIZNODE_ADDR> >(this._GetBizNodeAddr()); for (int i = 0; i < tmpBizNode.Count; i++) { if (tmpBizNode[i].Moudiden.ToUpper() == "FrameMgt".ToUpper()) { FrameSecurity = tmpBizNode[i].Url_addr + "/" + drServ["servcodename"].ToString().TrimStart('/'); break; } } //二次登陆验证 SSY_USER_DICT ud = new SSY_USER_DICT(); ud.USERID = model.Remarks; ud.PASSWORD = model.Timestampss; this.reqdata = new ReqData(); this.reqdata.reqdata = json.Serialize(ud); string reslogin = DynamicInvokeWCF.Create <IFrameSecurity>(FrameSecurity).GetUserForLogin2N(json.Serialize(this.reqdata)); List <SSY_USER_DICT> resuds = new List <SSY_USER_DICT>(); this.resdata = json.Deserialize <RespData>(reslogin); if (this.resdata.respflag == "1") { #region 登陆成功 string cols = "id|dynamictoken|remarks|timestampss"; string colTypes = "String|String|String|String"; string tokenFilePath = APPConfig.GetAPPConfig().GetConfigValue("XmldataPath", "") + "\\SSY_DYNAMICTOKEN.xml"; System.Data.DataTable dtToken = Common.Utility.GetTableFromXml(cols, colTypes, tokenFilePath); if (Utility.DtHasData(dtToken)) { //随机获取令牌 model.Dynamictoken = dtToken.Rows[Utility.GetRandNum(1, 99)]["dynamictoken"].ToString(); if (string.IsNullOrEmpty(model.Dynamictoken)) { bizErrStr = this.GetI18nLangItem("noFoundTokenText", this.i18nModuleCurrLang); } else { resdata = this.MakeResponseData("1", base.successStr, model.Dynamictoken, string.Empty); } } else { bizErrStr = this.GetI18nLangItem("noFoundTokens", this.i18nModuleCurrLang); } #endregion } else { bizErrStr = this.resdata.resptoolstr; } } else { bizErrStr = res.Exception; } if (!string.IsNullOrEmpty(bizErrStr)) { resdata = this.MakeResponseData("0", base.errorStr + bizErrStr, string.Empty, string.Empty); } } catch (Exception ex) { resdata = this.MakeResponseData("0", this.GetI18nLangItem("GetTokenErr", this.i18nModuleCurrLang) + ex.Message, string.Empty, string.Empty); } return(json.Serialize(resdata)); }