private void updateR5(JToken[] rr, long blockindex, long rblockindex, long rblocktime) {// collectDomain foreach (JToken jt in rr) { string auctionId = jt["auctionId"].ToString(); string domain = jt["domain"].ToString(); string parenthash = jt["parenthash"].ToString(); string who = jt["who"].ToString(); string txid = jt["txid"].ToString(); AuctionTx at = queryAuctionTx(auctionId); if (at == null) { // 没有竞拍信息,报错停止处理 error(auctionId); return; } if (at.addwholist == null || at.addwholist.Count == 0) { at.addwholist = new List <AuctionAddWho>(); } AuctionAddWho addwho = null; AuctionAddWho[] addwhoArr = at.addwholist.Where(p => p.address == who).ToArray(); if (addwhoArr != null && addwhoArr.Count() > 0) { addwho = addwhoArr[0]; at.addwholist.Remove(addwho); } else { addwho = new AuctionAddWho(); addwho.address = who; } // 领取域名时间 addwho.getdomainTime = new AuctionTime { blockindex = rblockindex, blocktime = rblocktime, txid = txid }; at.addwholist.Add(addwho); replaceAuctionTx(at, auctionId); } }
private void updateR3_BidSettlement(JToken[] rr, long blockindex, long rblockindex, long rblocktime) { foreach (var jt in rr) { string who = jt["who"].ToString(); decimal value = decimal.Parse(jt["value"].ToString()); string auctionId = jt["auctionId"].ToString(); string txid = jt["txid"].ToString(); AuctionTx at = queryAuctionTx(auctionId); if (at == null) { // 没有竞拍信息,报错停止处理 error(auctionId); return; } if (at.addwholist == null) { at.addwholist = new List <AuctionAddWho>(); } AuctionAddWho addwho = null; AuctionAddWho[] addwhoArr = at.addwholist.Where(p => p.address == who).ToArray(); if (addwhoArr != null && addwhoArr.Count() > 0) { addwho = addwhoArr[0]; at.addwholist.Remove(addwho); } else { addwho = new AuctionAddWho(); addwho.address = who; addwho.totalValue = format(0); addwho.curTotalValue = format(0); } // bool hasExist = addwho.addpricelist != null && addwho.addpricelist.Any(p => p != null && p.time.txid == txid && p.value == value); if (hasExist) { continue; } // 结算时间(领取域名/取回CGas) addwho.accountTime = new AuctionTime { blockindex = rblockindex, blocktime = rblocktime, txid = txid }; // 最后操作时间(包括最后出价时间和领取域名/取回Gas时间) at.lastTime = new AuctionTime { blockindex = rblockindex, blocktime = rblocktime, txid = txid }; // 加价列表 if (addwho.addpricelist == null) { addwho.addpricelist = new List <AuctionAddPrice>(); } addwho.addpricelist.Add(new AuctionAddPrice { time = new AuctionTime { blockindex = rblockindex, blocktime = rblocktime, txid = txid }, value = format(value * -1), isEnd = "1" // 表示结算 }); at.addwholist.Add(addwho); replaceAuctionTx(at, auctionId); } }
private void updateR3(JToken[] rr, long blockindex, Dictionary <string, long> blockindexDict) {// assetManagement foreach (JToken jt in rr) { //string auctionId = jt["auctionId"].ToString(); string from = jt["from"].ToString(); string to = jt["to"].ToString(); decimal value = decimal.Parse(jt["value"].ToString()); string txid = jt["txid"].ToString(); if (txid == "0xc97606fd0db030369a9848ef7c19543f66aad752bb70984b94f165c69b6301ca") { //throw new Exception("TTT"); } bool auctionidIsTo = true; string auctionId = null; string address = null; if (from.Length > to.Length) { auctionidIsTo = false; auctionId = "0x" + from.hexstringReverse(); address = to; } else { auctionidIsTo = true; auctionId = "0x" + to.hexstringReverse(); address = from; } // 如果to为分红地址 if (!auctionidIsTo && to == bonusAddress) { //string data = new JObject() { { "from", from }, { "to", to }, { "value", value } }.ToString(); //mh.PutData(localDbConnInfo.connStr, localDbConnInfo.connDB, bonusAddressColl, data); //return; } AuctionTx at = queryAuctionTx(auctionId); if (at == null) { // 没有竞拍信息,报错停止处理 error(auctionId); return; } if (at.addwholist == null) { at.addwholist = new List <AuctionAddWho>(); } AuctionAddWho addwho = null; AuctionAddWho[] addwhoArr = at.addwholist.Where(p => p.address == address).ToArray(); if (addwhoArr != null && addwhoArr.Count() > 0) { addwho = addwhoArr[0]; at.addwholist.Remove(addwho); //addwho.totalValue = auctionidIsTo ? addwho.totalValue + value : addwho.totalValue - value; if (addwho.addpricelist != null && addwho.addpricelist.Any(p => p != null && p.time.txid == txid && format(p.value) == value)) { continue; } } else { addwho = new AuctionAddWho(); addwho.address = address; addwho.totalValue = format(0); addwho.curTotalValue = format(0); //addwho.totalValue = value; } bool isPositiveFlag = auctionidIsTo || (!auctionidIsTo && address == bonusAddress); if (isPositiveFlag) { addwho.totalValue = format(format(addwho.totalValue) + value); addwho.curTotalValue = format(format(addwho.curTotalValue) + value); } if (auctionidIsTo) { addwho.lastTime = new AuctionTime { blockindex = blockindex, blocktime = blockindexDict.GetValueOrDefault(blockindex + ""), txid = txid }; // 最后操作时间(包括最后出价时间和领取域名/取回Gas时间) at.lastTime = new AuctionTime { blockindex = blockindex, blocktime = blockindex == 0 ? 0 : blockindexDict.GetValueOrDefault(blockindex + ""), txid = blockindex == 0 ? "" : txid }; } else { if (bonusAddress != address /*&& value > 0*/) { addwho.accountTime = new AuctionTime { blockindex = blockindex, blocktime = blockindexDict.GetValueOrDefault(blockindex + ""), txid = txid }; } } // 正在处理高度累计加价:待讨论 // totalValue = curTotalValue // 开始:totalValue -= curTotalValue, curTotalValue = 0 // 加价:totalValue += value , curTotalValue += value // 完成:curTotalValue = 0, 更新已处理高度 // 加价列表 if (addwho.addpricelist == null) { addwho.addpricelist = new List <AuctionAddPrice>(); } bool hasExist = addwho.addpricelist.Any(p => p != null && p.time.txid == txid && p.value == value); if (!hasExist) { addwho.addpricelist.Add(new AuctionAddPrice { time = new AuctionTime { blockindex = blockindex, blocktime = blockindexDict.GetValueOrDefault(blockindex + ""), txid = txid }, value = isPositiveFlag ? format(value) : format(value * -1), isEnd = isPositiveFlag ? "0" : "1" }); } at.addwholist.Add(addwho); replaceAuctionTx(at, auctionId); } }