Пример #1
0
 /// <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);
         }
     }
 }
Пример #2
0
 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);
     }
 }
Пример #3
0
 /// <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());
     }
 }
Пример #4
0
 /// <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);
     }
 }
Пример #5
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);
            }
        }
Пример #6
0
        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);
        }
Пример #7
0
 /// <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);
     }
 }
Пример #8
0
        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);
        }
Пример #9
0
        /// <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);
        }
Пример #10
0
 /// <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));
 }
Пример #11
0
 /// <summary>
 ///  事务操作:保存第一刀金额,分享金额,
 ///  保存帮砍记录金额,砍价参与人数加1
 ///  返回:BargainOrder.Id
 /// </summary>
 /// <returns></returns>
 public static int CreateBargainOrder(BargainOrderInfo entity, List <decimal> bargain_Moneys)
 {
     return(dal.CreateBargainOrder(entity, bargain_Moneys));
 }
Пример #12
0
 /// <summary>
 /// 更新一条砍价订单数据
 /// </summary>
 /// <param name="mode">砍价订单模型变量</param>
 public static bool  UpdateBargainOrder(BargainOrderInfo mode)
 {
     return(dal.UpdateBargainOrder(mode));
 }
Пример #13
0
 /// <summary>
 /// 增加一条砍价订单数据
 /// </summary>
 /// <param name="mode">砍价订单模型变量</param>
 public static int AddBargainOrder(BargainOrderInfo mode)
 {
     mode.Id = dal.AddBargainOrder(mode);
     return(mode.Id);
 }