团餐订单
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

DtoValidator.cs 5.6 KiB

11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
9ヶ月前
11ヶ月前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. 
  2. using Furion.JsonSerialization;
  3. using Newtonsoft.Json;
  4. using NPOI.POIFS.Crypt.Dsig;
  5. using NPOI.SS.Formula.Functions;
  6. using NPOI.Util.ArrayExtensions;
  7. using System.Collections.Generic;
  8. using System.ComponentModel.DataAnnotations;
  9. using System.Reflection;
  10. using System.Text;
  11. namespace BPA.KitChen.GroupMealOrder.Application.BaseDto
  12. {
  13. /// <summary>
  14. /// Dto参数验证
  15. /// </summary>
  16. public static class DtoValidator
  17. {
  18. ///// <summary>
  19. ///// 获取签名
  20. ///// </summary>
  21. ///// <typeparam name="T"></typeparam>
  22. ///// <param name="t"></param>
  23. ///// <param name="otype">0-不排序 1-按名称ASCII排序</param>
  24. ///// <returns></returns>
  25. //public static string GetSign<T>(T t, int otype = 1)
  26. //{
  27. // string retstr = "";
  28. // //定义PropertyInfo的List
  29. // List<PropertyInfo> proplist = new List<PropertyInfo>();
  30. // //遍历泛型类的每个属性加入到List里面
  31. // Array.ForEach<PropertyInfo>(typeof(T).GetProperties(),
  32. // p => proplist.Add(p));
  33. // //根据参数进行排序 0-不排序 1-按名称ASCII码排序
  34. // if (otype == 1)
  35. // proplist = proplist.OrderBy(k => k.Name).ToList();
  36. // //遍历List泛型生成我们要签名的字符串
  37. // proplist.ForEach(p =>
  38. // {
  39. // if (p.Name.ToLower() != "sign".ToLower())
  40. // {
  41. // if (p.GetValue(t, null) != null && p.GetValue(t, null).ToString() != "")
  42. // {
  43. // var type = p.GetValue(t, null).GetType().FullName;
  44. // if (type == "System.String" || type == "System.Boolean" || type == "System.Int32" || type == "System.DateTime")
  45. // {
  46. // retstr = retstr + p.Name + "=" + p.GetValue(t, null) + "&";
  47. // }
  48. // else
  49. // {
  50. // retstr = retstr + p.Name + "=" + JsonConvert.SerializeObject(p.GetValue(t, null)) + "&";
  51. // }
  52. // }
  53. // }
  54. // });
  55. // //把字符串最后一位截断
  56. // retstr = retstr.Substring(0, retstr.Length - 1);
  57. // //输出字符串
  58. // return retstr;
  59. //}
  60. /// <summary>
  61. /// 获取签名
  62. /// </summary>
  63. /// <param name="t"></param>
  64. /// <returns></returns>
  65. public static string GetSign(object t)
  66. {
  67. string retstr = "";
  68. //定义PropertyInfo的List
  69. List<PropertyInfo> proplist = new List<PropertyInfo>();
  70. //遍历泛型类的每个属性加入到List里面
  71. Array.ForEach<PropertyInfo>(t.GetType().GetProperties(),
  72. p => proplist.Add(p));
  73. //根据参数进行排序 0-不排序 1-按名称ASCII码排序
  74. proplist = proplist.OrderBy(k => k.Name).ToList();
  75. //遍历List泛型生成我们要签名的字符串
  76. proplist.ForEach(p =>
  77. {
  78. if (p.Name.ToLower() != "sign".ToLower())
  79. {
  80. if (p.GetValue(t, null) != null && p.GetValue(t, null).ToString() != "")
  81. {
  82. var type = p.GetValue(t, null).GetType().FullName;
  83. if (type == "System.String" || type == "System.Boolean" || type == "System.Int32" || type == "System.DateTime")
  84. {
  85. retstr = retstr + p.Name + "=" + p.GetValue(t, null) + "&";
  86. }
  87. else
  88. {
  89. var jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
  90. retstr = retstr + p.Name + "=" + JsonConvert.SerializeObject(p.GetValue(t, null), Formatting.None, jsonSetting) + "&";
  91. }
  92. }
  93. }
  94. });
  95. //把字符串最后一位截断
  96. retstr = retstr.Substring(0, retstr.Length - 1);
  97. //输出字符串
  98. return retstr;
  99. }
  100. /// <summary>
  101. /// 获取属性值
  102. /// </summary>
  103. /// <param name="obj"></param>
  104. /// <param name="name"></param>
  105. /// <returns></returns>
  106. public static string GetAttributePrice(object obj, string name)
  107. {
  108. string retstr = "";
  109. //定义PropertyInfo的List
  110. List<PropertyInfo> proplist = new List<PropertyInfo>();
  111. //遍历泛型类的每个属性加入到List里面
  112. Array.ForEach<PropertyInfo>(obj.GetType().GetProperties(),
  113. p => proplist.Add(p));
  114. //根据参数进行排序 0-不排序 1-按名称ASCII码排序
  115. proplist = proplist.OrderBy(k => k.Name).ToList();
  116. //遍历List泛型生成我们要签名的字符串
  117. proplist.ForEach(p =>
  118. {
  119. if (p.Name.ToLower() == name.ToLower())
  120. {
  121. if (p.GetValue(obj, null).GetType().FullName.Contains("System.Collections.Generic.List"))
  122. {
  123. retstr = JsonConvert.SerializeObject(p.GetValue(obj, null));
  124. }
  125. else
  126. {
  127. retstr = p.GetValue(obj, null)?.ToString();
  128. }
  129. }
  130. });
  131. //输出字符串
  132. return retstr;
  133. }
  134. }
  135. }