Exemple #1
0
        public async Task <JsonResult> Post()
        {
            DateTime       start = DateTime.Now;
            JsonResult     res   = null;
            JsonRPCrequest req   = null;

            try
            {
                var ctype = HttpContext.Request.ContentType;
                LitServer.FormData form = null;
                if (ctype == "application/x-www-form-urlencoded" ||
                    (ctype.IndexOf("multipart/form-data;") == 0))
                {
                    form = await LitServer.FormData.FromRequest(HttpContext.Request);

                    var _jsonrpc   = form.mapParams["jsonrpc"];
                    var _id        = long.Parse(form.mapParams["id"]);
                    var _method    = form.mapParams["method"];
                    var _strparams = form.mapParams["params"];
                    var _params    = JArray.Parse(_strparams);
                    req = new JsonRPCrequest
                    {
                        jsonrpc = _jsonrpc,
                        method  = _method,
                        @params = JsonConvert.DeserializeObject <object[]>(JsonConvert.SerializeObject(_params)),
                        id      = _id
                    };
                }
                else// if (ctype == "application/json") 其他所有请求方式都这样取好了
                {
                    var text = await LitServer.FormData.GetStringFromRequest(HttpContext.Request);

                    req = JsonConvert.DeserializeObject <JsonRPCrequest>(text);
                }

                string ipAddr = Request.HttpContext.Connection.RemoteIpAddress.ToString();
                res = Json(api.getRes(req, ipAddr));

                // 超时记录
                if (DateTime.Now.Subtract(start).TotalSeconds > logExeTimeMax)
                {
                    log.Info(LogHelper.logInfoFormat(req, res, start));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace);
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(0, -100, "Parameter Error", e.Message);
                res = Json(resE);

                // 错误记录
                log.Info(LogHelper.logInfoFormat(req, res, start));
            }

            return(res);
        }
Exemple #2
0
        public async Task <JsonResult> Post()
        {
            JsonRPCrequest req   = null;
            DateTime       start = DateTime.Now;

            try
            {
                var      ctype = HttpContext.Request.ContentType;
                FormData form  = null;
                if (ctype == "application/x-www-form-urlencoded" ||
                    (ctype.IndexOf("multipart/form-data;", StringComparison.CurrentCulture) == 0))
                {
                    form = await FormData.FromRequest(HttpContext.Request);

                    var _jsonrpc   = form.mapParams["jsonrpc"];
                    var _id        = long.Parse(form.mapParams["id"]);
                    var _method    = form.mapParams["method"];
                    var _strparams = form.mapParams["params"];
                    var _params    = JArray.Parse(_strparams);
                    req = new JsonRPCrequest
                    {
                        jsonrpc = _jsonrpc,
                        method  = _method,
                        @params = JsonConvert.DeserializeObject <object[]>(JsonConvert.SerializeObject(_params)),
                        id      = _id
                    };
                }
                else
                {
                    var text = await FormData.GetStringFromRequest(HttpContext.Request);

                    req = JsonConvert.DeserializeObject <JsonRPCrequest>(text);
                }

                string ipAddr = Request.HttpContext.Connection.RemoteIpAddress.ToString();

                var result = Json(api.getRes(req, ipAddr));
                if (DateTime.Now.Subtract(start).TotalSeconds > logExeTimeMax)
                {
                    log.Info(LogHelper.logInfoFormat(req, result, start));
                }
                return(result);
            }
            catch (Exception e)
            {
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(0, -100, "Parameter Error", e.Message);

                var result = Json(resE);
                log.Error(LogHelper.logInfoFormat(req, result, start));
                return(Json(result));
            }
        }
Exemple #3
0
        public async Task <JsonResult> Post()
        {
            try
            {
                var ctype = HttpContext.Request.ContentType;
                LitServer.FormData form = null;
                JsonRPCrequest     req  = null;
                if (ctype == "application/x-www-form-urlencoded" ||
                    (ctype.IndexOf("multipart/form-data;") == 0))
                {
                    form = await LitServer.FormData.FromRequest(HttpContext.Request);

                    var _jsonrpc   = form.mapParams["jsonrpc"];
                    var _id        = long.Parse(form.mapParams["id"]);
                    var _method    = form.mapParams["method"];
                    var _strparams = form.mapParams["params"];
                    var _params    = JArray.Parse(_strparams);
                    req = new JsonRPCrequest
                    {
                        jsonrpc = _jsonrpc,
                        method  = _method,
                        @params = JsonConvert.DeserializeObject <object[]>(JsonConvert.SerializeObject(_params)),
                        id      = _id
                    };
                }
                else    // if (ctype == "application/json") 其他所有请求方式都这样取好了
                {
                    var text = await LitServer.FormData.GetStringFromRequest(HttpContext.Request);

                    req = JsonConvert.DeserializeObject <JsonRPCrequest>(text);
                }

                string ipAddr = Request.HttpContext.Connection.RemoteIpAddress.ToString();
                return(Json(api.getRes(req, ipAddr)));
            }
            catch (Exception e)
            {
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(0, -100, "Parameter Error", e.Message);

                return(Json(resE));
            }
        }
        public async Task <JsonResult> GetAsync(string @jsonrpc, string @method, string @params, long @id)
        {
            JsonRPCrequest req   = null;
            DateTime       start = DateTime.Now;

            try
            {
                req = new JsonRPCrequest
                {
                    jsonrpc = @jsonrpc,
                    method  = @method,
                    @params = JsonConvert.DeserializeObject <object[]>(JsonConvert.SerializeObject(JArray.Parse(@params))),
                    id      = @id
                };

                string ipAddr = Request.HttpContext.Connection.RemoteIpAddress.ToString();

                //Console.WriteLine("start....");
                //foreach (var aa in Request.Headers)
                //{
                //    Console.WriteLine("test:" + aa.Key + ":" + aa.Value);
                //}

                var json = await api.getResAsync(req, ipAddr);

                var result = Json(json);
                if (DateTime.Now.Subtract(start).TotalSeconds > logExeTimeMax)
                {
                    log.Info(logHelper.logInfoFormat(req, result, start));
                }
                return(result);
            }
            catch (Exception e)
            {
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(0, -100, "Parameter Error", e.Message);

                var result = Json(resE);
                log.Error(logHelper.logInfoFormat(req, result, start));
                return(Json(result));
            }
        }
Exemple #5
0
        public JsonResult Get(string @jsonrpc, string @method, string @params, long @id)
        {
            try
            {
                JsonRPCrequest req = new JsonRPCrequest
                {
                    jsonrpc = @jsonrpc,
                    method  = @method,
                    @params = JsonConvert.DeserializeObject <object[]>(JsonConvert.SerializeObject(JArray.Parse(@params))),
                    id      = @id
                };

                string ipAddr = Request.HttpContext.Connection.RemoteIpAddress.ToString();
                return(Json(api.getRes(req, ipAddr)));
            }
            catch (Exception e)
            {
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(0, -100, "Parameter Error", e.Message);

                return(Json(resE));
            }
        }
Exemple #6
0
        public JsonResult Get(string @jsonrpc, string @method, string @params, long @id)
        {
            DateTime       start = DateTime.Now;
            JsonResult     res   = null;
            JsonRPCrequest req   = null;

            try
            {
                req = new JsonRPCrequest
                {
                    jsonrpc = @jsonrpc,
                    method  = @method,
                    @params = JsonConvert.DeserializeObject <object[]>(JsonConvert.SerializeObject(JArray.Parse(@params))),
                    id      = @id
                };

                string ipAddr = Request.HttpContext.Connection.RemoteIpAddress.ToString();
                res = Json(api.getRes(req, ipAddr, this));

                // 超时记录
                if (DateTime.Now.Subtract(start).TotalSeconds > logExeTimeMax)
                {
                    log.Info(LogHelper.logInfoFormat(req, res, start));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace);
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(0, -100, "Parameter Error", e.Message);
                res = Json(resE);

                // 错误记录
                log.Info(LogHelper.logInfoFormat(req, res, start));
            }


            return(res);
        }
Exemple #7
0
        public object getRes(JsonRPCrequest req, string reqAddr)
        {
            JArray result = new JArray();

            try
            {
                point(req.method);
                result = ProcessRes(req);
                if (result != null && result.Count > 0 && result[0]["errorCode"] != null)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, (int)result[0]["errorCode"], (string)result[0]["errorMsg"], (string)result[0]["errorData"]);

                    return(resE);
                }
                //if (result.Count == 0)
                //{
                //    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");
                //
                //    return resE;
                //}
            }
            catch (Exception e)
            {
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);

                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse();

            res.jsonrpc = req.jsonrpc;
            res.id      = req.id;
            res.result  = result;

            return(res);
        }
