LottryDataHandle.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. using Cache.Entity;
  2. using Models;
  3. using Newtonsoft.Json;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using static Cache.Entity.EnumFunctionType;
  10. namespace Cache.Util
  11. {
  12. public static class LottryDataHandle
  13. {
  14. /// <summary>
  15. /// 东方6+1 转生肖
  16. /// </summary>
  17. /// <param name="num"></param>
  18. /// <returns></returns>
  19. public static string GetSx(int num)
  20. {
  21. switch (num)
  22. {
  23. case 1:
  24. return "鼠";
  25. case 2:
  26. return "牛";
  27. case 3:
  28. return "虎";
  29. case 4:
  30. return "兔";
  31. case 5:
  32. return "龙";
  33. case 6:
  34. return "蛇";
  35. case 7:
  36. return "马";
  37. case 8:
  38. return "羊";
  39. case 9:
  40. return "猴";
  41. case 10:
  42. return "鸡";
  43. case 11:
  44. return "狗";
  45. case 12:
  46. return "猪";
  47. default:
  48. return "";
  49. }
  50. }
  51. /// <summary>
  52. ///
  53. /// </summary>
  54. /// <param name="Typename">类型名</param>
  55. /// <param name="Term">期数</param>
  56. /// <param name="Opentime">开奖时间</param>
  57. /// <param name="OpenCode">开奖号</param>
  58. /// <param name="Detail">开奖详情没有传""或者null</param>
  59. /// <returns></returns>
  60. public static LotteryData GetLotteryData(string Typename, int Term, DateTime Opentime,string ID, IList<int> OpenCode, string Detail,string MenuName = "")
  61. {
  62. try
  63. {
  64. LotteryData tmp = new LotteryData()
  65. {
  66. Term = Term.ToString(),
  67. OpenTime = Opentime.ToString(),
  68. LotteryName = EnumFunctionType.GetLotteryName(Typename),
  69. LotteryType = Typename,
  70. MenuName = MenuName,
  71. ID = ID
  72. };
  73. tmp.Details = new List<LotteryDetail>();
  74. LotteryBallType datatype = EnumFunctionType.GetBallType(Typename);
  75. if (datatype != null)
  76. {
  77. tmp.BallCount = datatype.Count;
  78. tmp.RedBall = Array.ConvertAll<int, string>(OpenCode.Take(datatype.RedCount).ToArray(), s => s.ToString());
  79. if (datatype.BlueCount > 0)
  80. {
  81. tmp.BlueBall = Array.ConvertAll<int, string>(OpenCode.Skip(datatype.RedCount).ToArray(), s => s.ToString());
  82. }
  83. if (datatype.Count > 1)
  84. {
  85. LotteryDetail hezhi = new LotteryDetail()
  86. {
  87. Label = "和值",
  88. Value = LotteryUtils.GetSum(OpenCode.Take(datatype.RedCount).ToList()).ToString()
  89. };
  90. tmp.Details.Add(hezhi);
  91. LotteryDetail kuadu = new LotteryDetail()
  92. {
  93. Label = "跨度",
  94. Value = LotteryUtils.GetSpan(OpenCode.Take(datatype.RedCount).ToList()).ToString()
  95. };
  96. tmp.Details.Add(kuadu);
  97. LotteryDetail jio = new LotteryDetail()
  98. {
  99. Label = "奇偶比",
  100. Value = LotteryUtils.GetProportionOfJO(OpenCode.Take(datatype.RedCount).ToList())
  101. };
  102. tmp.Details.Add(jio);
  103. if (Typename == "DFC_DF6J1")//东方6+1篮球转生sw
  104. {
  105. int blueball = OpenCode.Skip(datatype.RedCount).ToArray()[0];
  106. tmp.BlueBall = new string[] { GetSx(blueball) };
  107. // Array.ConvertAll<int, string>(OpenCode.Skip(datatype.RedCount).ToArray(), s => s.ToString());
  108. }
  109. }
  110. }
  111. else
  112. {
  113. if (Typename == "GPC_SDKLPK3")//快乐扑克3单独处理
  114. {
  115. List<LotteryDetail> list = Getklpk3(OpenCode);
  116. tmp.Details = list;
  117. }
  118. else
  119. {
  120. tmp.BallCount = OpenCode.Count;
  121. tmp.RedBall = Array.ConvertAll<int, string>(OpenCode.ToArray(), s => s.ToString());
  122. }
  123. // tmp.BlueBall = OpenCode.Skip(datatype.RedCount).ToArray();
  124. }
  125. //要大小比的,要三区比的,要转生肖的,有开奖详情的,
  126. if (EnumFunctionType.Sanqu.Contains(Typename))
  127. {
  128. LotteryDetail sanqu = new LotteryDetail()
  129. {
  130. Label = "三区比",
  131. Value = LotteryUtils.SsqSanQu(OpenCode.Take(6).ToList())//三区的目前只有双色球一个
  132. };
  133. tmp.Details.Add(sanqu);
  134. }
  135. //要大小比的
  136. if (EnumFunctionType.DaxiaoType.Contains(Typename))
  137. {
  138. int takenum = EnumFunctionType.GetDaXiaoTake(Typename);
  139. if (takenum == 0)//无take
  140. {
  141. if (EnumFunctionType.GetDaxiaoCount(Typename) == 0)//个数默认
  142. {
  143. LotteryDetail daxiao = new LotteryDetail()
  144. {
  145. Label = "大小比",
  146. Value = LotteryUtils.GetProportionOfDX(OpenCode, EnumFunctionType.GetDaXiaoZJZ(Typename))
  147. };
  148. tmp.Details.Add(daxiao);
  149. }
  150. if (EnumFunctionType.GetDaxiaoCount(Typename) > 0)//指定个数
  151. {
  152. LotteryDetail daxiao = new LotteryDetail()
  153. {
  154. Label = "大小比",
  155. Value = LotteryUtils.GetProportionOfDX(OpenCode, EnumFunctionType.GetDaXiaoZJZ(Typename), EnumFunctionType.GetDaxiaoCount(Typename))
  156. };
  157. tmp.Details.Add(daxiao);
  158. }
  159. }
  160. else //有take
  161. {
  162. if (EnumFunctionType.GetDaxiaoCount(Typename) == 0)//个数默认
  163. {
  164. LotteryDetail daxiao = new LotteryDetail()
  165. {
  166. Label = "大小比",
  167. Value = LotteryUtils.GetProportionOfDX(OpenCode.Take(takenum).ToList(), EnumFunctionType.GetDaXiaoZJZ(Typename))
  168. };
  169. tmp.Details.Add(daxiao);
  170. }
  171. if (EnumFunctionType.GetDaxiaoCount(Typename) > 0)//指定个数
  172. {
  173. LotteryDetail daxiao = new LotteryDetail()
  174. {
  175. Label = "大小比",
  176. Value = LotteryUtils.GetProportionOfDX(OpenCode.Take(takenum).ToList(), EnumFunctionType.GetDaXiaoZJZ(Typename), EnumFunctionType.GetDaxiaoCount(Typename))
  177. };
  178. tmp.Details.Add(daxiao);
  179. }
  180. }
  181. }
  182. if (!string.IsNullOrEmpty(Detail))//开奖详情内容
  183. {
  184. var data = ToData<KaijiangDetailsEntity>(Detail);
  185. if (data!=null)
  186. {
  187. if (!string.IsNullOrEmpty(data.Trje))
  188. {
  189. tmp.MoneyCount = data.Trje.Replace(",", "");
  190. }
  191. if (!string.IsNullOrEmpty(data.Gdje))
  192. {
  193. tmp.MoneyPond = data.Gdje.Replace(",", "");
  194. }
  195. int takenum = EnumFunctionType.ContainDetailType.Contains(Typename) ? 1 : 2;
  196. List < LotteryResults > list = new List<LotteryResults>();
  197. if (data.KaiJiangItems!=null)
  198. {
  199. for (int i = 0; i < data.KaiJiangItems.Count; i++)
  200. {
  201. int couttotal = 0;
  202. int.TryParse(data.KaiJiangItems[i].Total, out couttotal);
  203. LotteryResults tmpresults = new LotteryResults() {
  204. LevelName=data.KaiJiangItems[i].Name,
  205. Count= couttotal,
  206. Money=data.KaiJiangItems[i].TotalMoney
  207. };
  208. list.Add(tmpresults);
  209. }
  210. }
  211. tmp.ResultsList = list;
  212. //List<LotteryResults> list = new List<LotteryResults>();
  213. //if (Typename == "QGC_PL3" || Typename == "QGC_FC3D")
  214. //{
  215. // list = EnumFunctionType.GetLotteryResultsP3(Detail);
  216. //}
  217. //else if (Typename == "QGC_PL5")
  218. //{
  219. // list = EnumFunctionType.GetLotteryResultsP5(Detail);
  220. //}
  221. //else
  222. //{
  223. // list = EnumFunctionType.GetLotteryResults(Detail, takenum);
  224. //}
  225. }
  226. //string[] results = Detail.Split(new char[] { '^', '|', ',' });
  227. //tmp.MoneyCount = results[0];
  228. //int moneyPond = 0;
  229. //int.TryParse(results[1], out moneyPond);
  230. //tmp.MoneyPond = moneyPond.ToString();
  231. }
  232. return tmp;
  233. }
  234. catch (Exception ee)
  235. {
  236. throw;
  237. }
  238. }
  239. public static T ToData<T>(string obj)
  240. {
  241. try
  242. {
  243. return JsonConvert.DeserializeObject<T>(obj);
  244. }
  245. catch (Exception ee)
  246. {
  247. return default(T);
  248. }
  249. }
  250. /// <summary>
  251. /// 获取快乐扑克3
  252. /// </summary>
  253. /// <param name="OpenCode"></param>
  254. /// <returns></returns>
  255. public static List<LotteryDetail> Getklpk3(IList<int> OpenCode)
  256. {
  257. List<LotteryDetail> rtlist = new List<LotteryDetail>();
  258. string[] _pokerSuitName = new string[] { "", "fangpian", "meihua", "hongtao", "heitao" };
  259. foreach (var item in OpenCode)
  260. {
  261. LotteryDetail tmp = new LotteryDetail();
  262. var pkSuit = item / 100;
  263. var pknum = item % 100;
  264. var pkstr = pknum.ToString();
  265. if (pknum == 11) pkstr = "J";
  266. else if (pknum == 12) pkstr = "Q";
  267. else if (pknum == 13) pkstr = "K";
  268. else if (pknum == 1) pkstr = "A";
  269. tmp.Value = pkstr;
  270. tmp.Label = _pokerSuitName[pkSuit];
  271. rtlist.Add(tmp);
  272. }
  273. return rtlist;
  274. }
  275. /// <summary>
  276. }
  277. }