123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using CB.Cache;
- using CB.Entity;
- namespace CB.Data
- {
- public partial class Caches
- {
- /// <summary>
- /// 福彩3D开奖信息缓存
- /// </summary>
- /// <returns></returns>
- public static IList<FCHD11X5Info> GetFCHD11X5List()
- {
- var cache = CBCache.GetCacheService();
- IList<FCHD11X5Info> list = cache.GetObject(CacheKeys.FCHD11X5List) as IList<FCHD11X5Info>;
- if (null == list)
- {
- list = FCHD11X5Service.ToList();
- cache.AddObject(CacheKeys.FCHD11X5List, list);
- }
- return list;
- }
- /// <summary>
- /// 福彩3D开奖信息缓存top n行
- /// </summary>
- /// <param name="topSize">top行(没有值默认传0)</param>
- /// <param name="term">期数(没有值默认传0)</param>
- /// <param name="year">年份(没有值默认传0)</param>
- /// <returns></returns>
- public static List<FCHD11X5Info> GetFCHD11X5List(int topSize, int term, int year)
- {
- List<FCHD11X5Info> result = new List<FCHD11X5Info>();
- var list = GetFCHD11X5List();
- if (null == list || 0 >= list.Count)
- return null;
- 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)
- {
- FCHD11X5Info 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;
- }
- /// <summary>
- /// 返回福彩3D近topSize条开机号、试机号、开奖号列表
- /// </summary>
- /// <param name="topSize">查询记录数</param>
- /// <param name="openCodeType">号码类型</param>
- /// <returns></returns>
- public static IList<FCHD11X5Info> GetFCHD11X5List(int topSize, OpenCodeType openCodeType = OpenCodeType.KaiJiangHao)
- {
- if (0 >= topSize)
- return null;
- var list = GetFCHD11X5List();
- if (null == list || 0 >= list.Count)
- return null;
- IList<FCHD11X5Info> r = new List<FCHD11X5Info>();
- 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 && 0 <= list[i].OpenCode1)
- { r.Add(list[i]); n--; continue; }
- }
- return r;
- }
- /// <summary>
- /// 返回某年的所有开机号、试机号、开奖号列表
- /// </summary>
- /// <param name="year">年份</param>
- /// <param name="openCodeType">号码类型</param>
- /// <returns></returns>
- public static IList<FCHD11X5Info> GetFCHD11X5ListByYear(int year, OpenCodeType openCodeType = OpenCodeType.KaiJiangHao)
- {
- if (0 >= year)
- return null;
- var list = GetFCHD11X5List();
- if (null == list || 0 >= list.Count)
- return null;
- IList<FCHD11X5Info> r = new List<FCHD11X5Info>();
- for (int i = list.Count - 1; i >= 0; i--)
- {
- if (list[i].Term.ToString().StartsWith(year.ToString(), StringComparison.CurrentCultureIgnoreCase))
- {
- if (openCodeType == OpenCodeType.KaiJiHao && !string.IsNullOrEmpty(list[i].KaiJiHao) && -1 == list[i].KaiJiHao.IndexOf("-1"))
- { r.Add(list[i]); continue; }
- if (openCodeType == OpenCodeType.ShiJiHao && !string.IsNullOrEmpty(list[i].ShiJiHao) && -1 == list[i].ShiJiHao.IndexOf("-1"))
- { r.Add(list[i]); continue; }
- if (openCodeType == OpenCodeType.KaiJiangHao && 0 <= list[i].OpenCode1)
- { r.Add(list[i]); continue; }
- }
- }
- return r;
- }
- /// <summary>
- /// 查询相同号码的所有开机号、试机号、开奖号列表
- /// </summary>
- /// <param name="year">年份</param>
- /// <param name="openCodeType">号码类型</param>
- /// <returns></returns>
- public static IList<FCHD11X5Info> GetFCHD11X5ListByNumber(string number, OpenCodeType openCodeType = OpenCodeType.KaiJiangHao)
- {
- if (string.IsNullOrEmpty(number))
- return null;
- var list = GetFCHD11X5List();
- if (null == list || 0 >= list.Count)
- return null;
- IList<FCHD11X5Info> r = new List<FCHD11X5Info>();
- for (int i = list.Count - 1; i >= 0; i--)
- {
- if (openCodeType == OpenCodeType.KaiJiHao && !string.IsNullOrEmpty(list[i].KaiJiHao) && -1 == list[i].KaiJiHao.IndexOf("-1") && -1 != list[i].KaiJiHao.Replace(",", "").IndexOf(number))
- { r.Add(list[i]); continue; }
- if (openCodeType == OpenCodeType.ShiJiHao && !string.IsNullOrEmpty(list[i].ShiJiHao) && -1 == list[i].ShiJiHao.IndexOf("-1") && -1 != list[i].ShiJiHao.Replace(",", "").IndexOf(number))
- { r.Add(list[i]); continue; }
- if (openCodeType == OpenCodeType.KaiJiangHao && 0 <= list[i].OpenCode1 && -1 != number.IndexOf(list[i].OpenCode1.ToString()) && -1 != number.IndexOf(list[i].OpenCode2.ToString())
- && -1 != number.IndexOf(list[i].OpenCode1.ToString()))
- { r.Add(list[i]); continue; }
- }
- return r;
- }
- /// <summary>
- /// 历史同期开奖数据(开机号、试机号、开奖号)
- /// </summary>
- /// <param name="term">当前期数</param>
- /// <param name="openCodeType">开奖号码类型</param>
- /// <returns></returns>
- public static IList<FCHD11X5Info> GetFCHD11X5HistorySameTerm(long term, OpenCodeType openCodeType = OpenCodeType.Normal)
- {
- if (0 >= term)
- return null;
- var list = GetFCHD11X5List();
- if (null == list || 0 >= list.Count)
- return null;
- IList<FCHD11X5Info> r = new List<FCHD11X5Info>();
- long number = term % 1000;
- for (int i = list.Count - 1; i >= 0; i--)
- {
- if (list[i].Term % 1000 == number)
- {
- if (openCodeType == OpenCodeType.Normal)
- { r.Add(list[i]); continue; }
- if (openCodeType == OpenCodeType.KaiJiHao && !string.IsNullOrEmpty(list[i].KaiJiHao) && -1 == list[i].KaiJiHao.IndexOf("-1"))
- { r.Add(list[i]); continue; }
- if (openCodeType == OpenCodeType.ShiJiHao && !string.IsNullOrEmpty(list[i].ShiJiHao) && -1 == list[i].ShiJiHao.IndexOf("-1"))
- { r.Add(list[i]); continue; }
- if (openCodeType == OpenCodeType.KaiJiangHao && 0 <= list[i].OpenCode1)
- { r.Add(list[i]); continue; }
- }
- }
- return r;
- }
- /// <summary>
- /// 根据期数获取福彩3D开奖明细
- /// term=0时,读取最新一期开奖明细;
- /// term=0时并不一定包含开奖号数据,有可能只有开机号数据或试机号数据
- /// </summary>
- /// <param name="term">查询期数</param>
- /// <param name="openCodeType">开奖号码类型;仅term=0时,此参数有效</param>
- /// <returns></returns>
- public static FCHD11X5Info GetFCHD11X5Info(long term, OpenCodeType openCodeType = OpenCodeType.Normal)
- {
- var list = GetFCHD11X5List();
- if (null == list || 0 >= list.Count)
- return null;
- FCHD11X5Info 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 && 0 <= 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 && 0 <= entity.OpenCode1)
- return entity;
- }
- return null;
- }
- foreach (var item in list)
- {
- if (term == item.Term)
- { entity = item; break; }
- }
- return entity;
- }
- }
- }
|