public ActionResult Import(Models.SmsConfig.Import vm) { if (ModelState.IsValid) { var file = Request.Files[nameof(vm.UploadFile)]; var fileSave = System.IO.Path.GetTempFileName(); file.SaveAs(fileSave); using (var db = new XkSystem.Models.DbContext()) { #region 1、Excel模版校验 if (Code.Common.GetFileType(file.FileName) != Code.FileType.Excel) { ModelState.AddModelError("", "上传的文件不是正确的EXCLE文件!"); return(View(vm)); } var dt = Code.NpoiHelper.ExcelToDataTable(fileSave, System.IO.Path.GetExtension(file.FileName), string.Empty); if (dt == null) { ModelState.AddModelError("", "无法读取上传的文件,请检查文件格式是否正确!"); return(View(vm)); } var tbList = new List <string>() { "排序", "短信服务", "服务类型", "短信账户", "短信密码", "短信地址(阿里)", "短信签名(阿里)", "短信模版(阿里)", "状态" }; var Text = string.Empty; foreach (var a in tbList) { if (!dt.Columns.Contains(a.ToString())) { Text += a + ","; } } if (!string.IsNullOrEmpty(Text)) { ModelState.AddModelError("", "上传的EXCEL晚自习内容与预期不一致,缺少对应的字段:" + Text); return(View(vm)); } #endregion #region 2、Excel数据读取 foreach (System.Data.DataRow dr in dt.Rows) { var dtoKpi = new Dto.SmsConfig.Import() { No = Convert.ToString(dr["排序"]), SmsServer = Convert.ToString(dr["短信服务"]), SmsServerType = Convert.ToString(dr["服务类型"]), SmsAccount = Convert.ToString(dr["短信账户"]), SmsPassword = Convert.ToString(dr["短信密码"]), SmsUrl = Convert.ToString(dr["短信地址(阿里)"]), SmsFreeSignName = Convert.ToString(dr["短信签名(阿里)"]), SmsTemplateCode = Convert.ToString(dr["短信模版(阿里)"]), Status = Convert.ToString(dr["状态"]) }; if (vm.ImportList.Where(d => d.No == dtoKpi.No && d.SmsServer == dtoKpi.SmsServer && d.SmsServerType == dtoKpi.SmsServerType && d.SmsAccount == dtoKpi.SmsAccount && d.SmsPassword == dtoKpi.SmsPassword && d.SmsUrl == dtoKpi.SmsUrl && d.SmsFreeSignName == dtoKpi.SmsFreeSignName && d.SmsTemplateCode == dtoKpi.SmsTemplateCode && d.Status == dtoKpi.Status).Count() == 0) { vm.ImportList.Add(dtoKpi); } } vm.ImportList.RemoveAll(d => string.IsNullOrEmpty(d.No) && string.IsNullOrEmpty(d.SmsServer) && string.IsNullOrEmpty(d.SmsServerType) && string.IsNullOrEmpty(d.SmsAccount) && string.IsNullOrEmpty(d.SmsPassword) && string.IsNullOrEmpty(d.SmsUrl) && string.IsNullOrEmpty(d.SmsFreeSignName) && string.IsNullOrEmpty(d.SmsTemplateCode) && string.IsNullOrEmpty(d.Status)); if (vm.ImportList.Count == 0) { ModelState.AddModelError("", "Excel未读取到任何有效数据!"); return(View(vm)); } #endregion #region 3、Excel格式校验 //评价小组 var SmsConfigList = (from p in db.Table <Entity.tbSmsConfig>() select p).ToList(); var SmsConfigTypeList = typeof(Code.EnumHelper.SmsServerType).ToItemList(); var IsStatus = new List <string>() { "已启用", "未启用" }; foreach (var item in vm.ImportList) { #region 排序 int No = 0; if (int.TryParse(item.No, out No) == false || No <= 0) { item.Error = item.Error + "【排序】必须是正整数!"; continue; } #endregion #region 短信服务 if (string.IsNullOrEmpty(item.SmsServer)) { item.Error = item.Error + "【短信服务】不能为空!"; continue; } #endregion #region 务类型 if (string.IsNullOrEmpty(item.SmsServerType)) { item.SmsServerType = "未知"; } else { if (SmsConfigTypeList.Where(d => d.Text == item.SmsServerType).Count() == decimal.Zero) { item.Error += "【服务类型】必须是:未知、开维教育、阿里大鱼!"; continue; } } #endregion #region 短信账户 if (string.IsNullOrEmpty(item.SmsAccount)) { item.Error = item.Error + "【短信账户】不能为空!"; continue; } #endregion #region 短信密码 if (string.IsNullOrEmpty(item.SmsPassword)) { item.Error = item.Error + "【短信密码】不能为空!"; continue; } #endregion #region 短信地址(阿里) if (string.IsNullOrEmpty(item.SmsUrl) && item.SmsServerType == "阿里大鱼") { item.Error = item.Error + "【短信地址(阿里)】不能为空!"; continue; } #endregion #region 短信签名(阿里) if (string.IsNullOrEmpty(item.SmsFreeSignName) && item.SmsServerType == "阿里大鱼") { item.Error = item.Error + "【短信签名(阿里)】不能为空!"; continue; } #endregion #region 短信模板(阿里) if (string.IsNullOrEmpty(item.SmsTemplateCode) && item.SmsServerType == "阿里大鱼") { item.Error = item.Error + "【短信模板(阿里)】不能为空!"; continue; } #endregion #region 状态 if (string.IsNullOrEmpty(item.Status)) { item.Status = "未启用"; } else { if (IsStatus.Where(d => d == item.Status).Count() == decimal.Zero) { item.Error += "【状态】必须是:已启用、未启用!"; continue; } } #endregion #region 是否更新 if (vm.IsUpdate) { if (SmsConfigList.Where(d => d.SmsServer == item.SmsServer).Count() > decimal.One) { item.Error += "系统中该短信配置数据存在重复,无法确认需要更新的记录!"; continue; } } else { if (SmsConfigList.Where(d => d.SmsServer == item.SmsServer).Count() > decimal.Zero) { item.Error += "系统中已存在该记录!"; continue; } } #endregion } if (vm.ImportList.Where(d => string.IsNullOrEmpty(d.Error) == false).Count() > 0) { vm.ImportList.RemoveAll(d => string.IsNullOrEmpty(d.Error)); return(View(vm)); } #endregion #region 5、Excel执行导入 var addKpiItemList = new List <Entity.tbSmsConfig>(); foreach (var item in vm.ImportList) { Entity.tbSmsConfig tb = null; if (SmsConfigList.Where(d => d.SmsServer == item.SmsServer).Count() > decimal.Zero) { if (vm.IsUpdate) { tb = SmsConfigList.Where(d => d.SmsServer == item.SmsServer).FirstOrDefault(); tb.No = item.No.ConvertToInt(); tb.SmsServer = item.SmsServer; tb.SmsAccount = Code.Common.DESEnCode(item.SmsAccount); tb.SmsPassword = Code.Common.DESEnCode(item.SmsPassword); tb.SmsUrl = Code.Common.DESEnCode(item.SmsUrl); tb.SmsFreeSignName = Code.Common.DESEnCode(item.SmsFreeSignName); tb.SmsTemplateCode = Code.Common.DESEnCode(item.SmsTemplateCode); tb.Status = item.Status == "已启用" ? true : false; #region 短信类型 if (item.SmsServerType == "未知") { tb.SmsServerType = Code.EnumHelper.SmsServerType.None; } else if (item.SmsServerType == "开维教育") { tb.SmsServerType = Code.EnumHelper.SmsServerType.KaiWei; } else if (item.SmsServerType == "阿里大鱼") { tb.SmsServerType = Code.EnumHelper.SmsServerType.Aali; } else { tb.SmsServerType = Code.EnumHelper.SmsServerType.None; } #endregion } } else { if (addKpiItemList.Where(d => d.SmsServer == item.SmsServer).Count() == decimal.Zero) { tb = new Entity.tbSmsConfig(); tb.No = item.No.ConvertToInt(); tb.SmsServer = item.SmsServer; tb.SmsAccount = Code.Common.DESEnCode(item.SmsAccount); tb.SmsPassword = Code.Common.DESEnCode(item.SmsPassword); tb.SmsUrl = Code.Common.DESEnCode(item.SmsUrl); tb.SmsFreeSignName = Code.Common.DESEnCode(item.SmsFreeSignName); tb.SmsTemplateCode = Code.Common.DESEnCode(item.SmsTemplateCode); tb.Status = item.Status == "已启用" ? true : false; tb.IsDefault = false; #region 短信类型 if (item.SmsServerType == "未知") { tb.SmsServerType = Code.EnumHelper.SmsServerType.None; } else if (item.SmsServerType == "开维教育") { tb.SmsServerType = Code.EnumHelper.SmsServerType.KaiWei; } else if (item.SmsServerType == "阿里大鱼") { tb.SmsServerType = Code.EnumHelper.SmsServerType.Aali; } else { tb.SmsServerType = Code.EnumHelper.SmsServerType.None; } #endregion addKpiItemList.Add(tb); } else { tb = addKpiItemList.Where(d => d.SmsServer == item.SmsServer).FirstOrDefault(); } } } db.Set <Entity.tbSmsConfig>().AddRange(addKpiItemList); if (db.SaveChanges() > 0) { XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("批量导入了短信配置"); vm.Status = true; } #endregion } } vm.ImportList.RemoveAll(d => string.IsNullOrEmpty(d.Error)); return(View(vm)); }
public ActionResult Edit(Models.SmsConfig.Edit vm) { using (var db = new XkSystem.Models.DbContext()) { var error = new List <string>(); if (error.Count == decimal.Zero) { if (db.Table <Entity.tbSmsConfig>().Where(d => d.SmsServer == vm.SmsConfigEdit.SmsServer && d.Id != vm.SmsConfigEdit.Id).Any()) { error.AddError("该短信配置已经存在!"); return(Code.MvcHelper.Post(error)); } if (vm.SmsConfigEdit.IsDefault) { var tb = from p in db.Table <Entity.tbSmsConfig>() select p; foreach (var section in tb) { section.IsDefault = false; } db.SaveChanges(); } if (vm.SmsConfigEdit.Id == 0) { var tb = new Entity.tbSmsConfig(); tb.No = vm.SmsConfigEdit.No == null?db.Table <Entity.tbSmsConfig>().Select(d => d.No).DefaultIfEmpty(0).Max() + 1 : (int)vm.SmsConfigEdit.No; tb.SmsServer = vm.SmsConfigEdit.SmsServer; tb.SmsServerType = vm.SmsConfigEdit.SmsServerType; tb.SmsAccount = Code.Common.DESEnCode(vm.SmsConfigEdit.SmsAccount); tb.SmsPassword = Code.Common.DESEnCode(vm.SmsConfigEdit.SmsPassword); tb.SmsUrl = Code.Common.DESEnCode(string.IsNullOrEmpty(vm.SmsConfigEdit.SmsUrl) ? "" : vm.SmsConfigEdit.SmsUrl); tb.SmsFreeSignName = Code.Common.DESEnCode(string.IsNullOrEmpty(vm.SmsConfigEdit.SmsFreeSignName) ? "" : vm.SmsConfigEdit.SmsFreeSignName); tb.SmsTemplateCode = Code.Common.DESEnCode(string.IsNullOrEmpty(vm.SmsConfigEdit.SmsTemplateCode) ? "" : vm.SmsConfigEdit.SmsTemplateCode); tb.Status = vm.SmsConfigEdit.Status; tb.IsDefault = vm.SmsConfigEdit.IsDefault; db.Set <Entity.tbSmsConfig>().Add(tb); if (db.SaveChanges() > 0) { XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("添加了短信服务配置"); } } else { var tb = (from p in db.Table <Entity.tbSmsConfig>() where p.Id == vm.SmsConfigEdit.Id select p).FirstOrDefault(); if (tb != null) { tb.No = vm.SmsConfigEdit.No == null?db.Table <Entity.tbSmsConfig>().Select(d => d.No).DefaultIfEmpty(0).Max() + 1 : (int)vm.SmsConfigEdit.No; tb.SmsServer = vm.SmsConfigEdit.SmsServer; tb.SmsServerType = vm.SmsConfigEdit.SmsServerType; tb.SmsAccount = Code.Common.DESEnCode(vm.SmsConfigEdit.SmsAccount); tb.SmsPassword = Code.Common.DESEnCode(vm.SmsConfigEdit.SmsPassword); tb.SmsUrl = Code.Common.DESEnCode(string.IsNullOrEmpty(vm.SmsConfigEdit.SmsUrl) ? "" : vm.SmsConfigEdit.SmsUrl); tb.SmsFreeSignName = Code.Common.DESEnCode(string.IsNullOrEmpty(vm.SmsConfigEdit.SmsFreeSignName) ? "" : vm.SmsConfigEdit.SmsFreeSignName); tb.SmsTemplateCode = Code.Common.DESEnCode(string.IsNullOrEmpty(vm.SmsConfigEdit.SmsTemplateCode) ? "" : vm.SmsConfigEdit.SmsTemplateCode); tb.Status = vm.SmsConfigEdit.Status; tb.IsDefault = vm.SmsConfigEdit.IsDefault; if (db.SaveChanges() > 0) { XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("修改了短信服务配置"); } } else { error.AddError(Resources.LocalizedText.MsgNotFound); } } } return(Code.MvcHelper.Post(error)); } }