Пример #1
0
        /// <summary>
        /// 组装请求参数
        /// </summary>
        /// <param name="openCaiApiArg"></param>
        /// <returns></returns>
        private static string GetRequsetArg(OpenCaiApiArg openCaiApiArg)
        {
            StringBuilder builder = new StringBuilder();

            if (!string.IsNullOrEmpty(openCaiApiArg.token))
            {
                builder.Append(string.Format("token={0}&", openCaiApiArg.token));
            }
            if (!string.IsNullOrEmpty(openCaiApiArg.code))
            {
                builder.Append(string.Format("code={0}&", openCaiApiArg.code));
            }
            if (openCaiApiArg.rows > 0)
            {
                builder.Append(string.Format("rows={0}&", openCaiApiArg.rows));
            }
            if (!string.IsNullOrEmpty(openCaiApiArg.format))
            {
                builder.Append(string.Format("format={0}&", openCaiApiArg.format));
            }
            if (!string.IsNullOrEmpty(openCaiApiArg.date))
            {
                builder.Append(string.Format("date={0}&", openCaiApiArg.date));
            }
            if (!string.IsNullOrEmpty(openCaiApiArg.callback))
            {
                builder.Append(string.Format("callback={0}", openCaiApiArg.callback));
            }
            return(StringHelper.DelLastChar(builder.ToString(), "&"));
        }
Пример #2
0
        /// <summary>
        ///     从主站抓取开奖数据 昨天/今天
        /// </summary>
        /// <param name="IsToday"></param>
        /// <returns></returns>
        private List <YunNanSSCEntity> GetDocByMainUrl(bool IsToday = true)
        {
            var list = new List <YunNanSSCEntity>();

            try
            {
                var time = DateTime.Now;
                var arg  = new OpenCaiApiArg
                {
                    code = EnumHelper.GetLotteryCode(SCCLottery.YunNanSSC),
                    date = time.ToString("yyyy-MM-dd")
                };
                if (!IsToday)
                {
                    arg.date = time.AddDays(-1).ToString("yyyy-MM-dd");
                }
                var data = OpenCaiApiServices.GetOpenCaiApiData(arg);
                if (data == null)
                {
                    return(list);
                }


                if (data.data != null)
                {
                    if (data.data.Count == 0)
                    {
                        return(list);
                    }

                    for (var i = 0; i < data.data.Count; i++)
                    {
                        var qi    = data.data[i].GetTermStr();
                        var qihao = qi.Length == 8 ? qi : qi.Remove(qi.Length - 3, 1);
                        var tmp   = new YunNanSSCEntity
                        {
                            Id       = int.Parse(qihao),
                            OpenCode = data.data[i].GetOpenCodeStr(),
                            OpenTime = DateTime.Parse(data.data[i].opentime)
                        };
                        list.Add(tmp);
                    }

                    var checkDataHelper = new CheckDataHelper();
                    var dbdata          = services.GetListIn(currentLottery, IsToday)
                                          .ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr());
                    checkDataHelper.CheckData(dbdata, list.ToDictionary(w => w.Id.ToString(), w => w.OpenCode),
                                              Config.Area, currentLottery);
                }
            }
            catch (Exception ee)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ee.Message));
            }

            return(list);
        }
Пример #3
0
        /// <summary>
        ///     从备用站抓取开奖数据 昨天/今天
        /// </summary>
        /// <param name="IsToday"></param>
        /// <returns></returns>
        /// <summary>
        ///     从主站抓取开奖数据 昨天/今天
        /// </summary>
        /// <param name="IsToday"></param>
        /// <returns></returns>
        private List <GuangXiK3Entity> GetDocByMainUrl(bool IsToday = true)
        {
            var list = new List <GuangXiK3Entity>();

            try
            {
                var time = DateTime.Now;
                var arg  = new OpenCaiApiArg
                {
                    code = EnumHelper.GetLotteryCode(SCCLottery.GuangXiK3),
                    // rows = int.Parse(GetPeriodsNumberToDay(time, IsToday)),
                    date = time.ToString("yyyy-MM-dd")
                };
                if (!IsToday)
                {
                    arg.date = time.AddDays(-1).ToString("yyyy-MM-dd");
                }
                var data = OpenCaiApiServices.GetOpenCaiApiData(arg);
                if (data == null)
                {
                    return(list);
                }

                if (data.data != null)
                {
                    if (data.data.Count == 0)
                    {
                        return(list);
                    }

                    for (var i = 0; i < data.data.Count; i++)
                    {
                        var tmp = new GuangXiK3Entity
                        {
                            QiHao       = data.data[i].GetTermStr(),
                            KaiJiangHao = data.data[i].GetOpenCodeStr(),
                            OpenTime    = DateTime.Parse(data.data[i].opentime)
                        };
                        list.Add(tmp);
                    }

                    var checkDataHelper = new CheckDataHelper();
                    var dbdata          = services.GetListIn(currentLottery, IsToday)
                                          .ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr());
                    checkDataHelper.CheckData(dbdata, list.ToDictionary(w => w.QiHao.ToString(), w => w.KaiJiangHao),
                                              Config.Area, currentLottery);
                }
            }
            catch (Exception ee)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ee.Message));
            }

            return(list);
        }
