コード例 #1
0
        /// <summary>
        /// 添加商品信息
        /// </summary>
        /// <param name="goodInfo">基本信息</param>
        /// <param name="goodInfoExtensions">扩展信息</param>
        public async Task <DataResult> AddGoodInfo(GoodInfo goodInfo, GoodInfoExtensions goodInfoExtensions, List <GoodInfoSKU> skuList)
        {
            ShopInfoExtensions shopInfoExtensions = await shopInfoExtensionsDbSet.FirstOrDefaultAsync(sh => sh.ShopId == goodInfo.ShopId);

            int goodCount = await CurrentDbSet.CountAsync(gr => gr.ShopId == goodInfo.ShopId);

            if (goodCount >= shopInfoExtensions.LimitGoodNum)
            {
                return new DataResult {
                           Code = DataResultCode.Fail, Message = $"最多只能拥有{shopInfoExtensions.LimitGoodNum}个商品!"
                }
            }
            ;


            using (IDbContextTransaction transaction = Database.BeginTransaction(IsolationLevel.ReadCommitted))
            {
                try
                {
                    await CurrentDbSet.AddAsync(goodInfo);

                    await goodInfoExtensionsDbSet.AddAsync(goodInfoExtensions);

                    await goodInfoSKUDbSet.AddRangeAsync(skuList);

                    string sql    = $"update ShopInfoExtensions set GoodDataVersion = @newVersion where shopId = @shopId and GoodDataVersion = @oldVersion";
                    int    result = this.Database.ExecuteSqlCommand(sql, new[]
                    {
                        new MySqlParameter("newVersion", Guid.NewGuid().ToString("N")),
                        new MySqlParameter("oldVersion", shopInfoExtensions.GoodDataVersion),
                        new MySqlParameter("shopId", shopInfoExtensions.ShopId),
                    });

                    if (result <= 0)
                    {
                        transaction.Rollback();
                        return(new DataResult {
                            Code = DataResultCode.Fail, Message = "添加失败,请重试!"
                        });
                    }

                    SaveChanges();
                    transaction.Commit();
                }
                catch
                {
                    transaction.Rollback();
                    return(new DataResult {
                        Code = DataResultCode.Fail, Message = "添加失败,请重试!"
                    });
                }
            }

            return(new DataResult {
                Code = DataResultCode.Success, Message = "添加成功!"
            });
        }