Exemplo n.º 1
0
        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
                      } }
                }
            });
        }
Exemplo n.º 2
0
        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);
                    }
                }
            }
        }
Exemplo n.º 3
0
        //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 }
                }
            });
        }
Exemplo n.º 4
0
        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
                                          } }
                }
            });
        }
Exemplo n.º 5
0
        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
                                          } }
                }
            });
        }
Exemplo n.º 6
0
        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 }
                }
            });
        }