예제 #1
0
 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));
     }
 }
예제 #2
0
        /// <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);
            }
        }
예제 #3
0
        /// <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);
            }
        }
예제 #4
0
 /// <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;
     }
 }
예제 #5
0
        /// <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);
            }
        }