Exemple #8
0
        public object getRes(JsonRPCrequest req, string reqAddr, Controller controller)
        {
            JArray result = null;

            try
            {
                switch (req.method)
                {
                // molo_v2.0_ed
                case "getLastUpdatorInfo":
                    result = ms.getLastUpdatorInfo(
                        req.@params[0].ToString()
                        );
                    break;

                case "modifyProjInfo":
                    result = ms.modifyProjInfo(controller,
                                               req.@params[0].ToString(),
                                               req.@params[1].ToString(),
                                               req.@params[2].ToString(),
                                               req.@params[3].ToString(),
                                               req.@params[4].ToString()
                                               );
                    break;

                case "getProjFundList":
                    result = ms.getProjFundList(controller, req.@params[0].ToString(),
                                                int.Parse(req.@params[1].ToString()),
                                                int.Parse(req.@params[2].ToString()));
                    break;

                case "getProjBidPrice":
                    result = ms.getProjBidPrice();
                    break;

                case "getProjFundTotal":
                    result = ms.getProjFundTotal(
                        req.@params[0].ToString(),
                        int.Parse(req.@params[1].ToString()),
                        int.Parse(req.@params[2].ToString())
                        );
                    break;

                // molo_v2.0_st
                // ******************************************* v3.st
                case "querySupportVersion":
                    result = ms.querySupportVersion(controller);
                    break;

                case "queryContractInfo":
                    result = ms.queryContractInfo(controller, req.@params[0].ToString());
                    break;

                case "saveContractInfo":
                    if ([email protected] > 21)
                    {
                        result = ms.saveContractInfo(controller,
                                                     req.@params[0].ToString(),
                                                     req.@params[1].ToString(),
                                                     req.@params[2].ToString(),
                                                     req.@params[3].ToString(),
                                                     req.@params[4].ToString(),
                                                     req.@params[5].ToString(),
                                                     req.@params[6].ToString(),
                                                     req.@params[7].ToString(),
                                                     long.Parse(req.@params[8].ToString()),
                                                     long.Parse(req.@params[9].ToString()),
                                                     long.Parse(req.@params[10].ToString()),
                                                     long.Parse(req.@params[11].ToString()),
                                                     long.Parse(req.@params[12].ToString()),
                                                     req.@params[13].ToString(),
                                                     req.@params[14].ToString(),
                                                     req.@params[15].ToString(),
                                                     JArray.Parse(req.@params[16].ToString()),
                                                     long.Parse(req.@params[17].ToString()),
                                                     long.Parse(req.@params[18].ToString()),
                                                     long.Parse(req.@params[19].ToString()),
                                                     JArray.Parse(req.@params[20].ToString()),
                                                     req.@params[21].ToString()
                                                     );
                        break;
                    }
                    result = ms.saveContractInfo(controller,
                                                 req.@params[0].ToString(),
                                                 req.@params[1].ToString(),
                                                 req.@params[2].ToString(),
                                                 req.@params[3].ToString(),
                                                 req.@params[4].ToString(),
                                                 req.@params[5].ToString(),
                                                 req.@params[6].ToString(),
                                                 req.@params[7].ToString(),
                                                 long.Parse(req.@params[8].ToString()),
                                                 long.Parse(req.@params[9].ToString()),
                                                 long.Parse(req.@params[10].ToString()),
                                                 long.Parse(req.@params[11].ToString()),
                                                 long.Parse(req.@params[12].ToString()),
                                                 req.@params[13].ToString(),
                                                 req.@params[14].ToString(),
                                                 req.@params[15].ToString(),
                                                 JArray.Parse(req.@params[16].ToString()),
                                                 long.Parse(req.@params[17].ToString()),
                                                 long.Parse(req.@params[18].ToString()),
                                                 long.Parse(req.@params[19].ToString()),
                                                 JArray.Parse(req.@params[20].ToString())
                                                 );
                    break;

                case "getVoteInfo":
                    result = ms.getVoteInfo(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    break;

                case "getProjDepositInfo":
                    result = ms.getProjDepositInfo(controller, req.@params[0].ToString());
                    break;

                case "getTokenBalanceFromUpStream":
                    result = ms.getTokenBalanceFromUpStream(controller, req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getTokenBalance":
                    result = ms.getTokenBalance(controller, req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                    #region discuss
                // molo.prop.discuss
                case "getMoloPropSubDiscussList":
                    result = ms.getMoloPropSubDiscussList(controller,
                                                          req.@params[0].ToString(),
                                                          int.Parse(req.@params[1].ToString()),
                                                          int.Parse(req.@params[2].ToString())
                                                          );
                    break;

                case "getMoloPropDiscussList":
                    result = ms.getMoloPropDiscussList(controller,
                                                       req.@params[0].ToString(),
                                                       req.@params[1].ToString(),
                                                       int.Parse(req.@params[2].ToString()),
                                                       int.Parse(req.@params[3].ToString())
                                                       );
                    break;

                case "getMoloPropDiscuss":
                    result = ms.getMoloPropDiscuss(req.@params[0].ToString());
                    break;

                case "zanMoloPropDiscuss":
                    result = ms.zanMoloPropDiscuss(controller,
                                                   req.@params[0].ToString(),
                                                   req.@params[1].ToString(),
                                                   req.@params[2].ToString()
                                                   );
                    break;

                case "addMoloPropDiscuss":
                    result = ms.addMoloPropDiscuss(controller,
                                                   req.@params[0].ToString(),
                                                   req.@params[1].ToString(),
                                                   req.@params[2].ToString(),
                                                   req.@params[3].ToString()
                                                   );
                    break;

                // molo.discuss
                case "getMoloSubDiscussList":
                    result = ms.getMoloSubDiscussList(controller,
                                                      req.@params[0].ToString(),
                                                      int.Parse(req.@params[1].ToString()),
                                                      int.Parse(req.@params[2].ToString())
                                                      );
                    break;

                case "getMoloDiscussList":
                    result = ms.getMoloDiscussList(controller,
                                                   req.@params[0].ToString(),
                                                   int.Parse(req.@params[1].ToString()),
                                                   int.Parse(req.@params[2].ToString())
                                                   );
                    break;

                case "getMoloDiscuss":
                    result = ms.getMoloDiscuss(req.@params[0].ToString());
                    break;

                case "zanMoloDiscuss":
                    result = ms.zanMoloDiscuss(controller,
                                               req.@params[0].ToString(),
                                               req.@params[1].ToString()
                                               );
                    break;

                case "addMoloDiscuss":
                    result = ms.addMoloDiscuss(controller,
                                               req.@params[0].ToString(),
                                               req.@params[1].ToString(),
                                               req.@params[2].ToString()
                                               );
                    break;

                    #endregion
                //
                case "getProjMemberListV3":
                    if ([email protected] > 3)
                    {
                        result = ms.getProjMemberList(
                            req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()),
                            req.@params[3].ToString());
                    }
                    else
                    {
                        result = ms.getProjMemberList(
                            req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    }
                    break;

                case "getProjProposalDetailV3":
                    result = ms.getProjProposalDetail(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getProjProposalListV3":
                    if ([email protected] < 5)
                    {
                        result = ms.getProjProposalList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString());
                    }
                    else
                    {
                        result = ms.getProjProposalList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString());
                    }
                    break;

                case "getProjdetailV3":
                    result = ms.getProjDetail(req.@params[0].ToString());
                    break;

                case "getProjListV3":
                    result = ms.getProjList(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    break;

                //
                case "modifyUserNameV3":
                    result = usV3.modifyUserName(controller, req.@params[0].ToString());
                    break;

                case "modifyUserIconV3":
                    result = usV3.modifyUserIcon(controller, req.@params[0].ToString());
                    break;

                case "logoutV3":
                    result = usV3.logout(controller);
                    break;

                case "getUserInfoV3":
                    result = usV3.getUserInfo(controller);
                    break;

                case "validateLoginV3":
                    result = usV3.validateLoginInfo(controller, req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getLoginNonceV3":
                    result = usV3.getLoginNonce(req.@params[0].ToString());
                    break;

                // ******************************************* v3.ed
                case "exportOrderInfo":
                    result = rs.exportOrderInfo(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString()
                        );
                    break;

                case "queryProjBuyOrderList":
                    result = rs.queryProjBuyOrderList(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        int.Parse(req.@params[3].ToString()),
                        int.Parse(req.@params[4].ToString()),
                        int.Parse(req.@params[5].ToString()),
                        req.@params[6].ToString(),
                        req.@params[7].ToString(),
                        int.Parse(req.@params[8].ToString())
                        );
                    break;

                case "queryProjBuyOrder":
                    result = rs.queryProjBuyOrder(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString()
                        );
                    break;

                case "queryBuyOrderList":
                    result = rs.queryBuyOrderList(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        int.Parse(req.@params[2].ToString()),
                        int.Parse(req.@params[3].ToString())
                        );
                    break;

                case "queryBuyOrder":
                    result = rs.queryBuyOrder(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString()
                        );
                    break;

                case "confirmDeliverBuyOrder":
                    result = rs.confirmDeliverBuyOrder(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString()
                        );
                    break;

                case "cancelBuyOrder":
                    result = rs.cancelBuyOrder(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString()
                        );
                    break;

                case "confirmBuyOrder":
                    result = rs.confirmBuyOrder(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString()
                        );
                    break;

                case "initBuyOrder":
                    result = rs.initBuyOrder(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString(),
                        req.@params[5].ToString(),
                        req.@params[6].ToString(),
                        req.@params[7].ToString(),
                        req.@params[8].ToString(),
                        req.@params[9].ToString(),
                        req.@params[10].ToString()
                        );
                    break;

                //
                case "queryTokenBalanceInfo":
                    result = fs.queryTokenBalanceInfo(
                        req.@params[0].ToString(),
                        req.@params[1].ToString()
                        );
                    break;

                case "queryTxList":
                    result = fs.queryTxList(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        int.Parse(req.@params[2].ToString()),
                        int.Parse(req.@params[3].ToString())
                        );
                    break;

                case "queryTokenHistPrice":
                    result = fs.queryTokenHistPrice(
                        req.@params[0].ToString(),
                        req.@params[1].ToString()
                        );
                    break;

                case "queryReserveToken":
                    result = fs.queryReserveToken(
                        req.@params[0].ToString()
                        );
                    break;

                case "queryRewardDetail":
                    result = fs.queryRewardDetail(
                        req.@params[0].ToString()
                        );
                    break;

                case "queryRewardList":
                    result = fs.queryRewardList(
                        req.@params[0].ToString()
                        );
                    break;

                case "queryTokenPrice":
                    result = fs.queryTokenPrice(
                        req.@params[0].ToString()
                        );
                    break;

                case "queryProjContract":
                    result = fs.queryProjContract(req.@params[0].ToString());
                    break;

                case "queryContractHash":
                    result = fs.queryContractHash(
                        req.@params[0].ToString()
                        );
                    break;

                case "startFinance":
                    result = fs.startFinance(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString()
                        );
                    break;

                case "saveReserveFundRatio":
                    result = fs.saveReserveFundRatio(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString()
                        );
                    break;

                case "queryReserveFundRatio":
                    result = fs.queryReserveFundRatio(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString()
                        );
                    break;

                case "queryFinanceFund":
                    result = fs.queryFinanceFund(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString()
                        );
                    break;

                case "queryReward":
                    result = fs.queryReward(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString()
                        );
                    break;

                case "saveReward":
                    result = fs.saveReward(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString(),
                        JObject.Parse(req.@params[5].ToString())
                        );
                    break;

                case "queryContract":
                    result = fs.queryContract(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString()
                        );
                    break;

                case "publishContract":
                    result = fs.publishContract(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString(),
                        req.@params[5].ToString(),
                        req.@params[6].ToString(),
                        req.@params[7].ToString(),
                        req.@params[8].ToString(),
                        req.@params[9].ToString(),
                        JArray.Parse(req.@params[10].ToString())
                        );
                    break;

                case "bindAddress":
                    result = us.bindAddress(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString()
                        );
                    break;

                //
                case "getStarMangeProjCount":
                    result = ps.getStarMangeProjCount(
                        req.@params[0].ToString(),
                        req.@params[1].ToString());
                    break;

                //
                case "zanUpdate":
                    result = ds.zanUpdate(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString());
                    break;

                case "zanUpdateDiscuss":
                    result = ds.zanUpdateDiscuss(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString());
                    break;

                case "zanProjDiscuss":
                    result = ds.zanProjDiscuss(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString());
                    break;

                //
                case "getUpdateSubChildDiscussList":
                    result = ds.getUpdateSubChildDiscussList(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        int.Parse(req.@params[2].ToString()),
                        int.Parse(req.@params[3].ToString()));
                    break;

                case "getUpdateSubDiscussList":
                    result = ds.getUpdateSubDiscussList(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        int.Parse(req.@params[3].ToString()),
                        int.Parse(req.@params[4].ToString()));
                    break;

                case "getUpdateDiscuss":
                    result = ds.getUpdateDiscuss(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString());
                    break;

                case "delUpdateDiscuss":
                    result = ds.delUpdateDiscuss(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString());
                    break;

                case "addUpdateDiscuss":
                    result = ds.addUpdateDiscuss(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString(),
                        req.@params[5].ToString());
                    break;

                case "getProjSubChildDiscussList":
                    result = ds.getProjSubChildDiscussList(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        int.Parse(req.@params[2].ToString()),
                        int.Parse(req.@params[3].ToString()));
                    break;

                case "getProjSubDiscussList":
                    result = ds.getProjSubDiscussList(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        int.Parse(req.@params[3].ToString()),
                        int.Parse(req.@params[4].ToString()));
                    break;

                case "getProjDiscuss":
                    result = ds.getProjDiscuss(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    break;

                case "addProjDiscuss":
                    result = ds.addProjDiscuss(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString());
                    break;

                //
                case "startSupportProj":
                    result = ps.startSupportProj(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    break;

                case "cancelStarProj":
                    result = ps.cancelStarProj(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    break;

                case "startStarProj":
                    result = ps.startStarProj(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    break;

                //
                case "commitProjAudit":
                    result = ps.commitProjAudit(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    break;

                //
                case "queryUpdateList":
                    result = ps.queryUpdateList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                case "queryProjTeamBrief":
                    result = ps.queryProjTeamBrief(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                case "getProjInfo":
                    result = ps.getProjInfo(req.@params[0].ToString());
                    break;

                case "queryProjDetail":
                    result = ps.queryProjDetail(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "queryProjListAtManage":
                    result = ps.queryProjListAtManage(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()));
                    break;

                case "queryProjListAtStar":
                    result = ps.queryProjListAtStar(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()));
                    break;

                case "queryProjList":
                    result = ps.queryProjList(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    break;

                //
                case "queryUpdate":
                    result = ps.queryUpdate(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString()
                        );
                    break;

                case "modifyUpdate":
                    result = ps.modifyUpdate(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString(),
                        req.@params[5].ToString()
                        );
                    break;

                case "deleteUpdate":
                    result = ps.deleteUpdate(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString()
                        );
                    break;

                case "createUpdate":
                    result = ps.createUpdate(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString()
                        );
                    break;

                //
                case "queryProjTeam":
                    result = ps.queryProjTeam(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        int.Parse(req.@params[3].ToString()),
                        int.Parse(req.@params[4].ToString())
                        );
                    break;

                case "modifyUserRole":
                    result = ps.modifyUserRole(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString()
                        );
                    break;

                case "deleteProjTeam":
                    result = ps.deleteProjTeam(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString()
                        );
                    break;

                case "verifyInvite":
                    result = ps.verifyInvite(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString());
                    break;

                case "inviteMember":
                    result = ps.inviteMember(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString());
                    break;

                case "queryMember":
                    result = ps.queryMember(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        int.Parse(req.@params[3].ToString()),
                        int.Parse(req.@params[4].ToString())
                        );
                    break;

                //
                case "queryProj":
                    result = ps.queryProj(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString()
                        );
                    break;

                case "deleteProj":
                    result = ps.deleteProj(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString()
                        );
                    break;

                case "modifyProjName":
                    result = ps.modifyProjName(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString(),
                        req.@params[5].ToString(),
                        req.@params[6].ToString(),
                        req.@params[7].ToString());
                    break;

                case "modifyProjEmail":
                    result = ps.modifyProjEmail(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString(),
                        req.@params[5].ToString());
                    break;

                case "modifyProjVideo":
                    result = ps.modifyProjVideo(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString());
                    break;

                case "createProj":
                    result = ps.createProj(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString(),
                        req.@params[5].ToString(),
                        req.@params[6].ToString());
                    break;

                //
                case "reSendVerify":
                    result = us.reSendVerify(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "verifyEmail":
                    result = us.verifyEmail(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    break;

                case "modifyEmail":
                    result = us.modifyEmail(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString());
                    break;

                case "modifyPassword":
                    result = us.modifyPassword(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString());
                    break;

                case "modifyUserBrief":
                    result = us.modifyUserBrief(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    break;

                case "modifyUserIcon":
                    result = us.modifyUserIcon(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    break;

                case "getUserInfo":
                    if ([email protected] == 3)
                    {
                        result = us.getUserInfo(req.@params[0].ToString(), req.@params[1].ToString(), "1");
                        break;
                    }
                    result = us.getUserInfo(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "verifyReset":
                    result = us.verifyReset(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString());
                    break;

                case "resetPassword":
                    result = us.resetPassword(req.@params[0].ToString());
                    break;

                case "login":
                    result = us.login(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "verifyRegister":
                    result = us.verifyRegister(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    break;

                case "register":
                    result = us.register(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    break;

                case "checkEmail":
                    result = us.checkEmail(req.@params[0].ToString());
                    break;

                case "checkUsername":
                    result = us.checkUsername(req.@params[0].ToString());
                    break;

                //
                case "getnodetype":
                    result = new JArray {
                        new JObject {
                            { "nodeType", netnode }
                        }
                    };
                    break;
                }
                //
                if (result == null || result.Count == 0)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");
                    return(resE);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);
                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse();
            res.jsonrpc = req.jsonrpc;
            res.id      = req.id;
            res.result  = result;
            return(res);
        }
Exemple #9
0
        public object getRes(JsonRPCrequest req, string reqAddr)
        {
            JArray result     = new JArray();
            string resultStr  = string.Empty;
            string findFliter = string.Empty;
            string sortStr    = string.Empty;

            try
            {
                switch (req.method)
                {
                case "signup":
                {
                    string password = (string)req.@params[0];
                    ThinNeo.NEP6.NEP6Wallet nep6wallet = new ThinNeo.NEP6.NEP6Wallet();
                    nep6wallet.CreateAccount(password);
                    result = new JArray()
                    {
                        JObject.Parse(nep6wallet.GetWallet().ToString())
                    };
                }
                break;

                case "signin":
                {
                    string wif        = (string)req.@params[0];
                    string str_wallet = (string)req.@params[1];
                    if (!string.IsNullOrEmpty(wif))
                    {
                        byte[]  bytes_prikey = ThinNeo.Helper.GetPrivateKeyFromWIF(wif);
                        string  prikey       = ThinNeo.Helper.Bytes2HexString(bytes_prikey);
                        byte[]  bytes_pubkey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(bytes_prikey);
                        string  pubkey       = ThinNeo.Helper.Bytes2HexString(bytes_pubkey);
                        string  address      = ThinNeo.Helper.GetAddressFromPublicKey(bytes_pubkey);
                        JObject Jo           = new JObject();
                        Jo[address] = prikey;
                        result      = new JArray()
                        {
                            Jo
                        };
                    }
                    else if (!string.IsNullOrEmpty(str_wallet))
                    {
                        MyJson.JsonNode_Object  wallet     = MyJson.Parse(str_wallet.Replace("\r\n", "")).AsDict();
                        ThinNeo.NEP6.NEP6Wallet nep6wallet = new ThinNeo.NEP6.NEP6Wallet(wallet);
                        JArray Ja = new JArray();
                        foreach (var account in nep6wallet.accounts)
                        {
                            JObject jObject = new JObject();
                            jObject[ThinNeo.Helper.GetAddressFromPublicKey(account.Value.ScriptHash)] = account.Value.nep2key;
                            Ja.Add(jObject);
                        }
                        result = Ja;
                    }
                }
                break;

                case "getassets":    //获取资产余额
                {
                    string  prikey  = (string)req.@params[0];
                    JArray  jArray  = new JArray();
                    JObject jObject = new JObject();
                    jObject["id"]    = "neo";
                    jObject["name"]  = "小蚁股";
                    jObject["value"] = 123;
                    jArray.Add(jObject);
                    jObject          = new JObject();
                    jObject["id"]    = "gas";
                    jObject["name"]  = "小蚁币";
                    jObject["value"] = 321;
                    jArray.Add(jObject);

                    result = jArray;
                }
                break;

                case "chargemoney":    //充钱
                {
                    string prikey = (string)req.@params[0];
                    Int64  value  = (Int64)req.@params[1];
                    result = getJAbyKV("result", "success");
                }
                break;

                case "getbackmoney":    //退钱
                {
                    string prikey = (string)req.@params[0];
                    Int64  value  = (Int64)req.@params[1];
                    result = getJAbyKV("result", "success");
                }
                break;

                case "bet":    //下注
                {
                    string prikey   = (string)req.@params[0];
                    string seasonid = (string)req.@params[1];
                    string gameid   = (string)req.@params[2];
                    Int64  value    = (Int64)req.@params[3];
                    result = getJAbyKV("result", "success");
                }
                break;

                case "take":    //领奖
                {
                    string prikey   = (string)req.@params[0];
                    string seasonid = (string)req.@params[1];
                    string gameid   = (string)req.@params[2];
                    result = getJAbyKV("result", "success");
                }
                break;

                case "getseasoninfo":     //获得赛季信息
                {
                    string seasonid = (string)req.@params[0];
                    if (string.IsNullOrEmpty(seasonid))
                    {
                    }
                    else
                    {
                    }
                    JObject jObject = new JObject();
                    jObject["seasonid"] = "1";
                    JArray jArray = new JArray();
                    for (var i = 1; i < 16; i++)
                    {
                        JObject jObject2 = new JObject();
                        jObject2["gameid"] = i.ToString();
                        jObject2["team1"]  = i;
                        jObject2["team2"]  = i + 1;
                        jObject2["winner"] = i;
                        jArray.Add(jObject2);
                    }
                    jObject["info"] = jArray;
                    result          = new JArray()
                    {
                        jObject
                    };
                }
                break;

                case "getgamestate":    //获取比赛状态
                {
                    Random rd = new Random();
                    var    i  = rd.Next(0, 17);
                    result = getJAbyKV("result", i);
                }
                break;
                }
                if (result.Count == 0)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");

                    return(resE);
                }
            }
            catch (Exception e)
            {
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);

                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse();

            res.jsonrpc = req.jsonrpc;
            res.id      = req.id;
            res.result  = result;

            return(res);
        }
Exemple #10
0
        public object getRes(JsonRPCrequest req, string reqAddr)
        {
            JArray result     = new JArray();
            string resultStr  = string.Empty;
            string findFliter = string.Empty;
            string sortStr    = string.Empty;

            try
            {
                point(req.method);
                switch (req.method)
                {
                // 获取服务列表
                case "getServiceList":
                    result = daoService.getServiceList(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    break;

                case "getUserInfo":
                    result = daoService.getUserInfo(req.@params[0].ToString());
                    break;

                case "getHashInfoByVoteHash":
                    result = daoService.getHashInfoByVoteHash(req.@params[0].ToString());
                    break;

                // 获取治理信息列表(治理)
                case "getVoteTxHistList":
                    result = daoService.getVoteTxHistList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                // 获取治理信息(治理)
                case "getVoteInfo":
                    result = daoService.getVoteInfo(req.@params[0].ToString());
                    break;

                // 获取项目交易历史列表(众筹)
                case "getProjTxHistList":
                    result = daoService.getProjTxHistList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                // 获取项目信息(众筹)
                case "getProjInfo":
                    result = daoService.getProjInfo(req.@params[0].ToString());
                    break;

                // 存储治理信息(治理)
                case "storeVoteInfo":
                    result = daoService.storeVoteInfo(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[6].ToString(), req.@params[7].ToString());
                    break;

                // 存储项目信息(众筹)
                case "storeProjInfo":
                    result = daoService.storeProjInfo(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[5].ToString());
                    break;

                // test
                case "getnodetype":
                    result = new JArray {
                        new JObject {
                            { "nodeType", netnode }
                        }
                    };
                    break;
                }
                if (result.Count == 0)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");
                    return(resE);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace);
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);
                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse();

            res.jsonrpc = req.jsonrpc;
            res.id      = req.id;
            res.result  = result;

            return(res);
        }
Exemple #11
0
        public object getRes(JsonRPCrequest req, string reqAddr)
        {
            JArray result     = new JArray();
            string resultStr  = string.Empty;
            string findFliter = string.Empty;
            string sortStr    = string.Empty;

            try
            {
                point(req.method);
                switch (req.method)
                {
                case "getTxidFromMemPool":
                    result = neoCliService.getTxidFromMemPool(req.@params[0].ToString());
                    break;

                case "getRawMemPoolList":
                    result = neoCliService.getRawMemPoolList();
                    break;

                case "getRawMemPoolGroup":
                    result = neoCliService.getRawMemPoolGroup();
                    break;

                case "getRawMemPoolCount":
                    if ([email protected] < 1)
                    {
                        result = neoCliService.getRawMemPoolCount();
                    }
                    else
                    {
                        result = neoCliService.getRawMemPoolCount(req.@params[0].ToString());
                    }

                    break;

                case "getnodetype":
                    JArray JA = new JArray
                    {
                        new JObject {
                            { "nodeType", netnode }
                        }
                    };
                    result = JA;
                    break;

                case "getcliversion":
                    result = getJAbyKV("cliversion", (string)JObject.Parse(hh.Post(neoCliJsonRPCUrl, "{'jsonrpc':'2.0','method':'getversion','params':[],'id':1}", System.Text.Encoding.UTF8, 1))["result"]["useragent"]);
                    break;

                case "getclirawmempool":
                    JObject rawmempoolJ = new JObject();
                    rawmempoolJ.Add("clirawmempool", JObject.Parse(hh.Post(neoCliJsonRPCUrl, "{'jsonrpc':'2.0','method':'getrawmempool','params':[],'id':1}", System.Text.Encoding.UTF8, 1))["result"]);
                    result = getJAbyJ(rawmempoolJ);
                    break;

                case "getcliblockcount":
                    var resp = hh.Post(neoCliJsonRPCUrl, "{'jsonrpc':'2.0','method':'getblockcount','params':[],'id':1}", System.Text.Encoding.UTF8, 1);

                    string cliResultStr = (string)JObject.Parse(resp)["result"];
                    result = getJAbyKV("cliblockcount", cliResultStr);
                    break;

                case "getdatablockheight":
                    result = mh.Getdatablockheight(mongodbConnStr, mongodbDatabase);
                    break;

                case "getblockcount":
                    //resultStr = "[{blockcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "block") + "}]";
                    result = getJAbyKV("blockcount", (long)(mh.GetData(mongodbConnStr, mongodbDatabase, "system_counter", "{counter:'block'}")[0]["lastBlockindex"]) + 1);
                    break;

                case "gettxcount":
                    //resultStr = "[{txcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx") + "}]";
                    //result = getJAbyKV("txcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx"));
                    findFliter = "{}";
                    if ([email protected]() > 0)
                    {
                        string type = req.@params[0].ToString();
                        if (type != null && type != string.Empty)
                        {
                            findFliter = "{type:\"" + type + "\"}";
                        }
                    }
                    result = getJAbyKV("txcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx", findFliter));
                    break;

                case "getaddrcount":
                    //resultStr = "[{addrcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "address") + "}]";
                    result = getJAbyKV("addrcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "address"));
                    break;

                case "getblock":
                    findFliter = "{index:" + req.@params[0] + "}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter);
                    break;

                case "getblocktime":
                    findFliter = "{index:" + req.@params[0] + "}";
                    var time = (Int32)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["time"];
                    result = getJAbyKV("time", time);
                    break;

                case "getblocks":
                    long lastBlockindex = (long)(mh.GetData(mongodbConnStr, mongodbDatabase, "system_counter", "{counter:'block'}")[0]["lastBlockindex"]);
                    sortStr = "{index:-1}";     // 15  10
                    int    pageCount = int.Parse(req.@params[0].ToString());
                    int    pageNum   = int.Parse(req.@params[1].ToString());
                    string fieldStr  = new JObject()
                    {
                        { "_id", 0 }, { "index", 1 }, { "size", 1 }, { "time", 1 }, { "tx", 1 }
                    }.ToString();
                    string filter = new JObject()
                    {
                        { "index", new JObject()
                          {
                              { "$gt", lastBlockindex - pageCount * pageNum }, { "$lte", lastBlockindex - pageCount * (pageNum - 1) }
                          } }
                    }.ToString();
                    result = mh.GetDataPagesWithField(mongodbConnStr, mongodbDatabase, "block", fieldStr, sortStr, pageCount, 1, filter);
                    result = new JArray()
                    {
                        result.Select(p => {
                            JObject jo = (JObject)p;
                            jo.Add("txcount", ((JArray)p["tx"]).Count);
                            jo.Remove("tx");
                            return(jo);
                        }).ToArray()
                    };
                    break;

                case "getrawtransaction":
                    findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter);
                    break;

                case "getrawtransactions":
                    sortStr    = "{blockindex:-1,txid:-1}";
                    findFliter = "{}";
                    if ([email protected]() > 2)
                    {
                        string txType = req.@params[2].ToString();

                        if (txType != null && txType != string.Empty)
                        {
                            findFliter = "{type:'" + txType + "'}";
                        }
                    }
                    result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "tx", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()), findFliter);
                    break;

                case "getaddrs":
                    sortStr = "{'lastuse.blockindex' : -1,'lastuse.txid' : -1}";
                    result  = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "address", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    break;

                case "getaddr":
                    string addr = req.@params[0].ToString();
                    findFliter = "{addr:'" + addr + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "address", findFliter);
                    break;

                case "getaddresstxs":
                    string findBson = "{'addr':'" + req.@params[0].ToString() + "'}";
                    sortStr = "{'blockindex' : -1}";
                    result  = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "address_tx", sortStr, int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), findBson);
                    break;

                case "getasset":
                    findFliter = "{id:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "asset", findFliter);
                    break;

                case "getallasset":
                    findFliter = "{}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "asset", findFliter);
                    break;

                case "getfulllog":
                    findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "fulllog", findFliter);
                    break;

                case "getnotify":
                    findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "notify", findFliter);
                    break;

                case "getutxo":
                    if ([email protected]() == 1)
                    {
                        findFliter = "{addr:'" + req.@params[0] + "',used:''}";
                        result     = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);
                    }
                    else if ([email protected]() == 2)
                    {
                        if ((Int64)req.@params[1] == 1)
                        {
                            findFliter = "{addr:'" + req.@params[0] + "'}";
                        }
                        result = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);
                    }
                    else if ([email protected]() == 3)
                    {
                        findFliter = "{addr:'" + req.@params[0] + "',used:''}";
                        sortStr    = "{'createHeight':1,'txid':1,'n':1}";
                        result     = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "utxo", sortStr, int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), findFliter);
                    }
                    else if ([email protected]() == 4)
                    {
                        if ((Int64)req.@params[1] == 1)
                        {
                            findFliter = "{addr:'" + req.@params[0] + "'}";
                        }
                        sortStr = "{'createHeight':1,'txid':1,'n':1}";
                        result  = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "utxo", sortStr, int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()), findFliter);
                    }
                    break;

                case "getutxocount":
                    addr = req.@params[0].ToString();
                    if (addr != null && addr != string.Empty)
                    {
                        findFliter = "{addr:\"" + addr + "\"}";
                    }
                    result = getJAbyKV("utxocount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "utxo", findFliter));
                    break;

                case "getutxostopay":
                    string  address    = (string)req.@params[0];
                    string  assetID    = ((string)req.@params[1]).formatHexStr();
                    decimal amount     = decimal.Parse(req.@params[2].ToString(), NumberStyles.Float);
                    bool    isBigFirst = false;  //默认先用小的。

                    if ([email protected]() == 4)
                    {
                        if ((Int64)req.@params[3] == 1)
                        {
                            isBigFirst = true;    //加可选参数可以先用大的。
                        }
                    }

                    findFliter = "{addr:'" + address + "',used:''}";
                    JArray utxoJA = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);

                    result = tx.getUtxo2Pay(utxoJA, address, assetID, amount, isBigFirst);
                    break;

                case "getclaimgasUtxoList":
                    if ([email protected]() == 1)
                    {
                        result = claim.getClaimGasUtxoList(mongodbConnStr, mongodbDatabase, req.@params[0].ToString());
                    }
                    else if ([email protected]() == 2)
                    {
                        result = claim.getClaimGasUtxoList(mongodbConnStr, mongodbDatabase, req.@params[0].ToString(), req.@params[1].ToString() == "1");
                    }
                    else if ([email protected]() == 4)
                    {
                        result = claim.getClaimGasUtxoList(mongodbConnStr, mongodbDatabase, req.@params[0].ToString(), req.@params[1].ToString() == "1", int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()));
                    }
                    break;

                case "getclaimgas":
                    JObject claimsJ = new JObject();
                    if ([email protected]() == 1)
                    {
                        claimsJ = claim.getClaimGas(mongodbConnStr, mongodbDatabase, req.@params[0].ToString(), true);     //限制50,默认值
                    }
                    ;
                    if ([email protected]() == 2)
                    {
                        if ((Int64)req.@params[1] == 1)
                        {
                            claimsJ = claim.getClaimGas(mongodbConnStr, mongodbDatabase, req.@params[0].ToString(), false);     //限制50,默认值
                        }
                    }
                    if ([email protected]() == 3)
                    {
                        claimsJ = claim.getClaimGas(mongodbConnStr, mongodbDatabase, req.@params[0].ToString(), req.@params[1].ToString() == "0", req.@params[2].ToString() == "0");     //限制50,默认值
                    }
                    if ([email protected]() == 4)
                    {
                        claimsJ = claim.getClaimGas(mongodbConnStr, mongodbDatabase, req.@params[0].ToString(), req.@params[1].ToString() == "0", req.@params[2].ToString() == "0", req.@params[3].ToString() == "0");     //限制50,默认值
                    }
                    result = getJAbyJ(claimsJ);
                    break;

                case "getclaimtxhex":
                    string addrClaim = (string)req.@params[0];

                    JObject claimgasJ = claim.getClaimGas(mongodbConnStr, mongodbDatabase, addrClaim, true, false);    //  不限制50
                    if (claimgasJ["errorCode"] != null)
                    {
                        result = getJAbyJ(claimgasJ);
                    }
                    else
                    {
                        result = getJAbyKV("claimtxhex", tx.getClaimTxHex(addrClaim, claimgasJ));
                    }

                    break;

                case "getbalance":
                    findFliter = "{addr:'" + req.@params[0] + "',used:''}";
                    JArray utxos = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);
                    Dictionary <string, decimal> balance = new Dictionary <string, decimal>();
                    foreach (JObject j in utxos)
                    {
                        if (!balance.ContainsKey((string)j["asset"]))
                        {
                            balance.Add((string)j["asset"], (decimal)j["value"]);
                        }
                        else
                        {
                            balance[(string)j["asset"]] += (decimal)j["value"];
                        }
                    }
                    JArray balanceJA = new JArray();
                    foreach (KeyValuePair <string, decimal> kv in balance)
                    {
                        JObject j = new JObject();
                        j.Add("asset", kv.Key);
                        j.Add("balance", kv.Value);
                        JObject asset = (JObject)mh.GetData(mongodbConnStr, mongodbDatabase, "asset", "{id:'" + kv.Key + "'}")[0];
                        JArray  name  = (JArray)asset["name"];
                        j.Add("name", name);
                        balanceJA.Add(j);
                    }
                    result = balanceJA;
                    break;

                case "getcontractscript":
                    findFliter = "{hash:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mh.mongodbConnStr_NeonOnline, mh.mongodbDatabase_NeonOnline, "contractWarehouse", findFliter);
                    break;

                case "gettransfertxhex":
                    string addrOut = (string)req.@params[0];
                    findFliter = "{addr:'" + addrOut + "',used:''}";
                    JArray outputJA = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);

                    result = getJAbyKV("transfertxhex", tx.getTransferTxHex(outputJA, (string)req.@params[0], (string)req.@params[1], (string)req.@params[2], decimal.Parse(req.@params[3].ToString(), NumberStyles.Float)));

                    //result = new JArray
                    //{
                    //    new JObject
                    //    {
                    //        {
                    //            "transfertxhex",
                    //            tx.getTransferTxHex(outputJA,(string)req.@params[0], (string)req.@params[1], (string)req.@params[2], decimal.Parse(req.@params[3].ToString()))
                    //        }
                    //    }
                    //};
                    break;

                case "sendtxplussign":
                    result = getJAbyJ(tx.sendTxPlusSign(neoCliJsonRPCUrl, (string)req.@params[0], (string)req.@params[1], (string)req.@params[2]));
                    break;

                case "verifytxsign":
                    result = getJAbyKV("sign", tx.verifyTxSign((string)req.@params[0], (string)req.@params[1]));
                    break;

                case "sendrawtransaction":
                    result = getJAbyJ(tx.sendrawtransaction(neoCliJsonRPCUrl, (string)req.@params[0]));

                    //result = new JArray
                    //{
                    //    new JObject
                    //    {
                    //        {
                    //            "sendrawtransactionresult",
                    //            tx.sendrawtransaction(neoCliJsonRPCUrl,(string)req.@params[0])
                    //        }
                    //    }
                    //};
                    break;

                case "getcontractstate":
                    result = getJAbyJ(ct.getContractState(neoCliJsonRPCUrl, (string)req.@params[0]));

                    break;

                case "invokescript":
                    result = getJAbyJ(ct.invokeScript(neoCliJsonRPCUrl, (string)req.@params[0]));

                    break;

                case "callcontractfortest":
                    result = getJAbyJ(ct.callContractForTest(neoCliJsonRPCUrl, new List <string> {
                        (string)req.@params[0]
                    }, new JArray()
                    {
                        (JArray)req.@params[1]
                    }));

                    break;

                case "publishcontractfortest":
                    result = getJAbyJ(ct.publishContractForTest(neoCliJsonRPCUrl, (string)req.@params[0], (JObject)req.@params[1]));
                    break;

                case "getinvoketxhex":
                    string addrPayFee = (string)req.@params[0];
                    findFliter = "{addr:'" + addrPayFee + "',used:''}";
                    JArray outputJAPayFee = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);

                    string  invokeScript    = (string)req.@params[1];
                    decimal invokeScriptFee = decimal.Parse(req.@params[2].ToString(), NumberStyles.Float);

                    result = getJAbyKV("invoketxhex", tx.getInvokeTxHex(outputJAPayFee, addrPayFee, invokeScript, invokeScriptFee));
                    break;

                case "getstorage":
                    result = getJAbyJ(ct.getStorage(neoCliJsonRPCUrl, (string)req.@params[0], (string)req.@params[1]));

                    break;

                case "setcontractscript":
                    JObject J    = JObject.Parse((string)req.@params[0]);
                    string  hash = (string)J["hash"];
                    //string hash = (string)req.@params[0];
                    //J.Add("hash", hash);
                    //J.Add("avm", (string)req.@params[1]);
                    //J.Add("cs", (string)req.@params[2]);

                    //string mapStr = (string)req.@params[3];
                    //string abiStr = (string)req.@params[4];

                    //if (mapStr != null && mapStr != string.Empty)
                    //{
                    //    J.Add("map", JArray.Parse((string)req.@params[3]));
                    //}
                    //else
                    //{
                    //    J.Add("map", string.Empty);
                    //}

                    //if (abiStr != null && abiStr != string.Empty)
                    //{
                    //    J.Add("abi", JObject.Parse((string)req.@params[4]));
                    //}
                    //else
                    //{
                    //    J.Add("abi", string.Empty);
                    //}

                    J.Add("requestIP", reqAddr);

                    mh.InsertOneDataByCheckKey(mh.mongodbConnStr_NeonOnline, mh.mongodbDatabase_NeonOnline, "contractWarehouse", J, "hash", hash);
                    result = getJAbyKV("isSetSuccess", true);

                    //result = new JArray
                    //{
                    //    new JObject{
                    //        { "isSetSuccess",true }
                    //    }
                    //};

                    break;

                case "getnep5balanceofaddress":
                    string NEP5scripthash = (string)req.@params[0];
                    if (!NEP5scripthash.StartsWith("0x"))
                    {
                        NEP5scripthash = "0x" + NEP5scripthash;
                    }
                    string  NEP5address     = (string)req.@params[1];
                    byte[]  NEP5addrHash    = ThinNeo.Helper.GetPublicKeyHashFromAddress(NEP5address);
                    string  NEP5addrHashHex = ThinNeo.Helper.Bytes2HexString(NEP5addrHash.Reverse().ToArray());
                    JObject NEP5balanceOfJ  = ct.callContractForTest(neoCliJsonRPCUrl, new List <string> {
                        NEP5scripthash
                    }, new JArray()
                    {
                        JArray.Parse("['(str)balanceOf',['(hex)" + NEP5addrHashHex + "']]")
                    });
                    string balanceStr  = (string)((JArray)NEP5balanceOfJ["stack"])[0]["value"];
                    string balanceType = (string)((JArray)NEP5balanceOfJ["stack"])[0]["type"];

                    string balanceBigint = "0";

                    if (balanceStr != string.Empty)
                    {
                        //获取NEP5资产信息,获取精度
                        NEP5.Asset NEP5asset = new NEP5.Asset(mongodbConnStr, mongodbDatabase, NEP5scripthash);

                        balanceBigint = NEP5.getNumStrFromStr(balanceType, balanceStr, NEP5asset.decimals);
                    }

                    result = getJAbyKV("nep5balance", balanceBigint);
                    break;

                case "getnep5transfersbyasset":
                    /**
                     * string str_asset = ((string)req.@params[0]).formatHexStr();
                     * findFliter = "{asset:'" + str_asset + "'}";
                     * //sortStr = "{'blockindex':1,'txid':1,'n':1}";
                     * sortStr = "{}";
                     * if ([email protected]() ==3)
                     *  result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "NEP5transfer", sortStr, int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), findFliter);
                     * else
                     *  result = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer",findFliter);
                     */
                    result = assetService.getnep5transfersbyasset(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                case "getnep5count":
                    /**
                     * findFliter = "{}";
                     * if ([email protected]() == 2)
                     * {
                     *  string key = (string)req.@params[0];
                     *  string value = (string)req.@params[1];
                     *  findFliter = "{\"" + key + "\":\"" + value + "\"}";
                     * }
                     * result = getJAbyKV("nep5count", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "NEP5transfer", findFliter));
                     */
                    if ([email protected] == 2)
                    {
                        result = assetService.getnep5count(req.@params[0].ToString(), req.@params[1].ToString());
                        break;
                    }
                    result = assetService.getnep5count();
                    break;

                case "getallnep5assetofaddress":
                    /**
                     * string NEP5addr = (string)req.@params[0];
                     * bool isNeedBalance = false;
                     * if ([email protected]() > 1)
                     * {
                     *  isNeedBalance = ((Int64)req.@params[1] == 1) ? true : false;
                     * }
                     *
                     * //按资产汇集收到的钱(仅资产ID)
                     * string findTransferTo = "{ to:'" + NEP5addr + "'}";
                     * JArray transferToJA = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findTransferTo);
                     * List<NEP5.Transfer> tfts = new List<NEP5.Transfer>();
                     * foreach (JObject tfJ in transferToJA)
                     * {
                     *  tfts.Add(new NEP5.Transfer(tfJ));
                     * }
                     * var queryTo = from tft in tfts
                     *          group tft by tft.asset into tftG
                     *          select new { assetid = tftG.Key};
                     * var assetAdds = queryTo.ToList();
                     *
                     * //如果需要余额,则通过cli RPC批量获取余额
                     * List<NEP5.AssetBalanceOfAddr> addrAssetBalances = new List<NEP5.AssetBalanceOfAddr>();
                     * if (isNeedBalance) {
                     *  List<NEP5.AssetBalanceOfAddr> addrAssetBalancesTemp = new List<NEP5.AssetBalanceOfAddr>();
                     *  foreach (var assetAdd in assetAdds)
                     *  {
                     *      string findNep5Asset = "{assetid:'" + assetAdd.assetid + "'}";
                     *      JArray Nep5AssetJA = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5asset", findNep5Asset);
                     *      string Symbol = (string)Nep5AssetJA[0]["symbol"];
                     *      resp = hh.Post(neoCliJsonRPCUrl, "{'jsonrpc':'2.0','method':'getcontractstate','params':['" + assetAdd.assetid + "'],'id':1}", System.Text.Encoding.UTF8, 1);
                     *      JObject resultJ = (JObject)JObject.Parse(resp)["result"];
                     *      if (resultJ == null)
                     *          continue;
                     *
                     *      addrAssetBalancesTemp.Add(new NEP5.AssetBalanceOfAddr(assetAdd.assetid, Symbol, string.Empty));
                     *  }
                     *
                     *  List<string> nep5Hashs = new List<string>();
                     *  JArray queryParams = new JArray();
                     *  byte[] NEP5allAssetOfAddrHash = ThinNeo.Helper.GetPublicKeyHashFromAddress(NEP5addr);
                     *  string NEP5allAssetOfAddrHashHex = ThinNeo.Helper.Bytes2HexString(NEP5allAssetOfAddrHash.Reverse().ToArray());
                     *  foreach (var abt in addrAssetBalancesTemp)
                     *  {
                     *      nep5Hashs.Add(abt.assetid);
                     *      queryParams.Add(JArray.Parse("['(str)balanceOf',['(hex)" + NEP5allAssetOfAddrHashHex + "']]"));
                     *  }
                     *  JArray NEP5allAssetBalanceJA = (JArray)ct.callContractForTestMulti(neoCliJsonRPCUrl, nep5Hashs, queryParams)["stack"];
                     *  var a = Newtonsoft.Json.JsonConvert.SerializeObject(NEP5allAssetBalanceJA);
                     *  foreach (var abt in addrAssetBalancesTemp)
                     *  {
                     *      /// ChangeLog:
                     *      /// 升级智能合约带来的数据结构不一致问题,暂时使用try方式临时解决
                     *      try
                     *      {
                     *          string allBalanceStr = (string)NEP5allAssetBalanceJA[addrAssetBalancesTemp.IndexOf(abt)]["value"];
                     *          string allBalanceType = (string)NEP5allAssetBalanceJA[addrAssetBalancesTemp.IndexOf(abt)]["type"];
                     *
                     *          //获取NEP5资产信息,获取精度
                     *          NEP5.Asset NEP5asset = new NEP5.Asset(mongodbConnStr, mongodbDatabase, abt.assetid);
                     *
                     *          abt.balance = NEP5.getNumStrFromStr(allBalanceType, allBalanceStr, NEP5asset.decimals);
                     *      } catch (Exception e)
                     *      {
                     *          Console.WriteLine(abt.assetid +",ConvertTypeFailed,errMsg:"+e.Message);
                     *          abt.balance = string.Empty;
                     *      }
                     *  }
                     *
                     *  //去除余额为0的资产
                     *  foreach (var abt in addrAssetBalancesTemp)
                     *  {
                     *      if (abt.balance != string.Empty && abt.balance != "0")
                     *      {
                     *          addrAssetBalances.Add(abt);
                     *      }
                     *  }
                     * }
                     *
                     * ////按资产汇集支出的钱
                     * //string findTransferFrom = "{ from:'" + NEP5addr + "'}";
                     * //JArray transferFromJA = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findTransferFrom);
                     * //List<NEP5.Transfer> tffs = new List<NEP5.Transfer>();
                     * //foreach (JObject tfJ in transferFromJA)
                     * //{
                     * //    tffs.Add(new NEP5.Transfer(tfJ));
                     * //}
                     * //var queryFrom = from tff in tffs
                     * //                group tff by tff.asset into tffG
                     * //            select new { assetid = tffG.Key, sumOfValue = tffG.Sum(m => m.value) };
                     * //var assetRemoves = queryFrom.ToList();
                     *
                     * ////以支出的钱扣减收到的钱得到余额
                     * //JArray JAadds = JArray.FromObject(assetAdds);
                     * //foreach (JObject Jadd in JAadds) {
                     * //    foreach (var assetRemove in assetRemoves)
                     * //    {
                     * //        if ((string)Jadd["assetid"] == assetRemove.assetid)
                     * //        {
                     * //            Jadd["sumOfValue"] = (decimal)Jadd["sumOfValue"] - assetRemove.sumOfValue;
                     * //            break;
                     * //        }
                     * //    }
                     * //}
                     * //var a = Newtonsoft.Json.JsonConvert.SerializeObject(JAadds);
                     *
                     * //***********
                     * //经简单测试,仅看transfer记录,所有to减去所有from并不一定等于合约查询得到的地址余额(可能有其他非标方法消耗了余额,尤其是测试网),废弃这种方法,还是采用调用NEP5合约获取地址余额方法的方式
                     * //这里给出所有该地址收到过的资产hash,可以配合其他接口获取资产信息和余额
                     * //***********
                     * if (!isNeedBalance)
                     * {
                     *  result = JArray.FromObject(assetAdds);
                     * }
                     * else
                     * {
                     *  result = JArray.FromObject(addrAssetBalances);
                     * }
                     */
                    if ([email protected] == 2)
                    {
                        result = assetService.getallnep5assetofaddress(
                            req.@params[0].ToString(), int.Parse(req.@params[1].ToString()));
                        break;
                    }
                    result = assetService.getallnep5assetofaddress(req.@params[0].ToString());
                    break;

                case "getnep5asset":
                    /**
                     * findFliter = "{assetid:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                     * var bytes_totalSupply = (string)ct.callContractForTest(neoCliJsonRPCUrl, new List<string> { (string)req.@params[0] }, new JArray() { JArray.Parse("['(str)totalSupply',[]]") })["stack"][0]["value"];
                     * var totalSupply = new BigInteger(ThinNeo.Helper.HexString2Bytes(bytes_totalSupply));
                     * var data = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5asset", findFliter);
                     * var decimals = (double)data[0]["decimals"];
                     * data[0]["totalsupply"] = decimal.Parse( ((double)totalSupply / Math.Pow(10, decimals)).ToString(),NumberStyles.Float);
                     * result = data;
                     */
                    result = assetService.getnep5asset(req.@params[0].ToString());
                    break;

                case "getallnep5asset":
                    /**
                     * findFliter = "{}";
                     * result = mh.GetData(block_mongodbConnStr, block_mongodbDatabase, NEP5assetCol, findFliter);
                     * break;
                     */
                    result = assetService.getallnep5asset();
                    break;

                //
                case "getnep5transferbytxid":
                    string txid = ((string)req.@params[0]).formatHexStr();
                    findFliter = "{txid:'" + txid + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findFliter);
                    break;

                case "getnep5transferbyaddress":
                    //sortStr = "{'blockindex':1,'txid':1,'n':1}";
                    sortStr = "{}";
                    string NEP5transferAddress     = (string)req.@params[0];
                    string NEP5transferAddressType = (string)req.@params[1];
                    findFliter = "{'" + NEP5transferAddressType + "':'" + NEP5transferAddress + "'}";
                    result     = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "NEP5transfer", sortStr, int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()), findFliter);
                    break;

                case "getnep5transfers":
                    //sortStr = "{'blockindex':1,'txid':1,'n':1}";
                    sortStr = "{}";
                    result  = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "NEP5transfer", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    break;

                case "getnep5transferbyblockindex":
                    Int64 blockindex = (Int64)req.@params[0];
                    findFliter = "{blockindex:" + blockindex + "}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findFliter);
                    break;

                case "getaddresstxbyblockindex":
                    blockindex = (Int64)req.@params[0];
                    findFliter = "{blockindex:" + blockindex + "}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "address_tx", findFliter);
                    break;

                case "gettxinfo":
                    txid       = ((string)req.@params[0]).formatHexStr();
                    findFliter = "{txid:'" + (txid).formatHexStr() + "'}";
                    JArray  JATx           = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter);
                    JObject JOTx           = (JObject)JATx[0];
                    var     heightforblock = (int)JOTx["blockindex"];
                    var     indexforblock  = -1;
                    findFliter = "{index:" + heightforblock + "}";
                    result     = (JArray)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["tx"];
                    for (var i = 0; i < result.Count; i++)
                    {
                        JObject Jo = (JObject)result[i];
                        if (txid == (string)Jo["txid"])
                        {
                            indexforblock = i;
                        }
                    }
                    JObject JOresult = new JObject();
                    JOresult["heightforblock"] = heightforblock;
                    JOresult["indexforblock"]  = indexforblock;
                    result = new JArray()
                    {
                        JOresult
                    };
                    break;

                case "uxtoinfo":
                    var starttxid = ((string)req.@params[0]).formatHexStr();
                    var voutN     = (Int64)req.@params[1];

                    findFliter = "{txid:'" + (starttxid).formatHexStr() + "'}";
                    JATx       = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter);
                    JOTx       = (JObject)JATx[0];
                    int starttxblockheight = (int)JOTx["blockindex"];
                    int starttxblockindex  = -1;
                    findFliter = "{index:" + starttxblockheight + "}";
                    result     = (JArray)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["tx"];
                    for (var i = 0; i < result.Count; i++)
                    {
                        JObject Jo = (JObject)result[i];
                        if (starttxid == (string)Jo["txid"])
                        {
                            starttxblockindex = i;
                        }
                    }
                    //根据txid和n获取utxo信息
                    findFliter = "{txid:\"" + starttxid + "\",n:" + voutN + "}";
                    var endtxid          = (string)mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter)[0]["used"];
                    int endtxblockheight = -1;
                    int endtxblockindex  = -1;
                    int vinputN          = -1;
                    if (!string.IsNullOrEmpty(endtxid))
                    {
                        findFliter       = "{txid:'" + (endtxid).formatHexStr() + "'}";
                        JATx             = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter);
                        JOTx             = (JObject)JATx[0];
                        endtxblockheight = (int)JOTx["blockindex"];
                        JArray JAvin = (JArray)JOTx["vin"];
                        findFliter = "{index:" + endtxblockheight + "}";
                        result     = (JArray)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["tx"];
                        for (var i = 0; i < result.Count; i++)
                        {
                            JObject Jo = (JObject)result[i];
                            if (endtxid == (string)Jo["txid"])
                            {
                                endtxblockindex = i;
                            }
                        }
                        for (var i = 0; i < JAvin.Count; i++)
                        {
                            JObject Jo = (JObject)JAvin[i];
                            if ((string)Jo["txid"] == starttxid && voutN == i)
                            {
                                vinputN = i;
                            }
                        }
                    }
                    else
                    {
                    }

                    JOresult = new JObject();
                    JOresult["starttxid"]          = starttxid;
                    JOresult["starttxblockheight"] = starttxblockheight;
                    JOresult["starttxblockindex"]  = starttxblockindex;
                    JOresult["voutN"]            = voutN;
                    JOresult["endtxid"]          = endtxid;
                    JOresult["endtxblockheight"] = endtxblockheight;
                    JOresult["endtxblockindex"]  = endtxblockindex;
                    JOresult["vinputN"]          = vinputN;
                    result = new JArray()
                    {
                        JOresult
                    };

                    break;

                // ChangeLog: 新增获取notify接口
                case "getnotifycounter":
                    result = notifyService.getNotifyCounter();
                    break;

                case "getnotifybyhash":
                    var cc = [email protected]();
                    if ([email protected]() < 3)
                    {
                        result = notifyService.getNotifyByHash(JArray.Parse(req.@params[1].ToString()), int.Parse(req.@params[0].ToString()));
                    }
                    else
                    {
                        result = notifyService.getNotifyByHash(JArray.Parse(req.@params[2].ToString()), int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    }
                    break;

                case "getBlockInfo":
                    JArray filterJA = null;
                    if ([email protected]() > 0)
                    {
                        filterJA = JArray.Parse(req.@params[0].ToString());
                    }
                    result = notifyService.getBlockInfo(filterJA);
                    break;

                case "getNep5AssetInfo":
                    result = notifyService.getNep5AssetInfo(JArray.Parse(req.@params[0].ToString()));
                    break;
                }
                if (result != null && result.Count > 0 && result[0]["errorCode"] != null)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, (int)result[0]["errorCode"], (string)result[0]["errorMsg"], (string)result[0]["errorData"]);

                    return(resE);
                }
                if (result.Count == 0)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");

                    return(resE);
                }
            }
            catch (Exception e)
            {
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);

                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse();

            res.jsonrpc = req.jsonrpc;
            res.id      = req.id;
            res.result  = result;

            return(res);
        }
