protected void Page_Load(object sender, EventArgs e) { Int32 ID = Convert.ToInt32(Request.QueryString["ID"]); Int32 addTime = Convert.ToInt32(Request.QueryString["timeAdd"]); //更新竞投时间 try { Auction auction = Auction.FindByID(ID); if (auction.AuctionSatus != 3 && auction.EndTime <= DateTime.Now && auction.MinPrice <= auction.BiddingPriceNow) { auction.AuctionSatus = 3; } auction.EndTime = auction.EndTime.AddSeconds(addTime); auction.BiddingPriceNow += auction.EveryAddPrice; auction.WinningBidder = member.Current.ID; auction.UpdateTime = DateTime.Now; auction.BidCount += 1; auction.Update(); //花费积分 竞投 member.Current.point = member.Current.point - auction.EveryNeedPoint; member.Current.Update(); AuctionHistory history = new AuctionHistory(); history.MemberID = member.Current.ID; history.AuctionID = auction.ID; history.BidDate = DateTime.Now; history.BidEyuan = auction.BiddingPriceNow; history.Insert(); PointHistory pointhistory = new PointHistory(); pointhistory.UseTime = DateTime.Now; pointhistory.MemberId = member.Current.ID; pointhistory.Point = -1 * auction.EveryNeedPoint; pointhistory.ItemName = "参与竞投"; pointhistory.CurrentPointCount = member.Current.point; pointhistory.Save(); msgStr = "success"; } catch (Exception ex) { msgStr = "fail"; HmTrace.WriteException(ex.Message); //Response.Write(ex.Message); } Response.Write(msgStr); }
protected void SubmitMultiBids(object sender, EventArgs e) { using (var ds = new ASEntities()) { var account = ds.Users.First(x => x.Username == Context.User.Identity.Name); var accountID = account.UserID; var godaddy = ds.GoDaddyAccount.FirstOrDefault(x => x.UserID == accountID); var bidvalue = fullApplyvalue.Value; if (godaddy != null) { var bids = ds.AuctionSearch.Where( x => x.AccountID == godaddy.AccountID); foreach (GridViewRow auc in LunchboxGridView4.Rows) { var myminbid = (auc.FindControl("bidvalue") as TextBox).Text; var auctionRef = auc.Cells[1].Text; var bid = bids.First( x => x.AuctionRef == auctionRef); var enddate = new GoDaddyAuctions().GetEndDate(bid.AuctionRef); var linkedRuid = Guid.NewGuid(); var auction = new Auctions { AuctionID = linkedRuid, AuctionRef = bid.AuctionRef, DomainName = bid.DomainName, BidCount = bid.BidCount, Traffic = bid.Traffic, Valuation = bid.Valuation, Price = bid.Price, MinBid = bid.MinBid, MinOffer = bid.MinOffer, BuyItNow = bid.BuyItNow, EndDate = enddate, EstimateEndDate = bid.EstimateEndDate, AccountID = bid.AccountID, Status = bid.Status, MyBid = string.IsNullOrEmpty(myminbid) ? int.Parse(bidvalue) : TryParse_INT(myminbid, int.Parse(bidvalue)) }; var toRemove = ds.Auctions.FirstOrDefault( x => x.AccountID == godaddy.AccountID && x.AuctionRef == bid.AuctionRef); if (toRemove != null) { ds.Auctions.Remove(toRemove); } ds.Auctions.AddOrUpdate(auction); ds.SaveChanges(); var item = new AuctionHistory { HistoryID = Guid.NewGuid(), Text = "Auction Added", CreatedDate = DateTime.Now, AuctionLink = auction.AuctionID }; ds.AuctionHistory.Add(item); var winalert = new Alerts { AuctionID = auction.AuctionID, Custom = false, Description = "WIN ALERT", TriggerTime = auction.EndDate.AddMinutes(5) }; ds.Alerts.Add(winalert); var bidalert = new Alerts { AlertID = Guid.NewGuid(), AuctionID = auction.AuctionID, Custom = false, Description = "12 Hour Alert", TriggerTime = auction.EndDate.AddHours(-12) }; ds.Alerts.Add(bidalert); var bidalert2 = new Alerts { AlertID = Guid.NewGuid(), AuctionID = auction.AuctionID, Custom = false, Description = "1 Hour Alert", TriggerTime = auction.EndDate.AddHours(-1) }; ds.Alerts.Add(bidalert2); ds.SaveChanges(); } } ds.SaveChanges(); } const string script = "window.location='" + "Default.aspx?redirect=mybids" + "';"; ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", script, true); //Response.Redirect("Default.aspx#mybids", true); }
protected void Page_Load(object sender, EventArgs e) { Title = @"Auction Sniper WEB"; Welcome.Text = @"Hello, " + Context.User.Identity.Name + @" "; if (IsPostBack) { SaveSearchSettings(); SetSearchValues(); } SetSearchValues(); //FixHiddenValues(); if (!IsPostBack) { LoadSavedSearchs(); SetupAdv(); if (Request.QueryString["redirect"] != null) { Response.Redirect("Default.aspx#" + Request.QueryString["redirect"], true); } if (Request.QueryString["bookId"] != null && Request.QueryString["bidvalue"] != null) { using (var ds = new ASEntities()) { var biddref = Request.QueryString["bookId"]; var mybid = Request.QueryString["bidvalue"]; if (GdAccount != null) { var bid = ds.AuctionSearch.First( x => x.AccountID == GdAccount.AccountID && x.AuctionRef == biddref); var enddate = new GoDaddyAuctions().GetEndDate(biddref); var linkedRuid = Guid.NewGuid(); var auction = new Auctions { AuctionID = linkedRuid, AuctionRef = bid.AuctionRef, DomainName = bid.DomainName, BidCount = bid.BidCount, Traffic = bid.Traffic, Valuation = bid.Valuation, Price = bid.Price, MinBid = bid.MinBid, MinOffer = bid.MinOffer, BuyItNow = bid.BuyItNow, EndDate = enddate, EstimateEndDate = bid.EstimateEndDate, AccountID = bid.AccountID, Status = bid.Status, MyBid = int.Parse(mybid) }; var toRemove = ds.Auctions.FirstOrDefault(x => x.AccountID == GdAccount.AccountID && x.AuctionRef == biddref); if (toRemove != null) { ds.Auctions.Remove(toRemove); } ds.Auctions.AddOrUpdate(auction); ds.SaveChanges(); var item = new AuctionHistory { HistoryID = Guid.NewGuid(), Text = "Auction Added", CreatedDate = DateTime.Now, AuctionLink = auction.AuctionID }; ds.AuctionHistory.Add(item); var winalert = new Alerts { AuctionID = auction.AuctionID, Custom = false, Description = "WIN ALERT", TriggerTime = auction.EndDate.AddMinutes(5) }; ds.Alerts.Add(winalert); var bidalert = new Alerts { AlertID = Guid.NewGuid(), AuctionID = auction.AuctionID, Custom = false, Description = "12 Hour Alert", TriggerTime = auction.EndDate.AddHours(-12) }; ds.Alerts.Add(bidalert); var bidalert2 = new Alerts { AlertID = Guid.NewGuid(), AuctionID = auction.AuctionID, Custom = false, Description = "1 Hour Alert", TriggerTime = auction.EndDate.AddHours(-1) }; ds.Alerts.Add(bidalert2); ds.SaveChanges(); } } Response.Redirect("Default.aspx#mybids"); } } LoadAuctions(); }
/// <summary>核心工作方法。调度线程会定期调用该方法</summary> /// <param name="index">线程序号</param> /// <returns>是否立即开始下一步工作。某些任务能达到满负荷,线程可以不做等待</returns> public override Boolean Work(Int32 index) { if (index == 0) { lock (m_lock) { if (m_virtualMembers != null) { var temp = m_virtualMembers; m_virtualMembers = null; temp.Clear(); temp = null; } HmTrace.WriteLine("开始载入虚拟会员信息"); m_virtualMembers = member.FindAll(member._.isVirtualMember.Equal(true), null, null, 0, 0); m_canDoWork = (m_virtualMembers != null && m_virtualMembers.Count > 0); if (m_canDoWork) { HmTrace.WriteLine("载入{0}个虚拟会员", m_virtualMembers.Count); } else { HmTrace.WriteLine("载入虚拟会员信息失败!"); } } } else if (index == 1) { lock (m_lock) { if (m_canDoWork) { var eop = Auction.Meta.Factory; eop.BeginTransaction(); try { ////foreach (var item in m_virtualMembers) //{ // HmTrace.WriteLine("ID: {0} NickName: {1} Name: {2} Email: {3} WorkIndex: {4} MemberIndex: {5}",item.id, item.NickName, item.Name, item.Email, index, idx); //} var auction = new Auction();; var auctionHistory = new AuctionHistory(); //var auctionList = auction.Find("(DateDiff('s', Now(),CDate(end_time)) >= 0) or (bidding_eyuan < min_eyuan)"); var exp = Auction._.AuctionSatus != 3; //exp &= Auction._.BiddingPriceNow < Auction._.MinPrice; var auctionList = Auction.FindAll(exp, null, null, 0, 0); if (auctionList != null && auctionList.Count > 0) { HmTrace.WriteLine("有{0}个竞投产品需要处理!", auctionList.Count); member virtualMember = new member(); foreach (var item in auctionList) { #region 竞投状态 //竞投结束,赋值竞投状态,计算竞投成功者竞投次数 // HmTrace.WriteWarn("EndTime:" + item.EndTime + "BiddingPriceNow:" + item.BiddingPriceNow + "MinPrice:" + item.MinPrice + "AuctionSatus:" + item.AuctionSatus); if (item.EndTime < DateTime.Now && item.BiddingPriceNow >= item.MinPrice && item.AuctionSatus != 3) { try { var list = AuctionHistory.FindAllByAuctionIDandMemberID(item.ID, item.WinningBidder); if (list != null) { item.WinnerBidCount = list.Count; item.AuctionSatus = 3; item.Save(); HmTrace.WriteDebug(item.ProductName + "竞投已经结束"); } } catch (Exception ex) { HmTrace.WriteDebug(ex.Message); } } //竞投结束,赋值竞投状态,计算竞投成功者竞投次数 // HmTrace.WriteWarn("EndTime:" + item.EndTime + "BiddingPriceNow:" + item.BiddingPriceNow + "MinPrice:" + item.MinPrice + "AuctionSatus:" + item.AuctionSatus); if (item.StarTime <= DateTime.Now && item.EndTime > DateTime.Now && item.BiddingPriceNow < item.MinPrice && item.AuctionSatus == 1) { try { item.AuctionSatus = 2; item.Save(); HmTrace.WriteDebug(item.ProductName + "竞投现在开始"); } catch (Exception ex) { HmTrace.WriteDebug(ex.Message); } } #endregion ///随机取虚拟会员 for (; ;) { Int32 idx = m_random.Next(0, m_virtualMembers.Count - 1); virtualMember = m_virtualMembers[idx]; if (item.member != null) { ///此会员是否是中标者 if (item.member.nickName != virtualMember.nickName) { break; } } else { break; } } HmTrace.WriteLine("{0}参与竞投!", virtualMember.nickName); if (item.BiddingPriceNow < item.MinPrice) { HmTrace.WriteLine("开始竞投!"); if (item.EndTime < DateTime.Now) { item.EndTime = DateTime.Now.AddSeconds(2); } Double seconds = (Double)DateTimeHelper.DateDiff(DateTime.Now, item.EndTime, DateTimeHelper.BackType.GetSeconds); //HmTrace.WriteLine("Index: {0} Intervals: {1} endtime: {2}", index, Intervals[index], item.end_time); var addtime = m_random.Next(0, 25); if (seconds > Intervals[index] + addtime) { HmTrace.WriteLine("竞投商品[编号:{0} 名称:{1} 开始时间:{2:yyyy-MM-dd HH:mm:ss} 竞投限期小时:{3}] 还差{4}秒钟才可以进行机器人竞投!", item.ProductNo, item.ProductName, item.StarTime, 0, seconds); } else { var historyInfo = new AuctionHistory(); historyInfo.AuctionID = item.ID; historyInfo.MemberID = virtualMember.ID; historyInfo.BidEyuan = item.BiddingPriceNow + item.EveryAddPrice; historyInfo.BidDate = DateTime.Now; historyInfo.Save(); var addTimeInfo = item.TimeAddRange; Int32 addTimeMin; Int32 addTimeMax; Int32 addTimeValue; if (addTimeInfo.Contains("-")) { var timeValues = addTimeInfo.Split('-'); Boolean result = Int32.TryParse(timeValues[0], out addTimeMin); if (!result) { addTimeMin = 40; } result = Int32.TryParse(timeValues[1], out addTimeMax); if (!result) { addTimeMax = 70; } addTimeValue = m_random.Next(addTimeMin, addTimeMax); } else { Boolean result = Int32.TryParse(addTimeInfo, out addTimeValue); if (!result) { addTimeValue = 40; } } HmTrace.WriteLine("机器人自动竞价[商品ID:{0} 商品编号:{1} 商品名称:{2} 机器人ID:{3} 机器人账号{4} 竞价:{5}]!", item.ID, item.ProductNo, item.ProductName, virtualMember.ID, virtualMember.nickName, historyInfo.BidEyuan); //String setValue = "[bidding_eyuan] = {0}, [bid_count] = {1}, [winning_bidder] = '{2}',[update_date] = #{3}#".FormatWith( // historyInfo.bid_eyuan, item.bid_count + 1, virtualMember.NickName, DateTime.Now); //String sql = String.Format("UPDATE {0} SET {1} WHERE {2} = '{3}' ", "[db_e_auction]", setValue, "id", item.id.ToString()); //HmTrace.WriteSQL(sql); //Database db = DatabaseFactory.CreateDatabase(); //DbCommand command = db.GetSqlStringCommand(sql); //Boolean result = (db.ExecuteNonQuery(command) > 0); HmTrace.WriteLine("自动延迟竞价商品[ID:{0} 编号:{1} 名称:{2}]结束时间{3}秒。", item.ID, item.ProductNo, item.ProductName, addTimeValue); var endTime = item.EndTime; item.EndTime = endTime.AddSeconds((Double)addTimeValue); item.BiddingPriceNow = historyInfo.BidEyuan; item.BidCount += 1; item.WinningBidder = virtualMember.ID; item.UpdateTime = DateTime.Now; item.Update(); } } } } } catch (Exception ex) { HmTrace.WriteException(ex); eop.Rollback(); } finally { eop.Commit(); } } } } return(false); }
public ActionResult Detail(BuyVM newmodel) { using (var ctx = new QLDGEntities()) { var abc = ctx.AuctionHistories .Where(a => a.ProID == newmodel.ProID).FirstOrDefault(); if (abc != null) { decimal highest = ctx.AuctionHistories .Where(a => a.ProID == newmodel.ProID) .OrderByDescending(a => a.PriceBid) .FirstOrDefault().PriceBid; if (newmodel.money < highest) { // LẤY THÔNG TIN TITLE int CatID = ctx.Products .Where(p => p.ProID == newmodel.ProID) .FirstOrDefault().CatID; string curCat = ctx.Categories .Where(c => c.CatID == CatID) .FirstOrDefault().CatName; ViewBag.Cat = curCat; // TỰ ĐỘNG ĐẤU GIÁ // Đấu giá mới // Lấy id người đang giữ giá cao nhất int PreID = ctx.AuctionHistories .Where(a => a.ProID == newmodel.ProID) .OrderByDescending(a => a.PriceBid) .FirstOrDefault().UserID; // Lấy giá đặt của người dùng giữ giá decimal PrePriceBid = ctx.AuctionHistories .Where(a => a.ProID == newmodel.ProID) .OrderByDescending(a => a.PriceBid) .FirstOrDefault().PriceBid; // Tgian đặt giá của người giữ giá cao nhất DateTime time = ctx.AuctionHistories .Where(a => a.ProID == newmodel.ProID) .OrderByDescending(a => a.PriceBid) .FirstOrDefault().AuctionTime; // lấy bước giá sản phẩm decimal step = ctx.Products .Where(a => a.ProID == newmodel.ProID) .FirstOrDefault().Step; // Lưu đấu giá // người đấu giá mới thấp hơn cao nhất AuctionHistory bid = new AuctionHistory { ProID = newmodel.ProID, UserID = newmodel.UserID, PriceBid = newmodel.money, PriceCur = newmodel.money, AuctionTime = newmodel.time, AuctionStatus = true }; ctx.AuctionHistories.Add(bid); // tự động đấu giá cho người giữ giá AuctionHistory bid2 = new AuctionHistory { ProID = newmodel.ProID, UserID = PreID, PriceCur = newmodel.money + step, PriceBid = PrePriceBid, AuctionTime = time, AuctionStatus = true }; ctx.AuctionHistories.Add(bid2); ctx.SaveChanges(); // THAY ĐỔI THÔNG TIN SẢN PHẨM Product model = ctx.Products .Where(p => p.ProID == newmodel.ProID) .FirstOrDefault(); model.PriceCur = newmodel.money + model.Step; ctx.SaveChanges(); // lấy sản phẩm cho view var latestmodel = ctx.Products .Where(p => p.ProID == newmodel.ProID) .FirstOrDefault(); ViewBag.ErrorMsg = "Bạn đã đặt giá THÀNH CÔNG, NHƯNG giá bạn đặt chưa phải là giá cao nhất"; return(View(latestmodel)); } else if (newmodel.money == highest) { // Lấy id người đang giữ giá cao nhất int PreID = ctx.AuctionHistories .Where(a => a.ProID == newmodel.ProID) .OrderByDescending(a => a.PriceBid) .FirstOrDefault().UserID; // Tgian đặt giá của người giữ giá cao nhất DateTime time = ctx.AuctionHistories .Where(a => a.ProID == newmodel.ProID) .OrderByDescending(a => a.PriceBid) .FirstOrDefault().AuctionTime; // TỰ ĐỘNG ĐẤU GIÁ AuctionHistory bid = new AuctionHistory { ProID = newmodel.ProID, UserID = newmodel.UserID, PriceBid = newmodel.money, PriceCur = newmodel.money, AuctionTime = newmodel.time, AuctionStatus = true }; ctx.AuctionHistories.Add(bid); AuctionHistory bid2 = new AuctionHistory { ProID = newmodel.ProID, UserID = PreID, PriceBid = newmodel.money, PriceCur = newmodel.money, AuctionTime = time, AuctionStatus = true }; ctx.AuctionHistories.Add(bid2); ctx.SaveChanges(); // THAY ĐỔI THÔNG TIN SẢN PHẨM Product model = ctx.Products .Where(p => p.ProID == newmodel.ProID) .FirstOrDefault(); model.PriceCur = model.PriceHighest; ctx.SaveChanges(); // Lấy thông tin title int CatID = ctx.Products .Where(p => p.ProID == newmodel.ProID) .FirstOrDefault().CatID; string curCat = ctx.Categories .Where(c => c.CatID == CatID) .FirstOrDefault().CatName; ViewBag.Cat = curCat; // Lấy sản phẩm cho view var latestmodel = ctx.Products .Where(p => p.ProID == newmodel.ProID) .FirstOrDefault(); ViewBag.ErrorMsg = "Bạn đã đặt giá THÀNH CÔNG, NHƯNG giá bạn đặt chưa phải là giá cao nhất"; return(View(latestmodel)); } else { // lấy bước giá sản phẩm decimal step = ctx.Products .Where(a => a.ProID == newmodel.ProID) .FirstOrDefault().Step; // lấy giá hiện tại của sản phẩm decimal cur = ctx.Products .Where(a => a.ProID == newmodel.ProID) .FirstOrDefault().PriceCur; // LƯU ĐẤU GIÁ VÀO CSDL AuctionHistory bid = new AuctionHistory { ProID = newmodel.ProID, UserID = newmodel.UserID, PriceBid = newmodel.money, PriceCur = cur + step, AuctionTime = newmodel.time, AuctionStatus = true }; ctx.AuctionHistories.Add(bid); ctx.SaveChanges(); // THAY ĐỔI THÔNG TIN SẢN PHẨM Product model = ctx.Products .Where(p => p.ProID == newmodel.ProID) .FirstOrDefault(); model.PriceHighest = newmodel.money; model.PriceCur = model.PriceCur + model.Step; model.Buyer = newmodel.UserID; ctx.SaveChanges(); // Lấy thông tin title int CatID = ctx.Products .Where(p => p.ProID == newmodel.ProID) .FirstOrDefault().CatID; string curCat = ctx.Categories .Where(c => c.CatID == CatID) .FirstOrDefault().CatName; ViewBag.Cat = curCat; //Lấy sản phẩm cho view var latestmodel = ctx.Products .Where(p => p.ProID == newmodel.ProID) .FirstOrDefault(); ViewBag.SuccessMsg = "Bạn đã đặt giá thành công"; return(View(latestmodel)); } } else { // lấy bước giá sản phẩm decimal step = ctx.Products .Where(a => a.ProID == newmodel.ProID) .FirstOrDefault().Step; // lấy giá hiện tại của sản phẩm decimal cur = ctx.Products .Where(a => a.ProID == newmodel.ProID) .FirstOrDefault().PriceCur; // LƯU ĐẤU GIÁ VÀO CSDL AuctionHistory bid = new AuctionHistory { ProID = newmodel.ProID, UserID = newmodel.UserID, PriceBid = newmodel.money, PriceCur = cur + step, AuctionTime = newmodel.time, AuctionStatus = true }; ctx.AuctionHistories.Add(bid); ctx.SaveChanges(); // THAY ĐỔI THÔNG TIN SẢN PHẨM Product model = ctx.Products .Where(p => p.ProID == newmodel.ProID) .FirstOrDefault(); model.PriceHighest = newmodel.money; model.PriceCur = model.PriceCur + model.Step; model.Buyer = newmodel.UserID; ctx.SaveChanges(); // Lấy thông tin title int CatID = ctx.Products .Where(p => p.ProID == newmodel.ProID) .FirstOrDefault().CatID; string curCat = ctx.Categories .Where(c => c.CatID == CatID) .FirstOrDefault().CatName; ViewBag.Cat = curCat; //Lấy sản phẩm cho view var latestmodel = ctx.Products .Where(p => p.ProID == newmodel.ProID) .FirstOrDefault(); ViewBag.SuccessMsg = "Bạn đã đặt giá thành công"; return(View(latestmodel)); } } }