Пример #4
0
        /// <summary>
        /// 获取接口数据
        /// <para>备注:接口支持3种参数模式,分别如下:</para>
        /// <para>1、按最新查询,只需要传入code、rows(如有需要)参数即可</para>
        /// <para>2、按最新查询(批量),只需要传入code(多个用逗号隔开)、rows(如有需要)参数即可</para>
        /// <para>3、按开奖日期查询,只需要传入code、date参数即可</para>
        ///  </summary>
        /// <param name="openCaiApiArg"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static OpenCaiBaseJson GetOpenCaiApiData(OpenCaiApiArg openCaiApiArg, Type type = null)
        {
            OpenCaiBaseJson baseJson = new OpenCaiBaseJson();

            lock (_lock)
            {
                try
                {
                    //按开奖日期查询地址修正
                    string action = !string.IsNullOrEmpty(openCaiApiArg.date) ? "daily" : "newly";
                    //最终接口地址
                    string url = string.Format(ApiHost, GetRequsetArg(openCaiApiArg), action);

                    //组装参数
                    HttpItem item = new HttpItem
                    {
                        Url              = url,
                        Method           = "GET",
                        ContentType      = "application/json",
                        Timeout          = 90 * 1000,
                        ReadWriteTimeout = 90 * 1000,
                        Encoding         = Encoding.UTF8
                    };
                    //开始请求
                    HttpResult result = helper.GetHtml(item);
                    if (result.StatusCode == HttpStatusCode.OK)
                    {
                        string jsonStr = result.Html;
                        if (!string.IsNullOrEmpty(jsonStr))
                        {
                            if (jsonStr.IndexOf("请求频率过快", StringComparison.Ordinal) < 0)
                            {
                                baseJson = jsonStr.JsonToEntity <OpenCaiBaseJson>();
                            }
                            else
                            {
                                log.Debug(type ?? typeof(OpenCaiApiServices), "调用了接口,请求参数:" + openCaiApiArg.TryToJson() + ",请求地址:" + url + "\r\n");
                            }
                        }
                    }
                    else
                    {
                        log.Error(typeof(OpenCaiApiServices), "请求接口[" + url + "]失败,状态码:" + result.StatusCode);
                    }
                }
                catch (Exception e)
                {
                    log.Error(typeof(OpenCaiApiServices), e);
                }
                //finally
                //{
                //    log.Debug(type, "调用了接口,请求参数:" + openCaiApiArg.TryToJson() + "\r\n");
                //}
            }
            return(baseJson);
        }
Пример #5
0
        /// <summary>
        ///     从主站抓取开奖数据 昨天/今天
        /// </summary>
        /// <param name="IsToday"></param>
        /// <returns></returns>
        private Dictionary <string, string> GetDocByMainUrl(bool IsToday = true)
        {
            var result = new Dictionary <string, string>();

            try
            {
                var time = DateTime.Now;
                var arg  = new OpenCaiApiArg
                {
                    code = EnumHelper.GetLotteryCode(SCCLottery.ShanDongKLPK3),
                    // rows = int.Parse(GetPeriodsNumberToDay(time, IsToday)),
                    date = time.ToString("yyyy-MM-dd")
                };
                if (!IsToday)
                {
                    arg.date = time.AddDays(-1).ToString("yyyy-MM-dd");
                }
                var data = OpenCaiApiServices.GetOpenCaiApiData(arg);
                if (data == null)
                {
                    return(result);
                }


                if (data.data != null)
                {
                    if (data.data.Count == 0)
                    {
                        return(result);
                    }

                    for (var i = 0; i < data.data.Count; i++)
                    {
                        var code = data.data[i].GetOpenCodeStr().Split(',');
                        for (var j = 0; j < code.Length; j++)
                        {
                            code[j] = CetapiTOdb(int.Parse(code[j])).ToString();
                        }
                        result.Add(data.data[i].GetTermStr(), string.Join(",", code));
                    }

                    var checkDataHelper = new CheckDataHelper();
                    var dbdata          = services.GetListIn(currentLottery, IsToday)
                                          .ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr());
                    checkDataHelper.CheckData(dbdata, result, Config.Area, currentLottery);
                }
            }
            catch (Exception ee)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ee.Message));
            }

            return(result);
        }
