예제 #1
0
        /// <summary>
        /// 新增商品
        /// </summary>
        /// <param name="commodity"></param>
        /// <returns></returns>
        public bool NewCommodity(NewCommodityDto commodity)
        {
            var newCommodity = _db.CommodityRepos.FirstOrDefault(n => n.Number == commodity.Number);

            if (newCommodity == null)
            {
                //获取商品名字拼音
                var pinyin = GetSpelling.Spelling(commodity.Name);
                var goods  = new CommodityRepo()
                {
                    Number      = commodity.Number,
                    Name        = commodity.Name,
                    Price       = commodity.Price,
                    Description = commodity.Description,
                    //StatusId = CommodityStatus.OnTheShelf,
                    NameSpelling = pinyin.ToString(),
                    CreateAt     = DateTime.Now,
                    LastEditAt   = DateTime.Now
                };
                using (var tran = _db.Database.BeginTransaction())
                {
                    try
                    {
                        _db.CommodityRepos.Add(goods);
                        //savechanges之后获取增加的商品的id。
                        _db.SaveChanges();
                        var commodityId = goods.Id;
                        //定义一个List来获取标签名字集
                        var tagName = commodity.Tag.ToList();
                        //从标签表中获取标签id。
                        var tagId = _db.TagRepos.Where(t => tagName.Contains(t.Name)).Select(t => t.Id).ToArray();
                        //将商品id和标签id循环加入映射表中
                        for (int j = 0; j <= tagId.Length - 1; j++)
                        {
                            _db.CommodityToTagRepos.Add(new CommodityToTagRepo()
                            {
                                CommodityId = commodityId,
                                TagId       = tagId[j],
                                CreateAt    = DateTime.Now,
                                LastEditAt  = DateTime.Now
                            });
                        }
                        tran.Commit();
                    }
                    catch (Exception)
                    {
                        tran.Rollback();
                    }
                }
                return(_db.SaveChanges() > 0);
            }
            else
            {
                return(false);
            }
        }
예제 #2
0
        /// <summary>
        /// 修改商品
        /// </summary>
        /// <param name="commodity"></param>
        /// <returns></returns>
        public bool EditCommodity(EditCommodityDto commodity)
        {
            var editCommodity = _db.CommodityRepos.FirstOrDefault(e => e.Id == commodity.Id);

            if (editCommodity != null)
            {
                //1、删除(取到映射表里的数据并删除(这里的思路是修改时就将标签商品映射表里对应为修改商品id的所有行删除并重新插入))
                var cToT = _db.CommodityToTagRepos.Where(c => c.CommodityId == editCommodity.Id).ToArray();
                //删除行
                for (int d = 0; d <= cToT.Length - 1; d++)
                {
                    _db.CommodityToTagRepos.Remove(cToT[d]);
                }
                //2、修改(先获取商品名字拼音)
                var pinyin = GetSpelling.Spelling(editCommodity.Name);
                //修改商品
                editCommodity.Name         = commodity.Name;
                editCommodity.Price        = commodity.Price;
                editCommodity.Description  = commodity.Description;
                editCommodity.NameSpelling = pinyin.ToString();
                editCommodity.LastEditAt   = DateTime.Now;

                //定义一个List来获取标签名字集
                var tagName = commodity.Tag.ToList();
                //从标签表中获取标签id。
                var tagId = _db.TagRepos.Where(t => tagName.Contains(t.Name)).Select(t => t.Id).ToArray();

                //循环将商品id和标签id存入商品标签映射表
                for (int j = 0; j <= tagId.Length - 1; j++)
                {
                    _db.CommodityToTagRepos.Add(new CommodityToTagRepo()
                    {
                        CommodityId = editCommodity.Id,
                        TagId       = tagId[j],
                        CreateAt    = DateTime.Now,
                        LastEditAt  = DateTime.Now
                    });
                }

                return(_db.SaveChanges() > 0);
            }
            else
            {
                return(false);
            }
        }