using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using CP.Cache; using CP.Common; using CP.Model; namespace CP.Business { /// /// 7位数逻辑操作类 /// sam /// public class Tcjs7ws { /// /// 缓存 /// static WMCache cache = WMCache.GetCacheService(); /// /// 缓存中的7位数所有开奖数据 /// /// public static List GetTcjs7wsList() { string key = string.Format(CacheKeys.TCJS7WS_DATALIST); List list = cache.GetObject>(key) as List; if (list == null) { list = Tcjs7wsData.GetTcjs7wsList(); cache.AddObject(key, list, (int)CacheTime.Data); } return list; } /// /// 列表筛选 /// /// /// /// /// /// /// /// public static List GetTcjs7wsList(ref List list,int pagesize, int year, int sqi, int eqi, int week = 0, int ds = 0) { List rlist = new List(); int size = list.Count; if (pagesize > 0) { for (int i = (size - pagesize); i < size; i++) { rlist.Add(list[i]); } return rlist; } if (year > 0) { rlist.Clear(); for (int i = 0; i < size; i++) { if (TypeConverter.StrToInt(list[i].qi.ToString().Substring(0, 4), 0) == year) rlist.Add(list[i]); } return rlist; } if (week > 0) { rlist.Clear(); List temp = new List(); for (int i = 0; i < size; i++) { if (list[i].week == week) temp.Add(list[i]); } for (int i = (temp.Count - 120); i < temp.Count; i++) { rlist.Add(temp[i]); } return rlist; } if (ds > 0) { rlist.Clear(); List temp = new List(); for (int i = 0; i < size; i++) { if (ds == 1) { if (list[i].qi % 2 != 0) temp.Add(list[i]); } else if (ds == 2) { if (list[i].qi % 2 == 0) temp.Add(list[i]); } } for (int i = (temp.Count - 120); i < temp.Count; i++) { rlist.Add(temp[i]); } return rlist; } if (sqi > 0 && eqi > 0) { rlist.Clear(); int srank = GetTcjs7wsInfo(ref list,sqi).rank; int erank = GetTcjs7wsInfo(ref list,eqi).rank; if (erank != 0 && srank != 0 && erank > srank) { for (int i = srank - 1; i < erank && i < size; i++) { rlist.Add(list[i]); } } return rlist; } if (pagesize == 0 && year == 0 && sqi == 0 && eqi == 0 && week == 0 && ds == 0) return list; return rlist; } public static Tcjs7wsInfo GetTcjs7wsInfo(ref List list, int qi) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = 0; i < size; i++) { if (list[i].qi == qi) { info = list[i]; break; } } return info; } /// /// 按排名取上一次的数据 /// /// /// public static Tcjs7wsInfo GetLastQiTcjs7wsInfo(ref List list, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (list[i].rank == rank - 1) { info = list[i]; return info; } } return info; } /// /// 按排名取下一次的数据 /// /// /// public static Tcjs7wsInfo GetNextQiTcjs7wsInfo(ref List list, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 1; i < list.Count; i++) { if (list[i].rank == rank + 1) { info = list[i]; return info; } } return info; } /// /// 定位号码的上一次情况 /// /// /// /// /// public static Tcjs7wsInfo GetLastTcjs7wsInfo(ref List list, int val, int rank, int type) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (type == 0 && list[i].n1 == val) { info = list[i]; return info; } if (type == 1 && list[i].n2 == val) { info = list[i]; return info; } if (type == 2 && list[i].n3 == val) { info = list[i]; return info; } if (type == 3 && list[i].n4 == val) { info = list[i]; return info; } if (type == 4 && list[i].n5 == val) { info = list[i]; return info; } if (type == 5 && list[i].n6 == val) { info = list[i]; return info; } if (type == 6 && list[i].n7 == val) { info = list[i]; return info; } List kjh = new List() { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5, list[i].n6, list[i].n7 }; //组选分布时 if (type == 7 && kjh.Contains(val)) { info = list[i]; return info; } } return info; } #region 上一次情况的数据 /// /// 上一次和值的情况 /// /// /// /// /// public static Tcjs7wsInfo GetlastTcjs7wsHzInfo(ref List list, int shz, int ehz, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (list[i].hz >= shz && list[i].hz <= ehz) { return list[i]; } } return info; } /// /// 上一次和值大小情况 /// /// /// /// public static Tcjs7wsInfo GetlastTcjs7wsHzDxInfo(ref List list, int val, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.Get7hwhz(list[i].hz) == val) { return list[i]; } } return info; } /// /// 上一次和值奇偶 /// /// /// /// public static Tcjs7wsInfo GetlastTcjs7wsHzJoInfo(ref List list, int val, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetJo(list[i].hz) == val) { return list[i]; } } return info; } /// /// 上一次和值尾数的情况 /// /// /// /// public static Tcjs7wsInfo GetlastTcjs7wsHwInfo(ref List list, int val, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetHw(list[i].hz) == val) { return list[i]; } } return info; } /// /// 上一次和尾大小的情况 /// /// /// /// public static Tcjs7wsInfo GetlastTcjs7wsHwDxInfo(ref List list, int val, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetDx(ZstUtils.GetHw(list[i].hz)) == val) { return list[i]; } } return info; } /// /// 上一次和尾奇偶的情况 /// /// /// /// public static Tcjs7wsInfo GetlastTcjs7wsHwJoInfo(ref List list, int val, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetJo(ZstUtils.GetHw(list[i].hz)) == val) { return list[i]; } } return info; } /// /// 上一次跨度的情况 /// /// /// /// public static Tcjs7wsInfo GetlastTcjs7wsKdInfo(ref List list, int val, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (list[i].kd == val) { return list[i]; } } return info; } /// /// 跨度大小 /// /// /// /// public static Tcjs7wsInfo GetlastTcjs7wsKdDxInfo(ref List list, int val, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetDx(list[i].kd) == val) { return list[i]; } } return info; } /// /// 跨度奇偶 /// /// /// /// public static Tcjs7wsInfo GetlastTcjs7wsKdJoInfo(ref List list, int val, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetJo(list[i].kd) == val) { return list[i]; } } return info; } /// /// 跨度质合 /// /// /// /// public static Tcjs7wsInfo GetlastTcjs7wsKdZhInfo(ref List list, int val, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetZh(list[i].kd) == val) { return list[i]; } } return info; } /// /// 跨度012路 /// /// /// /// public static Tcjs7wsInfo GetlastTcjs7wsKd012Info(ref List list, int val, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.Get012(list[i].kd) == val) { return list[i]; } } return info; } /// /// 跨度振幅 /// /// /// /// public static Tcjs7wsInfo GetlastTcjs7wsKdZfInfo(ref List list, int val, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (i > 0) { if (Math.Abs(list[i].kd - list[i - 1].kd) == val) { return list[i]; } } } return info; } /// /// 上一次冷热的情况 /// /// /// /// /// /// public static Tcjs7wsInfo GetTcjs7wsLastHmHrInfo(ref List list, int type, int size, int rank, bool iscool) { Tcjs7wsInfo info = new Tcjs7wsInfo(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { if (iscool) { if (type == 0) { if (!GetTcjs7wsHmLrInfo(ref list,list[i].n1, type, size, list[i].rank)) return list[i]; } if (type == 1) { if (!GetTcjs7wsHmLrInfo(ref list,list[i].n2, type, size, list[i].rank)) return list[i]; } if (type == 2) { if (!GetTcjs7wsHmLrInfo(ref list,list[i].n3, type, size, list[i].rank)) return list[i]; } if (type == 3) { if (!GetTcjs7wsHmLrInfo(ref list,list[i].n4, type, size, list[i].rank)) return list[i]; } if (type == 4) { if (!GetTcjs7wsHmLrInfo(ref list,list[i].n5, type, size, list[i].rank)) return list[i]; } if (type == 5) { if (!GetTcjs7wsHmLrInfo(ref list,list[i].n6, type, size, list[i].rank)) return list[i]; } if (type == 6) { if (!GetTcjs7wsHmLrInfo(ref list,list[i].n7, type, size, list[i].rank)) return list[i]; } } if (!iscool) { if (type == 0) { if (GetTcjs7wsHmLrInfo(ref list,list[i].n1, type, size, list[i].rank)) return list[i]; } if (type == 1) { if (GetTcjs7wsHmLrInfo(ref list,list[i].n2, type, size, list[i].rank)) return list[i]; } if (type == 2) { if (GetTcjs7wsHmLrInfo(ref list,list[i].n3, type, size, list[i].rank)) return list[i]; } if (type == 3) { if (GetTcjs7wsHmLrInfo(ref list,list[i].n4, type, size, list[i].rank)) return list[i]; } if (type == 4) { if (GetTcjs7wsHmLrInfo(ref list,list[i].n5, type, size, list[i].rank)) return list[i]; } if (type == 5) { if (GetTcjs7wsHmLrInfo(ref list,list[i].n6, type, size, list[i].rank)) return list[i]; } if (type == 6) { if (GetTcjs7wsHmLrInfo(ref list,list[i].n7, type, size, list[i].rank)) return list[i]; } } } } return info; } /// /// 上一次定位大小的情况 /// /// /// /// /// public static Tcjs7wsInfo GetLastTcjs7wsDwDxInfo(ref List list, int val, int rank, int type) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (type == 0 && ZstUtils.GetDx(list[i].n1) == val) { info = list[i]; return info; } if (type == 1 && ZstUtils.GetDx(list[i].n2) == val) { info = list[i]; return info; } if (type == 2 && ZstUtils.GetDx(list[i].n3) == val) { info = list[i]; return info; } if (type == 3 && ZstUtils.GetDx(list[i].n4) == val) { info = list[i]; return info; } if (type == 4 && ZstUtils.GetDx(list[i].n5) == val) { info = list[i]; return info; } if (type == 5 && ZstUtils.GetDx(list[i].n6) == val) { info = list[i]; return info; } if (type == 6 && ZstUtils.GetDx(list[i].n7) == val) { info = list[i]; return info; } } return info; } /// /// 上一次定位奇偶的情况 /// /// /// /// /// public static Tcjs7wsInfo GetLastTcjs7wsDwJoInfo(ref List list, int val, int rank, int type) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (type == 0 && ZstUtils.GetJo(list[i].n1) == val) { info = list[i]; return info; } if (type == 1 && ZstUtils.GetJo(list[i].n2) == val) { info = list[i]; return info; } if (type == 2 && ZstUtils.GetJo(list[i].n3) == val) { info = list[i]; return info; } if (type == 3 && ZstUtils.GetJo(list[i].n4) == val) { info = list[i]; return info; } if (type == 4 && ZstUtils.GetJo(list[i].n5) == val) { info = list[i]; return info; } if (type == 5 && ZstUtils.GetJo(list[i].n6) == val) { info = list[i]; return info; } if (type == 6 && ZstUtils.GetJo(list[i].n7) == val) { info = list[i]; return info; } } return info; } /// /// 定位质合 /// /// /// /// /// public static Tcjs7wsInfo GetLastTcjs7wsDwZhInfo(ref List list, int val, int rank, int type) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (type == 0 && ZstUtils.GetZh(list[i].n1) == val) { info = list[i]; return info; } if (type == 1 && ZstUtils.GetZh(list[i].n2) == val) { info = list[i]; return info; } if (type == 2 && ZstUtils.GetZh(list[i].n3) == val) { info = list[i]; return info; } if (type == 3 && ZstUtils.GetZh(list[i].n4) == val) { info = list[i]; return info; } if (type == 4 && ZstUtils.GetZh(list[i].n5) == val) { info = list[i]; return info; } if (type == 5 && ZstUtils.GetZh(list[i].n6) == val) { info = list[i]; return info; } if (type == 6 && ZstUtils.GetZh(list[i].n7) == val) { info = list[i]; return info; } } return info; } /// /// 定位012路 /// /// /// /// /// public static Tcjs7wsInfo GetLastTcjs7wsDw012Info(ref List list, int val, int rank, int type) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (type == 0 && ZstUtils.Get012(list[i].n1) == val) { info = list[i]; return info; } if (type == 1 && ZstUtils.Get012(list[i].n2) == val) { info = list[i]; return info; } if (type == 2 && ZstUtils.Get012(list[i].n3) == val) { info = list[i]; return info; } if (type == 3 && ZstUtils.Get012(list[i].n4) == val) { info = list[i]; return info; } if (type == 4 && ZstUtils.Get012(list[i].n5) == val) { info = list[i]; return info; } if (type == 5 && ZstUtils.Get012(list[i].n6) == val) { info = list[i]; return info; } if (type == 6 && ZstUtils.Get012(list[i].n7) == val) { info = list[i]; return info; } } return info; } /// /// 定位振幅 /// /// /// /// /// public static Tcjs7wsInfo GetLastTcjs7wsNZfInfo(ref List list, int zf, int rank, int type) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (i > 0) { if (type == 0) { if (Math.Abs(list[i].n1 - list[i - 1].n1) == zf) { info = list[i]; return info; } } if (type == 1) { if (Math.Abs(list[i].n2 - list[i - 1].n2) == zf) { info = list[i]; return info; } } if (type == 2) { if (Math.Abs(list[i].n3 - list[i - 1].n3) == zf) { info = list[i]; return info; } } if (type == 3) { if (Math.Abs(list[i].n4 - list[i - 1].n4) == zf) { info = list[i]; return info; } } if (type == 4) { if (Math.Abs(list[i].n5 - list[i - 1].n5) == zf) { info = list[i]; return info; } } if (type == 5) { if (Math.Abs(list[i].n6 - list[i - 1].n6) == zf) { info = list[i]; return info; } } if (type == 6) { if (Math.Abs(list[i].n7 - list[i - 1].n7) == zf) { info = list[i]; return info; } } } } return info; } /// /// 上次大小比的情况 /// /// /// /// public static Tcjs7wsInfo GetlastTcjs7wsDxbInfo(ref List list, string val, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { List kjh = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5, list[i].n6, list[i].n7 }; if (ZstUtils.GetDxb(kjh, 5).Equals(val)) { return list[i]; } } return info; } /// /// 奇偶比上一次的情况 /// /// /// /// public static Tcjs7wsInfo GetlastTcjs7wsJobInfo(ref List list, string val, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { List kjh = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5, list[i].n6, list[i].n7 }; if (ZstUtils.GetJob(kjh).Equals(val)) { return list[i]; } } return info; } /// /// 质合上一次情况 /// /// /// /// public static Tcjs7wsInfo GetlastTcjs7wsZhbInfo(ref List list, string val, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { List kjh = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5, list[i].n6, list[i].n7 }; if (ZstUtils.GetZhb(kjh).Equals(val)) { return list[i]; } } return info; } #endregion /// /// 号码冷热 /// /// /// /// /// /// public static bool GetTcjs7wsHmLrInfo(ref List list, int val, int type, int size, int rank) { Tcjs7wsInfo info = new Tcjs7wsInfo(); info = GetLastTcjs7wsInfo(ref list,val, rank, type); if ((rank - info.rank) <= size) return true; return false; } /// /// 取出开奖数据中最后一期的开奖数据 /// /// public static Tcjs7wsInfo GetEndTcjs7wsInfo(ref List list) { Tcjs7wsInfo info = new Tcjs7wsInfo(); if (list != null && list.Count > 0) return list[list.Count - 1]; return info; } #region 开奖公告相关方法 /// /// 7位数最近30期开奖数据,完整开奖信息,有缓存 /// /// public static List GetTcjs7wsListTop30() { string key = string.Format(CacheKeys.TCJS7WS_KJH_DATA); List list = cache.GetObject>(key) as List; if (list == null) { list = Tcjs7wsData.GetTcjs7wsTop30(); cache.AddObject(key, list, (int)CacheTime.Kjh); } return list; } /// /// 获取最新一期开奖信息,完整开奖信息,有缓存 /// /// public static Tcjs7wsLongInfo GetTcjs7wsInfoTop1(ref List list) { Tcjs7wsLongInfo info = new Tcjs7wsLongInfo(); if (list.Count > 0) { info = list[0]; } return info; } /// /// 根据期数返回某期完整开奖信息,无缓存 /// /// /// public static Tcjs7wsLongInfo GetTcjs7wsInfoByqi(int qi) { return Tcjs7wsData.GetTcjs7wsInfoByQi(qi); } /// /// 返回某年对应的期数列表,有缓存 /// /// /// public static List GetTcjs7wsQiListByYear(int year) { string key = string.Format(CacheKeys.TCJS7WS_KJH_DATA + "/qilistbyyear/{0}", year); List list = cache.GetObject>(key) as List; if (list == null) { list = Tcjs7wsData.GetTcjs7wsQiListByYear(year); cache.AddObject(key, list, (int)CacheTime.System); } return list; } #endregion ///end } }