Fchd15x5.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Data;
  5. using CP.Common;
  6. using MC.ORM;
  7. using MySql.Data.MySqlClient;
  8. namespace CP.Model
  9. {
  10. #region 走势图遗漏模型
  11. /// <summary>
  12. /// 15x5出号走势图上的遗漏模型
  13. /// </summary>
  14. public class hd15x5ChzsMissInfo
  15. {
  16. public string name { get; set; }
  17. /// <summary>
  18. /// 出号
  19. /// </summary>
  20. public int[] ch { get; set; }
  21. /// <summary>
  22. /// 一区个数
  23. /// </summary>
  24. public int[] w1 { get; set; }
  25. /// <summary>
  26. /// 二区个数
  27. /// </summary>
  28. public int[] w2 { get; set; }
  29. /// <summary>
  30. /// 三区个数
  31. /// </summary>
  32. public int[] w3 { get; set; }
  33. /// <summary>
  34. /// 四连号
  35. /// </summary>
  36. public int[] _4lh { get; set; }
  37. }
  38. /// <summary>
  39. /// 15x5AC值走势图遗漏模型
  40. /// </summary>
  41. public class hd15x5AcMissInfo
  42. {
  43. public string name { get; set; }
  44. public int[] ac { get; set; }
  45. public int[] dx { get; set; }
  46. public int[] jo { get; set; }
  47. public int[] zh { get; set; }
  48. public int[] _012 { get; set; }
  49. public int[] zf { get; set; }
  50. }
  51. /// <summary>
  52. /// 大小走势图上的遗漏模型
  53. /// </summary>
  54. public class hd15x5DxMissInfo
  55. {
  56. /// <summary>
  57. /// 名称
  58. /// </summary>
  59. public string name { get; set; }
  60. /// <summary>
  61. /// 号码1形态
  62. /// </summary>
  63. public int[] w1 { get; set; }
  64. /// <summary>
  65. /// 号码2形态
  66. /// </summary>
  67. public int[] w2 { get; set; }
  68. public int[] w3 { get; set; }
  69. public int[] w4 { get; set; }
  70. public int[] w5 { get; set; }
  71. /// <summary>
  72. /// 比值走势
  73. /// </summary>
  74. public int[] bz { get; set; }
  75. /// <summary>
  76. /// 大个数走势
  77. /// </summary>
  78. public int[] xt1 { get; set; }
  79. /// <summary>
  80. /// 小个数
  81. /// </summary>
  82. public int[] xt2 { get; set; }
  83. }
  84. /// <summary>
  85. /// 大小走势图上的遗漏模型
  86. /// </summary>
  87. public class hd15x5012MissInfo
  88. {
  89. /// <summary>
  90. /// 名称
  91. /// </summary>
  92. public string name { get; set; }
  93. /// <summary>
  94. /// 号码1形态
  95. /// </summary>
  96. public int[] w1 { get; set; }
  97. /// <summary>
  98. /// 号码2形态
  99. /// </summary>
  100. public int[] w2 { get; set; }
  101. public int[] w3 { get; set; }
  102. public int[] w4 { get; set; }
  103. public int[] w5 { get; set; }
  104. /// <summary>
  105. /// 大个数走势
  106. /// </summary>
  107. public int[] xt1 { get; set; }
  108. /// <summary>
  109. /// 小个数
  110. /// </summary>
  111. public int[] xt2 { get; set; }
  112. /// <summary>
  113. /// 3个数
  114. /// </summary>
  115. public int[] xt3 { get; set; }
  116. }
  117. /// <summary>
  118. /// 和值走势图上的遗漏
  119. /// </summary>
  120. public class hd15x5hzMissInfo
  121. {
  122. public string name { get; set; }
  123. public int[] hz { get; set; }
  124. public int[] hzjo { get; set; }
  125. public int[] hz012 { get; set; }
  126. public int[] hw { get; set; }
  127. public int[] hwdx { get; set; }
  128. public int[] hwjo { get; set; }
  129. public int[] hw012 { get; set; }
  130. }
  131. #endregion
  132. #region 华东15选5基本模型
  133. /// <summary>
  134. /// 华东11选5基本模型
  135. /// </summary>
  136. [TableName("fchd15x5"), PrimaryKey("id")]
  137. public class Fchd15x5Info
  138. {
  139. /// <summary>
  140. /// 期数
  141. /// </summary>
  142. public int qi { get; set; }
  143. /// <summary>
  144. /// 开奖号第1位
  145. /// </summary>
  146. public int n1 { get; set; }
  147. /// <summary>
  148. /// 开奖号第2位
  149. /// </summary>
  150. public int n2 { get; set; }
  151. /// <summary>
  152. /// 开奖号第3位
  153. /// </summary>
  154. public int n3 { get; set; }
  155. /// <summary>
  156. /// 开奖号第4位
  157. /// </summary>
  158. public int n4 { get; set; }
  159. /// <summary>
  160. /// 开奖号第5位
  161. /// </summary>
  162. public int n5 { get; set; }
  163. /// <summary>
  164. ///开奖号第6位,特别号
  165. /// </summary>
  166. public int n6 { get; set; }
  167. /// <summary>
  168. /// 开奖号第7位,特别号
  169. /// </summary>
  170. public int n7 { get; set; }
  171. /// <summary>
  172. /// 和值
  173. /// </summary>
  174. public int hz { get; set; }
  175. /// <summary>
  176. /// 跨度
  177. /// </summary>
  178. public int kd { get; set; }
  179. /// <summary>
  180. /// AC值
  181. /// </summary>
  182. public int ac { get; set; }
  183. /// <summary>
  184. /// 星期
  185. /// </summary>
  186. public int week { get; set; }
  187. /// <summary>
  188. /// 开奖日期
  189. /// </summary>
  190. public DateTime date { get; set; }
  191. /// <summary>
  192. /// 在列表中的排名..
  193. /// 用于遗漏计算.
  194. /// </summary>
  195. [Ignore]
  196. public int rank { get; set; }
  197. }
  198. #endregion
  199. #region 华东15选5开奖信息完整模型
  200. /// <summary>
  201. /// 华东15选5开奖信息完整模型
  202. /// </summary>
  203. [TableName("fchd15x5"), PrimaryKey("id")]
  204. public class Fchd15x5LongInfo : Fchd15x5Info
  205. {
  206. /// <summary>
  207. /// 开奖信息自动编号
  208. /// </summary>
  209. public int id { get; set; }
  210. /// <summary>
  211. /// 特等奖注数
  212. /// </summary>
  213. public string zj { get; set; }
  214. /// <summary>
  215. /// 特等奖金额
  216. /// </summary>
  217. public string jo { get; set; }
  218. /// <summary>
  219. /// 一等奖注数
  220. /// </summary>
  221. public string zj1 { get; set; }
  222. /// <summary>
  223. /// 一等奖金额
  224. /// </summary>
  225. public string jo1 { get; set; }
  226. /// <summary>
  227. /// 二等奖注数
  228. /// </summary>
  229. public string zj2 { get; set; }
  230. /// <summary>
  231. /// 二等奖金额
  232. /// </summary>
  233. public string jo2 { get; set; }
  234. /// <summary>
  235. /// 开奖详情json
  236. /// </summary>
  237. public string winbonus { set; get; }
  238. /// <summary>
  239. /// 添加开奖日期
  240. /// </summary>
  241. public DateTime addtime { get; set; }
  242. /// <summary>
  243. /// 投注金额
  244. /// </summary>
  245. public string tzmoney { get; set; }
  246. /// <summary>
  247. /// 奖池
  248. /// </summary>
  249. public string nextmoney { get; set; }
  250. /// <summary>
  251. ///是否复查
  252. /// </summary>
  253. public int ischeck { get; set; }
  254. /// <summary>
  255. /// 号码
  256. /// </summary>
  257. public string opencode { get; set; }
  258. /// <summary>
  259. /// 第1步(开奖号)状态 -1:未添加 2:完成 3:复查完成
  260. /// </summary>
  261. public int step1state { set; get; }
  262. /// <summary>
  263. /// 第2步(开奖详情)状态 -1:未添加 1:完成一半 2:完成 3:复查完成
  264. /// </summary>
  265. public int step2state { set; get; }
  266. [Ignore]
  267. public string isComplete
  268. {
  269. get
  270. {
  271. if (step2state == 3)
  272. return "<span style='color:green;'>是</span>";
  273. return "<span style='color:red;'>否</span>";
  274. }
  275. }
  276. }
  277. #endregion
  278. /// <summary>
  279. /// 华东15选数据库操作.
  280. /// </summary>
  281. public class Fchd15x5Data : DataConnect
  282. {
  283. /// <summary>
  284. /// 所有的华东15x5的数据
  285. /// </summary>
  286. /// <returns></returns>
  287. public static List<Fchd15x5Info> GetFchd15x5List()
  288. {
  289. List<Fchd15x5Info> list = new List<Fchd15x5Info>();
  290. string sql = string.Format("order by qi asc");
  291. DataConnect dc = new DataConnect();
  292. list = dc.db.Fetch<Fchd15x5Info>(sql);
  293. if (list != null && list.Count > 0)
  294. {
  295. for (int i = 0; i < list.Count; i++)
  296. {
  297. list[i].rank = i + 1;
  298. }
  299. }
  300. return list;
  301. }
  302. #region 开奖公告相关方法
  303. /// <summary>
  304. /// 获取开奖列表
  305. /// </summary>
  306. /// <param name="n">条数</param>
  307. /// <param name="type">默认0只有开奖号数据 1 带有开机号 2 带有试机号</param>
  308. /// <returns></returns>
  309. public static List<Fchd15x5LongInfo> GetList(int n = 30, bool isall = false)
  310. {
  311. string sql = $"where n1 > -1 order by qi desc limit {n}";
  312. if (isall)
  313. {
  314. sql = $"where n1 > -1 order by qi desc";
  315. }
  316. using (Database db = new Database(mysql, MySqlClientFactory.Instance))
  317. {
  318. return db.Fetch<Fchd15x5LongInfo>(sql);
  319. }
  320. }
  321. /// <summary>
  322. /// 获取最新开奖信息
  323. /// </summary>
  324. /// <returns></returns>
  325. public static Fchd15x5LongInfo GetFchd15X5NewInfo()
  326. {
  327. string sql = string.Format("where n1>-1 order by qi desc limit 1 ");
  328. DataConnect dc = new DataConnect();
  329. return dc.db.SingleOrDefault<Fchd15x5LongInfo>(sql);
  330. }
  331. /// <summary>
  332. /// 获取最新30条开奖信息
  333. /// </summary>
  334. /// <returns></returns>
  335. public static List<Fchd15x5LongInfo> GetFchd15x5Top30(int n = 30)
  336. {
  337. string sql = string.Format($"order by qi desc limit {n}");
  338. DataConnect dc = new DataConnect();
  339. return dc.db.Fetch<Fchd15x5LongInfo>(sql);
  340. }
  341. /// <summary>
  342. /// 根据期数获取某期开奖信息
  343. /// </summary>
  344. /// <param name="qi"></param>
  345. /// <returns></returns>
  346. public static Fchd15x5LongInfo GetFchd15x5InfoByQi(int qi)
  347. {
  348. string sql = string.Empty;
  349. if (qi == 0)
  350. sql = string.Format("order by qi desc limit 1");
  351. else
  352. sql = string.Format("where qi={0} limit 1", qi);
  353. DataConnect dc = new DataConnect();
  354. Fchd15x5LongInfo info = dc.db.SingleOrDefault<Fchd15x5LongInfo>(sql);
  355. return info;
  356. }
  357. /// <summary>
  358. /// 根据年份取出当年所有期数
  359. /// </summary>
  360. /// <param name="year"></param>
  361. /// <returns></returns>
  362. public static List<int> GetFchd15x5QiListByYear(int year)
  363. {
  364. List<int> rlist = new List<int>();
  365. string sql = string.Format("where qi like '{0}%' order by qi desc", year);
  366. DataConnect dc = new DataConnect();
  367. var list = dc.db.Fetch<Fchd15x5Info>(sql);
  368. if (list != null && list.Count > 0)
  369. {
  370. for (int i = 0; i < list.Count; i++)
  371. {
  372. rlist.Add(list[i].qi);
  373. }
  374. }
  375. return rlist;
  376. }
  377. #endregion
  378. #region 开奖号抓取相关数据层方法
  379. private static readonly object _lock = new object();
  380. public static void Add(Fchd15x5LongInfo info)
  381. {
  382. if (info == null)
  383. return;
  384. if (info.qi <= 0)
  385. return;
  386. info.opencode = $"{info.n1:00},{info.n2:00},{info.n3:00},{info.n4:00},{info.n5:00}";
  387. //和值
  388. info.hz = info.n1 + info.n2 + info.n3 + info.n4 + info.n5;
  389. List<int> kjh = new List<int> { info.n1, info.n2, info.n3, info.n4, info.n5 };
  390. kjh.Sort();
  391. info.n1 = kjh[0];
  392. info.n2 = kjh[1];
  393. info.n3 = kjh[2];
  394. info.n4 = kjh[3];
  395. info.n5 = kjh[4];
  396. //跨度
  397. info.kd = info.n5 - info.n1;
  398. //星期
  399. info.week = Utils.GetIntWeek(info.date.DayOfWeek.ToString());
  400. //AC值
  401. string[] kjhstr = { info.n1.ToString(), info.n2.ToString(), info.n3.ToString(), info.n4.ToString(), info.n5.ToString() };
  402. info.ac = ToolUtils.GetAC(kjhstr);
  403. lock (_lock)
  404. {
  405. using (Database db = new Database(mysql, MySqlClientFactory.Instance))
  406. {
  407. if (db.Exists<Fchd15x5LongInfo>($"where qi={info.qi}"))
  408. return;
  409. db.Insert(info);
  410. try
  411. {
  412. //更新api
  413. DoHttpHelp.UpdateWebApi(DFEnum.fchd15x5.ToString());
  414. }
  415. catch (Exception) { }
  416. }
  417. }
  418. }
  419. public static void Update(Fchd15x5LongInfo model)
  420. {
  421. if (model == null)
  422. return;
  423. using (Database db = new Database(mysql, MySqlClientFactory.Instance))
  424. {
  425. var entity = db.SingleOrDefault<Fchd15x5LongInfo>(model.id);
  426. db.Update(entity);
  427. }
  428. }
  429. public static Fchd15x5LongInfo GetLastOne()
  430. {
  431. using (Database db = new Database(mysql, MySqlClientFactory.Instance))
  432. {
  433. var entity = db.SingleOrDefault<Fchd15x5LongInfo>($"order by qi desc limit 1");
  434. return entity;
  435. }
  436. }
  437. #endregion
  438. }
  439. }