Пример #1
0
        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));
        }
Пример #2
0
        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));
            }
        }