/// <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); }
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); }