Example #1
0
 /// <summary>
 /// 添加分类
 /// </summary>
 /// <returns></returns>
 public ResultModel AddCateGory(string name, int displayorder = 0)
 {
     using (brnshopEntities context = new brnshopEntities())
     {
         try
         {
             var catrgory = context.bsp_categories.SingleOrDefault(t => t.name == name);
             if (catrgory != null)
             {
                 return(ResultModel.Fail("已存在该分类"));
             }
             bsp_categories newcate = new bsp_categories();
             newcate.name         = name;
             newcate.displayorder = displayorder;
             newcate.pricerange   = "";
             newcate.path         = "";
             context.bsp_categories.Add(newcate);
             context.SaveChanges();
             return(ResultModel.Success("添加成功", newcate.cateid));
         }
         catch (Exception ex)
         {
             Logger._.Error(ex);
             return(ResultModel.Error(ex.ToString()));
         }
     }
 }
Example #2
0
        /// <summary>
        /// 编辑商品信息
        /// </summary>
        /// <returns></returns>
        public ResultModel UpdatePorduct(AddProductModel model)
        {
            if (model.skuInfos.Count() != model.skuInfos.Select(t => t.name).Distinct().Count())
            {
                return(ResultModel.Fail("不允许出现重复名称的属性"));
            }
            foreach (var skuinfo in model.skuInfos)
            {
                if (skuinfo.attributevalues.Count() != skuinfo.attributevalues.Select(t => t.attrvalue).Distinct().Count())
                {
                    return(ResultModel.Fail("同一属性下不允许出现重复名称的值"));
                }
            }
            using (brnshopEntities context = new brnshopEntities())
            {
                var tran = context.Database.BeginTransaction();
                try
                {
                    var pro = context.bsp_products.SingleOrDefault(t => t.pid == model.pid);
                    //pro.addtime = DateTime.Now;
                    pro.cateid           = 0;
                    pro.costprice        = model.costprice;
                    pro.description      = model.description;
                    pro.displayorder     = model.displayorder;
                    pro.isbest           = model.isbest;
                    pro.ishot            = model.ishot;
                    pro.rmddisplayorder  = model.rmddisplayorder;
                    pro.isnew            = model.isnew;
                    pro.isfullcut        = model.isfullcut;
                    pro.marketprice      = model.marketprice;
                    pro.name             = model.name;
                    pro.packprice        = model.packprice;
                    pro.showimg          = model.showimg;
                    pro.shopprice        = model.shopprice;
                    pro.weight           = model.weight;
                    pro.startseckilltime = model.startseckilltime;
                    pro.endseckilltime   = model.endseckilltime;
                    pro.seckillprice     = model.seckillprice;
                    context.SaveChanges();

                    //编辑商品分类信息
                    foreach (var cateid in model.cateids)
                    {
                        bsp_categories   cate        = context.bsp_categories.SingleOrDefault(t => t.cateid == cateid);
                        bsp_cateproducts cateproduct = context.bsp_cateproducts.SingleOrDefault(t => t.pid == pro.pid & t.cateid == cateid);
                        if (cateproduct == null)
                        {
                            cateproduct          = new bsp_cateproducts();
                            cateproduct.cateid   = cateid;
                            cateproduct.catename = cate.name.Trim();
                            cateproduct.pid      = pro.pid;
                            cateproduct.pname    = pro.name;
                            context.bsp_cateproducts.Add(cateproduct);
                        }
                        else
                        {
                            cateproduct.catename = cate.name.Trim();
                            cateproduct.pname    = pro.name;
                        }
                        context.SaveChanges();
                    }
                    //删除不存在的分类信息
                    var deletecateproducts = context.bsp_cateproducts.Where(t => t.pid == pro.pid & !model.cateids.Contains(t.cateid));
                    context.bsp_cateproducts.RemoveRange(deletecateproducts);
                    context.SaveChanges();

                    var attrindex = 0;

                    //添加属性和值
                    foreach (var attribute in model.skuInfos)
                    {
                        bsp_attributes newattribute = new bsp_attributes();
                        if (attribute.attrid == 0)
                        {
                            context.bsp_attributes.Add(newattribute);
                        }//新增的属性
                        else
                        {
                            newattribute = context.bsp_attributes.SingleOrDefault(t => t.attrid == attribute.attrid);
                        }//原有的属性
                        newattribute.name         = attribute.name;
                        newattribute.remark       = attribute.remark;
                        newattribute.displayorder = attrindex++;
                        context.SaveChanges();
                        attribute.attrid = newattribute.attrid;

                        var valueindex = 0;
                        foreach (var value in attribute.attributevalues)
                        {
                            bsp_attributevalues newvalue = new bsp_attributevalues();
                            bsp_productskus     newsku   = new bsp_productskus();
                            if (value.attrvalueid == 0)
                            {
                                newvalue.attrid = newattribute.attrid;
                                context.bsp_attributevalues.Add(newvalue);
                            }//新增值和sku
                            else
                            {
                                newvalue = context.bsp_attributevalues.SingleOrDefault(t => t.attrvalueid == value.attrvalueid);
                            }//原有值
                            newvalue.attrname              = newattribute.name;
                            newvalue.attrvalue             = value.attrvalue;
                            newvalue.attrgroupname         = "";
                            newvalue.isinput               = 0;
                            newvalue.attrdisplayorder      = 0;
                            newvalue.attrshowtype          = 0;
                            newvalue.attrvaluedisplayorder = 0;
                            newvalue.attrgroupid           = 0;
                            newvalue.attrgroupdisplayorder = 0;
                            newvalue.attrdisplayorder      = valueindex++;
                            context.SaveChanges();
                            value.attrvalueid = newvalue.attrvalueid;
                        }
                    }

                    //添加商品的sku信息
                    var skus = GetAllSkuByAttrAndValue(model.skuInfos);

                    //得到商品已有的sku中的valuid,valueid从大到小按逗号分隔组成字符串比较
                    var                       allpskus         = context.bsp_productskus.Where(t => t.pid == pro.pid).ToList();
                    var                       sku_guids        = allpskus.Select(t => t.skuguid).Distinct().ToArray();
                    List <string>             guid_valueidstr  = new List <string>();
                    Dictionary <string, Guid> valueids_skuguid = new Dictionary <string, Guid>();
                    foreach (var sku_guid in sku_guids)
                    {
                        var valueids = allpskus.Where(t => t.skuguid == sku_guid).OrderBy(t => t.attrvalueid).Select(t => t.attrvalueid.ToString()).ToArray();
                        guid_valueidstr.Add(string.Join(",", valueids));
                        if (!valueids_skuguid.ContainsKey(string.Join(",", valueids)))
                        {
                            valueids_skuguid.Add(string.Join(",", valueids), sku_guid);
                        }
                    }
                    guid_valueidstr = guid_valueidstr.Distinct().ToList();
                    List <string> newvalueids = new List <string>();
                    foreach (var sku in skus)
                    {
                        var valueids      = sku.OrderBy(t => t.valueid).Select(t => t.valueid.ToString()).ToArray();
                        var nowvalueidstr = string.Join(",", valueids);
                        newvalueids.Add(nowvalueidstr);
                        //该sku不存在,则新增
                        if (!guid_valueidstr.Contains(nowvalueidstr))
                        {
                            Guid newskuguid = Guid.NewGuid();
                            foreach (var s in sku)
                            {
                                bsp_productskus newsku = new bsp_productskus();
                                newsku.attrid         = (short)s.attrid;
                                newsku.attrvalueid    = s.valueid;
                                newsku.inputattr      = model.skuInfos.FirstOrDefault(t => t.attrid == newsku.attrid).name;
                                newsku.inputvalue     = model.skuInfos.FirstOrDefault(t => t.attrid == newsku.attrid).attributevalues.FirstOrDefault(t => t.attrvalueid == newsku.attrvalueid).attrvalue;
                                newsku.isdefaultprice = 1;
                                newsku.pid            = pro.pid;
                                newsku.price          = -1;
                                newsku.skugid         = 0;
                                newsku.skuguid        = newskuguid;
                                newsku.stock          = -1;
                                context.bsp_productskus.Add(newsku);
                                context.SaveChanges();
                            }
                        }
                        else
                        {
                            //sku存在更新sku相关的属性和值信息
                            var skuGuid  = sku_guids[guid_valueidstr.IndexOf(nowvalueidstr)];
                            var skuItems = context.bsp_productskus.Where(t => t.skuguid == skuGuid).ToList();
                            foreach (var skuItem in skuItems)
                            {
                                skuItem.inputattr  = model.skuInfos.SingleOrDefault(t => t.attrid == skuItem.attrid).name;
                                skuItem.inputvalue = model.skuInfos.SingleOrDefault(t => t.attrid == skuItem.attrid).attributevalues.SingleOrDefault(t => t.attrvalueid == skuItem.attrvalueid).attrvalue;
                            }
                        }
                    }
                    //将不需要的sku删除
                    foreach (var exist_valuestr in guid_valueidstr)
                    {
                        if (!newvalueids.Contains(exist_valuestr))
                        {
                            var guidstr  = valueids_skuguid[exist_valuestr].ToString();
                            var skuitems = context.bsp_productskus.Where(t => t.skuguid.ToString() == guidstr).ToList();
                            context.bsp_productskus.RemoveRange(skuitems);
                        }
                    }
                    context.SaveChanges();

                    var proimgs = context.bsp_productimages.Where(t => t.pid == model.pid).ToList();
                    context.bsp_productimages.RemoveRange(proimgs);
                    context.SaveChanges();

                    //修改商品图片
                    if (model.mainImgs != null)
                    {
                        foreach (var img in model.mainImgs)
                        {
                            bsp_productimages newimg = new bsp_productimages();
                            newimg.displayorder = img.displayorder;
                            newimg.ismain       = 1;
                            newimg.pid          = pro.pid;
                            newimg.showimg      = img.showimg;
                            context.bsp_productimages.Add(newimg);
                            context.SaveChanges();
                        }
                    }

                    if (model.detailImgs != null)
                    {
                        foreach (var img in model.detailImgs)
                        {
                            bsp_productimages newimg = new bsp_productimages();
                            newimg.displayorder = img.displayorder;
                            newimg.ismain       = 0;
                            newimg.pid          = pro.pid;
                            newimg.showimg      = img.showimg;
                            context.bsp_productimages.Add(newimg);
                            context.SaveChanges();
                        }
                    }


                    tran.Commit();
                    new ProductCache().Init();
                    return(ResultModel.Success("修改成功"));
                }
                catch (Exception ex)
                {
                    Logger._.Error(ex);
                    tran.Rollback();
                    return(ResultModel.Error(ex.ToString()));
                }
            }
        }