Exemple #12
0
        public object getRes(JsonRPCrequest req, string reqAddr)
        {
            JArray result     = new JArray();
            string resultStr  = string.Empty;
            string findFliter = string.Empty;
            string sortStr    = string.Empty;

            try
            {
                point(req.method);
                switch (req.method)
                {
                // dex
                case "verifyEmail":
                    result = dexService.verifyEmail(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    break;

                case "clearEmail":
                    result = dexService.clearEmail(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "bindEmail":
                    result = dexService.bindEmail(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getEmailState":
                    result = dexService.getEmailState(req.@params[0].ToString());
                    break;

                case "hasStarDomain":
                    result = dexService.hasStarDomain(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getStarDomainList":
                    result = dexService.getStarDomainList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                case "getStarDomainCount":
                    result = dexService.getStarDomainCount(req.@params[0].ToString());
                    break;

                case "starDexDomain":
                    //result = dexService.starDexDomain(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    result = dexService.starDexDomain(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), req.@params[2].ToString(), req.@params[3].ToString());
                    break;

                case "searchDexDomainLikeInfo":
                    result = dexService.searchDexDomainLikeInfo(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()));
                    break;

                case "searchDexDomainInfo":
                    result = dexService.searchDexDomainInfo(req.@params[0].ToString());
                    break;

                case "getOrderRange":
                    result = dexService.getOrderRange(decimal.Parse(req.@params[0].ToString()));
                    break;

                case "getDexDomainList":
                    result = dexService.getDexDomainList(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), int.Parse(req.@params[4].ToString()), int.Parse(req.@params[5].ToString()));
                    break;

                case "getDexDomainCanUseList":
                    result = dexService.getDexDomainCanUseList(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()));
                    break;

                case "getDexDomainInfo":
                    result = dexService.getDexDomainInfo(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getDexDomainOrder":
                    result = dexService.getDexDomainOrder(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()));
                    break;

                case "getDexDomainBuyOther":
                    result = dexService.getDexDomainBuyOther(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getDexDomainBuyDetail":
                    result = dexService.getDexDomainBuyDetail(req.@params[0].ToString());
                    break;

                case "getDexDomainSellOther":
                    result = dexService.getDexDomainSellOther(req.@params[0].ToString());
                    break;

                case "getDexDomainSellDetail":
                    result = dexService.getDexDomainSellDetail(req.@params[0].ToString());
                    break;

                case "getDexDomainDealHistList":
                    result = dexService.getDexDomainDealHistList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString());
                    break;

                case "getDexDomainBuyList":
                    result = dexService.getDexDomainBuyList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString());
                    break;

                case "getDexDomainSellList":
                    result = dexService.getDexDomainSellList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString());
                    break;

                case "getBalanceFromDex":
                    result = dexService.getBalanceFromDex(req.@params[0].ToString());
                    break;

                // test
                case "getnodetype":
                    result = new JArray {
                        new JObject {
                            { "nodeType", netnode }
                        }
                    };
                    break;
                }
                if (result.Count == 0)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");
                    return(resE);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace);
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);
                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse();

            res.jsonrpc = req.jsonrpc;
            res.id      = req.id;
            res.result  = result;

            return(res);
        }
