/// <summary> /// 作者:Primo /// 日期:2015.08.31 /// 描述:把新增的用户同步到薏米同学 /// </summary> /// <param name="email">邮箱</param> /// <param name="emeId">UserId</param> /// <param name="truename">中文名|英文名</param> /// <param name="nickName">UserName</param> /// <param name="passWord">密码</param> /// <param name="roles">角色</param> /// <param name="mobile">手机号</param> public static void CreateUserToEdusoho(string email, int emeId, string truename, string nickName, string passWord, int roles, string mobile, int? gender, DateTime? birthday, ResultModel result) { var responseData = String.Empty; var param = string.Empty; try { //组装参数 var jsonStr = "email=" + email + "&emeId=" + emeId.ToString() + "&nickname=" + nickName + "&password="******"&roles=" + roles.ToString() + "&mobile=" + mobile + "&truename=" + truename + (birthday.HasValue ? "&birthday=" + birthday.Value.ToString("yyyy-MM-dd") : "") + "&isEme=1"; //Male Or Female if (gender == ConvertEnum.SexTypeForMale) { jsonStr = jsonStr + "&gender=Male"; } else if (gender == ConvertEnum.SexTypeForFemale) { jsonStr = jsonStr + "&gender=Female"; } byte[] bytes = Encoding.UTF8.GetBytes(jsonStr); //创建请求 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://meten.edusoho.cn/api/users"); var encoding = Encoding.UTF8; request.Timeout = 100000; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; //写入参数 request.ContentLength = bytes.Length; using (var reqStream = request.GetRequestStream()) { reqStream.Write(bytes, 0, bytes.Length); reqStream.Close(); } //请求响应 using (var response = (HttpWebResponse)request.GetResponse()) { using (var reader = new StreamReader(response.GetResponseStream(), encoding)) { responseData = reader.ReadToEnd().ToString(); } } } catch (Exception ex) { result.msg = "薏米同学同步失败:" + emeId.ToString() + " Exception:" + ex.ToString(); } }
public ActionResult ProcessRequest() { HttpContextBase context = HttpContext; context.Response.ContentType = "text/plain"; var soapAction = context.Request.Headers["ProduceAction"]; var requestParams = HttpHelper.ReadRequestData(context); LogHelper.WriteLog(soapAction + " jsonData = " + requestParams); ResultModel result = null; switch (soapAction) { case "SyncContract": result = contractApi.EmeContractService(requestParams); break; case "SyncContractFreeze": result = contractApi.EmeContractDivest(requestParams); break; case "SyncContractDelay": result = contractApi.EmeContractDelay(requestParams); break; case "SyncUser": result = userApi.EmeUserService(requestParams); break; case "SyncReferral": result = referApi.CreateReferral(requestParams); break; case "ContractDelete": result = contractApi.EmeContractDelete(requestParams); break; default: soapAction = "invalid" + soapAction; result = new ResultModel { code = 200, msg = "invalid ProduceAction" }; break; } var esbResult = new ESBResult { Code = "000000", Message = "成功" }; if (0 != result.code) { esbResult.Code = "EME0201"; esbResult.Message = result.msg; } var jsonResult = JsonHelper.ToJson(esbResult); LogHelper.WriteLog(soapAction + " result = " + jsonResult); context.Response.Write(jsonResult); return null; }
/// <summary> /// 作者:Raymond /// 日期:2014-5-10 /// 描述:eme用户接口服务器 /// </summary> /// <param name="JsData"></param> /// <returns></returns> public ResultModel EmeUserService(string JsData) { var result = new ResultModel(); UserModel crmUser = null; // 不允许跨中心麻醉剂中心列表 var noCrossCenter = ConfigHelper.GetAppSettingValue("NoCrossCenter"); var specialArea = ConfigHelper.GetAppSettingValue("SpecialArea"); if (string.IsNullOrWhiteSpace(noCrossCenter) || string.IsNullOrWhiteSpace(specialArea)) { result.code = APIModel.C_PARAMS_ERR; result.msg = APIModel.M_PARAMS_ERR + "请在webconfig中配置跨中心订课"; return result; } var noCrossCenterList = noCrossCenter.ToIntList(); var specialAreaList = specialArea.ToIntList(); try { crmUser = JsonHelper.FromJson<UserModel>(JsData); } catch { result.code = APIModel.C_PARAMS_ERR; result.msg = APIModel.M_PARAMS_ERR + "Json数据转换异常"; return result; } var userName = crmUser.UserName; var flag = UserBLL.IsExistUserName(userName); if (!flag) { result = AddUser(crmUser, noCrossCenterList, specialAreaList); } else { result = EditUser(crmUser, noCrossCenterList, specialAreaList); } return result; }
/// <summary> /// 作者:Raymond /// 日期:2014-5-12 /// 描述:修改用户 /// ------------------------ /// 作者:Ark /// 日期:2014-8-18 /// 描述:Crm同步到Eme,不同步SA /// </summary> /// <param name="crmUser"></param> /// <param name="noCrossCenterList"></param> /// <param name="specialAreaList"></param> /// <returns></returns> public ResultModel EditUser(UserModel crmUser, List<int> noCrossCenterList, List<int> specialAreaList) { var list = new List<string>(); list.Add(crmUser.UserName); var result = new ResultModel() { msg = APIModel.M_PARAMS_ERR, code = APIModel.C_PARAMS_ERR, count = 0, results = list, }; var sex = Common.DataConvert.ConvertSex(crmUser.Sex); var resultTip = UserBLL.UpdateUserForCrm(crmUser, sex, APIModel.M_PARAMS_ERR, noCrossCenterList, specialAreaList); if (resultTip.Status != 100) { result.msg = resultTip.Msg; } else { result.msg = APIModel.M_SUCCESS; result.code = APIModel.C_SUCCESS; result.count = 1; } return result; }
/// <summary> /// 作者:Raymond /// 日期:2014-5-10 /// 描述:新增用户 /// </summary> /// <param name="crmUser"></param> /// <param name="noCrossCenterList"></param> /// <param name="specialAreaList"></param> /// <returns></returns> public ResultModel AddUser(UserModel crmUser, List<int> noCrossCenterList, List<int> specialAreaList) { // Crm用户名 var userName = crmUser.UserName; // 用户类型学员 var userType = CommonHelper.To<int>(UserType.Student); var passWord = crmUser.PassWord; var activeStatus = CommonHelper.To<int>(StatusType.Active); var list = new List<string>(); list.Add(userName); var result = new ResultModel() { msg = APIModel.M_PARAMS_ERR, code = APIModel.C_PARAMS_ERR, count = 0, results = list, }; int passwordLength = 6; if (string.IsNullOrEmpty(crmUser.Mobile) || crmUser.Mobile.Length < passwordLength) { result.msg += string.Concat(": Mobile字段不能为null或者空字符串,并且长度必须大于", passwordLength); return result; } passWord = string.IsNullOrEmpty(crmUser.PassWord) ? Utility.SecurityHelper.GetMd5(crmUser.Mobile.Substring(crmUser.Mobile.Length - passwordLength, passwordLength)) : crmUser.PassWord; var branchId = Common.DataConvert.ConvertBranch(crmUser.BranchId); if (branchId == -1) { result.msg = APIModel.M_PARAMS_ERR + ":没有找到对应的中心,中心错误"; return result; } var emeUser = new User() { UserName = userName, UserType = userType, Password = passWord, IsOverwriteRights = false, Status = activeStatus, }; var emeUserInfo = new UserInfo() { CName = crmUser.Cname, EName = crmUser.Ename, Email = crmUser.Email, Mobile = crmUser.Mobile, Birthday = crmUser.Birthday, Sex = Common.DataConvert.ConvertSex(crmUser.Sex), Status = activeStatus, Address = crmUser.Address, ConditionType = Common.DataConvert.ConvertConditionType(crmUser.Condition), CreateTime = DateTime.Now, }; var emeUserBranch = new UserBranch() { BranchId = branchId, IsMain = true, OrderNum = 0, Status = activeStatus, }; var emeStudent = new Student() { StudentTypeId = 1, SA = Common.DataConvert.ConvertUserNameToUserId(crmUser.SA), CC = Common.DataConvert.ConvertUserNameToUserId(crmUser.CC), ContractStatus = ConvertEnum.ContractStatusTypeForExcute, Status = activeStatus, CreateTime = DateTime.Now, }; var loginUserId = -1; try { var flagUser = UserBLL.CreateUser(emeUser, emeUserInfo, emeUserBranch, emeStudent, loginUserId, noCrossCenterList, specialAreaList); if (flagUser) { result.msg = APIModel.M_SUCCESS; result.code = APIModel.C_SUCCESS; result.count = 1; //写入薏米同学 //CreateUserToEdusoho(emeUserInfo.Email, emeUser.Id, emeUserInfo.CName + "|" + emeUserInfo.EName, emeUser.UserName, emeUser.Password, emeUser.UserType, emeUserInfo.Mobile, emeUserInfo.Sex, emeUserInfo.Birthday, result); } } catch (Exception e) { result.msg = "内部错误:" + e.Message.ToString(); } return result; }
/// <summary> /// 创建报备 /// </summary> /// <param name="JsData"></param> /// <returns></returns> public ResultModel CreateReferral(string JsData) { var result = new ResultModel() { msg = APIModel.M_PARAMS_ERR, code = APIModel.C_PARAMS_ERR }; ReferralModel crmReferral = null; try { // json数据转换 crmReferral = JsonHelper.FromJson<ReferralModel>(JsData); } catch (InvalidOperationException e)//如果换成Json.Net 这里要用JsonExecption捕获 { result.msg += "\r\nJson数据转换异常:" + e.Message; return result; } var crmReferralId = crmReferral.ReferralID; var list = new List<string>(); list.Add(crmReferralId.ToString()); result.results = list; var crmName = crmReferral.Name ?? "无"; var crmSex = crmReferral.Sex; var crmMobile = crmReferral.Mobile; var crmCustomerId = crmReferral.CustomerID; var crmState = crmReferral.State; var crmStage = crmReferral.State; var crmAddress = crmReferral.Address; var crmVisitTime = crmReferral.VisitTime; var crmCreateTime = Common.DataConvert.JsonToDateTime(crmReferral.CreateTime); var crmSales = crmReferral.Sales; var emeUser = Eme.BLL.Eme.UserBLL.GetUserByUserName(crmCustomerId.ToString()); if (emeUser == null) { result.msg += "老用户(学生EME号)不存在"; return result; } var referralStageType = DataConvert.ConvertRefferralStageType(crmStage); var referralStatusType = DataConvert.ConvertRefferralStatusType(crmState); var userSex = DataConvert.ConvertSex(crmSex); var flag = false; var referral = Eme.BLL.Eme.ReferralBLL.GetReferralByCrmId(crmReferralId); if (referral != null) { referral.UserId = emeUser.Id; referral.CName = crmName; referral.Sex = userSex; referral.Mobile = crmMobile; referral.Address = crmAddress; referral.ReferralStageType = referralStageType; referral.ReferralStatusType = referralStatusType; referral.VisitTime = crmVisitTime; referral.Status = ConvertEnum.StatusTypeForActive; referral.UpdateBy = -1; referral.UpdateTime = crmCreateTime; referral.Remark = "接口同步更新"; flag = Eme.BLL.Eme.ReferralBLL.UpdateReferral(referral); } else { referral = new Referral { V3Id = crmReferralId, UserId = emeUser.Id, CName = crmName, Sex = userSex, Mobile = crmMobile, Address = crmAddress, ReferralStageType = referralStageType, ReferralStatusType = referralStatusType, Status = ConvertEnum.StatusTypeForActive, VisitTime = crmVisitTime, CreateTime = crmCreateTime, CreateBy = -1, UpdateBy = -1, UpdateTime = crmCreateTime, Remark = "导入:sales=" + crmSales.ToString(), }; flag = Eme.BLL.Eme.ReferralBLL.CreateReferral(referral); } if (flag) { result.code = APIModel.C_SUCCESS; result.count += 1; result.msg = APIModel.M_SUCCESS; } return result; }
/// <summary> /// 作者:Raymond /// 日期:2014-5-12 /// 描述:合同延期 /// /// </summary> /// <param name="JsData"></param> /// <returns></returns> public ResultModel EmeContractDelay(string JsData) { var result = new ResultModel() { msg = APIModel.M_PARAMS_ERR, code = APIModel.C_PARAMS_ERR }; DelayContract delayContract = null; try { delayContract = JsonHelper.FromJson<DelayContract>(JsData); } catch { result.code = APIModel.C_PARAMS_ERR; result.msg = APIModel.M_PARAMS_ERR + "Json数据转换异常"; return result; } var crmContractId = delayContract.CrmContractId; var list = new List<string>(); list.Add(crmContractId.ToString()); result.results = list; try { var userName = delayContract.UserName; var userId = UserBLL.GetUserByUserName(userName).Id; var student = StudentBLL.GetStudentByUserId(userId); var statuActive = CommonHelper.To<int>(StatusType.Active); var emeContract = StudentBLL.GetContractByCrmContractId(crmContractId); //合同结束日期 var contractEndDate = Common.DataConvert.JsonToDateTime(delayContract.ContractEndDate); //合同更新日期 var updateTime = Common.DataConvert.JsonToDateTime(delayContract.CreateTime); var updateBy = -1; var contractStatusType = Common.DataConvert.ConvertContractStatus(delayContract.Status); if (emeContract != null) { //合同编号 var contractId = emeContract.Id; //用户名和与合同号匹配,可以更改合同 if (emeContract.StudentId == student.Id) { var flag = StudentBLL.UpdateContract(emeContract, contractEndDate, updateTime, updateBy, contractStatusType, loginUserId); if (flag) { result.msg = APIModel.M_SUCCESS; result.code = APIModel.C_SUCCESS; result.count = 1; } } } else { var studentId = student.Id; var flag = StudentBLL.DelayContract(studentId, contractEndDate, updateTime, updateBy, contractStatusType, loginUserId); if (flag) { result.msg = APIModel.M_SUCCESS; result.code = APIModel.C_SUCCESS; result.count = 1; } } //待记录日志 } catch { } return result; }
/// <summary> /// 作者:Raymond /// 日期:2014-5-12 /// 描述:eme合同服务基础接口(新增、修改) /// ------------------------------------ /// 更新:Ark /// 时间:2014.08.06 /// 描述:单个ContractDetail修改为多个 /// </summary> /// <param name="jsonData"></param> /// <returns></returns> public ResultModel EmeContractService(string jsonData) { //初始化返回结果 var result = new ResultModel() { msg = APIModel.M_PARAMS_ERR, code = APIModel.C_PARAMS_ERR }; ContractModel crmContract = null; try { // json数据转换 crmContract = JsonHelper.FromJson<ContractModel>(jsonData); } catch { result.msg += "Json数据转换异常"; return result; } var crmContractId = crmContract.CrmContractId; var list = new List<string> { crmContractId.ToString() }; result.results = list; // 判断数据是否有ContractDetail if (null == crmContract.ContractDetails || crmContract.ContractDetails.Count == 0) { result.msg += ":没有ContractDetail信息!"; return result; } try { // 获取学员用户及判断 var userName = crmContract.UserName; var emeUser = UserBLL.GetUserByUserName(userName); if (emeUser == null) { result.msg += ":用户信息不存在!"; return result; } var student = StudentBLL.GetStudentByUserId(emeUser.Id); if (student == null) { result.msg += ":学员信息不存在!"; return result; } var contractNum = crmContract.ContractNum; var studentId = student.Id; var begDate = DataConvert.JsonToDateTime(crmContract.BeginDate); var endDate = DataConvert.JsonToDateTime(crmContract.EndDate); //合同类型 var contractStatus = DataConvert.ConvertContractStatus(crmContract.Status); List<int> contractTypes = new List<int>(); List<int> productIds = new List<int>(); List<string> emeLevels = new List<string>(); List<string> currentLevels = new List<string>(); // 循环验证ContractDetail数据 foreach (var item in crmContract.ContractDetails) { var contractType = DataConvert.ConvertContractType(item.ContractType); var productId = DataConvert.ConvertProductId(item.ProductId); var emeLevel = DataConvert.ConvertCrmProductLevel(productId, item.ProductLevelId); //2014-11-1 raymond 修改一个产品下,多级别同时开通 var curLevels = string.IsNullOrEmpty(item.CurrentLevel) ? new List<string> { "-1" } : item.CurrentLevel.Split(',').ToList(); string emeCurLevels = ""; foreach (var level in curLevels) { var currentLevel = DataConvert.ConvertProductLevelId(productId, level); emeCurLevels += currentLevel.ToString() + ","; //currentLevels.Add(currentLevel); } currentLevels.Add(emeCurLevels.Trim(',')); //var currentLevel = DataConvert.ConvertProductLevelId(productId, item.CurrentLevel); if (!string.IsNullOrWhiteSpace(item.CurrentLevel)) DataConvert.ConvertProductLevelId(productId, item.CurrentLevel); if (contractType == -1) { result.msg = APIModel.M_PARAMS_ERR + ":合同类型错误,没有对应的合同类型!"; return result; } if (productId == -1) { result.msg = APIModel.M_PARAMS_ERR + ":产品错误,没有对应的产品!"; return result; } if (emeLevel == "") { result.msg = APIModel.M_PARAMS_ERR + ":级别错误,没有对应的级别!"; return result; } if (contractStatus == -1) { result.msg = APIModel.M_PARAMS_ERR + ":合同状态错误,没有对应的合同状态!"; return result; } //if (currentLevel == -1) //{ // result.msg = APIModel.M_PARAMS_ERR + ":当前级别错误,没有对应的当前级别!"; // return result; //} contractTypes.Add(contractType); productIds.Add(productId); emeLevels.Add(emeLevel); } //不可用状态 102 2015-02-28 beta 修改为有效状态 var emeStatusActive = CommonHelper.To<int>(StatusType.Active); //是否合同结束,合同结束status状态设置为不可用。 var contract = StudentBLL.GetContractByCrmContractId(crmContractId); //CRM合同号存在,进行修改 if (contract != null) { //学生能对应上 // var flag2 = (studentId == emeContract.StudentId); contract.CrmContractId = crmContractId; contract.StudentId = studentId; contract.ContractNum = contractNum; contract.Status = ConvertEnum.StatusTypeForActive; contract.BeginDate = begDate; contract.EndDate = endDate; contract.UpdateBy = loginUserId; contract.UpdateTime = DateTime.Now; //合同结束,状态为不可用 2015.02.28 beta 修改为可用 转online 退费之后还需要查询订退课记录 if (contractStatus == CommonHelper.To<int>(ContractStatusType.Over)) contract.Status = emeStatusActive; var flag = StudentBLL.UpdateContract(contract, emeUser.Id, productIds, emeLevels, currentLevels, contractTypes, contractStatus, loginUserId); if (flag) { result.msg = APIModel.M_SUCCESS; result.code = APIModel.C_SUCCESS; result.count = 1; } } //不存在,调用新增合同,先删除已有crmcontractid为空的合同 else { contract = new Contract() { CrmContractId = crmContractId, StudentId = studentId, ContractNum = contractNum, BeginDate = begDate, EndDate = endDate, Status = ConvertEnum.StatusTypeForActive, CreateBy = loginUserId, CreateTime = DateTime.Now }; //先删除已有crmcontractid为空的合同 var bookRecordIds = StudentBLL.UpdateContract(studentId, loginUserId); //新增合同 var OldcontractNum = crmContract.OldCrmContractId; var flag = StudentBLL.CreateContract(contract, emeUser.Id, productIds, emeLevels, currentLevels, contractTypes, contractStatus, bookRecordIds, OldcontractNum); if (flag) { result.msg = APIModel.M_SUCCESS; result.code = APIModel.C_SUCCESS; result.count = 1; } } } catch (Exception e) { result.msg = "内部错误:" + e.Message.ToString(); } return result; }
/// <summary> /// 作者:Raymond /// 日期:2014-5-12 /// 描述:合同冻结 /// </summary> /// <param name="JsData"></param> /// <returns></returns> public ResultModel EmeContractDivest(string JsData) { var result = new ResultModel() { msg = APIModel.M_PARAMS_ERR, code = APIModel.C_PARAMS_ERR }; DivestContractModel divestContract = null; try { divestContract = JsonHelper.FromJson<DivestContractModel>(JsData); } catch { result.code = APIModel.C_PARAMS_ERR; result.msg = APIModel.M_PARAMS_ERR + "Json数据转换异常"; return result; } var crmContractId = divestContract.CrmContractId; var list = new List<string>(); list.Add(crmContractId.ToString()); result.results = list; try { var userName = divestContract.UserName; var userId = UserBLL.GetUserByUserName(userName).Id; var emeContract = StudentBLL.GetContractByCrmContractId(crmContractId); var student = StudentBLL.GetStudentByUserId(userId); var statuActive = CommonHelper.To<int>(StatusType.Active); //合同结束日期 var contractEndDate = Common.DataConvert.JsonToDateTime(divestContract.ContractEndDate); //合同更新日期 var updateTime = divestContract.UpdateTime.HasValue ? divestContract.UpdateTime : Common.DataConvert.JsonToDateTime(divestContract.CreateTime); var updateBy = -1; var contractStatusType = Common.DataConvert.ConvertContractStatus(divestContract.Status); if (emeContract == null) { result.msg += "crm合同"; return result; } //用户名和与合同号匹配,可以更改合同 if (emeContract.StudentId == student.Id) { var flag1 = StudentBLL.CreateOrUpdateContractFrozenDetail(emeContract, divestContract.DivestBegDate, divestContract.DivestEndDate, divestContract.UnDivestDate); var flag = StudentBLL.UpdateContract(emeContract, contractEndDate, updateTime, updateBy, contractStatusType, loginUserId); if (flag) { result.msg = APIModel.M_SUCCESS; result.code = APIModel.C_SUCCESS; result.count = 1; } } } catch { return result; } return result; }
public ResultModel EmeContractDelete(string jsData) { var result = new ResultModel() { msg = APIModel.M_PARAMS_ERR, code = APIModel.C_PARAMS_ERR }; ContractModel crmContract = null; try { // json数据转换 crmContract = JsonHelper.FromJson<ContractModel>(jsData); } catch (Exception ex) { result.msg += "Json数据转换异常" + ex.Message; return result; } var resultTemp = StudentBLL.UpdateContractStatus(crmContract.CrmContractId, StatusType.Delete, -1); return resultTemp ? new ResultModel { code = APIModel.C_SUCCESS, msg = APIModel.M_SUCCESS } : new ResultModel { code = APIModel.C_PARAMS_ERR, msg = APIModel.M_PARAMS_ERR }; }