123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488 |
-
- using Common;
- using Models;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Business.Util
- {
- public static class LottryDataHandle
- {
- private static Dictionary<string, LotteryCode> MlotteryCode;
- static LottryDataHandle()
- {
- MlotteryCode = new Dictionary<string, LotteryCode>();
- }
- /// <summary>
- /// 东方6+1 转生肖
- /// </summary>
- /// <param name="num"></param>
- /// <returns></returns>
- 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 "";
- }
- }
- public static string GetJiJie(int num)
- {
- switch (num)
- {
- case 1: return "春";
- case 2: return "夏";
- case 3: return "秋";
- case 4: return "冬";
- default:
- return "";
- }
- }
- public static string GetFangWei(int num)
- {
- switch (num)
- {
- case 1: return "东";
- case 2: return "南";
- case 3: return "西";
- case 4: return "北";
- default:
- return "";
- }
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="Typename">类型名</param>
- /// <param name="Term">期数</param>
- /// <param name="Opentime">开奖时间</param>
- /// <param name="OpenCode">开奖号</param>
- /// <param name="Detail">开奖详情没有传""或者null</param>
- /// <returns></returns>
- public static LotteryData GetLotteryData(string Typename, int Term, DateTime Opentime, string ID, IList<int> OpenCode, string Detail, string MenuName = "", string KaiJiHao = "", string ShiJiHao = "")
- {
- try
- {
- var lotteryCode = GetLotteryCode(Typename);
- OpenCode = OpenCode.Take(lotteryCode.BallCount).ToArray();
- LotteryData tmp = new LotteryData()
- {
- Term = Term.ToString(),
- OpenTime = Opentime.ToString(),
- LotteryName = lotteryCode.LotteryName,
- LotteryType = Typename,
- MenuName = MenuName,
- ID = ID,
- KJTime=lotteryCode.KJTime,
- StartHour=lotteryCode.StartHour,
- StartMinute=lotteryCode.StartMinute,
- Interval=lotteryCode.Interval,
- SkipDate=lotteryCode.SkipDate,
- KaiJiHao=KaiJiHao,
- ShiJiHao=ShiJiHao,
- DaXiaoZJZ=lotteryCode.DaXiaoZJZ,
- LastTermOfLastYear=GetLastTermOfLastYear(lotteryCode.KJTime)
- };
- tmp.Details = new List<LotteryDetail>();
- //LotteryBallType datatype = EnumFunctionType.GetBallType(Typename);
- if (lotteryCode != null)
- {
- if (Typename == SCCLottery.GP_KLPK3_ShanDong.ToString())//快乐扑克3单独处理
- {
- List<LotteryDetail> list = Getklpk3(OpenCode);
- tmp.Details = list;
- }
-
- else
- {
- tmp.BallCount = lotteryCode.BallCount;
- tmp.RedBall = Array.ConvertAll<int, string>(OpenCode.Take(lotteryCode.RedCount).ToArray(), s => s.ToString());
- if (lotteryCode.BlueCount > 0)
- {
- tmp.BlueBall = Array.ConvertAll<int, string>(OpenCode.Skip(lotteryCode.RedCount).ToArray(), s => s.ToString());
- }
- if (lotteryCode.BallCount > 1)
- {
- LotteryDetail hezhi = new LotteryDetail()
- {
- Label = "和值",
- Value = LotteryUtils.GetSum(OpenCode.Take(lotteryCode.RedCount).ToList()).ToString()
- };
- tmp.Details.Add(hezhi);
- LotteryDetail kuadu = new LotteryDetail()
- {
- Label = "跨度",
- Value = LotteryUtils.GetSpan(OpenCode.Take(lotteryCode.RedCount).ToList()).ToString()
- };
- tmp.Details.Add(kuadu);
- LotteryDetail jio = new LotteryDetail()
- {
- Label = "奇偶比",
- Value = LotteryUtils.GetProportionOfJO(OpenCode.Take(lotteryCode.RedCount).ToList())
- };
- tmp.Details.Add(jio);
- LotteryDetail zihebi = new LotteryDetail()
- {
- Label = "质合比",
- Value = LotteryUtils.GetProportionOfZh(OpenCode)
- };
- tmp.Details.Add(zihebi);
- LotteryDetail jioxt = new LotteryDetail()
- {
- Label = "奇偶形态",
- Value = LotteryUtils.GetJOString(OpenCode)
- };
- tmp.Details.Add(jioxt);
- LotteryDetail dxxt = new LotteryDetail()
- {
- Label = "大小形态",
- Value = LotteryUtils.GetDXString(OpenCode, lotteryCode.DaXiaoZJZ)
- };
- tmp.Details.Add(dxxt);
- LotteryDetail zotgsb = new LotteryDetail()
- {
- Label = "012路个数比",
- Value = LotteryUtils.GetProportionOf012(OpenCode)
- };
- tmp.Details.Add(zotgsb);
- LotteryDetail hzxt = new LotteryDetail()
- {
- Label = "和值特征",
- //Value= LotteryUtils.ge()
- };
- if (Typename == SCCLottery.DF_DF6J1.ToString())//东方6+1篮球转生sw
- {
- int blueball = OpenCode.Skip(lotteryCode.RedCount).ToArray()[0];
- tmp.BlueBall = new string[] { GetSx(blueball) };
- // Array.ConvertAll<int, string>(OpenCode.Skip(datatype.RedCount).ToArray(), s => s.ToString());
- }
- if (Typename==SCCLottery.DF_HC1_GuangDong.ToString())
- {
- int shengxiao = OpenCode.Skip(lotteryCode.RedCount).ToArray()[0];
- int jijie = OpenCode.Skip(lotteryCode.RedCount).ToArray()[1];
- int fangxiang = OpenCode.Skip(lotteryCode.RedCount).ToArray()[2];
- tmp.BlueBall = new string[] { GetSx(shengxiao),GetJiJie(jijie),GetFangWei(fangxiang) };
- }
- }
- }
- }
- else
- {
- tmp.BallCount = OpenCode.Count;
- tmp.RedBall = Array.ConvertAll<int, string>(OpenCode.ToArray(), s => s.ToString());
- // tmp.BlueBall = OpenCode.Skip(datatype.RedCount).ToArray();
- }
- //开奖号码补0
- if (OpenCode.Max()>=10&& Typename != SCCLottery.DF_HC1_GuangDong.ToString()&& Typename != SCCLottery.DF_DF6J1.ToString()&& Typename != SCCLottery.GP_KLPK3_ShanDong.ToString())
- {
- if (tmp.RedBall!=null)
- {
- tmp.RedBall = tmp.RedBall.Select(w => w.PadLeft(2, '0')).ToArray();
- }
- if (tmp.BlueBall!=null)
- {
- tmp.BlueBall = tmp.BlueBall.Select(w => w.PadLeft(2, '0')).ToArray();
- }
-
-
- }
- //要大小比的,要三区比的,要转生肖的,有开奖详情的,
- if (lotteryCode.SanQu>0)//EnumFunctionType.Sanqu.Contains(Typename)
- {
- LotteryDetail sanqu = new LotteryDetail()
- {
- Label = "三区比",
- Value = LotteryUtils.SsqSanQu(OpenCode.Take(6).ToList())//三区的目前只有双色球一个
- };
- tmp.Details.Add(sanqu);
- }
- //要大小比的
- if (lotteryCode.DataXiao>0)//EnumFunctionType.DaxiaoType.Contains(Typename)
- {
- int takenum = lotteryCode.DaxiaoTake;//EnumFunctionType.GetDaXiaoTake(Typename);
- if (takenum == 0)//无take
- {
- if (lotteryCode.DaXiaoCount==0)//EnumFunctionType.GetDaxiaoCount(Typename) == 0个数默认
- {
- LotteryDetail daxiao = new LotteryDetail()
- {
- Label = "大小比",
- Value = LotteryUtils.GetProportionOfDX(OpenCode, lotteryCode.DaXiaoZJZ)
- };
- tmp.Details.Add(daxiao);
- }
- if (lotteryCode.DaXiaoCount> 0)//EnumFunctionType.GetDaxiaoCount(Typename) 指定个数
- {
- LotteryDetail daxiao = new LotteryDetail()
- {
- Label = "大小比",
- Value = LotteryUtils.GetProportionOfDX(OpenCode, lotteryCode.DaXiaoZJZ,lotteryCode.DaXiaoCount)//EnumFunctionType.GetDaxiaoCount(Typename)EnumFunctionType.GetDaXiaoZJZ(Typename)
- };
- tmp.Details.Add(daxiao);
- }
- }
- else //有take
- {
- if (lotteryCode.DaXiaoCount == 0)//EnumFunctionType.GetDaxiaoCount(Typename)个数默认
- {
- LotteryDetail daxiao = new LotteryDetail()
- {
- Label = "大小比",
- Value = LotteryUtils.GetProportionOfDX(OpenCode.Take(takenum).ToList(),lotteryCode.DaXiaoZJZ )//EnumFunctionType.GetDaXiaoZJZ(Typename)
- };
- tmp.Details.Add(daxiao);
- }
- if ( lotteryCode.DaXiaoCount> 0)//EnumFunctionType.GetDaxiaoCount(Typename)指定个数
- {
- LotteryDetail daxiao = new LotteryDetail()
- {
- Label = "大小比",
- Value = LotteryUtils.GetProportionOfDX(OpenCode.Take(takenum).ToList(),lotteryCode.DaXiaoZJZ,lotteryCode.DaXiaoCount )
- //EnumFunctionType.GetDaXiaoZJZ(Typename), EnumFunctionType.GetDaxiaoCount(Typename)
- };
- tmp.Details.Add(daxiao);
- }
- }
- }
- if (!string.IsNullOrEmpty(Detail))//开奖详情内容
- {
- var data = ToData<KaijiangDetailsEntity>(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<LotteryResults>();
- 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<LotteryResults> list = new List<LotteryResults>();
- //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)
- {
- LogHelper.Error(typeof(LottryDataHandle), "GetLotteryData");
- return null;
- }
- }
- public static T ToData<T>(string obj)
- {
- try
- {
- return JsonConvert.DeserializeObject<T>(obj);
- }
- catch (Exception ee)
- {
- return default(T);
- }
- }
- /// <summary>
- /// 获取快乐扑克3
- /// </summary>
- /// <param name="OpenCode"></param>
- /// <returns></returns>
- public static List<LotteryDetail> Getklpk3(IList<int> OpenCode)
- {
- List<LotteryDetail> rtlist = new List<LotteryDetail>();
- 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;
- }
- public static List<LotteryDetail> GetHc1guangdong(IList<int> OpenCode)
- {
- List<LotteryDetail> rtlist = new List<LotteryDetail>();
-
- return rtlist;
- }
- public static LotteryCode GetLotteryCode(string lottertCode)
- {
- try
- {
- if (MlotteryCode.Keys.Count == 0)
- {
- GetLotteryCodeList();
- }
- return MlotteryCode[lottertCode];
- }
- catch (Exception ee)
- {
- LogHelper.Error(typeof(LottryDataHandle), ee.Message + "GetLotteryCode");
- return null;
- }
- }
- public static List<LotteryCode> GetLotteryCode()
- {
- try
- {
- if (MlotteryCode.Keys.Count == 0)
- {
- GetLotteryCodeList();
- }
- return MlotteryCode.Values.ToList();
- }
- catch (Exception ee)
- {
- LogHelper.Error(typeof(LottryDataHandle), ee.Message + "GetLotteryCodeoflist");
- return null;
- }
- }
- public static void GetLotteryCodeList()
- {
- try
- {
- string configFile = AppDomain.CurrentDomain.BaseDirectory + "/config/LotteryCode.xml";
- List<LotteryCode> configs = CommonHelper.ConvertXMLToObject<LotteryCode>(configFile, "CodeSettings");
- for (int i = 0; i < configs.Count; i++)
- {
- MlotteryCode[configs[i].lotteryCode] = configs[i];
- }
- }
- catch (Exception ee)
- {
- LogHelper.Error(typeof(LottryDataHandle), ee.Message + "GetLotteryCodeList");
-
- }
-
- }
- /// <summary>
- /// 根据配置获取彩种去年的最后一期
- /// </summary>
- /// <param name="KJTime">配置中的KJTime项</param>
- /// <returns></returns>
- public static int GetLastTermOfLastYear(string KJTime)
- {
- try
- {
- var kjtime = KJTime.Split(',');
- DateTime time = DateTime.Now;
- int year = time.Year - 1;
- DateTime etime = new DateTime(year,12,31);
- DateTime stime = new DateTime(year, 1, 1);
- var tp = etime - stime;
- int caday = tp.Days;
- int termcount = 0;
- for (int i = 0; i < caday; i++)
- {
- stime = stime.AddDays(1);
- if (kjtime.Contains(((int)stime.DayOfWeek).ToString()))
- {
- termcount += 1;
- }
- }
- return termcount;
- }
- catch (Exception ee)
- {
- LogHelper.Error(typeof(LottryDataHandle), ee.Message + ":GetLastTermOfLastYear");
- return 0;
- }
-
- }
- }
- }
|