public static ProductImageItem FillOne(DataRow r, IncludeToFill inc) { ProductImageItem p = new ProductImageItem(); if (inc.Id) p.Id = (int)r["Id"]; if (inc.ImageUrl) p.ImageURL = (string)r["ImageURL"]; return p; }
/// <summary> /// Set the logo image for product. /// </summary> /// <param name="productID"></param> /// <param name="imageID"></param> /// <returns></returns> public static bool SetProductLogImage(int productID, int imageID) { using (SolemartDBContext context = new SolemartDBContext()) { ProductImageItem imageItem = context.ProductImageItems.FirstOrDefault(p => (p.ProductID == productID && p.ImageID == imageID)); ProductImageItem logoImageItem = context.ProductImageItems.FirstOrDefault(p => (p.ProductID == productID && p.ForLogo)); //如果已经是LOGO的图片 if (imageItem != null && imageItem.ForLogo) { return(true); } //设置的图片不是原来的LOGO图片 if (imageItem != null) { imageItem.ForLogo = true; if (logoImageItem != null) { logoImageItem.ForLogo = false; } if (context.SaveChanges() > 0) { if (allProductLogoImages != null) { allProductLogoImages.Clear(); } return(true); } } return(false); } }
/// <summary> /// Add a image for the product /// </summary> /// <param name="id">the product id</param> /// <returns>action result</returns> public ActionResult AddNewProductImage(int id) { ProductItem CurrentProduct = ProductManager.GetProductByID(id); if (CurrentProduct == null) { return(Content(WebResult <string> .NormalErrorResult.ResponseString)); } HttpPostedFileBase file = Request.Files[0]; if (!file.ContentType.Contains("image") || file.ContentLength > 262144) { return(Content(WebResult <string> .FileTooLongResult.ResponseString)); } string mimetype = file.ContentType; string file_name = ProductManager.GenerateProductImageFileName(CurrentProduct.ProductID, ProductManager.FromMimeTypeGetExtendName(mimetype)); BitmapDecoder decoder = BitmapDecoder.Create(file.InputStream, BitmapCreateOptions.None, BitmapCacheOption.Default); /* 生成小图标 */ TransformedBitmap thumb_img = new TransformedBitmap(decoder.Frames[0], new System.Windows.Media.ScaleTransform(0.2, 0.2)); BitmapEncoder encoder = BitmapEncoder.Create(decoder.CodecInfo.ContainerFormat); using (FileStream thumb_file = new FileStream(HttpContext.Server.MapPath("~/images/product/thumb/" + file_name), FileMode.Create)) { encoder.Frames.Add(BitmapFrame.Create(thumb_img)); encoder.Save(thumb_file); } file.SaveAs(HttpContext.Server.MapPath("~/Images/product/normal/" + file_name)); ProductImageItem item = new ProductImageItem(); item.ProductID = CurrentProduct.ProductID; item.ImageUrl = file_name; item.MimeType = file.ContentType; item.Description = ""; //the first image is default to logo. if (file_name.Contains("_0.")) { item.ForLogo = true; } if (ProductManager.AddNewImageToProduct(item)) { return(Content(WebResult <string> .SuccessResult.ResponseString)); } else { return(Content(WebResult <string> .NormalErrorResult.ResponseString)); } }
/// <summary> /// Delete the product image /// </summary> /// <param name="pid">product ID</param> /// <param name="iid">the image id to delete</param> /// <returns>删除图片的结果</returns> public ActionResult DeleteProductImage(int pid, int iid) { ProductImageItem img = ProductManager.GetProductImage(pid, iid); if (img != null && ProductManager.DeleteProductImage(pid, iid)) { System.IO.File.Delete(Server.MapPath("~/images/product/normal/" + img.ImageUrl)); System.IO.File.Delete(Server.MapPath("~/images/product/thumb/" + img.ImageUrl)); return(Content(WebResult <string> .SuccessResult.ResponseString)); } return(Content(WebResult <string> .NormalErrorResult.ResponseString)); }
/// <summary> /// Add an image to the product /// </summary> /// <param name="image"></param> /// <returns>是否添加成功</returns> public static bool AddNewImageToProduct(ProductImageItem image) { using (SolemartDBContext context = new SolemartDBContext()) { image.AddTime = DateTime.Now; context.ProductImageItems.Add(image); if (context.SaveChanges() > 0) { if (allProductLogoImages != null) { allProductLogoImages.Clear(); } return(true); } return(false); } }
/// <summary> /// Delete a image of the product /// </summary> /// <param name="pid">要删除图片的商品ID</param> /// <param name="imageID">删除的图片的ID</param> /// <returns>删除成功返回true,否则返回false</returns> public static bool DeleteProductImage(int productID, int imageID) { using (SolemartDBContext context = new SolemartDBContext()) { ProductImageItem image = context.ProductImageItems.FirstOrDefault(i => (i.ProductID == productID && i.ImageID == imageID)); if (image != null) { context.ProductImageItems.Remove(image); if (context.SaveChanges() > 0) { if (allProductLogoImages != null) { allProductLogoImages.Clear(); } return(true); } } return(false); } }
/// <summary> /// Display the product list. /// </summary> public ActionResult Index(int?p, string code) { Stopwatch watch = new Stopwatch(); watch.Start(); ProductListViewModel model = null; if (this.HttpContext.Cache["index_model"] != null) { model = HttpRuntime.Cache["index_model"] as ProductListViewModel; } else { int pi = p ?? 0; //表示页索引 int totalPageCount = 0; List <SaledProductItem> products = ProductManager.GetPagedSaledProducts(pi, 50, out totalPageCount); model = new ProductListViewModel(); model.PageIndex = pi; model.TotalPageCount = totalPageCount; foreach (SaledProductItem product in products) { ProductForListViewModel pmodel = new ProductForListViewModel(); ProductItem productItem = product.Product; ProductImageItem imageItem = ProductManager.GetProductLogoImage(product.ProductID); pmodel.ProductID = product.ProductID; pmodel.ProductName = product.Product.ProductName; pmodel.Price = product.Price; pmodel.Discount = product.Discount; pmodel.IsSpecial = product.SpecialFlag; pmodel.Specification = product.Product.Specification; pmodel.Unit = product.Product.Unit; pmodel.IsOutOfStock = (product.Product.StockCount - product.Product.ReserveCount) == 0; pmodel.ProductImageName = productItem.ProductName; if (imageItem != null) { pmodel.ProductImageUrl = imageItem.ImageUrl; } else { pmodel.ProductImageUrl = "no-img.png"; } //如果是推荐销售物品,就放置在推荐销售列表 if (product.SetTop) { model.TopSaledProductList.Add(pmodel); } else { model.NormalProductList.Add(pmodel); } } HttpRuntime.Cache.Add("index_model", model, null, DateTime.Now.AddSeconds(600), TimeSpan.Zero, CacheItemPriority.Default, null); } watch.Stop(); Log.Instance.WriteLog(string.Format("Index log for time[{0}]", watch.ElapsedMilliseconds)); SolemartUser user = User as SolemartUser; //之前没有访问过 if (!string.IsNullOrEmpty(code) && !user.IsLoginWeixin) { Log.Instance.WriteLog(string.Format("Request from weixin, code[{0}]", code)); OAuthAccessTokenResult ret = OAuthApi.GetAccessToken(ConfigSettings.WeixinAppID, ConfigSettings.WeixinAppSecret, code); Log.Instance.WriteLog(string.Format("Reqeust GetAccessToken return[errcode[{0}], openid[{1}]]", ret.errcode, ret.openid)); if (ret.errcode == WeixinReturnCode.Success) { AccountUtil.WeixinLogin(ret.access_token, ret.openid); } } return(View(model)); }