/// <summary> /// 跳转到培训 /// </summary> public void GoToTrainee(HttpContext context) { DataTable dt = dataitemdetailbll.GetListByCode("SafetyTrainee"); //获取对应的安全培训配置项 Operator users = OperatorProvider.Provider.Current(); //当前用户 UserEntity person = userbll.GetEntity(users.UserId); SingleUser entity = new SingleUser(); entity.account = users.Account; entity.password = HttpCommon.MD5Encrypt(users.Password); entity.name = users.UserName; entity.mobileNo = person.Telephone; entity.sex = person.Gender == "男" ? "1" : "0"; entity.idType = "0"; entity.idNumber = person.IdentifyID; entity.email = person.Email; entity.isValid = "1"; string openId = person.OpenId; // openid(单点登陆唯一标识) DataRow[] rows = dt.Select(string.Format(" itemname = '{0}'", users.OrganizeId)); //当前培训信息 string traineerInfo = string.Empty; if (rows.Count() > 0) { traineerInfo = rows[0]["itemvalue"].ToString(); } if (!string.IsNullOrEmpty(traineerInfo)) { #region 具体操作内容 string[] arrTrainee = traineerInfo.Split('|'); string version = arrTrainee[0].ToString(); //版本 string appCode = arrTrainee[1].ToString(); //应用代码 skc string secretKey = arrTrainee[2].ToString(); //应用密钥//4DAA67B83F932CBD CB93FE6E34B90127 string account = person.Telephone; string singleValue = string.Empty; string yqStr = string.Empty; string rqUrl = string.Empty; string result = string.Empty; ////用户中心密码 string returnPwd = HttpCommon.MD5Encrypt(users.Password); ////当前用户手机号不能为空 if (string.IsNullOrEmpty(account)) { //跳转到错误页面 context.Response.Redirect("~/Error/ErrorMessage", false); } try { ////第一步,进行验签 GetAccountObj aobj = new GetAccountObj(); aobj.account = person.Telephone; aobj.appCode = appCode; aobj.secretKey = secretKey; aobj.version = version; yqStr = JsonConvert.SerializeObject(aobj); singleValue = HttpCommon.MD5EncryptFor32(yqStr); //验证是否存在当前用户 string validateStr = dt.Select(" itemname = 'TraineeValidate'")[0]["itemvalue"].ToString(); rqUrl = string.Format(validateStr, version, appCode, person.Telephone, singleValue); result = HttpCommon.HttpPost(rqUrl); dynamic dy = JsonConvert.DeserializeObject <ExpandoObject>(result); string code = dy.code; //账号不存在 if (code == "B000009") { string userJson = JsonConvert.SerializeObject(entity); string aesData = HttpCommon.AesEncrypt(userJson, secretKey); RegisterObj yqObj = new RegisterObj(); yqObj.appCode = appCode; yqObj.data = aesData; yqObj.secretKey = secretKey; yqObj.version = version; yqStr = JsonConvert.SerializeObject(yqObj); singleValue = HttpCommon.MD5EncryptFor32(yqStr); //注册信息 string registerStr = dt.Select(" itemname = 'TraineeRegister'")[0]["itemvalue"].ToString(); rqUrl = string.Format(registerStr, version, appCode, aesData, singleValue); if (rqUrl.Contains("+")) { rqUrl = rqUrl.Replace("+", "%2B"); } result = HttpCommon.HttpPost(rqUrl); } else { //成功状态 if (code == "000000") { //获取账号后 string data = dy.data.ToString(); if (!string.IsNullOrEmpty(data)) { data = data.Replace("\r\n", ""); } string userStr = HttpCommon.AesDecrypt(data, secretKey); dynamic userdy = JsonConvert.DeserializeObject <ExpandoObject>(userStr); openId = userdy.openId; returnPwd = userdy.password.ToString(); //如果当前账号下本地数据库中openid为空 if (string.IsNullOrEmpty(person.OpenId)) { //更新人员信息表,将openId 存入person信息表当中 //person.OpenId = openId; //userbll.SaveForm(person.UserId, person); //更新人员信息表,将openId 存入person信息表当中 string usql = string.Format("update base_user set openid = '{0}' where userid = '{1}'", openId, person.UserId); //待更新 int excuteResult = userbll.ExcuteBySql(usql); } } } //登录用户中心获取票据 LoginObj loginobj = new LoginObj(); loginobj.account = person.Telephone; loginobj.appCode = appCode; loginobj.password = returnPwd; loginobj.secretKey = secretKey; loginobj.version = version; yqStr = JsonConvert.SerializeObject(loginobj); singleValue = HttpCommon.MD5EncryptFor32(yqStr); //跳转到注册页面 string loginStr = dt.Select(" itemname = 'TraineeLogin'")[0]["itemvalue"].ToString(); rqUrl = string.Format(loginStr, version, appCode, loginobj.account, loginobj.password, singleValue); if (rqUrl.Contains("+")) { rqUrl = rqUrl.Replace("+", "%2B"); } result = HttpCommon.HttpPost(rqUrl); dynamic logindy = JsonConvert.DeserializeObject <ExpandoObject>(result); if (logindy.code.ToString() == "000000") { string logindata = logindy.data.ToString(); if (!string.IsNullOrEmpty(logindata)) { logindata = logindata.Replace("\r\n", ""); } string loginstr = HttpCommon.AesDecrypt(logindata, secretKey); dynamic lastdy = JsonConvert.DeserializeObject <ExpandoObject>(loginstr); string ticket = lastdy.ticket; //票据 string traineeStr = dt.Select(" itemname = 'TraineeUrl'")[0]["itemvalue"].ToString(); string sendurl = string.Format(traineeStr, ticket); context.Response.Redirect(sendurl, false); } else { context.Response.Redirect("~/Error/ErrorMessage", false); } } catch (Exception ex) { context.Response.Redirect("~/Error/ErrorMessage", false); } #endregion } }