/// <summary> /// 导入与图片一致的商品 /// </summary> public void ImportGood() { var 图片不正确商品列表 = new List<商品>(); //已存在商品-excel中 var 已存在商品 = new List<商品>(); var 有效商品 = new List<商品>(); var gd = Request.Params["datas"]; var pic = Request.Params["pics"]; var goods = Mongo.Coll<TplData>().Find(Query.EQ("_id", long.Parse(gd))).FirstOrDefault(); var pics = Mongo.Coll<TplPic>().Find(Query.EQ("_id", long.Parse(pic))).FirstOrDefault(); var ImgExts = new[] { "jpg", "jpeg", "png", "gif" }; //判断压缩包是否含相应图片 var zip = ZipFile.Read(pics.path, new ReadOptions { Encoding = Encoding.Default }); foreach (var excellist in goods.datalist) { foreach (var excel in excellist) { if (!string.IsNullOrWhiteSpace(excel.imgDir)) { var count = zip.Entries.Count(zf => !zf.IsDirectory && zf.FileName.StartsWith(excel.imgDir + "/") && ImgExts.Contains((zf.FileName.Split('.').Last().ToLower())) ); //var count4 = zip.Entries.Count(zf => // !zf.IsDirectory // && zf.FileName.StartsWith(excel.imgDir + "/") // && ImgExts.Contains(Path.GetExtension(zf.FileName)) // ); if (count == 0 && !图片不正确商品列表.Contains(excel.p)) { 图片不正确商品列表.Add(excel.p); } } } } //判断是否存在商品 foreach (var excellist in goods.datalist) { if (excellist.Any()) { var 商品分类 = excellist[0].p.商品信息.所属商品分类; var 已有该分类商品集合 = 商品管理.查询分类下商品(商品分类.商品分类ID, 0, 0, Query<商品>.Where(o => o.商品信息.所属供应商.用户ID == currentUser.Id)); foreach (var excel in excellist) { foreach (var sp in 已有该分类商品集合) { if (!图片不正确商品列表.Contains(excel.p) && !已存在商品.Contains(excel.p) && sp.商品信息.商品名 == excel.p.商品信息.商品名) { 已存在商品.Add(excel.p); } } } } } foreach (var excellist in goods.datalist) { foreach (var excel in excellist) { if (!已存在商品.Contains(excel.p) && !有效商品.Contains(excel.p) && !图片不正确商品列表.Contains(excel.p)) { 有效商品.Add(excel.p); } } } //临时文件夹生成GUID文件夹,防止重名 var guid = Guid.NewGuid(); foreach (var excellist in goods.datalist) { foreach (var excel in excellist) { if (有效商品.Contains(excel.p)) { var sp = excel.p; var 图片列表 = zip.Entries.Where(zf => !zf.IsDirectory && zf.FileName.StartsWith(excel.imgDir + "/") && ImgExts.Contains((zf.FileName.Split('.').Last().ToLower())) ); foreach (var entry in 图片列表) { //Extract解压zip文件包的方法,参数是保存解压后文件的路基 entry.Extract(@"D:\TempPic\" + guid + "\\"); string filePath = 上传管理.获取上传路径<商品>(媒体类型.图片, 路径类型.服务器本地路径); string filePath1 = 上传管理.获取上传路径<商品>(媒体类型.图片, 路径类型.不带域名根路径); string fileName = 上传管理.获取文件名(entry.FileName.Split('/').Last()).Replace("{", "").Replace("}", ""); if (fileName.LastIndexOf("\\") > -1) { fileName = fileName.Substring(fileName.LastIndexOf("\\") + 1); } string originalpath = string.Format("{0}original", filePath);//原图路径 if (!Directory.Exists(originalpath)) { Directory.CreateDirectory(originalpath); } //保存原图 System.IO.File.Move(@"D:\TempPic\" + guid + "\\" + entry.FileName, string.Format("{0}\\{1}", originalpath, fileName)); //缩略图350*350 UploadPic.MakeThumbnail(string.Format("{0}\\{1}", originalpath, fileName), string.Format("{0}350X350\\{1}", filePath, fileName), 350, 350, "Cut"); //缩略图150*150 UploadPic.MakeThumbnail(string.Format("{0}\\{1}", originalpath, fileName), string.Format("{0}150X150\\{1}", filePath, fileName), 150, 150, "Cut"); //缩略图50*50 UploadPic.MakeThumbnail(string.Format("{0}\\{1}", originalpath, fileName), string.Format("{0}50X50\\{1}", filePath, fileName), 50, 50, "Cut"); //图片的相对路径,存入数据库的值 var path = filePath1 + "original/" + fileName; sp.商品信息.商品图片.Add(path); } 商品管理.添加商品(sp, sp.商品信息.所属商品分类.商品分类ID, currentUser.Id); } } } }
/// <summary> /// 更新存在的商品 /// </summary> public void UpdateExistGood() { var gd = Request.Params["datas"]; var pic = Request.Params["pics"]; var id = Request.Params["id"]; var goods = Mongo.Coll<TplData>().Find(Query.EQ("_id", long.Parse(gd))).FirstOrDefault(); var pics = Mongo.Coll<TplPic>().Find(Query.EQ("_id", long.Parse(pic))).FirstOrDefault(); var ImgExts = new[] { "jpg", "jpeg", "png", "gif" }; var 需更新商品的商品名列表 = new List<string>(); var idlist = id.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); foreach (var item in idlist) { 需更新商品的商品名列表.Add(商品管理.查找商品(long.Parse(item)).商品信息.商品名); } var sortnum = 0; var zip = ZipFile.Read(pics.path, new ReadOptions { Encoding = Encoding.Default }); var guid = Guid.NewGuid(); foreach (var item in 需更新商品的商品名列表) { foreach (var excellist in goods.datalist) { foreach (var excel in excellist) { if (item == excel.p.商品信息.商品名) { var sp_id = long.Parse(idlist[sortnum]); //删除商品原图片 var 原商品图片 = 商品管理.查找商品(sp_id).商品信息.商品图片; foreach (var sp_pic in 原商品图片) { try { UploadPic.DelPic(string.Format("{0}", sp_pic)); UploadPic.DelPic(string.Format("{0}", sp_pic.Replace("original", "350X350"))); UploadPic.DelPic(string.Format("{0}", sp_pic.Replace("original", "150X150"))); UploadPic.DelPic(string.Format("{0}", sp_pic.Replace("original", "50X50"))); } catch { } } var sp = excel.p; sp.Id = sp_id; var 图片列表 = zip.Entries.Where(zf => !zf.IsDirectory && zf.FileName.StartsWith(excel.imgDir + "/") && ImgExts.Contains((zf.FileName.Split('.').Last().ToLower())) ); foreach (var entry in 图片列表) { //Extract解压zip文件包的方法,参数是保存解压后文件的路基 entry.Extract(@"D:\TempPic\" + guid + "\\"); string filePath = 上传管理.获取上传路径<商品>(媒体类型.图片, 路径类型.服务器本地路径); string filePath1 = 上传管理.获取上传路径<商品>(媒体类型.图片, 路径类型.不带域名根路径); string fileName = 上传管理.获取文件名(entry.FileName.Split('/').Last()).Replace("{", "").Replace("}", ""); if (fileName.LastIndexOf("\\") > -1) { fileName = fileName.Substring(fileName.LastIndexOf("\\") + 1); } string originalpath = string.Format("{0}original", filePath);//原图路径 if (!Directory.Exists(originalpath)) { Directory.CreateDirectory(originalpath); } //保存原图 System.IO.File.Move(@"D:\TempPic\" + guid + "\\" + entry.FileName, string.Format("{0}\\{1}", originalpath, fileName)); //缩略图350*350 UploadPic.MakeThumbnail(string.Format("{0}\\{1}", originalpath, fileName), string.Format("{0}350X350\\{1}", filePath, fileName), 350, 350, "Cut"); //缩略图150*150 UploadPic.MakeThumbnail(string.Format("{0}\\{1}", originalpath, fileName), string.Format("{0}150X150\\{1}", filePath, fileName), 150, 150, "Cut"); //缩略图50*50 UploadPic.MakeThumbnail(string.Format("{0}\\{1}", originalpath, fileName), string.Format("{0}50X50\\{1}", filePath, fileName), 50, 50, "Cut"); //图片的相对路径,存入数据库的值 var path = filePath1 + "original/" + fileName; sp.商品信息.商品图片.Add(path); } 商品管理.更新商品(sp); sortnum++; } } } } }