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
}
}