Tcfj31x7.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509
  1. using System;
  2. using System.Collections.Generic;
  3. using CP.Cache;
  4. using CP.Common;
  5. using CP.Model;
  6. namespace CP.Business
  7. {
  8. public class Tcfj31x7
  9. {
  10. /// <summary>
  11. /// 缓存
  12. /// </summary>
  13. static WMCache cache = WMCache.GetCacheService();
  14. /// <summary>
  15. /// cache中的福建31选7所有数据
  16. /// </summary>
  17. /// <returns></returns>
  18. public static List<Tcfj31x7Info> GetTcfj31x7List()
  19. {
  20. string key = CacheKeys.TCFJ31X7_DATALIST;
  21. List<Tcfj31x7Info> list = cache.GetObject<List<Tcfj31x7Info>>(key) as List<Tcfj31x7Info>;
  22. if (list == null)
  23. {
  24. list = Tcfj31x7Data.GetTcfj31x7List();
  25. cache.AddObject(key, list, (int)CacheTime.Data);
  26. }
  27. return list;
  28. }
  29. /// <summary>
  30. /// 按条件筛选的367x数据
  31. /// </summary>
  32. /// <param name="pagesize"></param>
  33. /// <param name="year"></param>
  34. /// <param name="sqi"></param>
  35. /// <param name="eqi"></param>
  36. /// <param name="week"></param>
  37. /// <returns></returns>
  38. public static List<Tcfj31x7Info> GetTcfj31x7List(ref List<Tcfj31x7Info> datalist,int pagesize, int year, int sqi, int eqi, int week = 0)
  39. {
  40. List<Tcfj31x7Info> list = new List<Tcfj31x7Info>();
  41. ///星期x的条件时
  42. ///数据来源不一样.
  43. if (week > 0)
  44. list = GetTcfj31x7WeekList(ref datalist,week);
  45. else
  46. {
  47. list = datalist;
  48. }
  49. List<Tcfj31x7Info> rlist = new List<Tcfj31x7Info>();
  50. if (list != null && list.Count > 0)
  51. {
  52. int size = list.Count;
  53. if (pagesize > 0)
  54. {
  55. for (int i = (size - pagesize); i < size; i++)
  56. {
  57. rlist.Add(list[i]);
  58. }
  59. return rlist;
  60. }
  61. if (year > 0)
  62. {
  63. rlist.Clear();
  64. for (int i = 0; i < size; i++)
  65. {
  66. if (TypeConverter.StrToInt(list[i].qi.ToString().Substring(0, 4), 0) == year)
  67. rlist.Add(list[i]);
  68. }
  69. return rlist;
  70. }
  71. if (sqi > 0 && eqi > 0)
  72. {
  73. rlist.Clear();
  74. int srank = GetTcfj31x7Info(ref datalist,sqi).rank;
  75. int erank = GetTcfj31x7Info(ref datalist,eqi).rank;
  76. if (erank != 0 && srank != 0 && erank > srank)
  77. {
  78. for (int i = srank - 1; i < erank && i < size; i++)
  79. {
  80. rlist.Add(list[i]);
  81. }
  82. }
  83. return rlist;
  84. }
  85. if (pagesize == 0 && year == 0 && eqi == 0 && sqi == 0 && week == 0)
  86. return list;
  87. }
  88. return rlist;
  89. }
  90. /// <summary>
  91. /// 31x7星期x的所有数据列表
  92. /// </summary>
  93. /// <param name="week"></param>
  94. /// <returns></returns>
  95. public static List<Tcfj31x7Info> GetTcfj31x7WeekList(ref List<Tcfj31x7Info> list, int week)
  96. {
  97. List<Tcfj31x7Info> rlist = new List<Tcfj31x7Info>();
  98. if (list != null && list.Count > 0)
  99. {
  100. int size = list.Count;
  101. for (int i = 0; i < size; i++)
  102. {
  103. if (list[i].week == week)
  104. rlist.Add(list[i]);
  105. }
  106. }
  107. return rlist;
  108. }
  109. /// <summary>
  110. /// 取某一期的数据
  111. /// 根据期数值
  112. /// </summary>
  113. /// <param name="qi"></param>
  114. /// <returns></returns>
  115. public static Tcfj31x7Info GetTcfj31x7Info(ref List<Tcfj31x7Info> list, int qi)
  116. {
  117. Tcfj31x7Info info = new Tcfj31x7Info();
  118. int size = list.Count;
  119. for (int i = 0; i < size; i++)
  120. {
  121. if (list[i].qi == qi)
  122. {
  123. info = list[i];
  124. break;
  125. }
  126. }
  127. return info;
  128. }
  129. /// <summary>
  130. /// 取出个排名的上一次数据
  131. /// </summary>
  132. /// <param name="rank"></param>
  133. /// <returns></returns>
  134. public static Tcfj31x7Info GetLastTcfj31x7Info(ref List<Tcfj31x7Info> list, int rank)
  135. {
  136. Tcfj31x7Info info = new Tcfj31x7Info();
  137. if (list != null && list.Count > 0)
  138. {
  139. for (int i = rank - 2; i >= 0; i--)
  140. {
  141. if (list[i].rank == rank - 1)
  142. {
  143. info = list[i];
  144. return info;
  145. }
  146. }
  147. }
  148. return info;
  149. }
  150. /// <summary>
  151. /// 取出个排名的下一次数据, 用于开奖公告
  152. /// </summary>
  153. /// <param name="rank"></param>
  154. /// <returns></returns>
  155. public static Tcfj31x7Info GetNextTcfj31x7Info(ref List<Tcfj31x7Info> list, int rank)
  156. {
  157. Tcfj31x7Info info = new Tcfj31x7Info();
  158. if (list != null && list.Count > 0)
  159. {
  160. for (int i = rank - 1; i < list.Count; i++)
  161. {
  162. if (list[i].rank == rank + 1)
  163. {
  164. info = list[i];
  165. return info;
  166. }
  167. }
  168. }
  169. return info;
  170. }
  171. #region 上一次出现时的情况
  172. /// <summary>
  173. /// 上次某个号码出现时的情况
  174. /// </summary>
  175. /// <param name="val"></param>
  176. /// <param name="rank"></param>
  177. /// <returns></returns>
  178. public static Tcfj31x7Info GetLastTcfj31x7Info(ref List<Tcfj31x7Info> list, int val, int rank)
  179. {
  180. Tcfj31x7Info info = new Tcfj31x7Info();
  181. if (list != null && list.Count > 0)
  182. {
  183. int size = list.Count;
  184. for (int i = rank - 2; i >= 0; i--)
  185. {
  186. List<int> kjh = new List<int> { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5, list[i].n6, list[i].n7 };
  187. if (kjh.Contains(val))
  188. {
  189. info = list[i];
  190. return info;
  191. }
  192. }
  193. }
  194. return info;
  195. }
  196. /// <summary>
  197. /// 上一次和值val的数据
  198. /// </summary>
  199. /// <param name="val"></param>
  200. /// <param name="rank"></param>
  201. /// <returns></returns>
  202. public static Tcfj31x7Info GetLastHzTcfj31x7Info(ref List<Tcfj31x7Info> list, int shz, int ehz, int rank)
  203. {
  204. Tcfj31x7Info info = new Tcfj31x7Info();
  205. if (list != null && list.Count > 0)
  206. {
  207. for (int i = rank - 2; i >= 0; i--)
  208. {
  209. if (list[i].hz >= shz && list[i].hz <= ehz)
  210. {
  211. info = list[i];
  212. return info;
  213. }
  214. }
  215. }
  216. return info;
  217. }
  218. /// <summary>
  219. /// 上一次和值奇偶形态的数据
  220. /// </summary>
  221. /// <param name="xt"></param>
  222. /// <param name="rank"></param>
  223. /// <returns></returns>
  224. public static Tcfj31x7Info GetLastHzJoTcfj31x7Info(ref List<Tcfj31x7Info> list, int xt, int rank)
  225. {
  226. Tcfj31x7Info info = new Tcfj31x7Info();
  227. if (list != null && list.Count > 0)
  228. {
  229. for (int i = rank - 2; i >= 0; i--)
  230. {
  231. if (xt == 0)
  232. {
  233. if (list[i].hz % 2 != 0)
  234. {
  235. info = list[i];
  236. return info;
  237. }
  238. }
  239. if (xt == 1)
  240. {
  241. if (list[i].hz % 2 == 0)
  242. {
  243. info = list[i];
  244. return info;
  245. }
  246. }
  247. }
  248. }
  249. return info;
  250. }
  251. /// <summary>
  252. /// 上一其和尾val的数据
  253. /// </summary>
  254. /// <param name="val"></param>
  255. /// <param name="rank"></param>
  256. /// <returns></returns>
  257. public static Tcfj31x7Info GetLastHwTcfj31x7Info(ref List<Tcfj31x7Info> list, int val, int rank)
  258. {
  259. Tcfj31x7Info info = new Tcfj31x7Info();
  260. if (list != null && list.Count > 0)
  261. {
  262. for (int i = rank - 2; i >= 0; i--)
  263. {
  264. if (ZstUtils.GetHw(list[i].hz) == val)
  265. {
  266. info = list[i];
  267. return info;
  268. }
  269. }
  270. }
  271. return info;
  272. }
  273. /// <summary>
  274. /// 上一次跨度val的数据
  275. /// </summary>
  276. /// <param name="val"></param>
  277. /// <param name="rank"></param>
  278. /// <returns></returns>
  279. public static Tcfj31x7Info GetLastkdTcfj31x7Info(ref List<Tcfj31x7Info> list, int val, int rank)
  280. {
  281. Tcfj31x7Info info = new Tcfj31x7Info();
  282. if (list != null && list.Count > 0)
  283. {
  284. for (int i = rank - 2; i >= 0; i--)
  285. {
  286. if (list[i].kd == val)
  287. {
  288. info = list[i];
  289. return info;
  290. }
  291. }
  292. }
  293. return info;
  294. }
  295. /// <summary>
  296. /// 上一次跨度奇偶的情况
  297. /// </summary>
  298. /// <param name="xt"></param>
  299. /// <param name="rank"></param>
  300. /// <returns></returns>
  301. public static Tcfj31x7Info GetLastKdJoTcfj31x7Info(ref List<Tcfj31x7Info> list, int xt, int rank)
  302. {
  303. Tcfj31x7Info info = new Tcfj31x7Info();
  304. if (list != null && list.Count > 0)
  305. {
  306. for (int i = rank - 2; i >= 0; i--)
  307. {
  308. if (xt == 0)
  309. {
  310. if (list[i].kd % 2 != 0)
  311. {
  312. info = list[i];
  313. return info;
  314. }
  315. }
  316. if (xt == 1)
  317. {
  318. if (list[i].kd % 2 == 0)
  319. {
  320. info = list[i];
  321. return info;
  322. }
  323. }
  324. }
  325. }
  326. return info;
  327. }
  328. /// <summary>
  329. /// 31x7上次跨度大小的情况
  330. /// </summary>
  331. /// <param name="xt"></param>
  332. /// <param name="rank"></param>
  333. /// <returns></returns>
  334. public static Tcfj31x7Info GetLastKdDxTcfj31x7Info(ref List<Tcfj31x7Info> list, int xt, int rank)
  335. {
  336. Tcfj31x7Info info = new Tcfj31x7Info();
  337. if (list != null && list.Count > 0)
  338. {
  339. for (int i = rank - 2; i >= 0; i--)
  340. {
  341. if (xt == 0)
  342. {
  343. if (list[i].kd > 0 && list[i].kd < 18)
  344. {
  345. info = list[i];
  346. return info;
  347. }
  348. }
  349. if (xt == 1)
  350. {
  351. if (list[i].kd > 17 && list[i].kd < 31)
  352. {
  353. info = list[i];
  354. return info;
  355. }
  356. }
  357. }
  358. }
  359. return info;
  360. }
  361. /// <summary>
  362. /// 上次跨度质合的情况
  363. /// </summary>
  364. /// <param name="xt"></param>
  365. /// <param name="rank"></param>
  366. /// <returns></returns>
  367. public static Tcfj31x7Info GetLastKdZhTcfj31x7Info(ref List<Tcfj31x7Info> list, int xt, int rank)
  368. {
  369. Tcfj31x7Info info = new Tcfj31x7Info();
  370. List<int> zh = new List<int> { 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30 };
  371. if (list != null && list.Count > 0)
  372. {
  373. for (int i = rank - 2; i >= 0; i--)
  374. {
  375. if (xt == 0)
  376. {
  377. if (!zh.Contains(list[i].kd))
  378. {
  379. info = list[i];
  380. return info;
  381. }
  382. }
  383. if (xt == 1)
  384. {
  385. if (zh.Contains(list[i].kd))
  386. {
  387. info = list[i];
  388. return info;
  389. }
  390. }
  391. }
  392. }
  393. return info;
  394. }
  395. #endregion
  396. /// <summary>
  397. /// 某期福建31x7前N期的数据
  398. /// 用于计算福建31x7基本号冷热情况
  399. /// </summary>
  400. /// <param name="rank">当前期的排名</param>
  401. /// <param name="pagesize">前n期</param>
  402. /// <returns></returns>
  403. public static List<int> GetTcfj31x7HotList(ref List<Tcfj31x7Info> list, int rank, int pagesize)
  404. {
  405. List<int> rlist = new List<int>();
  406. if (list != null && list.Count > 0)
  407. {
  408. int size = list.Count;
  409. for (int i = rank - 2; i >= (rank - pagesize - 1) && i >= 0; i--)
  410. {
  411. rlist.Add(list[i].n1);
  412. rlist.Add(list[i].n2);
  413. rlist.Add(list[i].n3);
  414. rlist.Add(list[i].n4);
  415. rlist.Add(list[i].n5);
  416. rlist.Add(list[i].n6);
  417. rlist.Add(list[i].n7);
  418. }
  419. }
  420. return rlist;
  421. }
  422. #region 开奖公告相关方法
  423. /// <summary>
  424. /// 福建31选7最近30期开奖数据,完整开奖信息,有缓存
  425. /// </summary>
  426. /// <returns></returns>
  427. public static List<Tcfj31x7LongInfo> GetTcfj31x7ListTop30()
  428. {
  429. string key = string.Format(CacheKeys.TCFJ31X7_KJH_DATA);
  430. List<Tcfj31x7LongInfo> list = cache.GetObject<List<Tcfj31x7LongInfo>>(key) as List<Tcfj31x7LongInfo>;
  431. if (list == null)
  432. {
  433. list = Tcfj31x7Data.GetTcfj31x7Top30();
  434. cache.AddObject(key, list, (int)CacheTime.Kjh);
  435. }
  436. return list;
  437. }
  438. /// <summary>
  439. /// 获取最新一期开奖信息,完整开奖信息,有缓存
  440. /// </summary>
  441. /// <returns></returns>
  442. public static Tcfj31x7LongInfo GetTcfj31x7InfoTop1(ref List<Tcfj31x7LongInfo> list)
  443. {
  444. Tcfj31x7LongInfo info = new Tcfj31x7LongInfo();
  445. if (list.Count > 0)
  446. {
  447. info = list[0];
  448. }
  449. return info;
  450. }
  451. /// <summary>
  452. /// 根据期数返回某期完整开奖信息,无缓存
  453. /// </summary>
  454. /// <param name="qi"></param>
  455. /// <returns></returns>
  456. public static Tcfj31x7LongInfo GetTcfj31x7InfoByqi(int qi)
  457. {
  458. return Tcfj31x7Data.GetTcfj31x7InfoByQi(qi);
  459. }
  460. /// <summary>
  461. /// 返回某年对应的期数列表,有缓存
  462. /// </summary>
  463. /// <param name="year"></param>
  464. /// <returns></returns>
  465. public static List<int> GetTcfj31x7QiListByYear(int year)
  466. {
  467. string key = string.Format(CacheKeys.TCFJ31X7_KJH_DATA + "/qilistbyyear/{0}", year);
  468. List<int> list = cache.GetObject<List<int>>(key) as List<int>;
  469. if (list == null)
  470. {
  471. list = Tcfj31x7Data.GetTcfj31x7QiListByYear(year);
  472. cache.AddObject(key, list, (int)CacheTime.System);
  473. }
  474. return list;
  475. }
  476. #endregion
  477. }
  478. ///end
  479. }