Tcbjkzc.cs 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. using System;
  2. using System.Collections.Generic;
  3. using CP.Cache;
  4. using CP.Common;
  5. using CP.Model;
  6. using System.Linq;
  7. namespace CP.Business.gp.other
  8. {
  9. /// <summary>
  10. /// 体彩北京快中彩
  11. /// </summary>
  12. public class Tcbjkzc
  13. {
  14. /// <summary>
  15. /// 缓存
  16. /// </summary>
  17. static WMCache cache = WMCache.GetCacheService();
  18. #region 所有数据
  19. /// <summary>
  20. /// 所有北京快中彩数据
  21. /// </summary>
  22. /// <returns></returns>
  23. public static List<TcbjkzcInfo> GetTcbjkzcList()
  24. {
  25. string key = string.Format(CacheKeys.TCBJKZC_DATALIST);
  26. List<TcbjkzcInfo> list = cache.GetObject<List<TcbjkzcInfo>>(key);
  27. if (list == null)
  28. {
  29. list = TcbjkzcData.GetTcbjkzcList();
  30. cache.AddObject(key, list, (int)CacheTime.Data);
  31. }
  32. foreach (var item in list)
  33. {
  34. int hwitem = item.hz;
  35. while (hwitem > 9)
  36. {
  37. hwitem = hwitem % 10;
  38. }
  39. item.hw = hwitem;
  40. }
  41. return list;
  42. }
  43. #endregion
  44. #region 走势图上的最近xx期数据.
  45. /// <summary>
  46. /// 走势图上的最近xx期数据.
  47. /// </summary>
  48. /// <param name="pagesize">最近n条</param>
  49. /// <param name="year">按年份</param>
  50. /// <param name="sqi">开始期</param>
  51. /// <param name="eqi">结束期</param>
  52. /// <param name="week">星期x</param>
  53. /// <param name="day">另外一个星期x</param>
  54. /// <returns></returns>
  55. public static List<TcbjkzcInfo> GetTcbjkzcList(ref List<TcbjkzcInfo> datalist, int pagesize, int year, int sqi, int eqi, int week = 0, int day = 0)
  56. {
  57. ///数据来源不一样.
  58. List<TcbjkzcInfo> list = new List<TcbjkzcInfo>();
  59. list = datalist;
  60. List<TcbjkzcInfo> rlist = new List<TcbjkzcInfo>();
  61. if (list != null && list.Count > 0)
  62. {
  63. int size = list.Count;
  64. if (pagesize > 0)
  65. {
  66. rlist.Clear();
  67. for (int i = (size - pagesize); i < size; i++)
  68. {
  69. rlist.Add(list[i]);
  70. }
  71. return rlist;
  72. }
  73. if (year > 0)
  74. {
  75. rlist.Clear();
  76. for (int i = 0; i < size; i++)
  77. {
  78. if (TypeConverter.StrToInt(list[i].qi.ToString().Substring(0, 4), 0) == year)
  79. rlist.Add(list[i]);
  80. }
  81. return rlist;
  82. }
  83. if (sqi > 0 && eqi > 0)
  84. {
  85. rlist.Clear();
  86. int srank = GetTcbjkzcInfo(ref list, sqi).rank;
  87. int erank = GetTcbjkzcInfo(ref list, eqi).rank;
  88. if (erank != 0 && srank != 0 && erank > srank)
  89. {
  90. rlist.AddRange(list.Where(m => m.rank >= srank && m.rank <= erank));
  91. //for (int i = srank - 1; i < erank && i < size; i++)
  92. //{
  93. // rlist.Add(list[i]);
  94. //}
  95. }
  96. return rlist;
  97. }
  98. if (day > 0)
  99. {
  100. rlist.Clear();
  101. List<TcbjkzcInfo> temp = new List<TcbjkzcInfo>();
  102. for (int i = (temp.Count - 120); i < temp.Count; i++)
  103. {
  104. rlist.Add(temp[i]);
  105. }
  106. return rlist;
  107. }
  108. if (pagesize == 0 && year == 0 && eqi == 0 && sqi == 0 && day == 0)
  109. return list;
  110. }
  111. return rlist;
  112. }
  113. /// <summary>
  114. /// 取某一期的数据
  115. /// 根据期数值
  116. /// </summary>
  117. /// <param name="qi"></param>
  118. /// <returns></returns>
  119. public static TcbjkzcInfo GetTcbjkzcInfo(ref List<TcbjkzcInfo> list, int qi)
  120. {
  121. TcbjkzcInfo info = new TcbjkzcInfo();
  122. int size = list.Count;
  123. for (int i = 0; i < size; i++)
  124. {
  125. if (list[i].qi == qi)
  126. {
  127. info = list[i];
  128. break;
  129. }
  130. }
  131. return info;
  132. }
  133. #endregion
  134. /// <summary>
  135. /// 根据当前出号和排名,查询出上一次出此号时的数据
  136. /// 主要用在遗漏上
  137. /// </summary>
  138. /// <param name="val"></param>
  139. /// <param name="rank"></param>
  140. /// <returns></returns>
  141. public static TcbjkzcInfo GetLastBlueTcbjkzcInfo(ref List<TcbjkzcInfo> list, int val, int rank)
  142. {
  143. TcbjkzcInfo info = new TcbjkzcInfo();
  144. if (list != null && list.Count > 0)
  145. {
  146. for (int i = rank - 2; i >= 0; i--)
  147. {
  148. if (list[i].n7 == val)
  149. {
  150. info = list[i];
  151. return info;
  152. }
  153. }
  154. }
  155. return info;
  156. }
  157. /// <summary>
  158. /// 根据当前出号和排名,查询出上一次出此号时的数据
  159. /// 主要用在遗漏上
  160. /// </summary>
  161. /// <param name="val"></param>
  162. /// <param name="rank"></param>
  163. /// <returns></returns>
  164. public static TcbjkzcInfo GetLastRedTcbjkzcInfo(ref List<TcbjkzcInfo> list, int val, int rank)
  165. {
  166. TcbjkzcInfo info = new TcbjkzcInfo();
  167. if (list != null && list.Count > 0)
  168. {
  169. for (int i = rank - 2; i >= 0; i--)
  170. {
  171. List<int> kjh = new List<int> { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5, list[i].n6 };
  172. if (kjh.Contains(val))
  173. {
  174. info = list[i];
  175. return info;
  176. }
  177. }
  178. }
  179. return info;
  180. }
  181. /// <summary>
  182. /// 上一次和值val的数据
  183. /// </summary>
  184. /// <param name="val"></param>
  185. /// <param name="rank"></param>
  186. /// <returns></returns>
  187. public static TcbjkzcInfo GetLastHzTcbjkzcInfo(ref List<TcbjkzcInfo> list, int shz, int ehz, int rank)
  188. {
  189. TcbjkzcInfo info = new TcbjkzcInfo();
  190. if (list != null && list.Count > 0)
  191. {
  192. for (int i = rank - 2; i >= 0; i--)
  193. {
  194. if (list[i].hz >= shz && list[i].hz <= ehz)
  195. {
  196. info = list[i];
  197. return info;
  198. }
  199. }
  200. }
  201. return info;
  202. }
  203. /// <summary>
  204. /// 上一次和值奇偶形态的数据
  205. /// </summary>
  206. /// <param name="xt"></param>
  207. /// <param name="rank"></param>
  208. /// <returns></returns>
  209. public static TcbjkzcInfo GetLastHzJoTcbjkzcInfo(ref List<TcbjkzcInfo> list, int xt, int rank)
  210. {
  211. TcbjkzcInfo info = new TcbjkzcInfo();
  212. if (list != null && list.Count > 0)
  213. {
  214. for (int i = rank - 2; i >= 0; i--)
  215. {
  216. if (xt == 0)
  217. {
  218. if (list[i].hz % 2 != 0)
  219. {
  220. info = list[i];
  221. return info;
  222. }
  223. }
  224. if (xt == 1)
  225. {
  226. if (list[i].hz % 2 == 0)
  227. {
  228. info = list[i];
  229. return info;
  230. }
  231. }
  232. }
  233. }
  234. return info;
  235. }
  236. /// <summary>
  237. /// 取出个排名的上一次数据
  238. /// </summary>
  239. /// <param name="rank"></param>
  240. /// <returns></returns>
  241. public static TcbjkzcInfo GetLastTcbjkzcInfo(ref List<TcbjkzcInfo> list, int rank)
  242. {
  243. TcbjkzcInfo info = new TcbjkzcInfo();
  244. if (list != null && list.Count > 0)
  245. {
  246. for (int i = rank - 2; i >= 0; i--)
  247. {
  248. if (list[i].rank == rank - 1)
  249. {
  250. info = list[i];
  251. return info;
  252. }
  253. }
  254. }
  255. return info;
  256. }
  257. /// <summary>
  258. /// 上一其和尾val的数据
  259. /// </summary>
  260. /// <param name="val"></param>
  261. /// <param name="rank"></param>
  262. /// <returns></returns>
  263. public static TcbjkzcInfo GetLastHwTcbjkzcInfo(ref List<TcbjkzcInfo> list, int val, int rank)
  264. {
  265. TcbjkzcInfo info = new TcbjkzcInfo();
  266. if (list != null && list.Count > 0)
  267. {
  268. for (int i = rank - 2; i >= 0; i--)
  269. {
  270. if (list[i].hw == val)
  271. {
  272. info = list[i];
  273. return info;
  274. }
  275. }
  276. }
  277. return info;
  278. }
  279. }
  280. }