using Cache.Entity;
using Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Cache.Entity.EnumFunctionType;
namespace Cache.Util
{
public static class LottryDataHandle
{
///
/// 东方6+1 转生肖
///
///
///
public static string GetSx(int num)
{
switch (num)
{
case 1:
return "鼠";
case 2:
return "牛";
case 3:
return "虎";
case 4:
return "兔";
case 5:
return "龙";
case 6:
return "蛇";
case 7:
return "马";
case 8:
return "羊";
case 9:
return "猴";
case 10:
return "鸡";
case 11:
return "狗";
case 12:
return "猪";
default:
return "";
}
}
///
///
///
/// 类型名
/// 期数
/// 开奖时间
/// 开奖号
/// 开奖详情没有传""或者null
///
public static LotteryData GetLotteryData(string Typename, int Term, DateTime Opentime,string ID, IList OpenCode, string Detail,string MenuName = "")
{
try
{
LotteryData tmp = new LotteryData()
{
Term = Term.ToString(),
OpenTime = Opentime.ToString(),
LotteryName = EnumFunctionType.GetLotteryName(Typename),
LotteryType = Typename,
MenuName = MenuName,
ID = ID
};
tmp.Details = new List();
LotteryBallType datatype = EnumFunctionType.GetBallType(Typename);
if (datatype != null)
{
tmp.BallCount = datatype.Count;
tmp.RedBall = Array.ConvertAll(OpenCode.Take(datatype.RedCount).ToArray(), s => s.ToString());
if (datatype.BlueCount > 0)
{
tmp.BlueBall = Array.ConvertAll(OpenCode.Skip(datatype.RedCount).ToArray(), s => s.ToString());
}
if (datatype.Count > 1)
{
LotteryDetail hezhi = new LotteryDetail()
{
Label = "和值",
Value = LotteryUtils.GetSum(OpenCode.Take(datatype.RedCount).ToList()).ToString()
};
tmp.Details.Add(hezhi);
LotteryDetail kuadu = new LotteryDetail()
{
Label = "跨度",
Value = LotteryUtils.GetSpan(OpenCode.Take(datatype.RedCount).ToList()).ToString()
};
tmp.Details.Add(kuadu);
LotteryDetail jio = new LotteryDetail()
{
Label = "奇偶比",
Value = LotteryUtils.GetProportionOfJO(OpenCode.Take(datatype.RedCount).ToList())
};
tmp.Details.Add(jio);
if (Typename == "DFC_DF6J1")//东方6+1篮球转生sw
{
int blueball = OpenCode.Skip(datatype.RedCount).ToArray()[0];
tmp.BlueBall = new string[] { GetSx(blueball) };
// Array.ConvertAll(OpenCode.Skip(datatype.RedCount).ToArray(), s => s.ToString());
}
}
}
else
{
if (Typename == "GPC_SDKLPK3")//快乐扑克3单独处理
{
List list = Getklpk3(OpenCode);
tmp.Details = list;
}
else
{
tmp.BallCount = OpenCode.Count;
tmp.RedBall = Array.ConvertAll(OpenCode.ToArray(), s => s.ToString());
}
// tmp.BlueBall = OpenCode.Skip(datatype.RedCount).ToArray();
}
//要大小比的,要三区比的,要转生肖的,有开奖详情的,
if (EnumFunctionType.Sanqu.Contains(Typename))
{
LotteryDetail sanqu = new LotteryDetail()
{
Label = "三区比",
Value = LotteryUtils.SsqSanQu(OpenCode.Take(6).ToList())//三区的目前只有双色球一个
};
tmp.Details.Add(sanqu);
}
//要大小比的
if (EnumFunctionType.DaxiaoType.Contains(Typename))
{
int takenum = EnumFunctionType.GetDaXiaoTake(Typename);
if (takenum == 0)//无take
{
if (EnumFunctionType.GetDaxiaoCount(Typename) == 0)//个数默认
{
LotteryDetail daxiao = new LotteryDetail()
{
Label = "大小比",
Value = LotteryUtils.GetProportionOfDX(OpenCode, EnumFunctionType.GetDaXiaoZJZ(Typename))
};
tmp.Details.Add(daxiao);
}
if (EnumFunctionType.GetDaxiaoCount(Typename) > 0)//指定个数
{
LotteryDetail daxiao = new LotteryDetail()
{
Label = "大小比",
Value = LotteryUtils.GetProportionOfDX(OpenCode, EnumFunctionType.GetDaXiaoZJZ(Typename), EnumFunctionType.GetDaxiaoCount(Typename))
};
tmp.Details.Add(daxiao);
}
}
else //有take
{
if (EnumFunctionType.GetDaxiaoCount(Typename) == 0)//个数默认
{
LotteryDetail daxiao = new LotteryDetail()
{
Label = "大小比",
Value = LotteryUtils.GetProportionOfDX(OpenCode.Take(takenum).ToList(), EnumFunctionType.GetDaXiaoZJZ(Typename))
};
tmp.Details.Add(daxiao);
}
if (EnumFunctionType.GetDaxiaoCount(Typename) > 0)//指定个数
{
LotteryDetail daxiao = new LotteryDetail()
{
Label = "大小比",
Value = LotteryUtils.GetProportionOfDX(OpenCode.Take(takenum).ToList(), EnumFunctionType.GetDaXiaoZJZ(Typename), EnumFunctionType.GetDaxiaoCount(Typename))
};
tmp.Details.Add(daxiao);
}
}
}
if (!string.IsNullOrEmpty(Detail))//开奖详情内容
{
var data = ToData(Detail);
if (data!=null)
{
if (!string.IsNullOrEmpty(data.Trje))
{
tmp.MoneyCount = data.Trje.Replace(",", "");
}
if (!string.IsNullOrEmpty(data.Gdje))
{
tmp.MoneyPond = data.Gdje.Replace(",", "");
}
int takenum = EnumFunctionType.ContainDetailType.Contains(Typename) ? 1 : 2;
List < LotteryResults > list = new List();
if (data.KaiJiangItems!=null)
{
for (int i = 0; i < data.KaiJiangItems.Count; i++)
{
int couttotal = 0;
int.TryParse(data.KaiJiangItems[i].Total, out couttotal);
LotteryResults tmpresults = new LotteryResults() {
LevelName=data.KaiJiangItems[i].Name,
Count= couttotal,
Money=data.KaiJiangItems[i].TotalMoney
};
list.Add(tmpresults);
}
}
tmp.ResultsList = list;
//List list = new List();
//if (Typename == "QGC_PL3" || Typename == "QGC_FC3D")
//{
// list = EnumFunctionType.GetLotteryResultsP3(Detail);
//}
//else if (Typename == "QGC_PL5")
//{
// list = EnumFunctionType.GetLotteryResultsP5(Detail);
//}
//else
//{
// list = EnumFunctionType.GetLotteryResults(Detail, takenum);
//}
}
//string[] results = Detail.Split(new char[] { '^', '|', ',' });
//tmp.MoneyCount = results[0];
//int moneyPond = 0;
//int.TryParse(results[1], out moneyPond);
//tmp.MoneyPond = moneyPond.ToString();
}
return tmp;
}
catch (Exception ee)
{
throw;
}
}
public static T ToData(string obj)
{
try
{
return JsonConvert.DeserializeObject(obj);
}
catch (Exception ee)
{
return default(T);
}
}
///
/// 获取快乐扑克3
///
///
///
public static List Getklpk3(IList OpenCode)
{
List rtlist = new List();
string[] _pokerSuitName = new string[] { "", "fangpian", "meihua", "hongtao", "heitao" };
foreach (var item in OpenCode)
{
LotteryDetail tmp = new LotteryDetail();
var pkSuit = item / 100;
var pknum = item % 100;
var pkstr = pknum.ToString();
if (pknum == 11) pkstr = "J";
else if (pknum == 12) pkstr = "Q";
else if (pknum == 13) pkstr = "K";
else if (pknum == 1) pkstr = "A";
tmp.Value = pkstr;
tmp.Label = _pokerSuitName[pkSuit];
rtlist.Add(tmp);
}
return rtlist;
}
///
}
}