/// <summary> /// 判断是否发起砍价人 /// </summary> /// <param name="id"></param> /// <returns></returns> protected string ShowLeader(object id) { if (id == null) { return(string.Empty); } else { int _id = 0; int.TryParse(id.ToString(), out _id); if (!string.IsNullOrWhiteSpace(BargainOrder.SelectedValue)) { _bargainOrder = BargainOrderBLL.ReadBargainOrder(int.Parse(BargainOrder.SelectedValue)); CheckStatus(_bargainOrder.Id); } if (_id > 0 && _bargainOrder.UserId == _id) { string result = "<span class=\"red\">【发起砍价】</span>"; return(result); } else { return(string.Empty); } } }
private void BindData() { if (string.IsNullOrWhiteSpace(BargainOrder.SelectedValue)) { // 默认查看此砍价所有的砍记录 if (b_orderids.Count > 0) { string inBOrderId = string.Join(",", b_orderids); recordingList = RecordingBLL.SearchRecordingList(new RecordingSearch() { InBOrderId = inBOrderId }); } else { //recordingList = RecordingBLL.SearchRecordingList(new RecordingSearch() { }); } } else { recordingList = RecordingBLL.SearchRecordingList(new RecordingSearch() { BOrderId = int.Parse(BargainOrder.SelectedValue) }); } recordingList = recordingList.Where(k => k.UserId > 0).ToList(); recordingList.ForEach(k => k.UserName = System.Web.HttpUtility.UrlDecode(k.UserName, System.Text.Encoding.UTF8)); recordingList = recordingList.OrderBy(k => k.AddDate).ToList(); BindControl(recordingList, RecordList); if (!string.IsNullOrWhiteSpace(BargainOrder.SelectedValue)) { _bargainOrder = BargainOrderBLL.ReadBargainOrder(int.Parse(BargainOrder.SelectedValue)); CheckStatus(_bargainOrder.Id); } }
/// <summary> /// 增加一条砍价订单数据 /// </summary> /// <param name="mode">砍价订单模型变量</param> public int AddBargainOrder(BargainOrderInfo mode) { using (var conn = new SqlConnection(connectString)) { string sql = @"INSERT INTO BargainOrder([UserId],[Status],[BargainDetailsId],[BargainPrice],[SharePrice],[ShareStatus],[BargainId],[Remark]) VALUES(@userId,@status,@bargainDetailsId,@bargainPrice,@sharePrice,@shareStatus,@BargainId,@Remark);SELECT @@identity"; return(conn.Query <int>(sql, mode).Single()); } }
/// <summary> /// 更新一条砍价订单数据 /// </summary> /// <param name="mode">砍价订单模型变量</param> public bool UpdateBargainOrder(BargainOrderInfo mode) { using (var conn = new SqlConnection(connectString)) { string sql = @"UPDATE BargainOrder Set [UserId]=@userId,[Status]=@status,[BargainDetailsId]=@bargainDetailsId,[BargainPrice]=@bargainPrice,[SharePrice]=@sharePrice,[ShareStatus]=@shareStatus,[BargainId]=@BargainId WHERE [Id]=@id"; return(conn.Execute(sql, mode) > 0); } }
/// <summary> /// 用户帮砍操作 /// 帮砍成功之后更新BargainOrder /// 返回帮砍记录Id /// </summary> /// <param name="bargainOrder"></param> /// <param name="user"></param> /// <returns></returns> public int HelpBargain(BargainOrderInfo bargainOrder, UserInfo user) { int help_record_id = 0; using (var conn = new SqlConnection(connectString)) { conn.Open(); using (var tran = conn.BeginTransaction()) { try { //查找用户该领取那一刀 string sql = "SELECT TOP 1 * From [Recording] WITH(UPDLOCK,READPAST) WHERE [BOrderId]=@BOrderId AND [UserId]<=0 Order By [Id] Asc"; var record = conn.Query <RecordingInfo>(sql, new { @BOrderId = bargainOrder.Id }, tran).SingleOrDefault(); if (record.Id > 0) { help_record_id = record.Id; //更新该条记录信息:用户Id,头像,姓名,日期 sql = "UPDATE [Recording] SET [Photo]=@Photo,[AddDate]=@AddDate,[UserId]=@UserId,[UserName]=@UserName WHERE [Id]=@Id"; int row = conn.Execute(sql, new { @Photo = user.Photo, @AddDate = DateTime.Now, @UserId = user.Id, @UserName = user.UserName, @Id = record.Id }, tran); if (row > 0) { //帮砍成功之后更新BargainOrder sql = "UPDATE [BargainOrder] SET [BargainPrice]=@BargainPrice WHERE [Id]=@Id"; row = conn.Execute(sql, new { @BargainPrice = record.Price + bargainOrder.BargainPrice, @Id = bargainOrder.Id }, tran); if (row > 0) { tran.Commit(); } else { tran.Rollback(); help_record_id = 0; } } else { tran.Rollback(); help_record_id = 0; } } else { tran.Rollback(); help_record_id = 0; } } catch (Exception ex) { tran.Rollback(); //throw new Exception(ex.Message); help_record_id = 0; } } return(help_record_id); } }
public static List <decimal> ComputeBargainMoney(BargainOrderInfo _redPackage) { List <decimal> bargain_Moneys = new List <decimal>(); for (int i = 1; i <= _redPackage.Total_Num; i++) { decimal bg_money = getRandomMoney(_redPackage); //Console.WriteLine("第" + i + "刀:" + bg_money); bargain_Moneys.Add(bg_money); } //Console.WriteLine("分享刀:" + bg.share_money); //Console.ReadKey(); return(bargain_Moneys); }
/// <summary> /// 准备砍价订单模型 /// </summary> /// <param name="dr">Datareader</param> /// <param name="modeList">砍价订单的数据列表</param> public void PrepareBargainOrderModel(SqlDataReader dr, List <BargainOrderInfo> modeList) { while (dr.Read()) { BargainOrderInfo mode = new BargainOrderInfo(); mode.Id = dr.GetInt32(0); mode.UserId = dr.GetInt32(1); mode.Status = dr.GetInt32(2); mode.BargainDetailsId = dr.GetInt32(3); mode.BargainPrice = dr.GetDecimal(4); mode.SharePrice = dr.GetDecimal(5); mode.ShareStatus = dr.GetInt32(6); modeList.Add(mode); } }
static decimal getRandomMoney(BargainOrderInfo _redPackage) { Random r = new Random(); //如果是第一刀,砍28~35%,还生成分享刀5~15% if (_redPackage.Has_Bargain_Num == 0) { decimal first_money = (decimal)(r.Next(28, 35) / 100.00) * _redPackage.Total_Money; first_money = Math.Floor(first_money * 100) / 100; _redPackage.Has_Bargain_Num++; _redPackage.Has_Bargain_Money += first_money; //分享刀 decimal share_money = (decimal)(r.Next(5, 15) / 100.00) * (_redPackage.Total_Money - _redPackage.Has_Bargain_Money); share_money = Math.Floor(share_money * 100) / 100; _redPackage.SharePrice = share_money; _redPackage.Has_Bargain_Money += share_money; return(first_money); } if (_redPackage.Total_Num - _redPackage.Has_Bargain_Num == 1) {//如果是最后一刀 _redPackage.Has_Bargain_Num++; return(Math.Round((_redPackage.Total_Money - _redPackage.Has_Bargain_Money) * 100) / 100); } //砍的最小值 decimal min = 0.01M; //砍的最大值 decimal max = (_redPackage.Total_Money - _redPackage.Has_Bargain_Money) / (_redPackage.Total_Num - _redPackage.Has_Bargain_Num) * 2; //随机砍价金额 decimal money = (decimal)r.NextDouble() * max; money = money <= min ? 0.01M : money; money = Math.Floor(money * 100) / 100; _redPackage.Has_Bargain_Num++; _redPackage.Has_Bargain_Money += money; return(money); }
/// <summary> /// 事务操作:保存第一刀金额,分享金额, /// 保存帮砍记录金额,砍价参与人数加1 /// 返回:BargainOrder.Id /// </summary> /// <returns></returns> public int CreateBargainOrder(BargainOrderInfo entity, List <decimal> bargain_Moneys) { int id = 0; using (var conn = new SqlConnection(connectString)) { conn.Open(); using (var transaction = conn.BeginTransaction()) { try { //添加BargainOrder string sql = @"INSERT INTO BargainOrder([UserId],[Status],[BargainDetailsId],[BargainPrice],[SharePrice],[ShareStatus],[BargainId]) VALUES (@userId,@status,@bargainDetailsId,@bargainPrice,@sharePrice,@shareStatus,@BargainId);SELECT SCOPE_IDENTITY()"; id = conn.Query <int>(sql, entity, transaction).Single(); //如果添加BargainOrder成功,则逐条增加帮砍记录 if (id > 0) { foreach (decimal money in bargain_Moneys) { //如果是第一刀则记录发起砍价的用户名称、头像、Id,否则空出来,等其他用户帮砍时更新 var recording = new RecordingInfo() { BOrderId = id, Price = money, Photo = bargain_Moneys.IndexOf(money) == 0?entity.UserPhoto:string.Empty, AddDate = DateTime.Now, UserId = bargain_Moneys.IndexOf(money) == 0?entity.UserId:0, UserName = bargain_Moneys.IndexOf(money) == 0 ? entity.UserName : string.Empty, }; sql = @"INSERT INTO Recording([BOrderId],[Price],[Content],[Photo],[AddDate],[UserId],[UserName]) VALUES(@BOrderId,@price,@Content,@photo,@addDate,@userId,@userName)"; int rows = conn.Execute(sql, recording, transaction); if (rows > 0) { continue; } else { transaction.Rollback(); } } //更新【Bargain】参与人数加1 sql = @"UPDATE [Bargain] SET [Number]=[Number]+1 WHERE [Id]=@Id"; int row = conn.Execute(sql, new { @Id = entity.BargainId }, transaction); if (row > 0) { transaction.Commit(); } else { transaction.Rollback(); } } else { transaction.Rollback(); } } catch (Exception ex) { id = 0; transaction.Rollback(); } } } return(id); }
/// <summary> /// 用户帮砍操作 /// 帮砍成功之后更新BargainOrder /// 返回帮砍记录Id /// </summary> /// <param name="bargainOrder"></param> /// <param name="user"></param> /// <returns></returns> public static int HelpBargain(BargainOrderInfo bargainOrder, UserInfo user) { return(dal.HelpBargain(bargainOrder, user)); }
/// <summary> /// 事务操作:保存第一刀金额,分享金额, /// 保存帮砍记录金额,砍价参与人数加1 /// 返回:BargainOrder.Id /// </summary> /// <returns></returns> public static int CreateBargainOrder(BargainOrderInfo entity, List <decimal> bargain_Moneys) { return(dal.CreateBargainOrder(entity, bargain_Moneys)); }
/// <summary> /// 更新一条砍价订单数据 /// </summary> /// <param name="mode">砍价订单模型变量</param> public static bool UpdateBargainOrder(BargainOrderInfo mode) { return(dal.UpdateBargainOrder(mode)); }
/// <summary> /// 增加一条砍价订单数据 /// </summary> /// <param name="mode">砍价订单模型变量</param> public static int AddBargainOrder(BargainOrderInfo mode) { mode.Id = dal.AddBargainOrder(mode); return(mode.Id); }