Exemple #13
0
        public object getRes(JsonRPCrequest req, string reqAddr)
        {
            JArray result     = new JArray();
            string resultStr  = string.Empty;
            string findFliter = string.Empty;
            string sortStr    = string.Empty;

            try
            {
                switch (req.method)
                {
                case "getnodetype":
                    JArray JA = new JArray
                    {
                        new JObject {
                            { "nodeType", netnode }
                        }
                    };
                    result = JA;
                    break;

                case "getdatablockheight":
                    result = mh.Getdatablockheight(mongodbConnStr, mongodbDatabase);
                    break;

                case "getblockcount":
                    //resultStr = "[{blockcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "block") + "}]";
                    result = getJAbyKV("blockcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "block"));
                    break;

                case "getcliblockcount":
                    var resp = hh.Post(neoCliJsonRPCUrl, "{'jsonrpc':'2.0','method':'getblockcount','params':[],'id':1}", System.Text.Encoding.UTF8, 1);

                    string cliResultStr = (string)JObject.Parse(resp)["result"];
                    result = getJAbyKV("cliblockcount", cliResultStr);
                    break;

                case "gettxcount":
                    //resultStr = "[{txcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx") + "}]";
                    //result = getJAbyKV("txcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx"));
                    findFliter = "{}";
                    if ([email protected]() > 0)
                    {
                        string type = req.@params[0].ToString();
                        if (type != null && type != string.Empty)
                        {
                            findFliter = "{type:\"" + type + "\"}";
                        }
                    }
                    result = getJAbyKV("txcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx", findFliter));
                    break;

                case "getaddrcount":
                    //resultStr = "[{addrcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "address") + "}]";
                    result = getJAbyKV("addrcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "address"));
                    break;

                case "getblock":
                    findFliter = "{index:" + req.@params[0] + "}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter);
                    break;

                case "getblocktime":
                    findFliter = "{index:" + req.@params[0] + "}";
                    var time = (Int32)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["time"];
                    result = getJAbyKV("time", time);
                    break;

                case "getblocks":
                    sortStr = "{index:-1}";
                    result  = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "block", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    break;

                case "getrawtransaction":
                    findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter);
                    break;

                case "getrawtransactions":
                    sortStr    = "{blockindex:-1,txid:-1}";
                    findFliter = "{}";
                    if ([email protected]() > 2)
                    {
                        string txType = req.@params[2].ToString();

                        if (txType != null && txType != string.Empty)
                        {
                            findFliter = "{type:'" + txType + "'}";
                        }
                    }
                    result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "tx", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()), findFliter);
                    break;

                case "getaddrs":
                    sortStr = "{'lastuse.blockindex' : -1,'lastuse.txid' : -1}";
                    result  = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "address", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    break;

                case "getaddr":
                    string addr = req.@params[0].ToString();
                    findFliter = "{addr:'" + addr + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "address", findFliter);
                    break;

                case "getaddresstxs":
                    string findBson = "{'addr':'" + req.@params[0].ToString() + "'}";
                    sortStr = "{'blockindex' : -1}";
                    result  = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "address_tx", sortStr, int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), findBson);
                    break;

                case "getasset":
                    findFliter = "{id:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "asset", findFliter);
                    break;

                case "getallasset":
                    findFliter = "{}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "asset", findFliter);
                    break;

                case "getfulllog":
                    findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "fulllog", findFliter);
                    break;

                case "getnotify":
                    findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "notify", findFliter);
                    break;

                case "getutxo":
                    if ([email protected]() == 1)
                    {
                        findFliter = "{addr:'" + req.@params[0] + "',used:''}";
                        result     = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);
                    }
                    else if ([email protected]() == 2)
                    {
                        if ((Int64)req.@params[1] == 1)
                        {
                            findFliter = "{addr:'" + req.@params[0] + "'}";
                        }
                        result = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);
                    }
                    else if ([email protected]() == 3)
                    {
                        findFliter = "{addr:'" + req.@params[0] + "',used:''}";
                        sortStr    = "{'createHeight':1,'txid':1,'n':1}";
                        result     = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "utxo", sortStr, int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), findFliter);
                    }
                    else if ([email protected]() == 4)
                    {
                        if ((Int64)req.@params[1] == 1)
                        {
                            findFliter = "{addr:'" + req.@params[0] + "'}";
                        }
                        sortStr = "{'createHeight':1,'txid':1,'n':1}";
                        result  = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "utxo", sortStr, int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()), findFliter);
                    }
                    break;

                case "getutxocount":
                    addr = req.@params[0].ToString();
                    if (addr != null && addr != string.Empty)
                    {
                        findFliter = "{addr:\"" + addr + "\"}";
                    }
                    result = getJAbyKV("utxocount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "utxo", findFliter));
                    break;

                case "getutxostopay":
                    string  address    = (string)req.@params[0];
                    string  assetID    = ((string)req.@params[1]).formatHexStr();
                    decimal amount     = decimal.Parse(req.@params[2].ToString());
                    bool    isBigFirst = false;  //默认先用小的。

                    if ([email protected]() == 4)
                    {
                        if ((Int64)req.@params[3] == 1)
                        {
                            isBigFirst = true;    //加可选参数可以先用大的。
                        }
                    }

                    findFliter = "{addr:'" + address + "',used:''}";
                    JArray utxoJA = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);

                    result = tx.getUtxo2Pay(utxoJA, address, assetID, amount, isBigFirst);
                    break;

                case "getclaimgas":
                    JObject claimsJ = new JObject();
                    if ([email protected]() == 1)
                    {
                        claimsJ = claim.getClaimGas(mongodbConnStr, mongodbDatabase, req.@params[0].ToString());
                    }
                    ;
                    if ([email protected]() == 2)
                    {
                        if ((Int64)req.@params[1] == 1)
                        {
                            claimsJ = claim.getClaimGas(mongodbConnStr, mongodbDatabase, req.@params[0].ToString(), false);
                        }
                    }
                    result = getJAbyJ(claimsJ);
                    break;

                case "getclaimtxhex":
                    string addrClaim = (string)req.@params[0];

                    result = getJAbyKV("claimtxhex", tx.getClaimTxHex(addrClaim, claim.getClaimGas(mongodbConnStr, mongodbDatabase, addrClaim)));
                    break;

                case "getbalance":
                    findFliter = "{addr:'" + req.@params[0] + "',used:''}";
                    JArray utxos = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);
                    Dictionary <string, decimal> balance = new Dictionary <string, decimal>();
                    foreach (JObject j in utxos)
                    {
                        if (!balance.ContainsKey((string)j["asset"]))
                        {
                            balance.Add((string)j["asset"], (decimal)j["value"]);
                        }
                        else
                        {
                            balance[(string)j["asset"]] += (decimal)j["value"];
                        }
                    }
                    JArray balanceJA = new JArray();
                    foreach (KeyValuePair <string, decimal> kv in balance)
                    {
                        JObject j = new JObject();
                        j.Add("asset", kv.Key);
                        j.Add("balance", kv.Value);
                        JObject asset = (JObject)mh.GetData(mongodbConnStr, mongodbDatabase, "asset", "{id:'" + kv.Key + "'}")[0];
                        JArray  name  = (JArray)asset["name"];
                        j.Add("name", name);
                        balanceJA.Add(j);
                    }
                    result = balanceJA;
                    break;

                case "getcontractscript":
                    findFliter = "{hash:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mh.mongodbConnStr_NeonOnline, mh.mongodbDatabase_NeonOnline, "contractWarehouse", findFliter);
                    break;

                case "gettransfertxhex":
                    string addrOut = (string)req.@params[0];
                    findFliter = "{addr:'" + addrOut + "',used:''}";
                    JArray outputJA = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);

                    result = getJAbyKV("transfertxhex", tx.getTransferTxHex(outputJA, (string)req.@params[0], (string)req.@params[1], (string)req.@params[2], decimal.Parse(req.@params[3].ToString())));

                    //result = new JArray
                    //{
                    //    new JObject
                    //    {
                    //        {
                    //            "transfertxhex",
                    //            tx.getTransferTxHex(outputJA,(string)req.@params[0], (string)req.@params[1], (string)req.@params[2], decimal.Parse(req.@params[3].ToString()))
                    //        }
                    //    }
                    //};
                    break;

                case "sendtxplussign":
                    result = getJAbyJ(tx.sendTxPlusSign(neoCliJsonRPCUrl, (string)req.@params[0], (string)req.@params[1], (string)req.@params[2]));
                    break;

                case "verifytxsign":
                    result = getJAbyKV("sign", tx.verifyTxSign((string)req.@params[0], (string)req.@params[1]));
                    break;

                case "sendrawtransaction":
                    result = getJAbyJ(tx.sendrawtransaction(neoCliJsonRPCUrl, (string)req.@params[0]));

                    //result = new JArray
                    //{
                    //    new JObject
                    //    {
                    //        {
                    //            "sendrawtransactionresult",
                    //            tx.sendrawtransaction(neoCliJsonRPCUrl,(string)req.@params[0])
                    //        }
                    //    }
                    //};
                    break;

                case "getcontractstate":
                    result = getJAbyJ(ct.getContractState(neoCliJsonRPCUrl, (string)req.@params[0]));

                    break;

                case "invokescript":
                    result = getJAbyJ(ct.invokeScript(neoCliJsonRPCUrl, (string)req.@params[0]));

                    break;

                case "callcontractfortest":
                    result = getJAbyJ(ct.callContractForTest(neoCliJsonRPCUrl, new List <string> {
                        (string)req.@params[0]
                    }, new JArray()
                    {
                        (JArray)req.@params[1]
                    }));

                    break;

                case "publishcontractfortest":
                    result = getJAbyJ(ct.publishContractForTest(neoCliJsonRPCUrl, (string)req.@params[0], (JObject)req.@params[1]));
                    break;

                case "getinvoketxhex":
                    string addrPayFee = (string)req.@params[0];
                    findFliter = "{addr:'" + addrPayFee + "',used:''}";
                    JArray outputJAPayFee = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);

                    string  invokeScript    = (string)req.@params[1];
                    decimal invokeScriptFee = decimal.Parse(req.@params[2].ToString());

                    result = getJAbyKV("invoketxhex", tx.getInvokeTxHex(outputJAPayFee, addrPayFee, invokeScript, invokeScriptFee));
                    break;

                case "getstorage":
                    result = getJAbyJ(ct.getStorage(neoCliJsonRPCUrl, (string)req.@params[0], (string)req.@params[1]));

                    break;

                case "setcontractscript":
                    JObject J    = JObject.Parse((string)req.@params[0]);
                    string  hash = (string)J["hash"];
                    //string hash = (string)req.@params[0];
                    //J.Add("hash", hash);
                    //J.Add("avm", (string)req.@params[1]);
                    //J.Add("cs", (string)req.@params[2]);

                    //string mapStr = (string)req.@params[3];
                    //string abiStr = (string)req.@params[4];

                    //if (mapStr != null && mapStr != string.Empty)
                    //{
                    //    J.Add("map", JArray.Parse((string)req.@params[3]));
                    //}
                    //else
                    //{
                    //    J.Add("map", string.Empty);
                    //}

                    //if (abiStr != null && abiStr != string.Empty)
                    //{
                    //    J.Add("abi", JObject.Parse((string)req.@params[4]));
                    //}
                    //else
                    //{
                    //    J.Add("abi", string.Empty);
                    //}

                    J.Add("requestIP", reqAddr);

                    mh.InsertOneDataByCheckKey(mh.mongodbConnStr_NeonOnline, mh.mongodbDatabase_NeonOnline, "contractWarehouse", J, "hash", hash);
                    result = getJAbyKV("isSetSuccess", true);

                    //result = new JArray
                    //{
                    //    new JObject{
                    //        { "isSetSuccess",true }
                    //    }
                    //};

                    break;

                case "getnep5balanceofaddress":
                    string  NEP5scripthash  = (string)req.@params[0];
                    string  NEP5address     = (string)req.@params[1];
                    byte[]  NEP5addrHash    = ThinNeo.Helper.GetPublicKeyHashFromAddress(NEP5address);
                    string  NEP5addrHashHex = ThinNeo.Helper.Bytes2HexString(NEP5addrHash.Reverse().ToArray());
                    JObject NEP5balanceOfJ  = ct.callContractForTest(neoCliJsonRPCUrl, new List <string> {
                        NEP5scripthash
                    }, new JArray()
                    {
                        JArray.Parse("['(str)balanceOf',['(hex)" + NEP5addrHashHex + "']]")
                    });
                    string balanceStr  = (string)((JArray)NEP5balanceOfJ["stack"])[0]["value"];
                    string balanceType = (string)((JArray)NEP5balanceOfJ["stack"])[0]["type"];

                    string balanceBigint = "0";

                    if (balanceStr != string.Empty)
                    {
                        //获取NEP5资产信息,获取精度
                        NEP5.Asset NEP5asset = new NEP5.Asset(mongodbConnStr, mongodbDatabase, NEP5scripthash);

                        balanceBigint = NEP5.getNumStrFromStr(balanceType, balanceStr, NEP5asset.decimals);
                    }

                    result = getJAbyKV("nep5balance", balanceBigint);
                    break;

                case "getallnep5assetofaddress":
                    string NEP5addr      = (string)req.@params[0];
                    bool   isNeedBalance = false;
                    if ([email protected]() > 1)
                    {
                        isNeedBalance = ((Int64)req.@params[1] == 1) ? true : false;
                    }

                    //按资产汇集收到的钱(仅资产ID)
                    string findTransferTo     = "{ to:'" + NEP5addr + "'}";
                    JArray transferToJA       = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findTransferTo);
                    List <NEP5.Transfer> tfts = new List <NEP5.Transfer>();
                    foreach (JObject tfJ in transferToJA)
                    {
                        tfts.Add(new NEP5.Transfer(tfJ));
                    }
                    var queryTo = from tft in tfts
                                  group tft by tft.asset into tftG
                                  select new { assetid = tftG.Key };
                    var assetAdds = queryTo.ToList();

                    //如果需要余额,则通过cli RPC批量获取余额
                    List <NEP5.AssetBalanceOfAddr> addrAssetBalances = new List <NEP5.AssetBalanceOfAddr>();
                    if (isNeedBalance)
                    {
                        List <NEP5.AssetBalanceOfAddr> addrAssetBalancesTemp = new List <NEP5.AssetBalanceOfAddr>();
                        foreach (var assetAdd in assetAdds)
                        {
                            string findNep5Asset = "{assetid:'" + assetAdd.assetid + "'}";
                            JArray Nep5AssetJA   = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5asset", findNep5Asset);
                            string Symbol        = (string)Nep5AssetJA[0]["symbol"];

                            addrAssetBalancesTemp.Add(new NEP5.AssetBalanceOfAddr(assetAdd.assetid, Symbol, string.Empty));
                        }

                        List <string> nep5Hashs                 = new List <string>();
                        JArray        queryParams               = new JArray();
                        byte[]        NEP5allAssetOfAddrHash    = ThinNeo.Helper.GetPublicKeyHashFromAddress(NEP5addr);
                        string        NEP5allAssetOfAddrHashHex = ThinNeo.Helper.Bytes2HexString(NEP5allAssetOfAddrHash.Reverse().ToArray());
                        foreach (var abt in addrAssetBalancesTemp)
                        {
                            nep5Hashs.Add(abt.assetid);
                            queryParams.Add(JArray.Parse("['(str)balanceOf',['(hex)" + NEP5allAssetOfAddrHashHex + "']]"));
                        }
                        JArray NEP5allAssetBalanceJA = (JArray)ct.callContractForTest(neoCliJsonRPCUrl, nep5Hashs, queryParams)["stack"];
                        var    a = Newtonsoft.Json.JsonConvert.SerializeObject(NEP5allAssetBalanceJA);
                        foreach (var abt in addrAssetBalancesTemp)
                        {
                            string allBalanceStr  = (string)NEP5allAssetBalanceJA[addrAssetBalancesTemp.IndexOf(abt)]["value"];
                            string allBalanceType = (string)NEP5allAssetBalanceJA[addrAssetBalancesTemp.IndexOf(abt)]["type"];
                            //获取NEP5资产信息,获取精度
                            NEP5.Asset NEP5asset = new NEP5.Asset(mongodbConnStr, mongodbDatabase, abt.assetid);

                            abt.balance = NEP5.getNumStrFromStr(allBalanceType, allBalanceStr, NEP5asset.decimals);
                        }

                        //去除余额为0的资产
                        foreach (var abt in addrAssetBalancesTemp)
                        {
                            if (abt.balance != string.Empty && abt.balance != "0")
                            {
                                addrAssetBalances.Add(abt);
                            }
                        }
                    }

                    ////按资产汇集支出的钱
                    //string findTransferFrom = "{ from:'" + NEP5addr + "'}";
                    //JArray transferFromJA = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findTransferFrom);
                    //List<NEP5.Transfer> tffs = new List<NEP5.Transfer>();
                    //foreach (JObject tfJ in transferFromJA)
                    //{
                    //    tffs.Add(new NEP5.Transfer(tfJ));
                    //}
                    //var queryFrom = from tff in tffs
                    //                group tff by tff.asset into tffG
                    //            select new { assetid = tffG.Key, sumOfValue = tffG.Sum(m => m.value) };
                    //var assetRemoves = queryFrom.ToList();

                    ////以支出的钱扣减收到的钱得到余额
                    //JArray JAadds = JArray.FromObject(assetAdds);
                    //foreach (JObject Jadd in JAadds) {
                    //    foreach (var assetRemove in assetRemoves)
                    //    {
                    //        if ((string)Jadd["assetid"] == assetRemove.assetid)
                    //        {
                    //            Jadd["sumOfValue"] = (decimal)Jadd["sumOfValue"] - assetRemove.sumOfValue;
                    //            break;
                    //        }
                    //    }
                    //}
                    //var a = Newtonsoft.Json.JsonConvert.SerializeObject(JAadds);

                    //***********
                    //经简单测试,仅看transfer记录,所有to减去所有from并不一定等于合约查询得到的地址余额(可能有其他非标方法消耗了余额,尤其是测试网),废弃这种方法,还是采用调用NEP5合约获取地址余额方法的方式
                    //这里给出所有该地址收到过的资产hash,可以配合其他接口获取资产信息和余额
                    //***********
                    if (!isNeedBalance)
                    {
                        result = JArray.FromObject(assetAdds);
                    }
                    else
                    {
                        result = JArray.FromObject(addrAssetBalances);
                    }

                    break;

                case "getnep5asset":
                    findFliter = "{assetid:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5asset", findFliter);
                    break;

                case "getallnep5asset":
                    findFliter = "{}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5asset", findFliter);
                    break;

                case "getnep5transferbytxid":
                    string txid = ((string)req.@params[0]).formatHexStr();
                    findFliter = "{txid:'" + txid + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findFliter);
                    break;

                case "getnep5transferbyaddress":
                    sortStr = "{'blockindex':1,'txid':1,'n':1}";
                    string NEP5transferAddress     = (string)req.@params[0];
                    string NEP5transferAddressType = (string)req.@params[1];
                    findFliter = "{'" + NEP5transferAddressType + "':'" + NEP5transferAddress + "'}";
                    result     = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "NEP5transfer", sortStr, int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()), findFliter);
                    break;

                case "getnep5transfers":
                    sortStr = "{'blockindex':1,'txid':1,'n':1}";
                    result  = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "NEP5transfer", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    break;

                case "getnep5transfersbyasset":
                    string str_asset = ((string)req.@params[0]).formatHexStr();
                    findFliter = "{asset:'" + str_asset + "'}";
                    sortStr    = "{'blockindex':1,'txid':1,'n':1}";
                    if ([email protected]() == 3)
                    {
                        result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "NEP5transfer", sortStr, int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), findFliter);
                    }
                    else
                    {
                        result = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findFliter);
                    }
                    break;

                case "getnep5count":
                    findFliter = "{}";
                    if ([email protected]() == 2)
                    {
                        string key   = (string)req.@params[0];
                        string value = (string)req.@params[1];
                        findFliter = "{\"" + key + "\":\"" + value + "\"}";
                    }
                    result = getJAbyKV("nep5count", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "NEP5transfer", findFliter));
                    break;

                case "getnep5transferbyblockindex":
                    Int64 blockindex = (Int64)req.@params[0];
                    findFliter = "{blockindex:" + blockindex + "}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findFliter);
                    break;

                case "getaddresstxbyblockindex":
                    blockindex = (Int64)req.@params[0];
                    findFliter = "{blockindex:" + blockindex + "}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "address_tx", findFliter);
                    break;

                case "gettxinfo":
                    txid       = ((string)req.@params[0]).formatHexStr();
                    findFliter = "{txid:'" + (txid).formatHexStr() + "'}";
                    JArray  JATx           = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter);
                    JObject JOTx           = (JObject)JATx[0];
                    var     heightforblock = (int)JOTx["blockindex"];
                    var     indexforblock  = -1;
                    findFliter = "{index:" + heightforblock + "}";
                    result     = (JArray)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["tx"];
                    for (var i = 0; i < result.Count; i++)
                    {
                        JObject Jo = (JObject)result[i];
                        if (txid == (string)Jo["txid"])
                        {
                            indexforblock = i;
                        }
                    }
                    JObject JOresult = new JObject();
                    JOresult["heightforblock"] = heightforblock;
                    JOresult["indexforblock"]  = indexforblock;
                    result = new JArray()
                    {
                        JOresult
                    };
                    break;

                case "uxtoinfo":
                    var starttxid = ((string)req.@params[0]).formatHexStr();
                    var voutN     = (Int64)req.@params[1];

                    findFliter = "{txid:'" + (starttxid).formatHexStr() + "'}";
                    JATx       = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter);
                    JOTx       = (JObject)JATx[0];
                    int starttxblockheight = (int)JOTx["blockindex"];
                    int starttxblockindex  = -1;
                    findFliter = "{index:" + starttxblockheight + "}";
                    result     = (JArray)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["tx"];
                    for (var i = 0; i < result.Count; i++)
                    {
                        JObject Jo = (JObject)result[i];
                        if (starttxid == (string)Jo["txid"])
                        {
                            starttxblockindex = i;
                        }
                    }
                    //根据txid和n获取utxo信息
                    findFliter = "{txid:\"" + starttxid + "\",n:" + voutN + "}";
                    var endtxid          = (string)mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter)[0]["used"];
                    int endtxblockheight = -1;
                    int endtxblockindex  = -1;
                    int vinputN          = -1;
                    if (!string.IsNullOrEmpty(endtxid))
                    {
                        findFliter       = "{txid:'" + (endtxid).formatHexStr() + "'}";
                        JATx             = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter);
                        JOTx             = (JObject)JATx[0];
                        endtxblockheight = (int)JOTx["blockindex"];
                        JArray JAvin = (JArray)JOTx["vin"];
                        findFliter = "{index:" + endtxblockheight + "}";
                        result     = (JArray)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["tx"];
                        for (var i = 0; i < result.Count; i++)
                        {
                            JObject Jo = (JObject)result[i];
                            if (endtxid == (string)Jo["txid"])
                            {
                                endtxblockindex = i;
                            }
                        }
                        for (var i = 0; i < JAvin.Count; i++)
                        {
                            JObject Jo = (JObject)JAvin[i];
                            if ((string)Jo["txid"] == starttxid && voutN == i)
                            {
                                vinputN = i;
                            }
                        }
                    }
                    else
                    {
                    }

                    JOresult = new JObject();
                    JOresult["starttxid"]          = starttxid;
                    JOresult["starttxblockheight"] = starttxblockheight;
                    JOresult["starttxblockindex"]  = starttxblockindex;
                    JOresult["voutN"]            = voutN;
                    JOresult["endtxid"]          = endtxid;
                    JOresult["endtxblockheight"] = endtxblockheight;
                    JOresult["endtxblockindex"]  = endtxblockindex;
                    JOresult["vinputN"]          = vinputN;
                    result = new JArray()
                    {
                        JOresult
                    };

                    break;
                }
                if (result.Count == 0)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");

                    return(resE);
                }
            }
            catch (Exception e)
            {
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);

                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse();

            res.jsonrpc = req.jsonrpc;
            res.id      = req.id;
            res.result  = result;

            return(res);
        }
