Fchebeihyc3.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395
  1. using CP.Common;
  2. using MC.ORM;
  3. using MySql.Data.MySqlClient;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace CP.Model
  10. {
  11. #region 福彩河北好运彩3
  12. [TableName("fchebeihyc3"), PrimaryKey("id")]
  13. public class Fchebeihyc3Info
  14. {
  15. /// <summary>
  16. /// 期数
  17. /// </summary>
  18. public int qi { get; set; }
  19. /// <summary>
  20. /// 第一个号码
  21. /// </summary>
  22. public int n1 { get; set; }
  23. /// <summary>
  24. /// 第二个号码
  25. /// </summary>
  26. public int n2 { get; set; }
  27. /// <summary>
  28. /// 第三个号码
  29. /// </summary>
  30. public int n3 { get; set; }
  31. /// <summary>
  32. /// 和值
  33. /// </summary>
  34. public int hz { get; set; }
  35. /// <summary>
  36. /// 跨度
  37. /// </summary>
  38. public int kd { get; set; }
  39. /// <summary>
  40. /// AC值
  41. /// </summary>
  42. public int ac { get; set; }
  43. /// <summary>
  44. /// 星期几
  45. /// </summary>
  46. public int week { get; set; }
  47. /// <summary>
  48. /// 开奖日期
  49. /// </summary>
  50. public DateTime date { get; set; }
  51. /// <summary>
  52. /// 在列表中的排名..
  53. /// 用于遗漏计算.
  54. /// </summary>
  55. [Ignore]
  56. public int rank { get; set; }
  57. }
  58. #endregion
  59. #region 福彩河北好运彩3完整模型
  60. /// <summary>
  61. /// 福彩河北好运彩3完整模型
  62. /// </summary>
  63. [TableName("fchebeihyc3"), PrimaryKey("id")]
  64. public class Fchebeihyc3LongInfo : Fchebeihyc3Info
  65. {
  66. /// <summary>
  67. /// 自动编号
  68. /// </summary>
  69. public int id { get; set; }
  70. /// <summary>
  71. /// 一等奖注数
  72. /// </summary>
  73. public string zj1 { get; set; }
  74. /// <summary>
  75. /// 一等奖金额
  76. /// </summary>
  77. public string jo1 { get; set; }
  78. /// <summary>
  79. /// 开奖详情json
  80. /// </summary>
  81. public string winbonus { set; get; }
  82. /// <summary>
  83. /// 添加时间
  84. /// </summary>
  85. public DateTime addtime { get; set; }
  86. /// <summary>
  87. /// 下期奖池
  88. /// </summary>
  89. public string nextmoney { get; set; }
  90. /// <summary>
  91. /// 当期投注金额
  92. /// </summary>
  93. public string tzmoney { get; set; }
  94. /// <summary>
  95. /// 是否复查开奖号
  96. /// </summary>
  97. public int ischeck { get; set; }
  98. /// <summary>
  99. /// 号码
  100. /// </summary>
  101. public string opencode { get; set; }
  102. /// <summary>
  103. /// 第1步(开奖号)状态 -1:未添加 2:完成 3:复查完成
  104. /// </summary>
  105. public int step1state { set; get; }
  106. /// <summary>
  107. /// 第2步(开奖详情)状态 -1:未添加 1:完成一半 2:完成 3:复查完成
  108. /// </summary>
  109. public int step2state { set; get; }
  110. [Ignore]
  111. public string isComplete
  112. {
  113. get
  114. {
  115. if (step2state == 3)
  116. return "<span style='color:green;'>是</span>";
  117. return "<span style='color:red;'>否</span>";
  118. }
  119. }
  120. }
  121. #endregion
  122. #region 福彩河北好运彩3遗漏模型
  123. /// <summary>
  124. /// 福彩河北好运彩3出号走势图上的遗漏模型
  125. /// </summary>
  126. public class Fchebeihyc3MissInfo
  127. {
  128. /// <summary>
  129. /// 名称
  130. /// </summary>
  131. public string name { get; set; }
  132. /// <summary>
  133. /// 号码遗漏
  134. /// </summary>
  135. public int[] ch { get; set; }
  136. }
  137. /// <summary>
  138. /// 和值遗漏模型
  139. /// </summary>
  140. public class Fchebeihyc3HzMissInfo
  141. {
  142. public string name { get; set; }
  143. public int[] hz { get; set; }
  144. public int[] hzjo { get; set; }
  145. public int[] hw { get; set; }
  146. public int[] hwdx { get; set; }
  147. public int[] hwjo { get; set; }
  148. }
  149. /// <summary>
  150. /// 跨度值遗漏模型
  151. /// </summary>
  152. public class Fchebeihyc3KdMissInfo
  153. {
  154. /// <summary>
  155. /// 名称
  156. /// </summary>
  157. public string name { get; set; }
  158. /// <summary>
  159. /// 跨度
  160. /// </summary>
  161. public int[] kd { get; set; }
  162. /// <summary>
  163. ///跨度奇偶
  164. /// </summary>
  165. public int[] jo { get; set; }
  166. /// <summary>
  167. /// 跨度大小
  168. /// </summary>
  169. public int[] dx { get; set; }
  170. /// <summary>
  171. /// 跨度质合
  172. /// </summary>
  173. public int[] zh { get; set; }
  174. }
  175. #endregion
  176. /// <summary>
  177. /// 福彩河北好运彩3的数据库操作.
  178. /// </summary>
  179. public class Fchebeihyc3Data : DataConnect
  180. {
  181. /// <summary>
  182. /// 数据库中取出所有
  183. /// </summary>
  184. /// <returns></returns>
  185. public static List<Fchebeihyc3Info> GetFchebeihyc3List()
  186. {
  187. List<Fchebeihyc3Info> list = new List<Fchebeihyc3Info>();
  188. string sql = string.Format("order by qi asc");
  189. DataConnect dc = new DataConnect();
  190. list = dc.db.Fetch<Fchebeihyc3Info>(sql);
  191. if (list != null && list.Count > 0)
  192. {
  193. for (int i = 0; i < list.Count; i++)
  194. {
  195. list[i].rank = i + 1;
  196. }
  197. }
  198. return list;
  199. }
  200. #region 开奖公告相关方法
  201. /// <summary>
  202. /// 获取开奖列表
  203. /// </summary>
  204. /// <param name="n">条数</param>
  205. /// <param name="type">默认0只有开奖号数据 1 带有开机号 2 带有试机号</param>
  206. /// <returns></returns>
  207. public static List<Fchebeihyc3LongInfo> GetList(int n = 30, bool isall = false)
  208. {
  209. string sql = $"where n1 > -1 order by qi desc limit {n}";
  210. if (isall)
  211. {
  212. sql = $"where n1 > -1 order by qi desc";
  213. }
  214. using (Database db = new Database(mysql, MySqlClientFactory.Instance))
  215. {
  216. return db.Fetch<Fchebeihyc3LongInfo>(sql);
  217. }
  218. }
  219. /// <summary>
  220. /// 获取最新30条开奖信息
  221. /// </summary>
  222. /// <returns></returns>
  223. public static Fchebeihyc3LongInfo GetFcln35X7NewInfo()
  224. {
  225. string sql = string.Format("where n1>-1 order by qi desc limit 1 ");
  226. DataConnect dc = new DataConnect();
  227. return dc.db.SingleOrDefault<Fchebeihyc3LongInfo>(sql);
  228. }
  229. /// <summary>
  230. /// 获取最新30条开奖信息
  231. /// </summary>
  232. /// <returns></returns>
  233. public static List<Fchebeihyc3LongInfo> GetFchebeihyc3Top30(int n = 30)
  234. {
  235. string sql = string.Format($"order by qi desc limit {n}");
  236. DataConnect dc = new DataConnect();
  237. return dc.db.Fetch<Fchebeihyc3LongInfo>(sql);
  238. }
  239. #region 根据期数获取某期开奖信息
  240. public static Fchebeihyc3LongInfo GetFchebeihyc3InfoByQi(int qi)
  241. {
  242. string sql = string.Empty;
  243. if (qi == 0)
  244. sql = string.Format("order by qi desc limit 1");
  245. else
  246. sql = string.Format("where qi={0} limit 1", qi);
  247. DataConnect dc = new DataConnect();
  248. Fchebeihyc3LongInfo info = dc.db.SingleOrDefault<Fchebeihyc3LongInfo>(sql);
  249. return info;
  250. }
  251. #endregion
  252. #region 根据年份取出当年所有期数
  253. /// <summary>
  254. /// 根据年份取出当年所有期数
  255. /// </summary>
  256. /// <param name="year"></param>
  257. /// <returns></returns>
  258. public static List<int> GetFchebeihyc3QiListByYear(int year)
  259. {
  260. List<int> rlist = new List<int>();
  261. string sql = string.Format("where qi like '{0}%' order by qi desc", year);
  262. DataConnect dc = new DataConnect();
  263. var list = dc.db.Fetch<Fchebeihyc3Info>(sql);
  264. if (list != null && list.Count > 0)
  265. {
  266. for (int i = 0; i < list.Count; i++)
  267. {
  268. rlist.Add(list[i].qi);
  269. }
  270. }
  271. return rlist;
  272. }
  273. #endregion
  274. #endregion
  275. #region 开奖号抓取相关数据层方法
  276. private static readonly object _lock = new object();
  277. public static void Add(Fchebeihyc3LongInfo info)
  278. {
  279. if (info == null)
  280. return;
  281. if (info.qi <= 0)
  282. return;
  283. info.opencode = $"{info.n1:00},{info.n2:00},{info.n3:00}";
  284. //和值
  285. info.hz = info.n1 + info.n2 + info.n3;
  286. //星期
  287. info.week = Utils.GetIntWeek(info.date.DayOfWeek.ToString());
  288. List<int> kjh = new List<int> { info.n1, info.n2, info.n3 };
  289. kjh.Sort();
  290. info.n1 = kjh[0];
  291. info.n2 = kjh[1];
  292. info.n3 = kjh[2];
  293. //AC值
  294. string[] kjhstr = { info.n1.ToString(), info.n2.ToString(), info.n3.ToString() };
  295. //检查开奖号是否有重复值
  296. info.ac = ToolUtils.GetAC(kjhstr);
  297. info.kd = kjh.Max() - kjh.Min();
  298. lock (_lock)
  299. {
  300. using (Database db = new Database(mysql, MySqlClientFactory.Instance))
  301. {
  302. if (db.Exists<Fchebeihyc3LongInfo>($"where qi={info.qi}"))
  303. return;
  304. db.Insert(info);
  305. try
  306. {
  307. //更新api
  308. DoHttpHelp.UpdateWebApi(DFEnum.fchebeihyc3.ToString());
  309. }
  310. catch (Exception) { }
  311. }
  312. }
  313. }
  314. public static void Update(Fchebeihyc3LongInfo model)
  315. {
  316. if (model == null)
  317. return;
  318. using (Database db = new Database(mysql, MySqlClientFactory.Instance))
  319. {
  320. var entity = db.SingleOrDefault<Fchebeihyc3LongInfo>(model.id);
  321. db.Update(entity);
  322. }
  323. }
  324. public static Fchebeihyc3LongInfo GetLastOne()
  325. {
  326. using (Database db = new Database(mysql, MySqlClientFactory.Instance))
  327. {
  328. var entity = db.SingleOrDefault<Fchebeihyc3LongInfo>($"order by qi desc limit 1");
  329. return entity ?? new Fchebeihyc3LongInfo();
  330. }
  331. }
  332. #endregion
  333. }
  334. }