protected void Page_Load(object sender, EventArgs e) { if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0) { var fileroute = Winner.Creator.Get <Winner.Storage.IFile>(); var fileName = string.Format("Files/Temp/{0}", Request.Files[0].FileName); fileName = fileroute.CreateFileName(fileName); var fileByte = new byte[Request.Files[0].InputStream.Length]; Request.Files[0].InputStream.Read(fileByte, 0, fileByte.Length); var goodsImage = new GoodsImageEntity { FileByte = fileByte, FileName = fileName }; var errors = Winner.Creator.Get <IValidation>() .ValidateInfo(goodsImage, ValidationType.Modify, new List <string> { "FileName", "FileByte" }); if (errors != null && errors.Count > 0) { Response.Write(string.Format("<script type='text/javascript'>document.domain='{0}';parent.Goods.Publisher.Image.UploadFailure('{1}','{2}');</script>", ConfigurationManager.GetSetting <string>("Domain"), Request.QueryString["ctrlid"], errors[0].Message)); return; } Ioc.Resolve <IFileApplicationService>().Save(fileName, fileByte); Response.Write(string.Format("<script type='text/javascript'>document.domain='{0}';parent.Goods.Publisher.Image.UploadSucess('{1}','{2}');</script>", ConfigurationManager.GetSetting <string>("Domain"), Request.QueryString["ctrlid"], goodsImage.FullFileName)); } }
/// <summary> /// 填充商品主图 /// </summary> /// <param name="directory"></param> /// <param name="category"></param> /// <param name="goods"></param> /// <param name="sku"></param> protected virtual void FillGoodImages(DirectoryInfo directory, CategoryEntity category, GoodsEntity goods, string sku) { if (directory == null || !directory.Exists) { return; } var files = directory.GetFiles() .Where(it => it.Name.ToLower().EndsWith(".jpg") || it.Name.ToLower().EndsWith(".png") || it.Name.ToLower().EndsWith(".gif")) .OrderBy(it => it.Name.Replace(Path.GetExtension(it.Name), "").Convert <int>()).ToArray(); goods.GoodsImages = goods.GoodsImages ?? new List <GoodsImageEntity>(); var i = 1; foreach (var file in files) { var product = goods.Products == null || string.IsNullOrEmpty(sku) ? null : goods.Products.FirstOrDefault(it => it.Sku == sku); if (product == null) { product = new ProductEntity { Id = 0 } } ; var goodsImage = new GoodsImageEntity { SaveType = SaveType.Add, Sequence = i, Goods = goods, FileName = string.Format("Files/Images/Goods/{0}", file.Name), Product = product, FileByte = GetFileByte(file.FullName), }; i++; goods.GoodsImages.Add(goodsImage); } if (goods.Products == null) { return; } var dics = directory.GetDirectories(); foreach (var dic in dics) { var product = goods.Products.FirstOrDefault(it => it.Name == dic.Name); if (product == null) { continue; } FillGoodImages(dic, category, goods, product.Sku); } }
/// <summary> /// 添加商品属性 /// </summary> /// <param name="infos"></param> /// <param name="goods"></param> protected virtual void AddGoodsImage(IList <GoodsImageEntity> infos, GoodsEntity goods) { if (string.IsNullOrEmpty(hfImageValue.Value)) { return; } var arrayList = JsonConvert.DeserializeObject(hfImageValue.Value.Replace(@"\", @"\\")) as JArray; if (arrayList == null) { return; } var i = 0; foreach (JObject item in arrayList) { i++; var info = new GoodsImageEntity { Sequence = i }; item.Properties().ToList().ForEach(a => { SerializeGoodsImage(info, goods, a.Name.ToString(), a.Value.ToString()); }); if (goods.SaveType == SaveType.Add && info.SaveType == SaveType.Remove) { continue; } if (goods.SaveType == SaveType.Modify && info.SaveType == SaveType.None) { info.SaveType = SaveType.Modify; info.SetProperty(it => it.Sequence); } else if (goods.SaveType == SaveType.Modify && info.SaveType == SaveType.Remove) { info.SaveType = SaveType.Remove; } else { var index = info.FileName.IndexOf("Files/"); info.FileName = info.FileName.Substring(index, info.FileName.Length - index); info.FileByte = Ioc.Resolve <IFileApplicationService>().Grab(info.FileName); info.FileName = string.Format("Files/Images/Goods/{0}", Path.GetFileName(info.FileName)); } infos.Add(info); } }
/// <summary> /// 设置图片存储方式 /// </summary> /// <param name="goods"></param> /// <param name="info"></param> protected virtual void SetGoodsImageSaveType(GoodsEntity goods, GoodsImageEntity info) { if (goods.SaveType == SaveType.Add || info.Id <= 0) { info.SaveType = SaveType.Add; info.Id = 0; } else if (info.SaveType != SaveType.Remove) { info.SaveType = SaveType.Modify; } else { info.SaveType = SaveType.Remove; } }
/// <summary> /// 序列化 /// </summary> /// <param name="info"></param> /// <param name="goods"></param> /// <param name="key"></param> /// <param name="value"></param> protected virtual void SerializeGoodsImage(GoodsImageEntity info, GoodsEntity goods, string key, string value) { if (key.Equals("SaveType")) { switch (value) { case "Add": info.SaveType = SaveType.Add; break; case "Modify": info.SaveType = SaveType.Modify; break; case "Remove": info.SaveType = SaveType.Remove; break; } } else { var name = key; switch (name) { case "Value": name = "FileName"; break; case "Sku": if (goods.Products != null) { var product = goods.Products.FirstOrDefault(it => it.Sku == value); info.Product = product ?? new ProductEntity { Id = 0 }; } return; } Winner.Creator.Get <IProperty>() .SetValue(info, name, value); } }