OtherHelper.cs 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. using CP.Common;
  2. using CP.Model;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Web;
  7. using System.Xml;
  8. using System.Configuration;
  9. using System.Reflection;
  10. using System.ComponentModel;
  11. using CP.Business;
  12. namespace CP.Kjh.Models
  13. {
  14. public static class OtherHelper
  15. {
  16. #region 配置(单例)
  17. private static readonly Lazy<IEnumerable<CzTypeModel>> czTypeEnumList = new Lazy<IEnumerable<CzTypeModel>>(() => GetCzTypeModel());
  18. private static readonly Lazy<IEnumerable<Cz>> czList = new Lazy<IEnumerable<Cz>>(() => CzBll.GetAllList());
  19. private static readonly Lazy<IEnumerable<Chart>> chartList = new Lazy<IEnumerable<Chart>>(() => ChartBll.GetList());
  20. private static readonly Lazy<IEnumerable<WF>> wfList = new Lazy<IEnumerable<WF>>(() => new WFBLL().GetList());
  21. private static readonly Lazy<IEnumerable<WhatModel>> whatList = new Lazy<IEnumerable<WhatModel>>(() => OtherHelper.ConvertXMLToObject<WhatModel>(HttpContext.Current.Server.MapPath($@"{ConfigurationManager.AppSettings["WhatXml"]}")));
  22. private static readonly Lazy<IEnumerable<NewsModel>> newsList = new Lazy<IEnumerable<NewsModel>>(() => OtherHelper.ConvertXMLToObject<NewsModel>(HttpContext.Current.Server.MapPath($@"{ConfigurationManager.AppSettings["NewsXml"]}")));
  23. private static readonly Lazy<IEnumerable<HkModel>> hkList = new Lazy<IEnumerable<HkModel>>(() => OtherHelper.ConvertXMLToObject<HkModel>(HttpContext.Current.Server.MapPath($@"{ConfigurationManager.AppSettings["HkXml"]}")));
  24. /// <summary>
  25. /// 私有,,获取彩种配置的方法
  26. /// </summary>
  27. /// <returns></returns>
  28. private static IEnumerable<CzTypeModel> GetCzTypeModel()
  29. {
  30. var list = new List<CzTypeModel>();
  31. foreach (FieldInfo field in typeof(CzTypeEnum).GetFields())
  32. {
  33. if (!field.IsSpecialName)
  34. list.Add(new CzTypeModel
  35. {
  36. Name = ((DescriptionAttribute)Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute))).Description,
  37. Key = field.Name,
  38. Value = (int)field.GetRawConstantValue(),
  39. Parent = ((ParentAttribute)Attribute.GetCustomAttribute(field, typeof(ParentAttribute))).Parent,
  40. Img = ((ImgAttribute)Attribute.GetCustomAttribute(field, typeof(ImgAttribute))).Img,
  41. });
  42. }
  43. return list;
  44. }
  45. /// <summary>
  46. /// CzTypeEnum类型配置数据
  47. /// </summary>
  48. public static IEnumerable<CzTypeModel> CzTypeEnumList { get { return czTypeEnumList.Value; } }
  49. /// <summary>
  50. /// 从数据库获取彩种信息
  51. /// </summary>
  52. public static IEnumerable<Cz> CzList { get { return czList.Value; } }
  53. /// <summary>
  54. /// 得到chat表的数据
  55. /// </summary>
  56. public static IEnumerable<Chart> ChartList { get { return chartList.Value.Where(p => p.state == 0); } }
  57. /// <summary>
  58. /// 从数据库获取玩法信息
  59. /// </summary>
  60. public static IEnumerable<WF> WfList { get { return wfList.Value; } }
  61. /// <summary>
  62. /// 获取什么的配置数据(kjh和sjh)
  63. /// </summary>
  64. public static IEnumerable<WhatModel> WhatList { get { return whatList.Value; } }
  65. /// <summary>
  66. /// 新闻配置
  67. /// </summary>
  68. public static IEnumerable<NewsModel> NewsList { get { return newsList.Value; } }
  69. /// <summary>
  70. /// 香港生肖配置
  71. /// </summary>
  72. public static IEnumerable<HkModel> HkList { get { return hkList.Value; } }
  73. #endregion
  74. public static string KJXQImg(string value)
  75. {
  76. var dict = new Dictionary<string, string> {
  77. { QGEnum.fcsd.ToString(),"fc3d"},
  78. { DFEnum.gdhc1.ToString(),"hc1"},
  79. { GPEnum.tcah11x5.ToString(),"ah11x5"},
  80. };
  81. if (dict.ContainsKey(value))
  82. return dict[value];
  83. return value;
  84. }
  85. /// <summary>
  86. /// 得到奇偶比
  87. /// </summary>
  88. /// <param name="code"></param>
  89. /// <returns></returns>
  90. public static string GetJob(string code)
  91. {
  92. var list = code.Split('+')[0].Split(',').ToList();
  93. if (code.IsEmpty())
  94. return string.Empty;
  95. return list.Where(p => p.ToInt32() % 2 != 0).Count() + ":" + list.Where(p => p.ToInt32() % 2 == 0).Count();
  96. }
  97. /// <summary>
  98. /// 得到和值
  99. /// </summary>
  100. /// <param name="code"></param>
  101. /// <returns></returns>
  102. public static int GetHz(string code)
  103. {
  104. var list = code.Split('+')[0].Split(',').ToList();
  105. if (code.IsEmpty())
  106. return 0;
  107. return list.Sum(p => p.ToInt32());
  108. }
  109. /// <summary>
  110. /// 得到大小比
  111. /// </summary>
  112. /// <param name="code"></param>
  113. /// <returns></returns>
  114. public static string GetDxb(string code, int number)
  115. {
  116. var list = code.Split('+')[0].Split(',').ToList();
  117. if (code.IsEmpty())
  118. return string.Empty;
  119. return list.Where(p => p.ToInt32() >= number).Count() + ":" + list.Where(p => p.ToInt32() < number).Count();
  120. }
  121. /// <summary>
  122. /// 全国彩获取旧版类型URL的扩展
  123. /// </summary>
  124. /// <param name="qgEnum"></param>
  125. /// <returns></returns>
  126. public static string GetQGXQUrl(this QGEnum qgEnum)
  127. {
  128. return $"/xq_{RouteHelper.GetOldTypeName(qgEnum.ToString())}.aspx";
  129. }
  130. /// <summary>
  131. /// 将XML内容转换成目标对象实体集合
  132. /// </summary>
  133. /// <typeparam name="T">目标对象实体</typeparam>
  134. /// <param name="FileName">完整文件名(根目录下只需文件名称)</param>
  135. /// <param name="WrapperNodeName"></param>
  136. /// <returns></returns>
  137. public static List<T> ConvertXMLToObject<T>(string FileName, string WrapperNodeName = "UrlSetting")
  138. {
  139. XmlDocument doc = new XmlDocument();
  140. doc.Load(FileName);
  141. List<T> result = new List<T>();
  142. var TType = typeof(T);
  143. XmlNodeList nodeList = doc.ChildNodes;
  144. if (!string.IsNullOrEmpty(WrapperNodeName))
  145. {
  146. foreach (XmlNode node in doc.ChildNodes)
  147. {
  148. if (node.Name == WrapperNodeName)
  149. {
  150. nodeList = node.ChildNodes;
  151. break;
  152. }
  153. }
  154. }
  155. object oneT = null;
  156. foreach (XmlNode node in nodeList)
  157. {
  158. if (node.NodeType == XmlNodeType.Comment || node.NodeType == XmlNodeType.XmlDeclaration) continue;
  159. oneT = TType.Assembly.CreateInstance(TType.FullName);
  160. foreach (XmlNode item in node.ChildNodes)
  161. {
  162. if (item.NodeType == XmlNodeType.Comment) continue;
  163. var property = TType.GetProperty(item.Name);
  164. if (property != null)
  165. property.SetValue(oneT, Convert.ChangeType(item.InnerText, property.PropertyType), null);
  166. }
  167. result.Add((T)oneT);
  168. }
  169. return result;
  170. }
  171. /// <summary>
  172. /// 通过新版类型枚举获取chart数据(用于ChartType)
  173. /// </summary>
  174. /// <param name="ename"></param>
  175. /// <returns></returns>
  176. public static List<Chart> GetChartList(string ename, ChartType tid = ChartType.走势)
  177. {
  178. return (from a in CzList
  179. join b in ChartList on a.cid equals b.cid
  180. orderby b.seq ascending
  181. where a.ename == ename && b.tid == tid && !b.url.IsEmpty() && !b.url.Contains("http")
  182. select b).ToList();
  183. }
  184. }
  185. }