Example #1
0
        /// <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();
        }
Example #2
0
        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));
        }
Example #3
0
        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);
        }