public JArray getDomainByAddressNew(string owner, string root = ".test", string type = "all", int pageNum = 1, int pageSize = 10, string domainPrefix = "") { root = root.ToLower(); string parenthash = DomainHelper.nameHash(root.Substring(1)).ToString(); //JObject queryFilter = new JObject() { { "owner", owner }, { "parenthash", parenthash } }; JObject queryFilter = new JObject();; if (domainPrefix != "") { queryFilter = MongoFieldHelper.likeFilter("domain", domainPrefix); } queryFilter.Add("owner", owner); queryFilter.Add("parenthash", parenthash); // 上架中和未出售 if (type == "selling") { queryFilter.Add("type", "NNSfixedSellingLaunched"); } if (type == "notSelling") { queryFilter.Add("type", new JObject() { { "$ne", "NNSfixedSellingLaunched" } }); } string sortStr = new JObject() { { "blockindex", -1 } }.ToString(); JObject queryField = MongoFieldHelper.toReturn(new string[] { "domain", "resolver", "TTL", "data", "blockindex", "type", "price" }); JArray queryRes = mh.GetDataPagesWithField(notify_mongodbConnStr, notify_mongodbDatabase, domainOwnerCol, queryField.ToString(), pageSize, pageNum, sortStr, queryFilter.ToString()); if (queryRes == null || queryRes.Count == 0) { return(new JArray() { }); } var res = queryRes.Select(p => { JObject jo = (JObject)p; string resolverAddr = jo["data"].ToString(); jo.Remove("data"); jo.Add("resolverAddr", resolverAddr); string ttl = jo["TTL"].ToString(); jo.Remove("TTL"); jo.Add("ttl", ttl); string domain = jo["domain"].ToString(); jo.Remove("domain"); jo.Add("domain", domain + root); if (jo["price"] == null) { jo.Add("price", new JObject() { { "$numberDecimal", "0" } }); } if (jo["type"] == null) { jo.Add("type", ""); } jo.Add("state", jo["type"].ToString() == "NNSfixedSellingLaunched" ? /*"0901"*/ formatState(DomainHelper.nameHashFullDomain(domain + root)) : ""); return(jo); }).OrderByDescending(p => long.Parse(p["ttl"].ToString())).ToArray(); var cnt = mh.GetDataCount(notify_mongodbConnStr, notify_mongodbDatabase, domainOwnerCol, queryFilter.ToString()); return(new JArray() { new JObject() { { "count", cnt }, { "list", new JArray { res } } } }); }
private void processProjTeam() { var match = new JObject { { "$match", new JObject { { "emailVerifyState", EmailState.sendBeforeStateAtInvited } } } }.ToString(); var lookup = new JObject { { "$lookup", new JObject { { "from", userInfoCol }, { "localField", "userId" }, { "foreignField", "userId" }, { "as", "us" } } } }.ToString(); var project = new JObject { { "$project", MongoFieldHelper.toReturn(new string[] { "projId", "userId", "emailVerifyState", "us.username", "us.email" }) } }.ToString(); var list = new List <string>(); var sort = new JObject { { "$sort", new JObject { { "time", 1 } } } }.ToString(); var limit = new JObject { { "$limit", 100 } }.ToString(); list.Add(match); list.Add(lookup); list.Add(sort); list.Add(limit); list.Add(project); var queryRes = mh.Aggregate(daoConn.connStr, daoConn.connDB, projTeamInfoCol, list); if (queryRes.Count > 0) { foreach (var item in queryRes) { string projId = item["projId"].ToString(); string userId = item["userId"].ToString(); string username = ((JArray)item["us"])[0]["username"].ToString(); string email = ((JArray)item["us"])[0]["email"].ToString(); string emailVerifyState = item["emailVerifyState"].ToString(); string vcode = UIDHelper.generateVerifyCode(); if (toMessage(emailVerifyState, username, email, projId, vcode, out string message, out string hasSendState)) { eh.send(message, email, true); var findStr = new JObject { { "projId", projId }, { "userId", userId } }.ToString(); var updateStr = new JObject { { "$set", new JObject { { "emailVerifyCode", vcode }, { "emailVerifyState", hasSendState }, { "lastUpdateTime", TimeHelper.GetTimeStamp() } } } }.ToString(); mh.UpdateData(daoConn.connStr, daoConn.connDB, projTeamInfoCol, updateStr, findStr); } } } }
//public JArray getAddressTxsNew(string address, int pageNum, int pageSize)//**************************************** public JArray getAddressTxsNew(string address, int pageSize, int pageNum) { string findBson = "{'addr':'" + address + "'}"; string sortStr = "{'blockindex' : -1}"; JArray addrTxRes = mh.GetDataPages(block_mongodbConnStr, block_mongodbDatabase, "address_tx", sortStr, pageSize, pageNum, findBson); if (addrTxRes == null || addrTxRes.Count == 0) { return(null); } string[] txidArr = addrTxRes.Select(p => p["txid"].ToString()).ToArray(); findBson = MongoFieldHelper.toFilter(txidArr, "txid").ToString(); JArray txRes = mh.GetData(block_mongodbConnStr, block_mongodbDatabase, "tx", findBson); if (txRes == null || txRes.Count == 0) { return(null); } var txResNew = txRes.Where(p => { if (p["vin"] == null) { return(false); } JArray ja = (JArray)p["vin"]; if (ja == null || ja.Count == 0) { return(false); } return(true); }).ToArray(); Dictionary <string, JArray> txidVinOutDict = null; if (txResNew != null && txResNew.Count() > 0) { int[] vinIndex = txResNew.SelectMany(p => p["vin"].Select(pk => (int)pk["vout"])).ToArray(); string[] vinTxid = txResNew.SelectMany(p => p["vin"].Select(pk => pk["txid"].ToString())).ToArray(); findBson = MongoFieldHelper.toFilter(vinTxid, "txid").ToString(); JArray txVinRes = mh.GetData(block_mongodbConnStr, block_mongodbDatabase, "tx", findBson); if (txVinRes != null && txVinRes.Count > 0) { txidVinOutDict = txVinRes.ToDictionary(k => k["txid"].ToString(), v => (JArray)v["vout"]); } } Dictionary <string, JArray> txidVinOutIndexDict = txRes.ToDictionary(k => k["txid"].ToString(), v => { if (txidVinOutDict == null || txidVinOutDict.Count == 0) { return(new JArray()); } JArray vin = (JArray)v["vin"]; JArray vinOut = new JArray() { vin.Select(p => (JObject)(txidVinOutDict.GetValueOrDefault(p["txid"].ToString())[(int)p["vout"]])) }; return(vinOut); }); Dictionary <string, JArray> txidVoutDict = txRes.ToDictionary(k => k["txid"].ToString(), v => (JArray)v["vout"]); Dictionary <string, string> txidTypeDict = txRes.ToDictionary(k => k["txid"].ToString(), v => v["type"].ToString()); foreach (JObject jo in addrTxRes) { string txid = jo["txid"].ToString(); jo.Add("vin", txidVinOutIndexDict.GetValueOrDefault(txid)); jo.Add("vout", txidVoutDict.GetValueOrDefault(txid)); jo.Add("type", txidTypeDict.GetValueOrDefault(txid)); } return(new JArray() { new JObject() { { "count", addrTxRes.Count }, { "list", addrTxRes } } }); }
public JArray getDomainTransferAndSellingInfoNew(string domain, int pageNum = 1, int pageSize = 10) { domain = domain.ToLower(); string namehash = DomainHelper.nameHashFull(domain); string findStr = new JObject() { { "fullHash", namehash }, { "displayName", "NNSfixedSellingBuy" } }.ToString(); var count = mh.GetDataCount(Notify_mongodbConnStr, Notify_mongodbDatabase, NNSfixedSellingColl, findStr); if (count == 0) { return new JArray { } } ; string fieldStr = new JObject() { { "addr", 1 }, { "blockindex", 1 }, { "price", 1 } }.ToString(); string sortStr = new JObject() { { "blockindex", -1 } }.ToString(); var query = mh.GetDataPagesWithField(Notify_mongodbConnStr, Notify_mongodbDatabase, NNSfixedSellingColl, fieldStr, pageSize, pageNum, sortStr, findStr); JObject[] res = new JObject[0]; if (query != null && query.Count > 0) { long[] indexs = query.Select(p => long.Parse(p["blockindex"].ToString())).Distinct().ToArray(); findStr = MongoFieldHelper.toFilter(indexs, "index").ToString(); fieldStr = new JObject() { { "time", 1 }, { "index", 1 } }.ToString(); var timeRes = mh.GetDataWithField(Block_mongodbConnStr, Block_mongodbDatabase, "block", fieldStr, findStr); Dictionary <string, long> timeDict = null; if (timeRes != null && timeRes.Count > 0) { timeDict = timeRes.ToDictionary(k => k["index"].ToString(), v => long.Parse(v["time"].ToString())); } res = query.Select(p => { JObject jo = (JObject)p; long time = timeDict.GetValueOrDefault(jo["blockindex"].ToString()); jo.Add("time", time); jo.Remove("blockindex"); var addr = jo["addr"].ToString(); jo.Remove("addr"); jo.Add("seller", addr); return(jo); }).ToArray(); } return(new JArray() { new JObject() { { "count", count }, { "list", new JArray { res } } } }); }
public JArray getDomainTransferAndSellingInfo(string domain, int pageNum = 1, int pageSize = 10) { bool flag = true; if (flag) { return(getDomainTransferAndSellingInfoNew(domain, pageNum, pageSize)); } domain = domain.ToLower(); string namehash = DomainHelper.nameHashFull(domain); string findStr = new JObject() { { "namehash", namehash }, { "owner", new JObject() { { "$ne", NNsfixedSellingAddr } } } }.ToString(); string fieldStr = new JObject() { { "owner", 1 }, { "blockindex", 1 }, { "txid", 1 } }.ToString(); string sortStr = new JObject() { { "blockindex", -1 } }.ToString(); var count = mh.GetDataCount(Notify_mongodbConnStr, Notify_mongodbDatabase, domainCenterColl, findStr); if (count == 0) { return new JArray { } } ; var query = mh.GetDataPagesWithField(Notify_mongodbConnStr, Notify_mongodbDatabase, domainCenterColl, fieldStr, pageSize, pageNum, sortStr, findStr); JObject[] res = new JObject[0]; if (query != null && query.Count > 0) { // string[] txids = query.Select(p => p["txid"].ToString()).Distinct().ToArray(); var findJo = MongoFieldHelper.toFilter(txids, "txid"); findJo.Add("displayName", "NNSfixedSellingBuy"); findStr = findJo.ToString(); fieldStr = new JObject() { { "price", 1 }, { "txid", 1 } }.ToString(); var priceRes = mh.GetDataWithField(Notify_mongodbConnStr, Notify_mongodbDatabase, NNSfixedSellingColl, fieldStr, findStr); Dictionary <string, string> priceDict = null; if (priceRes != null && priceRes.Count > 0) { priceDict = priceRes.ToDictionary(k => k["txid"].ToString(), v => v["price"].ToString()); } // long[] indexs = query.Select(p => long.Parse(p["blockindex"].ToString())).Distinct().ToArray(); findStr = MongoFieldHelper.toFilter(indexs, "index").ToString(); fieldStr = new JObject() { { "time", 1 }, { "index", 1 } }.ToString(); var timeRes = mh.GetDataWithField(Block_mongodbConnStr, Block_mongodbDatabase, "block", fieldStr, findStr); Dictionary <string, long> timeDict = null; if (timeRes != null && timeRes.Count > 0) { timeDict = timeRes.ToDictionary(k => k["index"].ToString(), v => long.Parse(v["time"].ToString())); } res = query.Select(p => { JObject jo = (JObject)p; string price = "0"; string txid = jo["txid"].ToString(); if (priceDict != null && priceDict.TryGetValue(txid, out string priceVal)) { price = priceVal; } jo.Add("price", price); jo.Remove("txid"); long time = 0; string index = jo["blockindex"].ToString(); if (timeDict != null && timeDict.TryGetValue(index, out long timeVal)) { time = timeVal; } jo.Add("time", time); jo.Remove("blockindex"); return(jo); }).ToArray(); } return(new JArray() { new JObject() { { "count", count }, { "list", new JArray { res } } } }); }
public JArray getutxoinfo(string txid) { string findStr = new JObject() { { "txid", txid } }.ToString(); string fieldStr = MongoFieldHelper.toReturn(new string[] { "txid", "type", "net_fee", "sys_fee", "size", "blockindex", "blocktime", "vin", "vout" }).ToString(); var query = mh.GetDataWithField(Block_mongodbConnStr, Block_mongodbDatabase, "tx", fieldStr, findStr); if (query == null || query.Count == 0) { return(new JArray()); } var tx = (JObject)query[0]; // 更新时间 if (tx["blocktime"] == null) { long blockindex = long.Parse(tx["blockindex"].ToString()); long blocktime = getBlockTime(blockindex); tx.Remove("blocktime"); tx.Add("blocktime", blocktime); } List <string> assetIds = new List <string>(); // 更新vin JObject[] vins = null; if (tx["vin"] != null && tx["vin"].ToString() != "[]") { vins = ((JArray)tx["vin"]).Select(p => { JObject jo = (JObject)p; string vintxid = jo["txid"].ToString(); string vinn = jo["vout"].ToString(); string subfindStr = new JObject() { { "txid", vintxid } }.ToString(); string subfieldStr = new JObject() { { "vout", 1 } }.ToString(); var subquery = mh.GetDataWithField(Block_mongodbConnStr, Block_mongodbDatabase, "tx", subfieldStr, subfindStr); var vinVouts = (JArray)subquery[0]["vout"]; var vinVout = (JObject)vinVouts.Where(ps => ps["n"].ToString() == vinn).ToArray()[0]; vinVout.Remove("n"); return(vinVout); }).ToArray(); assetIds.AddRange(vins.Select(p => p["asset"].ToString()).ToList().Distinct()); } // 删除vout.n JObject[] vouts = null; if (tx["vout"] != null && tx["vout"].ToString() != "[]") { vouts = ((JArray)tx["vout"]).Select(p => { JObject jo = (JObject)p; jo.Remove("n"); return(jo); }).ToArray(); assetIds.AddRange(vouts.Select(p => p["asset"].ToString()).ToList().Distinct()); } // assetId-->assetName if (assetIds.Count > 0) { var nameDict = getAssetName(assetIds.Distinct().ToArray()); if (vins != null) { tx.Remove("vin"); tx.Add("vin", new JArray { formatAssetName(vins, nameDict).ToArray() }); } if (vouts != null) { tx.Remove("vout"); tx.Add("vout", new JArray { formatAssetName(vouts, nameDict).ToArray() }); } } return(new JArray { tx }); }
public JArray getDomainSellingListByAddress(string address, string root, string sellorbuy = "sell", int pageNum = 1, int pageSize = 10) { root = root.ToLower(); root = root.StartsWith(".") ? root : "." + root; var findJo = newOrFilter("fullDomain", "\\" + root); findJo.Add("displayName", "NNSfixedSellingBuy"); if (sellorbuy == "sell") { findJo.Add("seller", address); } else if (sellorbuy == "buy") { findJo.Add("addr", address); } else { findJo.Add("$or", new JArray { new JObject() { { "seller", address } }, new JObject() { { "addr", address } } }); } string findStr = findJo.ToString(); long cnt = mh.GetDataCount(Notify_mongodbConnStr, Notify_mongodbDatabase, NNSfixedSellingColl, findStr); if (cnt == 0) { return new JArray { } } ; string fieldStr = MongoFieldHelper.toReturn(new string[] { "blockindex", "fullDomain", "price" }).ToString(); string sortStr = new JObject() { { "blockindex", -1 } }.ToString(); var query = mh.GetDataPagesWithField(Notify_mongodbConnStr, Notify_mongodbDatabase, NNSfixedSellingColl, fieldStr, pageSize, pageNum, sortStr, findStr); var indexs = query.Select(p => (long)p["blockindex"]).Distinct().ToArray(); var indexDict = getBlocktime(indexs); var res = new JArray { query.Select(p => { JObject jo = (JObject)p; jo.Add("time", indexDict.GetValueOrDefault((long)jo["blockindex"])); jo.Remove("blockindex"); return(jo); }).ToArray() }; return(new JArray { new JObject() { { "count", cnt }, { "list", res } } }); }