/// <summary> /// 将之前没有设置套餐关联的产品重新设置 /// </summary> private void InitProductSetMeal() { var products = _context.Products.Where(a => a.Feature == ProductFeature.SetMeal).Select(a => new { a.ID, a.ProductIdSet }).ToList(); if (products.Count == 0) { return; } var ids = products.Select(a => a.ID).ToList(); var relatives = _context.ProductRelatives.Where(a => ids.Contains(a.SetMealId)).ToList(); products.ForEach(product => { if (string.IsNullOrEmpty(product.ProductIdSet)) { return; } if (relatives.Any(a => a.SetMealId == product.ID)) { return; } product.ProductIdSet.Split(',').ToList().ForEach(a => { var item = new ProductRelative { SetMealId = product.ID, ProductId = Convert.ToInt32(a) }; _context.Add(item); }); }); _context.SaveChanges(); }
public async Task <IActionResult> Save([FromBody] ProductModel product, [FromServices] IHostingEnvironment host) { var result = new JsonData(); if (!string.IsNullOrEmpty(product.Img400)) { var file = new ProductImage { CreateTime = DateTime.Now, Name = Guid.NewGuid().ToString().ToLower(), Type = ImageType.Product, Length = Convert.FromBase64String(product.Img400.Replace("data:image/jpeg;base64,", "")).Length }; // 上传图片 var msg = await Service.UploadImageAsync(AppData.ApiUri + "/Product", Business.ID, file.Name + "." + file.ExtensionName, product.Img400, product.Img200, product.Img100); if (msg != "ok") { result.Msg = msg; return(Json(result)); } product.Images = new List <ProductImage> { file }; } // 图片上传成功后,保存商品 foreach (var item in product.Formats) { item.Code = Service.GetNextProductFormat(); } var entity = new Product { BusinessId = Business.ID, Description = product.Description, MinBuyQuantity = product.MinBuyQuantity, Name = product.Name, Pinyin = UtilHelper.GetPinyin(product.Name), FirstLetter = UtilHelper.GetFirstPinyin(product.Name), ProductTypeId = product.ProductTypeId, UnitName = product.UnitName, Scope = product.Scope, Images = product.Images, Formats = product.Formats, Attributes = product.Attributes, ProductIdSet = product.ProductIdSet, Feature = product.Feature, IsDiscount = product.IsDiscount }; Service.Add(entity); entity.Code = entity.ID.ToString().PadLeft(6, '0'); Service.Commit(); if (entity.Feature == ProductFeature.SetMeal && !string.IsNullOrEmpty(product.ProductIdSet)) { product.ProductIdSet.Split(',').ToList().ForEach(a => { var item = new ProductRelative { SetMealId = entity.ID, ProductId = Convert.ToInt32(a) }; Service.Add(item); }); } result.Success = true; result.Msg = "保存成功"; return(Ok(result)); }
public Product Update(Product product) { var entity = Context.Products .Include(a => a.Formats) .Include(a => a.Attributes) .First(a => a.ID == product.ID); entity.Description = product.Description; entity.MinBuyQuantity = product.MinBuyQuantity; entity.Name = product.Name; entity.ProductTypeId = product.ProductTypeId; entity.UnitName = product.UnitName; entity.Scope = product.Scope; entity.IsDiscount = product.IsDiscount; if (entity.ProductIdSet != product.ProductIdSet) { entity.ProductIdSet = product.ProductIdSet; var relatives = Context.ProductRelatives.Where(a => a.SetMealId == entity.ID).ToList(); Context.RemoveRange(relatives); if (!string.IsNullOrEmpty(product.ProductIdSet)) { product.ProductIdSet.Split(',').ToList().ForEach(a => { var item = new ProductRelative { SetMealId = product.ID, ProductId = Convert.ToInt32(a) }; Context.Add(item); }); } } if (product.Images != null && product.Images.Count > 0) { entity.Images = new List <ProductImage>(); foreach (var img in product.Images.Where(a => a.ID == 0)) { entity.Images.Add(img); } } var removeFormats = entity.Formats.Where(a => product.Formats.FirstOrDefault(b => b.ID == a.ID) == null).ToList(); foreach (var removeFormat in removeFormats) { //entity.Formats.Remove(removeFormat); removeFormat.IsDelete = true; } foreach (var format in product.Formats) { if (format.ID == 0) { format.Code = GetNextProductFormat(); entity.Formats.Add(format); continue; } var old = entity.Formats.First(a => a.ID == format.ID); old.Name = format.Name; old.PackingPrice = format.PackingPrice; old.PackingQuantity = format.PackingQuantity; old.Position = format.Position; old.Price = format.Price; old.SKU = format.SKU; old.Stock = old.Stock; old.UPC = old.UPC; } var removeAttrs = entity.Attributes.Where(a => product.Attributes.FirstOrDefault(b => b.ID == a.ID) == null).ToList(); foreach (var removeAttr in removeAttrs) { entity.Attributes.Remove(removeAttr); } foreach (var attr in product.Attributes) { if (attr.ID == 0) { entity.Attributes.Add(attr); continue; } var old = entity.Attributes.First(a => a.ID == attr.ID); old.Name = attr.Name; old.Item1 = attr.Item1; old.Item2 = attr.Item2; old.Item3 = attr.Item3; old.Item4 = attr.Item4; old.Item5 = attr.Item5; old.Item6 = attr.Item6; old.Item7 = attr.Item7; old.Item8 = attr.Item8; } Context.SaveChanges(); return(entity); }