Ejemplo n.º 1
0
        /// <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);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <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++;
                        }
                    }
                }
            }
        }