Tcfj36x7.cs 16 KB

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