/// <summary> /// 更新一条砍价详情数据 /// </summary> /// <param name="model">砍价详情模型变量</param> public void UpdateBargainDetails(BargainDetailsInfo model) { using (var conn = new SqlConnection(connectString)) { string sql = @"UPDATE BargainDetails Set [BargainId]=@bargainId,[ProductID]=@productID,[Stock]=@stock,[Sort]=@sort,[ReservePrice]=@reservePrice,[Sales]=@Sales,[ProductName]=@ProductName,[ShareImage1]=@ShareImage1,[ShareImage2]=@ShareImage2,[ShareImage3]=@ShareImage3 WHERE [Id]=@id"; conn.Execute(sql, model); } }
/// <summary> /// 增加一条砍价详情数据 /// </summary> /// <param name="model">砍价详情模型变量</param> public int AddBargainDetails(BargainDetailsInfo model) { using (var conn = new SqlConnection(connectString)) { string sql = @"INSERT INTO BargainDetails([BargainId],[ProductID],[Stock],[Sort],[ReservePrice],[Sales],[ProductName],[ShareImage1],[ShareImage2],[ShareImage3]) VALUES(@bargainId,@productID,@stock,@sort,@reservePrice,@Sales,@ProductName,@ShareImage1,@ShareImage2,@ShareImage3) SELECT @@identity" ; return(conn.Query <int>(sql, model).Single()); } }
/// <summary> /// 准备砍价详情模型 /// </summary> /// <param name="dr">Datareader</param> /// <param name="modelList">砍价详情的数据列表</param> public void PrepareBargainDetailsModel(SqlDataReader dr, List <BargainDetailsInfo> modelList) { while (dr.Read()) { BargainDetailsInfo model = new BargainDetailsInfo(); model.Id = dr.GetInt32(0); model.BargainId = dr.GetInt32(1); model.ProductID = dr.GetInt32(2); model.Stock = dr.GetInt32(3); model.Sort = dr.GetInt32(4); model.ReservePrice = dr.GetDecimal(5); modelList.Add(model); } }
/// <summary> /// 更新一条砍价详情数据 /// </summary> /// <param name="model">砍价详情模型变量</param> public static void UpdateBargainDetails(BargainDetailsInfo model) { dal.UpdateBargainDetails(model); }
/// <summary> /// 增加一条砍价详情数据 /// </summary> /// <param name="model">砍价详情模型变量</param> public static int AddBargainDetails(BargainDetailsInfo model) { model.Id = dal.AddBargainDetails(model); return(model.Id); }
/// <summary> /// 砍价订单在线付款成功(如果砍到0则不需要支付) /// bargaindetails.sales+1 销量+1 /// bargain.salesvolume+1 销量+1 /// bargainorder.status=5 支付成功 /// </summary> /// <param name="id">砍价订单Id</param> public void HandleBargainOrderPay(int id) { using (var conn = new SqlConnection(connectString)) { conn.Open(); //开始事务 using (var transaction = conn.BeginTransaction()) { try { // bargainorder.status=5 支付成功 string sql = "UPDATE [BargainOrder] SET [Status]=5 WHERE [Id]=@Id"; int rowAffected = conn.Execute(sql, new { Id = id }, transaction); if (rowAffected > 0) { //bargaindetails.sales+1 销量+1 sql = "SELECT [BargainDetailsId] FROM [BargainOrder] WHERE [Id]=@Id"; int bargainDetailsId = conn.ExecuteScalar <int>(sql, new { Id = id }, transaction); if (bargainDetailsId > 0) { sql = "UPDATE [BargainDetails] SET [Sales]=[Sales]+1 WHERE [Id]=@Id"; rowAffected = conn.Execute(sql, new { Id = bargainDetailsId }, transaction); if (rowAffected > 0) {// bargain.salesvolume+1 销量+1 sql = "SELECT [BargainId] FROM [BargainOrder] WHERE [Id]=@Id"; int bargainId = conn.ExecuteScalar <int>(sql, new { Id = id }, transaction); if (bargainId > 0) { sql = "UPDATE [Bargain] SET [SalesVolume]=[SalesVolume]+1 WHERE [Id]=@Id"; } rowAffected = conn.Execute(sql, new { Id = bargainId }, transaction); if (rowAffected > 0) { //判断bargadindetail的库存和销量,如果已抢完,则把此商品其余正在进行的砍价置为“砍价失败”,原因“商品已抢完” sql = "SELECT * From [BargainDetails] WHERE [Id]=@Id"; BargainDetailsInfo bargainDetail = conn.Query <BargainDetailsInfo>(sql, new { Id = bargainDetailsId }, transaction).FirstOrDefault() ?? new BargainDetailsInfo(); if (bargainDetail.Id > 0 && bargainDetail.Sales >= bargainDetail.Stock) { //把除此单以外的,状态为“进行中”“砍价完成”"待付款"的置为“砍价失败” sql = @"Update BargainOrder set [Status]=3,[Remark]=CASE [Status] WHEN 1 THEN '商品已售罄,砍价失败' WHEN 2 THEN '超时未下单,砍价失败' WHEN 4 THEN '超时未付款,砍价失败' ELSE '活动已取消,砍价失败' END WHERE BargainDetailsId=@BargainDetailsId AND [Id]!=@Id AND ([Status]=1 or [Status]=2 or [Status]=4)"; conn.Execute(sql, new { BargainDetailsId = bargainDetail.Id, Id = id }, transaction); } transaction.Commit(); } else { transaction.Rollback(); } } else { transaction.Rollback(); } } } } catch (Exception ex) { transaction.Rollback(); } } } }