Example #1
0
        /// <summary>
        /// 导入店铺
        /// </summary>
        /// <param name="request"></param>
        /// <param name="files"></param>
        /// <param name="merchantId"></param>
        /// <returns></returns>
        public async Task <ResultBase> ImportShops(HttpFileCollectionBase files, int manager)
        {
            if (files == null || files.Count == 0)
            {
                return(ResultBase <UploadExcelCheckResultModel> .Fail("请上传文件"));
            }

            var file = files[0];

            if (file.ContentLength == 0)
            {
                return(ResultBase <UploadExcelCheckResultModel> .Fail("文件内容为空"));
            }

            string fileName = file.FileName;//取得文件名字
            var    fileExt  = fileName.Substring(fileName.LastIndexOf('.') + 1);

            string[] msExcelFiles = { "xlsx", "xls" };
            if (!msExcelFiles.Any(m => m == fileExt))
            {
                return(ResultBase <UploadExcelCheckResultModel> .Fail("只支持EXCEL文件"));
            }

            var filePath     = $"/Upload/Shops/";
            var saveFilePath = HttpContext.Current.Server.MapPath($"~{filePath}");

            if (!Directory.Exists(saveFilePath))
            {
                Directory.CreateDirectory(saveFilePath);
            }

            //改名称
            var    newFileName = ConvertHelper.ConvertDtToUnixTimeSpan(DateTime.Now) + "." + fileExt;
            string path        = saveFilePath + newFileName;//获取存储的目标地址

            file.SaveAs(path);

            //读取excel
            var data = ExcelHelper.ReadExcelNoIndex <ExportShopsModel>(path, "店铺上传");

            if (data == null || data.Count == 0)
            {
                return(ResultBase.Fail("没有有效数据"));
            }

            mLogHelper.Info($"开始执行导入快递单号,总量:{data.Count}");

            //分组批量插入数据
            var        groups  = data.GroupBy(m => m.SalemanName);
            List <int> taskIds = new List <int>();

            foreach (var group in groups)
            {
                var saleman = await salemanManager.FindByName(group.Key);

                if (saleman == null)
                {
                    continue;
                }

                var items = group.ToList();
                List <ShopEntity> entities = new List <ShopEntity>();
                var total = 0;
                foreach (var item in items)
                {
                    if (string.IsNullOrEmpty(item.Name) || string.IsNullOrEmpty(item.SalemanName))
                    {
                        continue;
                    }

                    var entity = item.Convert <ShopEntity>();
                    entity.SalemanId = saleman.Id;
                    entity.CreatedAt = DateTime.Now;
                    entity.CreatedBy = manager;
                    entities.Add(entity);
                    total += 1;
                }

                var trans = DapperDataAccess.BeginTransaction(IsolationLevel.ReadCommitted);
                try
                {
                    await shopsManager.InsertBatchAsync(entities, trans);

                    DapperDataAccess.Commit(trans);
                }
                catch (ShowMessageException ex)
                {
                    DapperDataAccess.Rollback(trans);
                    return(ResultBase.Fail(ex.Message));
                }
                catch (Exception ex)
                {
                    DapperDataAccess.Rollback(trans);
                    return(ResultBase.Fail(ex.Message));
                }
            }

            mLogHelper.Info($"导入执行完毕");
            return(ResultBase.Sucess());
        }