/// <summary> /// 保存生成的走势图数据 /// </summary> /// <param name="Lottery">彩种</param> /// <param name="ChartDatas">走势图数据</param> /// <returns></returns> public bool SaveTrendChartList(SCCLottery Lottery, List <TrendChartData> ChartDatas) { try { SqlParameter[] param = null; foreach (var data in ChartDatas) { param = new SqlParameter[] { new SqlParameter("@ChartId", data.ChartId), new SqlParameter("@Term", data.Term), new SqlParameter("@RecordCount", data.RecordCount), new SqlParameter("@AllMaxMiss", data.AllMaxMiss.ArrayToString()), new SqlParameter("@AllTimes", data.AllTimes.ArrayToString()), new SqlParameter("@AllAvgMiss", data.AllAvgMiss.ArrayToString()), new SqlParameter("@LastMiss", data.LastMiss.ArrayToString()), new SqlParameter("@LocalMiss", data.LocalMiss.ArrayToString()), new SqlParameter("@HtmlData", data.HtmlData), new SqlParameter("@ChartType", data.ChartType) }; SqlHelper.ExecuteNonQuery(CommandType.Text, string.Format(SaveTrendChartSql, EnumHelper.GetSCCLotteryTableName(Lottery)), param); } return(true); } catch { } return(false); }
/// <summary> /// 获取前一天失败列表 /// 期号格式形如YYMMDDQQ /// </summary> /// <param name="lottery">彩种名称</param> /// <param name="TotalQNum">当前彩种每天总期数</param> /// <returns></returns> public List <string> GetYesterdayFailQQList(SCCLottery lottery, int TotalQNum) { List <string> result = new List <string>(); var TableName = EnumHelper.GetSCCLotteryTableName(lottery); var sqlString = string.Format(YesterdayListSql, TableName, CommonHelper.SCCSysDateTime.AddDays(-1).ToString("yyyyMMdd")); var ds = SqlHelper.ExecuteDataset(CommandType.Text, sqlString); long tempQiHao = 0; if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { var data = LoadDataList <OpenCode8Model>(ds.Tables[0]); OpenCode8Model item = null; for (var i = 1; i <= TotalQNum; i++) { tempQiHao = Convert.ToInt64(CommonHelper.GenerateYesterdayQiHaoYYMMDDQQ(i)); item = data.Where(R => R.Term == tempQiHao).FirstOrDefault(); if (item == null) { result.Add(tempQiHao.ToString()); } } } else { for (var i = 1; i <= TotalQNum; i++) { tempQiHao = Convert.ToInt64(CommonHelper.GenerateYesterdayQiHaoYYMMDDQQ(i)); result.Add(tempQiHao.ToString()); } } return(result); }
/// <summary> /// 新增彩种开奖数据 /// </summary> /// <param name="lottery">彩种名称</param> /// <param name="model">开奖数据模型</param> /// <returns></returns> public bool AddOpen21Code(SCCLottery lottery, OpenCode21Model model) { var TableName = EnumHelper.GetSCCLotteryTableName(lottery); var sqlString = string.Format(AddItemSql, TableName); var param = new SqlParameter[] { new SqlParameter("@Term", model.Term), new SqlParameter("@OpenCode1", model.OpenCode1), new SqlParameter("@OpenCode2", model.OpenCode2), new SqlParameter("@OpenCode3", model.OpenCode3), new SqlParameter("@OpenCode4", model.OpenCode4), new SqlParameter("@OpenCode5", model.OpenCode5), new SqlParameter("@OpenCode6", model.OpenCode6), new SqlParameter("@OpenCode7", model.OpenCode7), new SqlParameter("@OpenCode8", model.OpenCode8), new SqlParameter("@OpenCode9", model.OpenCode9), new SqlParameter("@OpenCode10", model.OpenCode10), new SqlParameter("@OpenCode11", model.OpenCode11), new SqlParameter("@OpenCode12", model.OpenCode12), new SqlParameter("@OpenCode13", model.OpenCode13), new SqlParameter("@OpenCode14", model.OpenCode14), new SqlParameter("@OpenCode15", model.OpenCode15), new SqlParameter("@OpenCode16", model.OpenCode16), new SqlParameter("@OpenCode17", model.OpenCode17), new SqlParameter("@OpenCode18", model.OpenCode18), new SqlParameter("@OpenCode19", model.OpenCode19), new SqlParameter("@OpenCode20", model.OpenCode20), new SqlParameter("@OpenCode21", model.OpenCode21), new SqlParameter("@OpenTime", model.OpenTime), new SqlParameter("@ID", Guid.NewGuid().ToString().Replace("-", "")) }; var result = SqlHelper.ExecuteNonQuery(CommandType.Text, sqlString, param); return(result > 0); }
/// <summary> /// 获取前一天失败列表 /// 期号格式形如YYMMDDQQQ /// </summary> /// <param name="lottery">彩种名称</param> /// <param name="Terms">当前彩种当天期数列表</param> /// <returns></returns> public List <string> GetYesterdayFailQQQList(SCCLottery lottery, List <string> Terms) { List <string> result = new List <string>(); var TableName = EnumHelper.GetSCCLotteryTableName(lottery); var sqlString = string.Format(YesterdayListSql, TableName, CommonHelper.SCCSysDateTime.AddDays(-1).ToString("yyyyMMdd")); var ds = SqlHelper.ExecuteDataset(CommandType.Text, sqlString); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { var data = LoadDataList <OpenCode21Model>(ds.Tables[0]); OpenCode21Model item = null; foreach (var term in Terms) { item = data.Where(R => R.Term == Convert.ToInt64(term)).FirstOrDefault(); if (item == null) { result.Add(term); } } return(result); } else { return(Terms); } }
/// <summary> /// 组装公共记录 /// </summary> /// <param name="data"></param> /// <param name="type"></param> /// <returns></returns> private string AppendCommonResult(DataTable data, SCCLottery type) { List <GPCSSCHistoryLotteryViewEntity> res = new List <GPCSSCHistoryLotteryViewEntity>(); if (data.Rows.Count > 0) { //总共球个数 int total = type.GetEnumText().TryToInt32(); for (int j = 0; j < data.Rows.Count; j++) { //开奖号集合 List <int> openCodeList = new List <int>(); StringBuilder builder = new StringBuilder(); for (int i = 1; i <= total; i++) { int openCode = data.Rows[j]["OpenCode" + i].TryToInt32(); openCodeList.Add(openCode); } builder.Append(GetOpenCodeTemplate(type, openCodeList)); res.Add(new GPCSSCHistoryLotteryViewEntity { Term = data.Rows[j]["Term"].ToStringEx(), OpenTime = data.Rows[j]["OpenTime"].TryToDateTimeToString("yyyy-MM-dd HH:mm:ss"), NormalOpenCode = builder.ToString(), Span = LotteryUtils.GetSpan(openCodeList).ToString(), SumValue = LotteryUtils.GetSum(openCodeList, GetSumNumberCount(type)).ToString(), }); } } return(res.ToJson()); }
/// <summary> /// 组装查询语句 /// </summary> /// <param name="type">枚举码</param> /// <param name="arg"></param> /// <returns></returns> private string GetSeleteSQL(SCCLottery type, HistoryLotteryArgEnyity arg) { StringBuilder builder = new StringBuilder(); string res = String.Empty; int total = type.GetEnumText().TryToInt32(); string tableName = type.GetSCCLotteryTableName(); for (int i = 1; i <= total; i++) { builder.Append("[OpenCode" + i + "],"); } if (arg.TotalRecord > 0) { res = string.Format(GetLotterySqlByTableNameWithTop, arg.TotalRecord, StringHelper.DelLastChar(builder.ToString(), ","), tableName); } else if (!string.IsNullOrEmpty(arg.StartTime)) { string time = arg.StartTime.CheckDateTime() ? arg.StartTime : DateTimeHelper.Now.AddDays(-7).ToString("yyyy-MM-dd"); res = string.Format(GetLotterySqlByTableNameWithStartTime, StringHelper.DelLastChar(builder.ToString(), ","), tableName, time); } else { res = string.Format(GetLotterySqlByTableNameWithTop, "20", StringHelper.DelLastChar(builder.ToString(), ","), tableName); } return(res); }
/// <summary> /// 获取彩种大小比分割值 /// </summary> /// <param name="type"></param> /// <returns></returns> protected int GetSizeRatioSplitNumber(SCCLottery type) { int res = -1; switch (type) { case SCCLottery.FC3D: res = 4; break; case SCCLottery.SSQ: res = 17; break; case SCCLottery.PL3: res = 5; break; case SCCLottery.DLT: res = 18; break; case SCCLottery.HD15X5: res = 30; break; } return(res); }
/// <summary> /// 新增彩种开奖数据 /// </summary> /// <param name="lottery">彩种名称</param> /// <param name="model">开奖数据模型</param> /// <returns></returns> public bool AddOpen21Code(SCCLottery lottery, OpenCode21Model model) { var TableName = lottery.GetSCCLotteryTableName(); var sqlString = string.Format(AddItemSql, TableName); DbParameter[] param = new DbParameter[] { new SqlParameter("@Term", model.Term), new SqlParameter("@OpenCode1", model.OpenCode1), new SqlParameter("@OpenCode2", model.OpenCode2), new SqlParameter("@OpenCode3", model.OpenCode3), new SqlParameter("@OpenCode4", model.OpenCode4), new SqlParameter("@OpenCode5", model.OpenCode5), new SqlParameter("@OpenCode6", model.OpenCode6), new SqlParameter("@OpenCode7", model.OpenCode7), new SqlParameter("@OpenCode8", model.OpenCode8), new SqlParameter("@OpenCode9", model.OpenCode9), new SqlParameter("@OpenCode10", model.OpenCode10), new SqlParameter("@OpenCode11", model.OpenCode11), new SqlParameter("@OpenCode12", model.OpenCode12), new SqlParameter("@OpenCode13", model.OpenCode13), new SqlParameter("@OpenCode14", model.OpenCode14), new SqlParameter("@OpenCode15", model.OpenCode15), new SqlParameter("@OpenCode16", model.OpenCode16), new SqlParameter("@OpenCode17", model.OpenCode17), new SqlParameter("@OpenCode18", model.OpenCode18), new SqlParameter("@OpenCode19", model.OpenCode19), new SqlParameter("@OpenCode20", model.OpenCode20), new SqlParameter("@OpenCode21", model.OpenCode21), new SqlParameter("@OpenTime", model.OpenTime), new SqlParameter("@ID", Guid.NewGuid().ToString().Replace("-", "")) }; var result = this.BaseRepository(DatabaseLinksEnum.LotteryNumber).ExecuteBySql(sqlString, param); return(result > 0); }
public ActionResult GetTodaysLottery() { Dictionary <string, SCCConfig> dict = GetTodayLotteryDict(); List <TodaysLotteryViewEntity> obj = new List <TodaysLotteryViewEntity>(); foreach (KeyValuePair <string, SCCConfig> pair in dict) { SCCConfig config = pair.Value; SCCLottery type = (SCCLottery)Enum.Parse(typeof(SCCLottery), config.EnumCode, true); //当前彩种今天真实开始开奖时间 DateTime todayRealStartOpentime = (DateTimeHelper.Now.ToString("yyyy-MM-dd") + " " + config.StartHour + ":" + config.StartMinute).TryToDateTime(); //如果当前时间大于当前彩种今天真实开始开奖时间,则忽略 if (DateTimeHelper.Now < todayRealStartOpentime) { string lastTerm = qgfc3Dbll.GetNewTermByTableName(type.GetSCCLotteryTableName()); obj.Add(new TodaysLotteryViewEntity { LotteryName = config.LotteryName, Term = lastTerm, OpenTime = todayRealStartOpentime, MainUrl = config.MainUrl, EnumCode = config.EnumCode }); } } obj = obj.OrderBy(o => o.OpenTime).ToList(); return(Success("操作成功", obj.ToJson())); }
/// <summary> /// 获取开奖历史 /// </summary> /// <param name="type"></param> /// <param name="arg"></param> /// <returns></returns> private string GetResultByEnumCode(SCCLottery type, HistoryLotteryArgEnyity arg) { string res = String.Empty; DataTable data = GetData(type, arg); switch (type) { case SCCLottery.FC3D: res = AppendFC3DResult(data, SCCLottery.FC3D); break; case SCCLottery.SSQ: res = AppendSSQResult(data, SCCLottery.SSQ); break; case SCCLottery.QLC: res = AppendQLCResult(data, SCCLottery.QLC); break; default: res = AppendCommonResult(data, type); break; } return(res); }
/// <summary> /// 查询数据集 /// </summary> /// <param name="type"></param> /// <param name="arg"></param> /// <returns></returns> private DataTable GetData(SCCLottery type, HistoryLotteryArgEnyity arg) { //组装查询语句 string sql = GetSeleteSQL(type, arg); //查询结果 DataTable o = commonBll.ExcuteSqlDataTable(sql, DatabaseLinksEnum.LotteryNumber, null); return(o); }
/// <summary> /// 组装华东15选记录 /// </summary> /// <param name="data"></param> /// <param name="type"></param> /// <returns></returns> private string AppendHD15X5Result(DataTable data, SCCLottery type) { List <DFCHD15X5HistoryLotteryViewEntity> res = new List <DFCHD15X5HistoryLotteryViewEntity>(); if (data.Rows.Count > 0) { //总共球个数 int total = type.GetEnumText().TryToInt32(); for (int j = 0; j < data.Rows.Count; j++) { //开奖号集合 List <int> openCodeList = new List <int>(); List <string> openCodeListStr = new List <string>(); StringBuilder builder = new StringBuilder(); for (int i = 1; i <= total; i++) { int openCode = data.Rows[j]["OpenCode" + i].TryToInt32(); openCodeList.Add(openCode); openCodeListStr.Add(openCode.ToString()); } builder.Append(GetOpenCodeTemplate(type, openCodeList)); string ac; try { ac = LotteryUtils.GetAC(openCodeListStr.ToArray()).ToString(); } catch (Exception) { ac = ""; } res.Add(new DFCHD15X5HistoryLotteryViewEntity { Term = data.Rows[j]["Term"].ToStringEx(), OpenTime = data.Rows[j]["OpenTime"].TryToDateTimeToString("yyyy-MM-dd"), NormalOpenCode = builder.ToString(), Parity = LotteryUtils.GetJOString(openCodeList, "双", "单"), TheSum = LotteryUtils.GetTheSum(openCodeList, GetSizeRatioSplitNumber(type), GetSumNumberCount(type)), Size = LotteryUtils.GetDXString(openCodeList, 5), ThreeZoneRatio = LotteryUtils.Hd15x5SanQu(openCodeList), SizeRatio = LotteryUtils.GetProportionOfDX(openCodeList, 6), ParityRatio = LotteryUtils.GetProportionOfJO(openCodeList), RatioOf012 = LotteryUtils.GetProportionOf012(openCodeList), Span = LotteryUtils.GetSpan(openCodeList).ToString(), AC = ac }); } } return(res.ToJson()); }
/// <summary> /// 获取计算和值球个数 /// </summary> /// <param name="type"></param> /// <returns></returns> protected int GetSumNumberCount(SCCLottery type) { int res = type.GetEnumText().TryToInt32(); //有特殊球的情况下 if (LotteryBallTypeDict.ContainsKey(type.ToString())) { res = LotteryBallTypeDict[type.ToString()][0]; } return(res); }
/// <summary> /// 获取最新一条记录 /// </summary> /// <param name="lottery">彩种名称</param> /// <returns></returns> public OpenCode8Model GetLastItem(SCCLottery lottery) { var TableName = EnumHelper.GetSCCLotteryTableName(lottery); var sqlString = string.Format(LastItemSql, TableName); var ds = SqlHelper.ExecuteDataset(CommandType.Text, sqlString); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { var result = LoadData <OpenCode8Model>(ds.Tables[0].Rows[0]); return(result); } return(null); }
/// <summary> /// 获取最新一条记录 /// </summary> /// <param name="lottery">彩种名称</param> /// <returns></returns> public OpenCode7Model GetLastItem(SCCLottery lottery) { var TableName = lottery.GetSCCLotteryTableName(); var sqlString = string.Format(LastItemSql, TableName); var ds = this.BaseRepository(DatabaseLinksEnum.LotteryNumber).FindTable(sqlString); if (ds != null && ds.DataSet.Tables.Count > 0 && ds.DataSet.Tables[0].Rows.Count > 0) { var result = BaseServices.LoadData <OpenCode7Model>(ds.DataSet.Tables[0].Rows[0]); return(result); } return(null); }
/// <summary> /// 插入下一期开奖信息并且发送邮件对未复查的进行提醒 /// </summary> /// <param name="latestaward"></param> /// <param name="scc"></param> private void SendEmail(string latestaward, SCCLottery scc) { //发送邮件 string address = ConfigHelper.GetValue("ErrorReportTo"); string subject = scc.GetEnumDescription() + "[第" + latestaward + "期]开奖号未及时复查提醒"; string body = "系统管理员请注意:" + scc.GetEnumDescription() + "[第" + latestaward + "期]开奖号未及时复查,请尽快登陆系统后台进行复查操作!<br /><br />" + scc.GetEnumDescription() + "官方参考网址为:<a href='" + GrabTheLatestAwardManager.GetRequestUrlAndXPath(scc)[0] + "'>【点我前往】</a>"; MailHelper.SendByThread(address, subject, body); //同时插入下一期 //int totalBall = string.IsNullOrEmpty(scc.GetEnumText()) ? 0 : scc.GetEnumText().TryToInt32(); //string[] arr = latestaward.Split("、".ToCharArray()); //Insert(totalBall, (arr[arr.Length - 1].TryToInt32() + 1).ToString(), scc); }
/// <summary> /// 新增彩种开奖数据 /// </summary> /// <param name="lottery">彩种名称</param> /// <param name="model">开奖数据模型</param> /// <returns></returns> public bool AddOpen3Code(SCCLottery lottery, OpenCode3Model model) { var TableName = EnumHelper.GetSCCLotteryTableName(lottery); var sqlString = string.Format(AddItemSql, TableName); var param = new SqlParameter[] { new SqlParameter("@Term", model.Term), new SqlParameter("@OpenCode1", model.OpenCode1), new SqlParameter("@OpenCode2", model.OpenCode2), new SqlParameter("@OpenCode3", model.OpenCode3), new SqlParameter("@OpenTime", model.OpenTime), new SqlParameter("@ID", Guid.NewGuid().ToString().Replace("-", "")) }; var result = SqlHelper.ExecuteNonQuery(CommandType.Text, sqlString, param); return(result > 0); }
/// <summary> /// 获取开奖历史 /// </summary> /// <param name="type"></param> /// <param name="arg"></param> /// <returns></returns> private string GetResultByEnumCode(SCCLottery type, HistoryLotteryArgEnyity arg) { string res = String.Empty; DataTable data = GetData(type, arg); switch (type) { case SCCLottery.ShanDongKLPK3: res = AppendShanDongKLPK3Result(data, SCCLottery.ShanDongKLPK3); break; default: res = AppendCommonResult(data, type); break; } return(res); }
/// <summary> /// 获取抓取地址以及XPath /// </summary> /// <param name="scc"></param> /// <returns></returns> public static string[] GetRequestUrlAndXPath(SCCLottery scc) { if (!cacheDictionary.ContainsKey(scc.ToString())) { cacheDictionary.Add(scc.ToString(), new[] { ConfigHelper.GetValue("__" + scc.ToString() + "__URL__"), ConfigHelper.GetValue("__" + scc.ToString() + "__XPATH__") }); } else { cacheDictionary[scc.ToString()] = new[] { ConfigHelper.GetValue("__" + scc.ToString() + "__URL__"), ConfigHelper.GetValue("__" + scc.ToString() + "__XPATH__") }; } return(cacheDictionary[scc.ToString()]); }
/// <summary> /// 新增彩种开奖数据 /// </summary> /// <param name="lottery">彩种名称</param> /// <param name="model">开奖数据模型</param> /// <returns></returns> public bool AddOpen3Code(SCCLottery lottery, OpenCode3Model model) { var TableName = lottery.GetSCCLotteryTableName(); var sqlString = string.Format(AddItemSql, TableName); DbParameter[] param = new DbParameter[] { new SqlParameter("@Term", model.Term), new SqlParameter("@OpenCode1", model.OpenCode1), new SqlParameter("@OpenCode2", model.OpenCode2), new SqlParameter("@OpenCode3", model.OpenCode3), new SqlParameter("@OpenTime", model.OpenTime), new SqlParameter("@ID", Guid.NewGuid().ToString().Replace("-", "")) }; var result = this.BaseRepository(DatabaseLinksEnum.LotteryNumber).ExecuteBySql(sqlString, param); return(result > 0); }
/// <summary> /// 获取开奖列表 /// /// </summary> /// <param name="lottery">彩种名称</param> /// <returns></returns> public List <OpenCode8Model> GetListIn(SCCLottery lottery, bool IsToday) { List <string> result = new List <string>(); var TableName = EnumHelper.GetSCCLotteryTableName(lottery); var sqlString = string.Format(QueryListSQL, TableName, IsToday ? CommonHelper.SCCSysDateTime.ToString("yyyyMMdd") : CommonHelper.SCCSysDateTime.AddDays(-1).ToString("yyyyMMdd")); var ds = SqlHelper.ExecuteDataset(CommandType.Text, sqlString); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { var data = LoadDataList <OpenCode8Model>(ds.Tables[0]); return(data); } else { return(new List <OpenCode8Model>()); } }
/// <summary> /// 获取前一天开奖列表 /// /// </summary> /// <param name="lottery">彩种名称</param> /// <returns></returns> public List <OpenCode8Model> GetYesterdayList(SCCLottery lottery) { List <string> result = new List <string>(); var TableName = EnumHelper.GetSCCLotteryTableName(lottery); var sqlString = string.Format(YesterdayListSql, TableName, CommonHelper.SCCSysDateTime.AddDays(-1).ToString("yyyyMMdd")); var ds = SqlHelper.ExecuteDataset(CommandType.Text, sqlString); long tempQiHao = 0; if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { var data = LoadDataList <OpenCode8Model>(ds.Tables[0]); return(data); } else { return(null); } }
/// <summary> /// 获取开奖历史 /// </summary> /// <param name="type"></param> /// <param name="arg"></param> /// <returns></returns> private string GetResultByEnumCode(SCCLottery type, HistoryLotteryArgEnyity arg) { string res = String.Empty; DataTable data = GetData(type, arg); switch (type) { case SCCLottery.DF6J1: res = AppendCommonResult(data, SCCLottery.DF6J1); break; case SCCLottery.HD15X5: res = AppendHD15X5Result(data, SCCLottery.HD15X5); break; default: res = AppendCommonResult(data, type); break; } return(res); }
/// <summary> /// 组装快乐扑克3记录 /// </summary> /// <param name="data"></param> /// <param name="type"></param> /// <returns></returns> private string AppendShanDongKLPK3Result(DataTable data, SCCLottery type) { //山东快乐扑克3号码规则:号码形如211(红心J),第一位是花色(1为方片,2为红心,3为梅花,4为黑桃),后两位是号码(A为1,J为11,Q为12,K为13) List <GPCKLPK3HistoryLotteryViewEntity> res = new List <GPCKLPK3HistoryLotteryViewEntity>(); if (data.Rows.Count > 0) { //总共球个数 int total = type.GetEnumText().TryToInt32(); for (int j = 0; j < data.Rows.Count; j++) { //开奖号集合 List <int> openCodeList1 = new List <int>(); List <int> openCodeList2 = new List <int>(); StringBuilder builder = new StringBuilder(); for (int i = 1; i <= total; i++) { int openCode1 = data.Rows[j]["OpenCode" + i].ToString().Substring(1, 2).TryToInt32(); openCodeList1.Add(openCode1); int openCode2 = data.Rows[j]["OpenCode" + i].ToString().TryToInt32(); openCodeList2.Add(openCode2); } builder.Append(GetOpenCodeTemplate(type, openCodeList2)); res.Add(new GPCKLPK3HistoryLotteryViewEntity { Term = data.Rows[j]["Term"].ToStringEx(), OpenTime = data.Rows[j]["OpenTime"].TryToDateTimeToString("yyyy-MM-dd HH:mm:ss"), NormalOpenCode = builder.ToString(), SumValue = LotteryUtils.GetSum(openCodeList1, GetSumNumberCount(type)).ToString(), }); } } return(res.ToJson()); }
/// <summary> /// 获取最新期数 /// </summary> /// <param name="scc"></param> /// <returns></returns> public static string GetTheLatestAward(SCCLottery scc) { string res = String.Empty; //读取配置 string[] urlAndXPath = GetRequestUrlAndXPath(scc); if (!string.IsNullOrEmpty(urlAndXPath[0]) && !string.IsNullOrEmpty(urlAndXPath[1])) { //组装参数 HttpItem item = new HttpItem { Url = urlAndXPath[0], Method = "GET", ContentType = "text/html", Timeout = 90 * 1000, ReadWriteTimeout = 90 * 1000, Encoding = Encoding.UTF8 }; //开始请求 HttpResult result = helper.GetHtml(item); if (result.StatusCode == HttpStatusCode.OK) { string html = result.Html; if (!string.IsNullOrEmpty(html)) { HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); HtmlNode node = doc.DocumentNode.SelectSingleNode(urlAndXPath[1]); //获取最终想要的数据 string text = string.IsNullOrEmpty(node.InnerText) ? node.InnerHtml.ReplaceHtmlTag() : node.InnerText; //只获取数字部分 List <string> temp = text.GetValueByRegex("-?[1-9]\\d*"); res = temp.Count > 0 ? temp[0] : ""; } } } return(res); }
/// <summary> /// 组装公共记录 /// </summary> /// <param name="data"></param> /// <param name="type"></param> /// <returns></returns> private string AppendCommonResult(DataTable data, SCCLottery type) { List <GPC11X5HistoryLotteryViewEntity> res = new List <GPC11X5HistoryLotteryViewEntity>(); if (data.Rows.Count > 0) { //总共球个数 int total = type.GetEnumText().TryToInt32(); for (int j = 0; j < data.Rows.Count; j++) { //开奖号集合 List <int> openCodeList = new List <int>(); StringBuilder builder = new StringBuilder(); for (int i = 1; i <= total; i++) { int openCode = data.Rows[j]["OpenCode" + i].TryToInt32(); openCodeList.Add(openCode); } builder.Append(GetOpenCodeTemplate(type, openCodeList)); res.Add(new GPC11X5HistoryLotteryViewEntity { Term = data.Rows[j]["Term"].ToStringEx(), OpenTime = data.Rows[j]["OpenTime"].TryToDateTimeToString("yyyy-MM-dd HH:mm:ss"), NormalOpenCode = builder.ToString(), Parity = LotteryUtils.GetJOString(openCodeList, "双", "单"), TheSum = LotteryUtils.GetTheSum(openCodeList, 30, GetSumNumberCount(type)), Size = LotteryUtils.GetDXString(openCodeList, 5), SizeRatio = LotteryUtils.GetProportionOfDX(openCodeList, 6), ParityRatio = LotteryUtils.GetProportionOfJO(openCodeList), RatioOf012 = LotteryUtils.GetProportionOf012(openCodeList), Span = LotteryUtils.GetSpan(openCodeList).ToString(), }); } } return(res.ToJson()); }
/// <summary> /// 组装FC3D记录 /// </summary> /// <param name="data"></param> /// <param name="type"></param> /// <returns></returns> private string AppendFC3DResult(DataTable data, SCCLottery type) { List <FC3DHistoryLotteryViewEntity> res = new List <FC3DHistoryLotteryViewEntity>(); if (data.Rows.Count > 0) { //总共球个数 int total = type.GetEnumText().TryToInt32(); for (int j = 0; j < data.Rows.Count; j++) { //开奖号集合 List <int> openCodeList = new List <int>(); StringBuilder builder = new StringBuilder(); for (int i = 1; i <= total; i++) { int openCode = data.Rows[j]["OpenCode" + i].TryToInt32(); openCodeList.Add(openCode); } builder.Append(GetOpenCodeTemplate(type, openCodeList)); res.Add(new FC3DHistoryLotteryViewEntity { Term = data.Rows[j]["Term"].ToStringEx(), OpenTime = data.Rows[j]["OpenTime"].TryToDateTimeToString("yyyy-MM-dd"), NormalOpenCode = builder.ToString(), ShiJiHao = data.Rows[j]["ShiJiHao"].ToStringEx(), KaiJiHao = data.Rows[j]["KaiJiHao"].ToStringEx(), ParityRatio = LotteryUtils.GetProportionOfJO(openCodeList), SizeRatio = LotteryUtils.GetProportionOfDX(openCodeList, 4), Parity = LotteryUtils.GetJOString(openCodeList), TheSum = LotteryUtils.GetTheSum(openCodeList, 14, GetSumNumberCount(type)) }); } } return(res.ToJson()); }
/// <summary> /// 新增彩种开奖数据 /// </summary> /// <param name="lottery">彩种名称</param> /// <param name="model">开奖数据模型</param> /// <returns></returns> public bool AddOpen5Code(SCCLottery lottery, OpenCode5Model model) { return(iOpen5Code.AddOpen5Code(lottery, model)); }
/// <summary> /// 获取最新一条记录 /// </summary> /// <param name="lottery">彩种名称</param> /// <returns></returns> public OpenCode5Model GetLastItem(SCCLottery lottery) { return(iOpen5Code.GetLastItem(lottery)); }
/// <summary> /// 纠错参数 /// </summary> /// <param name="dbData"></param> /// <param name="newData"></param> public void CheckData(Dictionary <string, string> dbData, Dictionary <string, string> newData, string Area, SCCLottery Lottery) { try { Dictionary <int, int> result = new Dictionary <int, int>(); foreach (var item in dbData) { var data = newData.SingleOrDefault(w => w.Key == item.Key); if (data.Key != null) { var dbdata = Array.ConvertAll <string, int>(data.Value.Split(','), s => int.Parse(s)).ToList(); var newdata = Array.ConvertAll <string, int>(item.Value.Split(','), s => int.Parse(s)).ToList(); dbdata.Sort(); newdata.Sort(); var dbcode = string.Join(",", dbdata); var newcode = string.Join(",", newdata); if (dbcode != newcode) { result.Add(int.Parse(item.Key), 0); email.AddEmail(Area + Lottery.ToString(), data.Key, DateTime.Now, "数据验证失败" + string.Format("数据库:{0},爬取:{1}", item.Value, data.Value)); } else { result.Add(int.Parse(item.Key), 1); } } } var tableName = EnumHelper.GetSCCLotteryTableName(Lottery); int rt = resultServices.ExecuteResult(tableName, result); if (rt < 0) { email.AddEmail(Area + Lottery.ToString(), "0", DateTime.Now, "执行验证结果结果失败"); } } catch (Exception ex) { log.Error(this.GetType(), string.Format("【{0}】数据验证发生错误,错误信息【{1}】", Area + Lottery.ToString(), ex.Message)); } }