Exemple #14
0
        public object getRes(JsonRPCrequest req, string reqAddr)
        {
            JArray result     = new JArray();
            string resultStr  = string.Empty;
            string findFliter = string.Empty;
            string sortStr    = string.Empty;

            try
            {
                switch (req.method)
                {
                case "getnoderpcapi":
                    JArray JA = new JArray
                    {
                        new JObject {
                            { "nodeType", netnode },
                            { "nodeList", new JArray {
                                  neoCliJsonRPCUrl
                              } }
                        }
                    };
                    result = JA;
                    break;

                case "getdatablockheight":
                    result = mh.Getdatablockheight(mongodbConnStr, mongodbDatabase);
                    break;

                case "getblockcount":
                    //resultStr = "[{blockcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "block") + "}]";
                    result = getJAbyKV("blockcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "block"));
                    break;

                case "gettxcount":
                    //resultStr = "[{txcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx") + "}]";
                    result = getJAbyKV("txcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx"));
                    break;

                case "getaddrcount":
                    //resultStr = "[{addrcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "address") + "}]";
                    result = getJAbyKV("addrcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "address"));
                    break;

                case "getblock":
                    findFliter = "{index:" + req.@params[0] + "}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter);
                    break;

                case "getblocks":
                    sortStr = "{index:-1}";
                    result  = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "block", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    break;

                case "getrawtransaction":
                    findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter);
                    break;

                case "getrawtransactions":
                    sortStr    = "{blockindex:-1,txid:-1}";
                    findFliter = "{}";
                    if ([email protected]() > 2)
                    {
                        string txType = req.@params[2].ToString();

                        if (txType != null && txType != string.Empty)
                        {
                            findFliter = "{type:'" + txType + "'}";
                        }
                    }
                    result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "tx", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()), findFliter);
                    break;

                case "getaddrs":
                    sortStr = "{'lastuse.blockindex' : -1,'lastuse.txid' : -1}";
                    result  = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "address", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    break;

                case "getaddresstxs":
                    string findBson = "{'addr':'" + req.@params[0].ToString() + "'}";
                    sortStr = "{'blockindex' : -1}";
                    result  = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "address_tx", sortStr, int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), findBson);
                    break;

                case "getasset":
                    findFliter = "{id:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "asset", findFliter);
                    break;

                case "getallasset":
                    findFliter = "{}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "asset", findFliter);
                    break;

                case "getfulllog":
                    findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "fulllog", findFliter);
                    break;

                case "getnotify":
                    findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mongodbConnStr, mongodbDatabase, "notify", findFliter);
                    break;

                case "getutxo":
                    if ([email protected]() == 1)
                    {
                        findFliter = "{addr:'" + req.@params[0] + "',used:''}";
                    }
                    ;
                    if ([email protected]() == 2)
                    {
                        if ((Int64)req.@params[1] == 1)
                        {
                            findFliter = "{addr:'" + req.@params[0] + "'}";
                        }
                    }
                    result = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);
                    break;

                case "getbalance":
                    findFliter = "{addr:'" + req.@params[0] + "',used:''}";
                    JArray utxos = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);
                    Dictionary <string, decimal> balance = new Dictionary <string, decimal>();
                    foreach (JObject j in utxos)
                    {
                        if (!balance.ContainsKey((string)j["asset"]))
                        {
                            balance.Add((string)j["asset"], (decimal)j["value"]);
                        }
                        else
                        {
                            balance[(string)j["asset"]] += (decimal)j["value"];
                        }
                    }
                    JArray balanceJA = new JArray();
                    foreach (KeyValuePair <string, decimal> kv in balance)
                    {
                        JObject j = new JObject();
                        j.Add("asset", kv.Key);
                        j.Add("balance", kv.Value);
                        JObject asset = (JObject)mh.GetData(mongodbConnStr, mongodbDatabase, "asset", "{id:'" + kv.Key + "'}")[0];
                        JArray  name  = (JArray)asset["name"];
                        j.Add("name", name);
                        balanceJA.Add(j);
                    }
                    result = balanceJA;
                    break;

                case "getcontractscript":
                    findFliter = "{hash:'" + ((string)req.@params[0]).formatHexStr() + "'}";
                    result     = mh.GetData(mh.mongodbConnStr_NeonOnline, mh.mongodbDatabase_NeonOnline, "contractWarehouse", findFliter);
                    break;

                case "gettransfertxhex":
                    string addrOut = (string)req.@params[0];
                    findFliter = "{addr:'" + addrOut + "',used:''}";
                    JArray outputJA = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);

                    result = getJAbyKV("transfertxhex", tx.getTransferTxHex(outputJA, (string)req.@params[0], (string)req.@params[1], (string)req.@params[2], decimal.Parse(req.@params[3].ToString())));

                    //result = new JArray
                    //{
                    //    new JObject
                    //    {
                    //        {
                    //            "transfertxhex",
                    //            tx.getTransferTxHex(outputJA,(string)req.@params[0], (string)req.@params[1], (string)req.@params[2], decimal.Parse(req.@params[3].ToString()))
                    //        }
                    //    }
                    //};
                    break;

                case "sendtxplussign":
                    result = getJAbyJ(tx.sendTxPlusSign(neoCliJsonRPCUrl, (string)req.@params[0], (string)req.@params[1], (string)req.@params[2]));
                    break;

                case "verifytxsign":
                    result = getJAbyKV("sign", tx.verifyTxSign((string)req.@params[0], (string)req.@params[1]));
                    break;

                case "sendrawtransaction":
                    result = getJAbyJ(tx.sendrawtransaction(neoCliJsonRPCUrl, (string)req.@params[0]));

                    //result = new JArray
                    //{
                    //    new JObject
                    //    {
                    //        {
                    //            "sendrawtransactionresult",
                    //            tx.sendrawtransaction(neoCliJsonRPCUrl,(string)req.@params[0])
                    //        }
                    //    }
                    //};
                    break;

                case "getcontractstate":
                    result = getJAbyJ(ct.getContractState(neoCliJsonRPCUrl, (string)req.@params[0]));

                    break;

                case "invokescript":
                    result = getJAbyJ(ct.invokeScript(neoCliJsonRPCUrl, (string)req.@params[0]));

                    break;

                case "callcontractfortest":
                    result = getJAbyJ(ct.callContractForTest(neoCliJsonRPCUrl, (string)req.@params[0], (JArray)req.@params[1]));

                    break;

                case "getinvoketxhex":
                    string addrPayFee = (string)req.@params[0];
                    findFliter = "{addr:'" + addrPayFee + "',used:''}";
                    JArray outputJAPayFee = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter);

                    string  invokeScript    = (string)req.@params[1];
                    decimal invokeScriptFee = decimal.Parse(req.@params[2].ToString());

                    result = getJAbyKV("invoketxhex", tx.getInvokeTxHex(outputJAPayFee, addrPayFee, invokeScript, invokeScriptFee));
                    break;

                case "setcontractscript":
                    JObject J    = JObject.Parse((string)req.@params[0]);
                    string  hash = (string)J["hash"];
                    //string hash = (string)req.@params[0];
                    //J.Add("hash", hash);
                    //J.Add("avm", (string)req.@params[1]);
                    //J.Add("cs", (string)req.@params[2]);

                    //string mapStr = (string)req.@params[3];
                    //string abiStr = (string)req.@params[4];

                    //if (mapStr != null && mapStr != string.Empty)
                    //{
                    //    J.Add("map", JArray.Parse((string)req.@params[3]));
                    //}
                    //else
                    //{
                    //    J.Add("map", string.Empty);
                    //}

                    //if (abiStr != null && abiStr != string.Empty)
                    //{
                    //    J.Add("abi", JObject.Parse((string)req.@params[4]));
                    //}
                    //else
                    //{
                    //    J.Add("abi", string.Empty);
                    //}

                    J.Add("requestIP", reqAddr);

                    mh.InsertOneDataByCheckKey(mh.mongodbConnStr_NeonOnline, mh.mongodbDatabase_NeonOnline, "contractWarehouse", J, "hash", hash);
                    result = getJAbyKV("isSetSuccess", true);

                    //result = new JArray
                    //{
                    //    new JObject{
                    //        { "isSetSuccess",true }
                    //    }
                    //};

                    break;
                }
                if (result.Count == 0)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");

                    return(resE);
                }
            }
            catch (Exception e)
            {
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);

                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse();

            res.jsonrpc = req.jsonrpc;
            res.id      = req.id;
            res.result  = result;

            return(res);
        }