Пример #6
0
        /// <summary>
        ///     从主站抓取开奖数据 昨天/今天
        /// </summary>
        /// <param name="IsToday"></param>
        /// <returns></returns>
        private Dictionary <string, string> GetDocByMainUrl(bool IsToday = true)
        {
            var result = new Dictionary <string, string>();

            try
            {
                var time = DateTime.Now;
                var arg  = new OpenCaiApiArg
                {
                    code = EnumHelper.GetLotteryCode(SCCLottery.LiaoNingKL12),
                    date = time.ToString("yyyy-MM-dd")
                };
                if (!IsToday)
                {
                    arg.date = time.AddDays(-1).ToString("yyyy-MM-dd");
                }
                var data = OpenCaiApiServices.GetOpenCaiApiData(arg);
                if (data == null)
                {
                    return(result);
                }

                if (data.data != null)
                {
                    if (data.data.Count == 0)
                    {
                        return(result);
                    }

                    for (var i = 0; i < data.data.Count; i++)
                    {
                        var qi    = data.data[i].GetTermStr();
                        var qihao = qi;
                        result.Add(qihao, data.data[i].GetOpenCodeStr());
                    }

                    var checkDataHelper = new CheckDataHelper();
                    var dbdata          = services.GetListIn(currentLottery, IsToday)
                                          .ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr());
                    checkDataHelper.CheckData(dbdata, result, Config.Area, currentLottery);
                    // CheckData(dbdata, result);
                }
            }
            catch (Exception ee)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ee.Message));
            }

            return(result);
        }
Пример #7
0
        /// <summary>
        ///     从主要链接查询开奖号码 昨天/今天
        /// </summary>
        /// <param name="IsToday"></param>
        /// <returns></returns>
        private List <OpenCode21Model> GetDocByMainUrl(bool IsToday = true)
        {
            var list = new List <OpenCode21Model>();

            try
            {
                var time = DateTime.Now;
                var arg  = new OpenCaiApiArg
                {
                    code = EnumHelper.GetLotteryCode(SCCLottery.BeiJingKL8),
                    date = time.ToString("yyyy-MM-dd")
                };
                if (!IsToday)
                {
                    arg.date = time.AddDays(-1).ToString("yyyy-MM-dd");
                }
                var data = OpenCaiApiServices.GetOpenCaiApiData(arg);
                if (data == null)
                {
                    return(list);
                }
                if (data.data != null)
                {
                    if (data.data.Count == 0)
                    {
                        return(list);
                    }
                    for (var i = 0; i < data.data.Count; i++)
                    {
                        var tmp     = new OpenCode21Model();
                        var codeAry = data.data[i].GetOpenCodeStr().Split(',');
                        if (codeAry.Length == 21)
                        {
                            tmp.Term       = long.Parse(data.data[i].expect);
                            tmp.OpenTime   = DateTime.Parse(data.data[i].opentime);
                            tmp.OpenCode1  = int.Parse(codeAry[0]);
                            tmp.OpenCode2  = int.Parse(codeAry[1]);
                            tmp.OpenCode3  = int.Parse(codeAry[2]);
                            tmp.OpenCode4  = int.Parse(codeAry[3]);
                            tmp.OpenCode5  = int.Parse(codeAry[4]);
                            tmp.OpenCode6  = int.Parse(codeAry[5]);
                            tmp.OpenCode7  = int.Parse(codeAry[6]);
                            tmp.OpenCode8  = int.Parse(codeAry[7]);
                            tmp.OpenCode9  = int.Parse(codeAry[8]);
                            tmp.OpenCode10 = int.Parse(codeAry[9]);
                            tmp.OpenCode11 = int.Parse(codeAry[10]);
                            tmp.OpenCode12 = int.Parse(codeAry[11]);
                            tmp.OpenCode13 = int.Parse(codeAry[12]);
                            tmp.OpenCode14 = int.Parse(codeAry[13]);
                            tmp.OpenCode15 = int.Parse(codeAry[14]);
                            tmp.OpenCode16 = int.Parse(codeAry[15]);
                            tmp.OpenCode17 = int.Parse(codeAry[16]);
                            tmp.OpenCode18 = int.Parse(codeAry[17]);
                            tmp.OpenCode19 = int.Parse(codeAry[18]);
                            tmp.OpenCode20 = int.Parse(codeAry[19]);
                            tmp.OpenCode21 = int.Parse(codeAry[20]);
                        }

                        list.Add(tmp);
                    }

                    var checkDataHelper = new CheckDataHelper();
                    var dbdata          = services.GetListIn(currentLottery, IsToday);
                    if (dbdata == null)
                    {
                        return(list);
                    }
                    var DATA = dbdata.ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr());
                    checkDataHelper.CheckData(DATA, list.ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr()),
                                              Config.Area, currentLottery);
                }
            }
            catch (Exception ee)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过主要站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ee.Message));
            }

            return(list);
        }