using System; using System.Collections.Generic; using System.Text; using System.Data; using CP.Common; using MC.ORM; using MySql.Data.MySqlClient; namespace CP.Model { #region 福建22选5基本模型 [TableName("tcfj22x5"), PrimaryKey("id")] public class Tcfj22x5Info { /// /// 期数 /// public int qi { get; set; } /// /// 开奖号第1位 /// public int n1 { get; set; } /// /// 开奖号第2位 /// public int n2 { get; set; } /// /// 开奖号第3位 /// public int n3 { get; set; } /// /// 开奖号第4位 /// public int n4 { get; set; } /// /// 开奖号第5位 /// public int n5 { get; set; } /// /// 和值 /// public int hz { get; set; } /// /// 跨度 /// public int kd { get; set; } /// /// AC值 /// public int ac { get; set; } /// /// 星期 /// public int week { get; set; } /// /// 开奖日期 /// public DateTime date { get; set; } /// /// 在列表中的排名.. /// 用于遗漏计算. /// [Ignore] public int rank { get; set; } ///end } #endregion #region 体彩福建22选5开奖信息完整模型 /// /// 体彩福建22选5开奖信息完整模型 /// [TableName("tcfj22x5"), PrimaryKey("id")] public class Tcfj22x5LongInfo : Tcfj22x5Info { /// /// 开奖信息自动编号 /// public int id { get; set; } /// /// 特等奖注数 /// public string zj { get; set; } /// /// 特等奖金额 /// public string jo { get; set; } /// /// 一等奖注数 /// public string zj1 { get; set; } /// /// 一等奖金额 /// public string jo1 { get; set; } /// /// 二等奖注数 /// public string zj2 { get; set; } /// /// 二等奖金额 /// public string jo2 { get; set; } /// /// 开奖详情json /// public string winbonus { set; get; } /// /// 添加开奖日期 /// public DateTime addtime { get; set; } /// /// 投注金额 /// public string tzmoney { get; set; } /// /// 奖池 /// public string nextmoney { get; set; } /// ///是否复查 /// public int ischeck { get; set; } /// /// 号码 /// public string opencode { get; set; } /// /// 第1步(开奖号)状态 -1:未添加 2:完成 3:复查完成 /// public int step1state { set; get; } /// /// 第2步(开奖详情)状态 -1:未添加 1:完成一半 2:完成 3:复查完成 /// public int step2state { set; get; } [Ignore] public string isComplete { get { if (step2state == 3) return ""; return ""; } } } #endregion #region 走势图上的遗漏模型 /// /// 22x5出号走势图上的遗漏模型 /// public class fj22x5ChzsMissInfo { public string name { get; set; } /// /// 出号 /// public int[] ch { get; set; } /// /// 三连号 /// public int[] _3lh { get; set; } } /// /// 和值走势图上的遗漏 /// public class fj22x5hzMissInfo { public string name { get; set; } public int[] hz { get; set; } public int[] hzjo { get; set; } public int[] hw { get; set; } public int[] hwdx { get; set; } public int[] hwjo { get; set; } } /// /// 22x5AC值走势图遗漏模型 /// public class fj22x5AcMissInfo { public string name { get; set; } public int[] ac { get; set; } public int[] dx { get; set; } public int[] jo { get; set; } public int[] zh { get; set; } public int[] _012 { get; set; } public int[] zf { get; set; } } /// /// 22x5 跨度走势图遗漏模型 /// public class fj22x5KdMissInfo { public string name { get; set; } public int[] kd { get; set; } public int[] dx { get; set; } public int[] jo { get; set; } public int[] zh { get; set; } public int[] _012 { get; set; } /// /// 振幅 /// public int[] zf { get; set; } } /// /// 012路走势图上的遗漏模型 /// public class fj22x5012MissInfo { /// /// 名称 /// public string name { get; set; } /// /// 号码1形态 /// public int[] w1 { get; set; } /// /// 号码2形态 /// public int[] w2 { get; set; } public int[] w3 { get; set; } public int[] w4 { get; set; } public int[] w5 { get; set; } /// /// 大个数走势 /// public int[] xt1 { get; set; } /// /// 小个数 /// public int[] xt2 { get; set; } /// /// 3个数 /// public int[] xt3 { get; set; } } /// /// 大小走势图上的遗漏模型 /// public class fj22x5DxMissInfo { /// /// 名称 /// public string name { get; set; } /// /// 号码1形态 /// public int[] w1 { get; set; } /// /// 号码2形态 /// public int[] w2 { get; set; } public int[] w3 { get; set; } public int[] w4 { get; set; } public int[] w5 { get; set; } /// /// 比值走势 /// public int[] bz { get; set; } /// /// 大个数走势 /// public int[] xt1 { get; set; } /// /// 小个数 /// public int[] xt2 { get; set; } } #endregion /// /// 福建22选5选数据库操作. /// public class Tcfj22x5Data : DataConnect { /// /// 所有的福建22选5的数据 /// /// public static List GetTcfj22x5List() { List list = new List(); string sql = string.Format("order by qi asc"); DataConnect dc = new DataConnect(); list = dc.db.Fetch(sql); if (list != null && list.Count > 0) { for (int i = 0; i < list.Count; i++) { list[i].rank = i + 1; } } return list; } #region 开奖公告相关方法 /// /// 获取开奖列表 /// /// 条数 /// 默认0只有开奖号数据 1 带有开机号 2 带有试机号 /// public static List GetList(int n = 30, bool isall = false) { string sql = $"where n1 > -1 order by qi desc limit {n}"; if (isall) { sql = $"where n1 > -1 order by qi desc"; } using (Database db = new Database(mysql, MySqlClientFactory.Instance)) { return db.Fetch(sql); } } /// /// 获取最新开奖信息 /// /// public static Tcfj22x5LongInfo GetTcfj22X5NewInfo() { string sql = string.Format("where n1>-1 order by qi desc limit 1 "); DataConnect dc = new DataConnect(); return dc.db.SingleOrDefault(sql); } /// /// 获取最新30条开奖信息 /// /// public static List GetTcfj22x5Top30(int n=30) { string sql = string.Format($"order by qi desc limit {n}"); DataConnect dc = new DataConnect(); return dc.db.Fetch(sql); } #region 根据期数获取某期开奖信息 /// /// 根据期数获取某期开奖信息 /// /// /// public static Tcfj22x5LongInfo GetTcfj22x5InfoByQi(int qi) { string sql = string.Empty; if (qi == 0) sql = string.Format("order by qi desc limit 1"); else sql = string.Format("where qi={0} limit 1", qi); DataConnect dc = new DataConnect(); Tcfj22x5LongInfo info = dc.db.SingleOrDefault(sql); return info; } #endregion #region 根据年份取出当年所有期数 /// /// 根据年份取出当年所有期数 /// /// /// public static List GetTcfj22x5QiListByYear(int year) { List rlist = new List(); string sql = string.Format("where qi like '{0}%' order by qi desc", year); DataConnect dc = new DataConnect(); var list = dc.db.Fetch(sql); if (list != null && list.Count > 0) { for (int i = 0; i < list.Count; i++) { rlist.Add(list[i].qi); } } return rlist; } #endregion #endregion #region 开奖号抓取相关数据层方法 private static readonly object _lock = new object(); public static void Add(Tcfj22x5LongInfo info) { if (info == null) return; if (info.qi <= 0) return; info.opencode = $"{info.n1:00},{info.n2:00},{info.n3:00},{info.n4:00},{info.n5:00}"; //和值 info.hz = info.n1 + info.n2 + info.n3 + info.n4 + info.n5; List kjh = new List { info.n1, info.n2, info.n3, info.n4, info.n5 }; kjh.Sort(); info.n1 = kjh[0]; info.n2 = kjh[1]; info.n3 = kjh[2]; info.n4 = kjh[3]; info.n5 = kjh[4]; //跨度 info.kd = info.n5 - info.n1; //星期 info.week = Utils.GetIntWeek(info.date.DayOfWeek.ToString()); //AC值 string[] kjhstr = { info.n1.ToString(), info.n2.ToString(), info.n3.ToString(), info.n4.ToString(), info.n5.ToString() }; info.ac = ToolUtils.GetAC(kjhstr); lock (_lock) { using (Database db = new Database(mysql, MySqlClientFactory.Instance)) { if (db.Exists($"where qi={info.qi}")) return; db.Insert(info); try { //更新api DoHttpHelp.UpdateWebApi(DFEnum.tcfj22x5.ToString()); } catch (Exception) { } } } } public static void Update(Tcfj22x5LongInfo model) { if (model == null) return; using (Database db = new Database(mysql, MySqlClientFactory.Instance)) { var entity = db.SingleOrDefault(model.id); db.Update(entity); } } public static Tcfj22x5LongInfo GetLastOne() { using (Database db = new Database(mysql, MySqlClientFactory.Instance)) { var entity = db.SingleOrDefault($"order by qi desc limit 1"); return entity; } } #endregion } }