Exemple #15
0
        public object getRes(JsonRPCrequest req, string reqAddr)
        {
            JArray result = null;

            try
            {
                switch (req.method)
                {
                //
                case "getContractTemplateList":
                    result = commonService.getContractTemplateList(
                        int.Parse(req.@params[0].ToString()),
                        int.Parse(req.@params[1].ToString())
                        );
                    break;

                //
                case "getTxidByAddressAndContract":
                    result = commonService.getTxidByAddressAndContract(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()));
                    break;

                // 根据交易id获取通知数据
                case "getNotifyByTxid":
                    result = commonService.getNotifyByTxid(req.@params[0].ToString());
                    break;

                // 根据交易id获取执行结果
                case "getDumpInfoByTxid":
                    result = commonService.getDumpInfoByTxid(req.@params[0].ToString());
                    break;

                // 根据地址获取交易id和提交时间
                case "getTxCallContract":
                    result = commonService.getTxCallContract(req.@params[0].ToString());
                    break;

                // teemo调用发送交易后存储交易
                case "saveTeemoTx":
                    result = commonService.saveTeemoTx(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                // 转发调用合约交易并存储结果
                case "txCallContract":
                    result = commonService.txCallContract(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                //
                case "sendrawtransaction":
                    result = commonService.sendrawtransaction(req.@params[0].ToString());
                    break;

                // 根据哈希获取合约信息
                case "getContractDeployInfoByHashOld":
                    result = compileService.getContractDeployInfoByHash(req.@params[0].ToString());
                    break;

                // 根据哈希获取合约文件
                case "getContractCodeByHashOld":
                    result = compileService.getContractCodeByHash(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                // 根据地址获取合约摘要
                case "getContractRemarkByAddressOld":
                    result = compileService.getContractRemarkByAddress(req.@params[0].ToString());
                    break;

                // 3. 保存合约
                case "storageContractFileOld":
                    result = compileService.saveContract(
                        req.@params[0].ToString(),
                        req.@params[1].ToString(),
                        req.@params[2].ToString(),
                        req.@params[3].ToString(),
                        req.@params[4].ToString(),
                        req.@params[5].ToString(),
                        req.@params[6].ToString(),
                        req.@params[7].ToString(),
                        req.@params[8].ToString(),
                        req.@params[9].ToString(),
                        req.@params[10].ToString()
                        );
                    break;

                case "saveCompileFile":
                    result = compileService.uploadContractFile(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getCompileFile":
                    result = compileService.downloadCompileFile(req.@params[0].ToString());
                    break;

                // 2. 编译文件
                case "compileContractFileOld":
                    result = compileService.compileFile(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                // 查询是否可以申领Gas
                case "hasclaimgas":
                    result = claimService.hasClaimGas(req.@params[0].ToString());
                    break;

                // 申领Gas(即向客户地址转账,默认1gas
                case "claimgas":
                    if ([email protected] < 2)
                    {
                        result = claimService.claimGas(req.@params[0].ToString());
                    }
                    else
                    {
                        result = claimService.claimGas(req.@params[0].ToString(), Convert.ToDecimal(req.@params[1]));
                    }
                    break;

                // 获取余额
                case "getUtxoBalance":
                    if ([email protected] < 2)
                    {
                        result = commonService.getUtxoBalance(req.@params[0].ToString());
                    }
                    else
                    {
                        result = commonService.getUtxoBalance(req.@params[0].ToString(), req.@params[1].ToString());
                    }
                    break;

                // 获取区块时间
                case "getblocktime":
                    result = commonService.getblocktime(int.Parse(req.@params[0].ToString()));
                    break;

                // 获取区块高度
                case "getblockcount":
                    result = commonService.getblockcount();
                    break;

                case "getnodetype":
                    result = new JArray {
                        new JObject {
                            { "nodeType", netnode }
                        }
                    };
                    break;

                default:
                    result = getResNew(req, reqAddr);
                    break;
                }
                if (result.Count == 0)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");
                    return(resE);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace);
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);
                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse();

            res.jsonrpc = req.jsonrpc;
            res.id      = req.id;
            res.result  = result;

            return(res);
        }
Exemple #16
0
        public object getRes(JsonRPCrequest req, string reqAddr)
        {
            JArray result = null;

            try
            {
                point(req.method);
                switch (req.method)
                {
                case "getassetutxobyaddress":

                    //JsonPRCresponse ress = new JsonPRCresponse()
                    //{
                    //    jsonrpc = req.jsonrpc,
                    //    id = req.id,
                    //    result = new JArray() { new JObject() { { "result", "getMsg!!" } } }
                    //};
                    //return ress;
                    result = transactionServer.getAddressAssetUtxo(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "gettransactionlist":
                    if ([email protected] < 2)
                    {
                        result = transactionServer.gettransactionlist();
                    }
                    else if ([email protected] < 3)
                    {
                        result = transactionServer.gettransactionlist(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    }
                    else
                    {
                        result = transactionServer.gettransactionlist(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()), req.@params[2].ToString());
                    }
                    break;

                case "sendrawtransaction":
                    result = transactionServer.sendrawtransaction((string)req.@params[0]);
                    break;

                case "getnep5balancebyaddress":
                    result = transactionServer.getAddressNep5Asset(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getnep5decimals":
                    string assetid = (string)req.@params[0];
                    result = transactionServer.getnep5decimals(assetid);
                    break;

                case "checktxboolexisted":
                    result = transactionServer.checktxboolexisted((string)req.@params[0]);
                    break;
                }
                if (result.Count == 0)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");
                    return(resE);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace);
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);
                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse()
            {
                jsonrpc = req.jsonrpc,
                id      = req.id,
                result  = result
            };

            return(res);
        }
Exemple #17
0
        public object getRes(JsonRPCrequest req, string reqAddr) // change this part which is reading mongodb to read mysql, takes JsonRequest which is the api link , string address and returns a JArray object
        {
            JArray result = null;

            try
            {
                switch (req.method)     // check the method (method to retrieve specific data) in the api link
                {
                case "getauctioninfoTx":
                    if ([email protected] < 3)     // if the params array has less than 3 objects // params length decide which methods to use; 3 is comserv , 2 is nnServe ,
                    {
                        result = commonService.getAuctionInfoTx(req.@params[0].ToString());
                    }
                    else
                    {
                        result = commonService.getAuctionInfoTx(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    }

                    break;

                case "getauctioninfoRank":
                    if ([email protected] < 3)
                    {
                        result = commonService.getAuctionInfoRank(req.@params[0].ToString());
                    }
                    else
                    {
                        result = commonService.getAuctionInfoRank(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    }
                    break;

                case "getauctioninfo":
                    result = commonService.getAuctionInfo(req.@params[0].ToString());
                    break;

                case "searchbydomain":
                    result = commonService.searchByDomain(req.@params[0].ToString());
                    break;

                // 最具价值域名
                case "getaucteddomain":
                    if ([email protected] < 2)
                    {
                        result = nnsService.getUsedDomainListNew();
                    }
                    else
                    {
                        result = nnsService.getUsedDomainListNew(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    }
                    break;

                // 正在竞拍域名
                case "getauctingdomainbymaxprice":
                    if ([email protected] < 2)
                    {
                        result = nnsService.getAuctingDomainListNewByMaxPrice();
                    }
                    else
                    {
                        result = nnsService.getAuctingDomainListNewByMaxPrice(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    }
                    break;

                case "getauctingdomain":
                    if ([email protected] < 2)
                    {
                        result = nnsService.getAuctingDomainListNew();
                    }
                    else
                    {
                        result = nnsService.getAuctingDomainListNew(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    }
                    break;

                // statistics(奖金池+已领分红+已使用域名数量+正在竞拍域名数量)
                case "getstatistics":
                    result = nnsService.getStatistic();
                    break;

                // 资产名称模糊查询
                case "fuzzysearchasset":
                    result = assetService.fuzzySearchAsset(req.@params[0].ToString());
                    break;

                case "getaddresstxss":
                    result = analyService.getAddressTxsNew(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                case "getrankbyasset":
                    result = msq.GetRankByAsset(req);
                    break;

                case "getrankbyassetcount":
                    result = msq.GetRankByAssetCount(req);
                    break;

                // test
                case "getnodetype":
                    result = new JArray {
                        new JObject {
                            { "nodeType", netnode }
                        }
                    };
                    break;

                case "getaddr":
                    //string addr = req.@params[0].ToString();

                    result = msq.GetAddress(req);
                    break;

                case "getaddrcount":
                    //string addr = req.@params[0].ToString();

                    result = msq.GetAddrCount(req);
                    break;

                case "getaddresstxs":

                    result = msq.GetAddressTx(req);
                    break;

                case "getasset":

                    result = msq.GetAsset(req);
                    break;

                case "getallasset":

                    result = msq.GetAllAsset(req);
                    break;

                case "getnep5asset":

                    result = msq.GetNep5Asset(req);
                    break;

                case "getallnep5assets":

                    result = msq.GetAllNep5Asset(req);
                    break;

                case "getnep5transfer":

                    result = msq.GetNep5Transfer(req);
                    break;

                case "getallnep5transfer":

                    result = msq.GetAllNep5Transfers(req);
                    break;

                case "getnotify":
                    result = msq.GetNotify(req);
                    break;

                case "gettx":

                    result = msq.GetTx(req);
                    break;

                case "getutxo":

                    result = msq.GetUTXO(req);
                    break;

                case "gettxcount":

                    result = msq.GetTxCount(req);
                    break;

                case "getblockcount":
                    result = msq.GetBlockCount(req);
                    break;

                case "getblock":

                    result = msq.GetBlock(req);
                    break;

                case "getblocktime":
                    result = msq.GetBlockTime(req);
                    break;

                case "getblocks":

                    result = msq.GetBlocks(req);
                    break;

                case "getaddress":

                    result = msq.GetAddress(req);
                    break;
                }
                if (result.Count == 0)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");
                    return(resE);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace);
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);
                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse();

            res.jsonrpc = req.jsonrpc;
            res.id      = req.id;
            res.result  = result;

            return(res);
        }
Exemple #18
0
        public object getRes(JsonRPCrequest req, string reqAddr)
        {
            JArray result = null;

            try
            {
                point(req.method);
                switch (req.method)
                {
                //
                case "getContractList":
                    result = blockService.getContractList(
                        int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    break;

                //
                case "getScanTxCountHist":
                    result = blockService.getScanTxCountHist();
                    break;

                case "getScanStatistic":
                    result = blockService.getScanStatistic();
                    break;

                //
                case "getInnerTxAtContractDetail":
                    result = innerTxService.getInnerTxAtContractDetail(
                        req.@params[0].ToString(),
                        int.Parse(req.@params[1].ToString()),
                        int.Parse(req.@params[2].ToString())
                        );
                    break;

                case "getInnerTxAtAddrDetail":
                    result = innerTxService.getInnerTxAtAddrDetail(
                        req.@params[0].ToString(),
                        int.Parse(req.@params[1].ToString()),
                        int.Parse(req.@params[2].ToString())
                        );
                    break;

                case "getInnerTxAtTxDetail":
                    result = innerTxService.getInnerTxAtTxDetail(
                        req.@params[0].ToString()
                        );
                    break;

                case "getInnerTxAtTxList":
                    result = innerTxService.getInnerTxAtTxList(
                        int.Parse(req.@params[0].ToString()),
                        int.Parse(req.@params[1].ToString())
                        );
                    break;

                // 获取合约信息
                case "getContractNep5Tx":
                    result = contractService.getContractNep5Tx(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                // 获取合约信息
                case "getContractCallTx":
                    result = contractService.getContractCallTx(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                // 获取合约信息
                case "getContractInfo":
                    result = contractService.getContractInfo(req.@params[0].ToString());
                    break;

                // 获取服务列表
                case "getServiceList":
                    result = daoService.getServiceList(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    break;

                case "getUserInfo":
                    result = daoService.getUserInfo(req.@params[0].ToString());
                    break;

                case "getHashInfoByVoteHash":
                    result = daoService.getHashInfoByVoteHash(req.@params[0].ToString());
                    break;

                // 获取治理信息列表(治理)
                case "getVoteTxHistList":
                    result = daoService.getVoteTxHistList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                // 获取治理信息(治理)
                case "getVoteInfo":
                    result = daoService.getVoteInfo(req.@params[0].ToString());
                    break;

                // 获取项目交易历史列表(众筹)
                case "getProjTxHistList":
                    if ([email protected] > 3)
                    {
                        result = daoService.getProjTxHistList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString());
                        break;
                    }
                    result = daoService.getProjTxHistList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                // 获取项目信息(众筹)
                case "getProjInfo":
                    result = daoService.getProjInfo(req.@params[0].ToString());
                    break;

                // 存储治理信息(治理)
                case "storeVoteInfo":
                    result = daoService.storeVoteInfo(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[6].ToString(), req.@params[7].ToString());
                    break;

                // 存储项目信息(众筹)
                case "storeProjInfo":
                    result = daoService.storeProjInfo(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[5].ToString());
                    break;

                // .....
                case "getNep5TxlistByAddress":
                    if ([email protected] < 3)
                    {
                        result = blockService.getNep5TxlistByAddress(req.@params[0].ToString());
                    }
                    else
                    {
                        result = blockService.getNep5TxlistByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    }
                    break;

                case "getNep5Txlist":
                    if ([email protected] < 2)
                    {
                        result = blockService.getNep5Txlist();
                    }
                    else
                    {
                        result = blockService.getNep5Txlist(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    }
                    break;

                //
                case "getMappingDomain":
                    result = nnsDomainCrediteService.getMappingDomain(req.@params[0].ToString());
                    break;

                //
                case "getNNSFixedSellingList":
                    if ([email protected] < 1)
                    {
                        result = nnsService.getNNSFixedSellingList();
                    }
                    else if ([email protected] < 3)
                    {
                        result = nnsService.getNNSFixedSellingList(req.@params[0].ToString(), req.@params[1].ToString());
                    }
                    else if ([email protected] < 5)
                    {
                        result = nnsService.getNNSFixedSellingList(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()));
                    }
                    else
                    {
                        result = nnsService.getNNSFixedSellingList(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()), req.@params[4].ToString());
                    }
                    break;

                // 获取域名流转历史
                case "getDomainTransferHist":
                    if ([email protected] < 3)
                    {
                        result = domainService.getDomainTransferAndSellingInfo(req.@params[0].ToString());
                    }
                    else
                    {
                        result = domainService.getDomainTransferAndSellingInfo(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    }
                    break;

                case "getutxolistbyaddress":
                    if ([email protected] < 3)
                    {
                        result = blockService.getutxolistbyaddress(req.@params[0].ToString());
                    }
                    else
                    {
                        result = blockService.getutxolistbyaddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    }
                    break;

                case "gettransactionlist":
                    if ([email protected] < 2)
                    {
                        result = blockService.gettransactionlist();
                    }
                    else if ([email protected] < 3)
                    {
                        result = blockService.gettransactionlist(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    }
                    else
                    {
                        result = blockService.gettransactionlist(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()), req.@params[2].ToString());
                    }
                    break;

                case "getutxoinfo":
                    result = blockService.getutxoinfo(req.@params[0].ToString());
                    break;

                case "getnep5transferinfo":
                    break;

                case "getdomaininfo":
                    result = domainService.getDomainInfo(req.@params[0].ToString());
                    break;

                case "getauctioninfoTx":
                    if ([email protected] < 3)
                    {
                        result = domainService.getAuctionInfoTx(req.@params[0].ToString());
                    }
                    else
                    {
                        result = domainService.getAuctionInfoTx(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    }

                    break;

                case "getauctioninfoRank":
                    if ([email protected] < 3)
                    {
                        result = domainService.getAuctionInfoRank(req.@params[0].ToString());
                    }
                    else
                    {
                        result = domainService.getAuctionInfoRank(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    }
                    break;

                case "getauctioninfo":
                    result = domainService.getAuctionInfo(req.@params[0].ToString());
                    break;

                case "getauctionres":
                    result = domainService.getAuctionRes(req.@params[0].ToString());
                    break;

                case "searchbydomain":
                    result = domainService.searchByDomain(req.@params[0].ToString());
                    break;

                // 最具价值域名
                case "getaucteddomain":
                    if ([email protected] < 2)
                    {
                        result = nnsService.getUsedDomainList();
                    }
                    else
                    {
                        result = nnsService.getUsedDomainList(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    }
                    break;

                // 正在竞拍域名
                case "getauctingdomainbymaxprice":
                    if ([email protected] < 2)
                    {
                        result = nnsService.getAuctingDomainListByMaxPrice();
                    }
                    else
                    {
                        result = nnsService.getAuctingDomainListByMaxPrice(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    }
                    break;

                case "getauctingdomain":
                    if ([email protected] < 2)
                    {
                        result = nnsService.getAuctingDomainList();
                    }
                    else
                    {
                        result = nnsService.getAuctingDomainList(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()));
                    }
                    break;

                // statistics(奖金池+已领分红+已使用域名数量+正在竞拍域名数量)
                case "getstatistics":
                    result = nnsService.getStatistic();
                    break;

                // 资产名称模糊查询
                case "fuzzysearchasset":
                    if ([email protected] >= 3)
                    {
                        result = assetService.fuzzySearchAsset(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                        break;
                    }
                    result = assetService.fuzzySearchAsset(req.@params[0].ToString());
                    break;

                //
                case "getaddresstxs":
                    result = analyService.getAddressTxsNew(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                case "getrankbyasset":
                    result = analyService.getRankByAsset(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), netnode);
                    break;

                case "getrankbyassetcount":
                    result = analyService.getRankByAssetCount(req.@params[0].ToString(), netnode);
                    break;

                // test
                case "getnodetype":
                    result = new JArray {
                        new JObject {
                            { "nodeType", netnode }
                        }
                    };
                    break;
                }
                if (result.Count == 0)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");
                    return(resE);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace);
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);
                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse();

            res.jsonrpc = req.jsonrpc;
            res.id      = req.id;
            res.result  = result;

            return(res);
        }
Exemple #19
0
        public object getRes(JsonRPCrequest req, string reqAddr)
        {
            JArray result     = new JArray();
            string resultStr  = string.Empty;
            string findFliter = string.Empty;
            string sortStr    = string.Empty;

            try
            {
                point(req.method);
                switch (req.method)
                {
                // dex
                case "verifyEmail":
                    result = dexService.verifyEmail(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    break;

                case "clearEmail":
                    result = dexService.clearEmail(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "bindEmail":
                    result = dexService.bindEmail(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getEmailState":
                    result = dexService.getEmailState(req.@params[0].ToString());
                    break;

                case "hasStarDomain":
                    result = dexService.hasStarDomain(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getStarDomainList":
                    result = dexService.getStarDomainList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                case "getStarDomainCount":
                    result = dexService.getStarDomainCount(req.@params[0].ToString());
                    break;

                case "starDexDomain":
                    //result = dexService.starDexDomain(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    result = dexService.starDexDomain(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), req.@params[2].ToString(), req.@params[3].ToString());
                    break;

                case "searchDexDomainLikeInfo":
                    result = dexService.searchDexDomainLikeInfo(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()));
                    break;

                case "searchDexDomainInfo":
                    result = dexService.searchDexDomainInfo(req.@params[0].ToString());
                    break;

                case "getOrderRange":
                    result = dexService.getOrderRange(decimal.Parse(req.@params[0].ToString()));
                    break;

                case "getDexDomainList":
                    result = dexService.getDexDomainList(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), int.Parse(req.@params[4].ToString()), int.Parse(req.@params[5].ToString()));
                    break;

                case "getDexDomainCanUseList":
                    result = dexService.getDexDomainCanUseList(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()));
                    break;

                case "getDexDomainInfo":
                    result = dexService.getDexDomainInfo(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getDexDomainOrder":
                    result = dexService.getDexDomainOrder(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()));
                    break;

                case "getDexDomainBuyOther":
                    result = dexService.getDexDomainBuyOther(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getDexDomainBuyDetail":
                    result = dexService.getDexDomainBuyDetail(req.@params[0].ToString());
                    break;

                case "getDexDomainSellOther":
                    result = dexService.getDexDomainSellOther(req.@params[0].ToString());
                    break;

                case "getDexDomainSellDetail":
                    result = dexService.getDexDomainSellDetail(req.@params[0].ToString());
                    break;

                case "getDexDomainDealHistList":
                    result = dexService.getDexDomainDealHistList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString());
                    break;

                case "getDexDomainBuyList":
                    result = dexService.getDexDomainBuyList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString());
                    break;

                case "getDexDomainSellList":
                    result = dexService.getDexDomainSellList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString());
                    break;

                case "getBalanceFromDex":
                    result = dexService.getBalanceFromDex(req.@params[0].ToString());
                    break;

                // 移动端调用: 根据地址查询域名列表(包括已绑定和未绑定)
                case "getDomainListByAddress":
                    if ([email protected] < 3)
                    {
                        result = mobileService.getDomainListByAddress(req.@params[0].ToString());
                    }
                    else if ([email protected] < 4)
                    {
                        result = mobileService.getDomainListByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    }
                    else
                    {
                        result = mobileService.getDomainListByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString());
                    }
                    break;

                //
                case "getMappingDomain":
                    result = nnsDomainCrediteService.getMappingDomain(req.@params[0].ToString());
                    break;

                /**
                 * 获取域名状态(出售状态或竞拍状态)
                 */
                case "getdomainstate":
                    result = newAuctionService.getdomainstate(req.@params[0].ToString());
                    break;

                /**
                 * 获取域名出售或购买列表
                 */
                case "getDomainSellingListByAddress":
                    if ([email protected] < 3)
                    {
                        result = nnsFixedSellingService.getDomainSellingListByAddress(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString());
                    }
                    else
                    {
                        result = nnsFixedSellingService.getDomainSellingListByAddress(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), int.Parse(req.@params[3].ToString()), int.Parse(req.@params[4].ToString()));
                    }
                    break;

                /**
                 * 新增测试nnc
                 * 1. 申请nnc接口
                 * 2. 查询nnc余额接口
                 */
                case "hasClaimNNC":
                    result = claimNNCService.hasClaimNNC(req.@params[0].ToString());
                    break;

                case "claimNNC":
                    result = claimNNCService.claimNNC(req.@params[0].ToString());
                    break;

                case "getNNCfromSellingHash":
                    result = nnsFixedSellingService.getNNCfromSellingHash(req.@params[0].ToString());
                    break;

                /***
                 * 新增转让信息和出售信息
                 *
                 * 1. 首页输入框中显示"出售中"
                 * 2. 首页填写输入框后点击查询详情,显示出售信息:domain + ttl + price
                 * 3. 我的域名管理中新增是否为出售中的状态
                 * 4. 我的域名管理中新增已出售域名列表
                 * 5. 浏览器查询显示初始状态/出售中
                 * 6. 浏览器查询显示域名owner的变化:领取域名 + 转让域名 + 出售域名
                 *
                 */
                // 查询已出售列表
                case "getHasBuyListByAddress":
                    if ([email protected] < 4)
                    {
                        result = nnsFixedSellingService.getHasBuyListByAddress(req.@params[0].ToString(), req.@params[1].ToString());
                    }
                    else
                    {
                        result = nnsFixedSellingService.getHasBuyListByAddress(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()));
                    }
                    break;

                // 查询出售信息
                case "getNNSfixedSellingInfo":
                    result = nnsFixedSellingService.getNNSfixedSellingInfo(req.@params[0].ToString());
                    break;

                // 查询域名竞拍状态+(新增是否正在出售中状态0901)
                case "getdomainauctioninfo":
                    result = newAuctionService.getdomainAuctionInfo(req.@params[0].ToString());
                    break;

                // 移动端调用:获取注册器竞拍账户余额
                case "getregisteraddressbalance":
                    result = newAuctionService.getRegisterAddressBalance(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                // 移动端调用:获取竞拍状态
                case "getauctionstate":
                    result = newAuctionService.getAuctionState(req.@params[0].ToString());
                    break;

                // 移动端调用:获取域名信息
                case "getdomaininfo":
                    result = newAuctionService.getDomainInfo(req.@params[0].ToString());
                    break;

                //
                case "getresolvedaddress":
                    result = domainService.getResolvedAddress(req.@params[0].ToString());
                    break;

                case "getavailableutxos":
                    result = utxoService.getAvailableUtxos(req.@params[0].ToString(), Convert.ToDecimal(req.@params[1]));
                    break;

                case "getCagsLockUtxo":
                    if ([email protected] > 0)
                    {
                        result = utxoService.getCagsLockUtxo(req.@params[0].ToString());
                    }
                    else
                    {
                        result = utxoService.getCagsLockUtxo();
                    }
                    break;

                case "getauctioninfocount":
                    if ([email protected] < 2)
                    {
                        result = newAuctionService.getAcutionInfoCount(req.@params[0].ToString());
                    }
                    else
                    {
                        result = newAuctionService.getAcutionInfoCount(req.@params[0].ToString(), req.@params[1].ToString());
                    }
                    break;

                case "getauctioninfobyaddress":
                    if ([email protected] < 3)
                    {
                        result = newAuctionService.getAuctionInfoByAddress(req.@params[0].ToString());
                    }
                    else if ([email protected] < 4)
                    {
                        result = newAuctionService.getAuctionInfoByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    }
                    else if ([email protected] < 5)
                    {
                        result = newAuctionService.getAuctionInfoByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString());
                    }
                    else if ([email protected] < 7)
                    {
                        result = newAuctionService.getAuctionInfoByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString());
                    }
                    else
                    {
                        result = newAuctionService.getAuctionInfoByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[6].ToString());
                    }
                    break;

                case "getauctioninfobyaucitonid":
                    string address       = req.@params[0].ToString(); // address
                    string auctionIdsStr = req.@params[1].ToString(); // auctionIdArr
                    result = newAuctionService.getAuctionInfoByAuctionId(JArray.Parse(auctionIdsStr), address);
                    break;

                // 查询是否可以申领Gas
                case "hasclaimgas":
                    result = claimService.hasClaimGas(req.@params[0].ToString());
                    break;

                // 申领Gas(即向客户地址转账,默认1gas
                case "claimgas":
                    if ([email protected] < 2)
                    {
                        result = claimService.claimGas(req.@params[0].ToString());
                    }
                    else
                    {
                        result = claimService.claimGas(req.@params[0].ToString(), Convert.ToDecimal(req.@params[1]));
                    }
                    break;

                // 根据txid查询交易是否成功
                case "hastx":
                    result = auctionService.hasTx(req.@params[0].ToString());
                    break;

                // 根据txid查询合约是否成功
                case "hascontract":
                    result = auctionService.hasContract(req.@params[0].ToString());
                    break;

                // 充值&转账
                case "rechargeandtransfer":
                    result = auctionService.rechargeAndTransfer(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                // 查询充值&转账交易
                case "getrechargeandtransfer":
                    result = auctionService.getRechargeAndTransfer(req.@params[0].ToString());
                    break;

                // 根据地址查询分红历史
                case "getbonushistbyaddress":
                    if ([email protected] < 3)
                    {
                        result = bonusService.getBonusHistByAddress(req.@params[0].ToString());
                    }
                    else
                    {
                        result = bonusService.getBonusHistByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    }
                    break;

                //申请得到分红
                case "applybonus":
                    result = bonusService.applyBonus(req.@params[0].ToString());
                    break;

                //得到最新的分红的信息
                case "getcurrentbonus":
                    result = bonusService.getCurrentBonus(req.@params[0].ToString());
                    break;

                //得到某个地址历史分到红的记录
                case "getbonusbyaddress":
                    if ([email protected] < 3)
                    {
                        result = bonusService.getBonusByAddress(req.@params[0].ToString());
                    }
                    else
                    {
                        result = bonusService.getBonusByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    }
                    break;

                // 根据地址查询域名列表
                case "getdomainbyaddress":
                    if ([email protected] < 5)
                    {
                        result = domainService.getDomainByAddressNew(req.@params[0].ToString(), req.@params[1].ToString(), "", int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()));
                    }
                    else if ([email protected] < 6)
                    {
                        result = domainService.getDomainByAddressNew(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), int.Parse(req.@params[3].ToString()), int.Parse(req.@params[4].ToString()));
                    }
                    else
                    {
                        result = domainService.getDomainByAddressNew(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), int.Parse(req.@params[3].ToString()), int.Parse(req.@params[4].ToString()), req.@params[5].ToString());
                    }
                    break;

                // 根据地址查询交易列表
                case "gettransbyaddressOld":
                    result = commonService.getTransByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                case "gettransbyaddress":
                    result = commonService.getTransByAddress_new(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                // test
                case "getnodetype":
                    result = new JArray {
                        new JObject {
                            { "nodeType", netnode }
                        }
                    };
                    break;
                }
                if (result.Count == 0)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");
                    return(resE);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace);
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);
                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse();

            res.jsonrpc = req.jsonrpc;
            res.id      = req.id;
            res.result  = result;

            return(res);
        }
Exemple #20
0
        public async Task <object> getResAsync(JsonRPCrequest req, string reqAddr)
        {
            JArray result     = new JArray();
            string resultStr  = string.Empty;
            string findFliter = string.Empty;
            string sortStr    = string.Empty;

            try
            {
                switch (req.method)
                {
                    #region 获取block
                case "getblock":
                    result = msq.GetBlock(req);
                    break;

                case "getacblock":
                    result = msq.GetAppChainBlock(req);
                    break;
                    #endregion

                    #region 获取blocks
                case "getblocks":
                    result = msq.GetBlocks(req);
                    break;

                case "getappchainblocks":
                    result = msq.GetAppchainBlocks(req);
                    break;

                case "getblocksdesc":
                    result = msq.GetBlocksDESC(req);
                    break;

                case "getappchainblocksdesc":
                    result = msq.GetAppchainBlocksDESC(req);
                    break;

                case "getblocksdesccache":
                    result = msq.GetBlocksDESCCache(req);
                    break;

                case "getappchainblocksdesccache":
                    result = msq.GetAppchainBlocksDESCCache(req);
                    break;
                    #endregion

                    #region 获取block from hash
                case "getblockfromhash":
                    result = msq.GetBlockFromHash(req);
                    break;

                case "getappchainblockfromhash":
                    result = msq.GetAppChainBlockFromHash(req);
                    break;
                    #endregion

                    #region 获取blockcount
                case "getblockcount":
                    var blockcount = Helper.MakeRpcUrl(ZoroHelper.ZoroUrl, "getblockcount", rootChain);
                    var s          = await Helper.HttpGet(blockcount);

                    var a = new JArray();
                    a.Add(new JObject {
                        { "blockcount", JObject.Parse(s)["result"].ToString() }
                    });
                    result = a;
                    break;

                case "getappchainblockcount":
                    var appchainblockcount = Helper.MakeRpcUrl(ZoroHelper.ZoroUrl, "getblockcount", req.@params[0].ToString());
                    var apps = await Helper.HttpGet(appchainblockcount);

                    var appa = new JArray();
                    appa.Add(new JObject {
                        { "blockcount", JObject.Parse(apps)["result"].ToString() }
                    });
                    result = appa;
                    break;
                    #endregion

                    #region 获取爬虫爬到的blockcount
                case "getdatablockheight":
                    result = msq.GetDataBlockHeight(req);
                    break;

                case "getappchaindatablockheight":
                    result = msq.GetAppchainBlockCount(req);
                    break;
                    #endregion

                    #region 获取addrcount
                case "getaddrcount":
                    result = msq.GetAddrCount(req);
                    break;

                case "getappchainaddrcount":
                    result = msq.GetAppchainAddrCount(req);
                    break;
                    #endregion

                    #region 获取txcount
                case "gettxcount":
                    result = msq.GetTxCount(req);
                    break;

                case "getappchaintxcount":
                    result = msq.GetAppchainTxCount(req);
                    break;
                    #endregion

                    #region 获取rawtransaction
                case "getrawtransaction":
                    result = msq.GetRawTransaction(req);
                    break;

                case "getacrawtransaction":
                    result = msq.GetAppChainRawTransaction(req);
                    break;
                    #endregion

                    #region 获取transaction
                case "gettransaction":
                    result = msq.GetTransaction(req);
                    break;

                case "getactransaction":
                    result = msq.GetAppChainTransaction(req);
                    break;
                    #endregion

                    #region 获取transaction_ex
                case "gettransactions_ex":
                    result = msq.GetTransactions_EX(req);
                    break;

                case "getactransactions_ex":
                    result = msq.GetAppChainTransactions_EX(req);
                    break;
                    #endregion

                    #region 获取rawtransactions
                case "getrawtransactions":
                    result = msq.GetRawTransactions(req);
                    break;

                case "getappchainrawtransactions":
                    result = msq.GetAppchainRawTransactions(req);
                    break;

                case "getrawtransactionsdesc":
                    result = msq.GetRawTransactionsDESC(req);
                    break;

                case "getappchainrawtransactionsdesc":
                    result = msq.GetAppchainRawTransactionsDESC(req);
                    break;

                case "getrawtransactionsdesccache":
                    result = msq.GetRawTransactionsDESCCache(req);
                    break;

                case "getappchainrawtransactionsdesccache":
                    result = msq.GetAppchainRawTransactionsDESCCache(req);
                    break;
                    #endregion

                    #region 获取allnep5asset
                case "getallnep5asset":
                    result = msq.GetAllNep5Asset(req);
                    break;

                case "getappchainallnep5asset":
                    result = msq.GetAllNep5AssetByChainHash(req);
                    break;
                    #endregion

                    #region 获取hashlist,appchain
                case "gethashlist":
                    result = msq.GetHashlist(req);
                    break;

                case "getallappchains":
                    result = msq.GetAllAppchains(req);
                    break;

                case "getappchain":
                    result = msq.GetAppchain(req);
                    break;
                    #endregion

                    #region 获取nep5asset
                case "getnep5asset":
                    result = msq.GetNep5Asset(req);
                    break;

                case "getappchainnep5asset":
                    result = msq.GetAppChainNep5Asset(req);
                    break;

                case "getaddressasset":
                    result = msq.GetAddressAsset(req);
                    break;

                case "getaddressallasset":
                    result = await msq.GetAddressAllAssetAsync(req);

                    break;
                    #endregion

                    #region 获取address
                case "getaddress":
                    result = msq.GetAddress(req);
                    break;

                case "getappchainaddress":
                    result = msq.GetAppChainAddress(req);
                    break;
                    #endregion

                    #region 获取addr
                case "getaddr":
                    result = msq.GetAddr(req);
                    break;

                case "getappchainaddr":
                    result = msq.GetAppChainAddr(req);
                    break;
                    #endregion

                    #region 获取addrs
                case "getaddrs":
                    result = msq.GetAddrs(req);
                    break;

                case "getappchainaddrs":
                    result = msq.GetAppChainAddrs(req);
                    break;
                    #endregion

                    #region 获取addresstxs
                case "getaddresstxs":
                    result = msq.GetAddressTxs(req);
                    break;

                case "getappchainaddresstxs":
                    result = msq.GetAppChainAddressTxs(req);
                    break;

                case "getaddressnep5txs":
                    result = msq.GetAddressNep5Txs(req);
                    break;
                    #endregion

                    #region 获取balance
                case "getbalance":
                    result = await msq.GetBalanceByAssetAsync(req);

                    break;

                case "getbalancebyasset":
                    result = await msq.GetAssetBalanceAsync(req);

                    break;

                case "getappchainbalance":
                    result = await msq.GetAppChainBalanceAsync(req);

                    break;
                    #endregion

                    #region 获取utxo
                case "getutxo":
                    result = msq.GetUTXO(req);
                    break;

                case "getappchainutxo":
                    result = msq.GetAppChainUTXO(req);
                    break;
                    #endregion

                    #region 获取rankasset
                case "getrankbyasset":
                    result = msq.GetRankByAsset(req);
                    break;

                case "getappchainrankbyasset":
                    result = msq.GetAppChainRankByAsset(req);
                    break;
                    #endregion

                    #region 获取rankbyassetcount
                case "getrankbyassetcount":
                    result = msq.GetRankByAssetCount(req);
                    break;

                case "getappchainrankbyassetcount":
                    result = msq.GetAppChainRankByAssetCount(req);
                    break;
                    #endregion

                    #region 获取nep5transferbytxid
                case "getnep5transferbytxid":
                    result = msq.GetNep5TransferByTxid(req);
                    break;

                case "getappchainnep5transferbytxid":
                    result = msq.GetAppChainNep5TransferByTxid(req);
                    break;
                    #endregion

                    #region 获取nep5transferbytxidex
                case "getnep5transferbytxidex":
                    result = msq.GetNep5TransferByTxidEX(req);
                    break;

                case "getappchainnep5transferbytxidex":
                    result = msq.GetAppChainNep5TransferByTxidEX(req);
                    break;
                    #endregion

                    #region 获取nep5transferbytxids
                case "getnep5transferbytxids":
                    result = msq.GetNep5TransferByTxids(req);
                    break;

                case "gettransferbytxids":
                    result = msq.GetTransferByTxids(req);
                    break;
                    #endregion

                    #region 获取nep5transfer
                case "getnep5transfer":
                    result = msq.GetNep5Transfer(req);
                    break;

                case "getappchainnep5transfer":
                    result = msq.GetAppChainNep5Transfer(req);
                    break;

                case "getnep5transferbyasset":
                    result = msq.GetNep5TransferByAsset(req);
                    break;

                case "getnep5transferbyassetandaddress":
                    result = msq.GetNep5TransferByAssetAndAddress(req);
                    break;

                case "getsendallamountbyaddress":
                    result = msq.GetSendAllAmountByAddress(req);
                    break;

                    #endregion

                    #region 获取 nft 相关信息
                case "getnftfromaddrandhash":
                    result = msq.GetNFTFromAddrAndHash(req);
                    break;

                case "getnfthashfromaddr":
                    result = msq.GetNFTHashFromAddr(req);
                    break;

                case "getnftfromhash":
                    result = msq.GetNFTFromHash(req);
                    break;

                case "gettokenproperties":
                    result = msq.getProperties(req);
                    break;
                    #endregion

                    #region 和链交互
                case "sendrawtransaction":
                    var tx = "";
                    if ([email protected] > 1)
                    {
                        if (req.@params[0].ToString() == "")
                        {
                            chainhash = rootChain;
                        }
                        else
                        {
                            chainhash = req.@params[0].ToString();
                        }

                        tx = await ZoroHelper.SendRawTransaction(req.@params[1].ToString(), chainhash);
                    }
                    else
                    {
                        //byte[] postArray = APIHelper.HexString2Bytes(req.@params[0].ToString());
                        tx = await ZoroHelper.SendRawTransaction(req.@params[0].ToString(), rootChain);
                    }
                    if (JObject.Parse(tx)["result"].ToString() == "True")
                    {
                        result = new JArray()
                        {
                            new JObject {
                                { "sendrawtransactionresult", JObject.Parse(tx)["result"] }
                            }
                        }
                    }
                    ;
                    else
                    {
                        result = new JArray()
                        {
                            JObject.Parse(tx)["result"]
                        }
                    };
                    break;

                case "invokescript":
                    var invokescript = "";
                    if ([email protected] > 1)
                    {
                        byte[] postArray = APIHelper.HexString2Bytes(req.@params[1].ToString());
                        invokescript = await ZoroHelper.InvokeScript(postArray, req.@params[0].ToString());
                    }
                    else
                    {
                        byte[] postArray = APIHelper.HexString2Bytes(req.@params[0].ToString());
                        invokescript = await ZoroHelper.InvokeScript(postArray, rootChain);
                    }
                    result = new JArray()
                    {
                        JObject.Parse(invokescript)["result"]
                    };
                    break;

                case "estimategas":
                    decimal estimategas = 0;
                    if ([email protected] > 1)
                    {
                        //byte[] postArray = APIHelper.HexString2Bytes(req.@params[1].ToString());
                        estimategas = await ZoroHelper.EstimateGas(req.@params[1].ToString(), req.@params[0].ToString());
                    }
                    else
                    {
                        //byte[] postArray = APIHelper.HexString2Bytes(req.@params[0].ToString());
                        estimategas = await ZoroHelper.EstimateGas(req.@params[0].ToString(), rootChain);
                    }
                    result = new JArray()
                    {
                        new JObject {
                            { "gas", estimategas }
                        }
                    };
                    break;

                case "getcontractstate":
                    var url = "";
                    if ([email protected] > 1)
                    {
                        byte[] postArray           = null;
                        Zoro.IO.Json.JArray jArray = new Zoro.IO.Json.JArray();
                        jArray.Add(req.@params[0].ToString());
                        jArray.Add(req.@params[1].ToString());
                        url = Helper.MakeRpcUrlPost(ZoroHelper.ZoroUrl, "getcontractstate", out postArray, jArray);
                        url = await Helper.HttpPost(url, postArray);
                    }
                    else
                    {
                        byte[] postArray           = null;
                        Zoro.IO.Json.JArray jArray = new Zoro.IO.Json.JArray();
                        jArray.Add(rootChain);
                        jArray.Add(req.@params[0].ToString());
                        url = Helper.MakeRpcUrlPost(ZoroHelper.ZoroUrl, "getcontractstate", out postArray, jArray);
                        url = await Helper.HttpPost(url, postArray);
                    }
                    result = new JArray()
                    {
                        JObject.Parse(url)["result"]
                    };
                    break;
                    #endregion

                    #region 其他
                case "getpagemessage":
                    result = msq.getPageMessage(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getnep5count":
                    result = msq.GetNep5Count(req);
                    break;

                case "getnep5allnep5assetofaddress":
                    result = msq.GetAllNep5AssetOfAddress(req);
                    break;

                case "getcontractmessage":
                    string contractChainHash = "";
                    string contract          = "";
                    if ([email protected] > 1)
                    {
                        if (req.@params[0].ToString() == "")
                        {
                            contractChainHash = rootChain;
                        }
                        else
                        {
                            contractChainHash = req.@params[0].ToString();
                        }
                        contract = req.@params[1].ToString();
                        if (!contract.StartsWith("0x"))
                        {
                            contract = "0x" + contract;
                        }
                        result = msq.GetContractMessage(contractChainHash, contract);
                    }
                    else
                    {
                        contract = req.@params[0].ToString();
                        if (!contract.StartsWith("0x"))
                        {
                            contract = "0x" + contract;
                        }
                        result = msq.GetContractMessage(rootChain, contract);
                    }
                    break;

                case "getallnep5assetofaddress":
                    string NEP5addr      = (string)req.@params[0];
                    bool   isNeedBalance = false;
                    string chainHash     = "";
                    if ([email protected]() > 1)
                    {
                        isNeedBalance = ((Int64)req.@params[1] == 1) ? true : false;
                    }
                    if ([email protected]() > 2)
                    {
                        chainHash = req.@params[2].ToString();
                    }

                    var assetAdds = msq.GetNep5AssetByAddress(chainHash, NEP5addr);
                    List <NEP5.AssetBalanceOfAddr> addrAssetBalances = new List <NEP5.AssetBalanceOfAddr>();
                    if (isNeedBalance)
                    {
                        //UInt160 addr = UInt160.Parse(ThinNeo.Helper.GetPublicKeyHashFromAddress(NEP5addr).ToString());
                        foreach (var assetAdd in assetAdds)
                        {
                            if (assetAdd["type"].ToString() == "NativeNep5")
                            {
                                var nep5 = await APIHelper.getNativeBalanceOfAsync(chainHash, assetAdd["assetid"].ToString(), NEP5addr);

                                if (nep5.balance != "0")
                                {
                                    addrAssetBalances.Add(nep5);
                                }
                            }
                            else
                            {
                                var nep5 = await APIHelper.getBalanceOfAsync(chainHash, assetAdd["assetid"].ToString(), NEP5addr);

                                if (nep5.balance != "0")
                                {
                                    addrAssetBalances.Add(nep5);
                                }
                            }
                        }
                    }

                    if (!isNeedBalance)
                    {
                        result = JArray.FromObject(assetAdds);
                    }
                    else
                    {
                        result = JArray.FromObject(addrAssetBalances);
                    }

                    break;
                    #endregion
                }
                if (result != null && result.Count > 0 && result[0]["errorCode"] != null)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, (int)result[0]["errorCode"], (string)result[0]["errorMsg"], (string)result[0]["errorData"]);

                    return(resE);
                }
                if (result.Count == 0)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");

                    return(resE);
                }
            }
            catch (Exception e)
            {
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);

                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse();
            res.jsonrpc = req.jsonrpc;
            res.id      = req.id;
            res.result  = result;

            return(res);
        }
Exemple #21
0
        public object getRes(JsonRPCrequest req, string reqAddr)
        {
            JArray result = null;

            try
            {
                switch (req.method)
                {
                //
                case "getUinTotal":
                    if ([email protected] < 2)
                    {
                        result = exchangeService.getUinTotal(req.@params[0].ToString());
                    }
                    else
                    {
                        result = exchangeService.getUinTotal(req.@params[0].ToString(), req.@params[1].ToString());
                    }
                    break;

                case "getLiquidityRate":
                    result = exchangeService.getLiquidityRate(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getLiquidityHash":
                    result = exchangeService.getLiquidityHash(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                case "getLiquidityInfo":
                    result = exchangeService.getLiquidityInfo(req.@params[0].ToString(), req.@params[1].ToString());
                    break;

                // 获取GAS/USD价格
                case "getExchangePrice":
                    result = exchangeService.getExchangePrice();
                    break;

                // 获取USD/CNY汇率
                case "getExchangeRate":
                    result = exchangeService.getExchangeRate();
                    break;

                // 获取资产列表
                case "getAssetList":
                    result = exchangeService.getAssetList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()));
                    break;

                case "getnodetype":
                    result = new JArray {
                        new JObject {
                            { "nodeType", netnode }
                        }
                    };
                    break;
                }
                //
                if (result == null || result.Count == 0)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");
                    return(resE);
                }
            }
            catch (Exception e)
            {
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);
                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse();

            res.jsonrpc = req.jsonrpc;
            res.id      = req.id;
            res.result  = result;
            return(res);
        }