using System;
using System.Collections.Generic;
using System.Linq;
using CB.Cache;
using CB.Common;
using CB.Entity;
namespace CB.Data
{
public partial class Caches
{
//FCSSQ
///
/// 双色球开奖信息列表
///
///
public static IList GetFCSSQList()
{
var cache = CBCache.GetCacheService();
IList list = cache.GetObject(CacheKeys.FCSSQList) as IList;
if (null == list)
{
list = FCSSQService.ToList();
cache.AddObject(CacheKeys.FCSSQList, list);
}
return list;
}
///
/// 双色球开奖信息列表前多少行
///
/// top行(没有值默认传0)
/// 期数(没有值默认传0)
/// 年份(没有值默认传0)
///
public static List GetFCSSQList(int topSize, int term, int year)
{
IList list = GetFCSSQList();
if (null == list || 0 >= list.Count)
return null;
List result = new List();
if (topSize > 0)
{
int n = topSize > list.Count ? 0 : list.Count - topSize;
for (int i = list.Count - 1; i >= n; i--)
{
if (0 <= list[i].OpenCode1) result.Add(list[i]);
//如果没有开奖号的情况就忽略该行数据,并多循环一次到topSize行
else if (n > 0) n--;
}
}
else if (term > 0)
{
FCSSQInfo info = list.FirstOrDefault(x => x.Term == term && 0 <= x.OpenCode1);
if (info != null) result.Add(info);
}
else if (year > 0)
result = list.ToList().FindAll(x => x.Term >= year * 1000 + 1 && x.Term < (year + 1) * 1000 && 0 <= x.OpenCode1);
return result;
}
///
/// 返回双色球近topSize条开机号、试机号、开奖号列表
///
/// 查询记录数
/// 号码类型
///
public static IList GetFCSSQList(int topSize, OpenCodeType openCodeType = OpenCodeType.KaiJiangHao)
{
if (0 >= topSize)
return null;
var list = GetFCSSQList();
if (null == list || 0 >= list.Count)
return null;
IList r = new List();
int n = topSize > list.Count ? list.Count : topSize;
for (int i = list.Count - 1; i >= 0; i--)
{
if (0 == n) { break; }
if (openCodeType == OpenCodeType.KaiJiHao && !string.IsNullOrEmpty(list[i].KaiJiHao) && -1 == list[i].KaiJiHao.IndexOf("-1"))
{ r.Add(list[i]); n--; continue; }
if (openCodeType == OpenCodeType.ShiJiHao && !string.IsNullOrEmpty(list[i].ShiJiHao) && -1 == list[i].ShiJiHao.IndexOf("-1"))
{ r.Add(list[i]); n--; continue; }
if (openCodeType == OpenCodeType.KaiJiangHao && 1 <= list[i].OpenCode1)
{ r.Add(list[i]); n--; continue; }
}
return r;
}
///
/// 根据期数获取双色球开奖明细
/// term=0时,读取最新一期开奖明细;
/// term=0时并不一定包含开奖号数据,有可能只有开机号数据
///
/// 查询期数
/// 查询开奖数据类型;term=0时,此参数有效
/// 开奖数据
public static FCSSQInfo GetFCSSQInfo(long term, OpenCodeType openCodeType = OpenCodeType.Normal)
{
var list = GetFCSSQList();
if (null == list || 0 >= list.Count)
return null;
FCSSQInfo entity = null;
if (0 == term)
{
entity = list[list.Count - 1];
if (openCodeType == OpenCodeType.Normal)
return entity;
if (openCodeType == OpenCodeType.KaiJiHao && !string.IsNullOrEmpty(entity.KaiJiHao) && -1 == entity.KaiJiHao.IndexOf("-1"))
return entity;
if (openCodeType == OpenCodeType.ShiJiHao && !string.IsNullOrEmpty(entity.ShiJiHao) && -1 == entity.ShiJiHao.IndexOf("-1"))
return entity;
if (openCodeType == OpenCodeType.KaiJiangHao && 1 <= entity.OpenCode1)
return entity;
for (int i = list.Count - 2; i >= 0; i--)
{
entity = list[i];
if (openCodeType == OpenCodeType.KaiJiHao && !string.IsNullOrEmpty(entity.KaiJiHao) && -1 == entity.KaiJiHao.IndexOf("-1"))
return entity;
if (openCodeType == OpenCodeType.ShiJiHao && !string.IsNullOrEmpty(entity.ShiJiHao) && -1 == entity.ShiJiHao.IndexOf("-1"))
return entity;
if (openCodeType == OpenCodeType.KaiJiangHao && 1 <= entity.OpenCode1)
return entity;
}
return null;
}
foreach (var item in list)
{
if (term == item.Term)
{
entity = item; break;
}
}
return entity;
}
}
}