Esempio n. 1
0
        /// <summary>
        /// 计算最低价
        /// </summary>
        /// <param name="config"></param>
        /// <returns></returns>
        private bool ComputeMinPrice(TpxinPaiConfig config)
        {
            var sqls      = "select * from vpxin_pai_his";
            var lists     = db.Database.SqlQuery <AuctionHisDto>(sqls).ToList();
            var orderList = lists.Where(w => w.Afternum <= config.Num).OrderBy(o => o.Price).ToList();
            var minprice  = orderList.Select(s => s.Price).FirstOrDefault();
            var nums      = orderList.Sum(s => s.Num);

            if (nums >= config.Num)
            {
                config.Minprice        = minprice + config.Addprice;
                db.Entry(config).State = System.Data.Entity.EntityState.Modified;
                if (db.SaveChanges() < 0)
                {
                    log.Info("a点竞拍支付修改失败:" + db.Message);
                    db.Rollback();
                    Alert("提交失败");
                    return(false);
                }
            }
            //出局由服务计算

            //var prices= lists.Where(w => w.Afternum > config.Num).Select(s => s.Price).ToList();
            //if (prices.Count > 0)
            //{
            //    string sql = $"update TPXIN_PAI_HIS set status=-2 where status=0 and  price in ({string.Join(",", prices)})";
            //    db.ExecuteSqlCommand(sql);
            //}
            return(true);
        }
Esempio n. 2
0
        private (bool, int id) PayNew(ReqPayAuction req, TpxinUserinfo pxinUser, TpxinPaiConfig config)
        {
            var price  = req.MinPrice;
            var amount = price * req.Num;
            var now    = DateTime.Now;
            var sql    = "select * from vpxin_pai_his";
            var list   = db.Database.SqlQuery <AuctionHisDto>(sql).ToList();
            var nums   = list.Sum(s => s.Num);
            //var minprice = list.Where(w => w.Afternum <= config.Num).OrderBy(o => o.Price).Select(s => s.Price).FirstOrDefault();
            var id = db.GetPrimaryKeyValue <TpxinPaiHis>();

            if (req.Num + nums <= config.Num)
            {
                //竞拍操作
                var paihis = new TpxinPaiHis
                {
                    Hisid      = id,
                    Configid   = config.Configid,
                    Createtime = now,
                    Nodeid     = req.Nodeid,
                    Num        = req.Num,
                    Price      = price,
                    Totalprice = amount,
                    Rankinfo   = null,
                    Status     = 0,
                    Remarks    = $"{price}p点",
                };
                db.TpxinPaiHisSet.Add(paihis);
            }
            else
            {
                var numeq = list.Where(w => w.Price >= price).Sum(s => s.Num);
                if (req.Num + numeq > config.Num)
                {
                    log.Info($"竞拍失败-大于最低价:购买数量超过剩余总数;购买数量:{req.Num};已竞拍数:{numeq};当前价:{price}");
                    Alert("竞拍价格低于当前最低价");
                    return(false, 0);
                }
                //竞拍操作
                var paihis = new TpxinPaiHis
                {
                    Hisid      = id,
                    Configid   = config.Configid,
                    Createtime = now,
                    Nodeid     = req.Nodeid,
                    Num        = req.Num,
                    Price      = price,
                    Totalprice = amount,
                    Rankinfo   = null,
                    Status     = 0,
                    Remarks    = $"{price}p点",
                };
                db.TpxinPaiHisSet.Add(paihis);
            }
            return(true, id);
        }