Result.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. using System.Runtime.Serialization;
  2. namespace OASystem.Domain
  3. {
  4. public class Result
  5. {
  6. public int Code { get; set; } = -1;
  7. public string Msg { get; set; } = "未知错误";
  8. public dynamic? Data { get; set; } = new { };
  9. public Result() { }
  10. public Result(int code, string msg)
  11. {
  12. Code = code;
  13. Msg = msg;
  14. Data = null;
  15. }
  16. public Result(int code, string msg, dynamic? data = null)
  17. {
  18. Code = code;
  19. Msg = msg;
  20. Data = data;
  21. }
  22. }
  23. /// <summary>
  24. /// 业务异常基类
  25. /// </summary>
  26. [Serializable] // 核心:添加序列化特性(IIS识别的关键)
  27. public class BusinessException : Exception
  28. {
  29. /// <summary>
  30. /// 错误代码
  31. /// </summary>
  32. public int Code { get; set; }
  33. /// <summary>
  34. /// 错误消息
  35. /// </summary>
  36. public string Msg { get; set; }
  37. /// <summary>
  38. /// 错误详情
  39. /// </summary>
  40. public new object Data { get; set; }
  41. // 无参构造函数(序列化必备,即使不直接使用)
  42. public BusinessException() : base() { }
  43. public BusinessException(string message) : base(message)
  44. {
  45. Code = 400;
  46. Msg = message;
  47. }
  48. public BusinessException(int code, string message) : base(message)
  49. {
  50. Code = code;
  51. Msg = message;
  52. }
  53. public BusinessException(string message, object details) : base(message)
  54. {
  55. Code = 400;
  56. Msg = message;
  57. Data = details;
  58. }
  59. public BusinessException(int code, string message, object details) : base(message)
  60. {
  61. Code = code;
  62. Msg = message;
  63. Data = details;
  64. }
  65. public BusinessException(string message, Exception innerException)
  66. : base(message, innerException)
  67. {
  68. Code = 400;
  69. Msg = message;
  70. }
  71. // 核心:序列化构造函数(IIS反序列化时必须调用)
  72. protected BusinessException(SerializationInfo info, StreamingContext context)
  73. : base(info, context)
  74. {
  75. // 读取序列化的自定义属性(和GetObjectData对应)
  76. Code = info.GetInt32(nameof(Code));
  77. Msg = info.GetString(nameof(Msg));
  78. Data = info.GetValue(nameof(Data), typeof(object));
  79. }
  80. // 核心:重写GetObjectData(序列化自定义属性)
  81. public override void GetObjectData(SerializationInfo info, StreamingContext context)
  82. {
  83. base.GetObjectData(info, context);
  84. // 写入自定义属性到序列化流
  85. info.AddValue(nameof(Code), Code);
  86. info.AddValue(nameof(Msg), Msg);
  87. info.AddValue(nameof(Data), Data);
  88. }
  89. }
  90. /// <summary>
  91. /// 公共静态数据
  92. /// </summary>
  93. public static class SharingStaticData
  94. {
  95. /// <summary>
  96. /// 端口静态数据
  97. /// </summary>
  98. public static List<int> PortTypes = new() { 1, 2, 3 };
  99. }
  100. /// <summary>
  101. /// 消息 Tips
  102. /// </summary>
  103. public static class MsgTips
  104. {
  105. /// <summary>
  106. /// 成功 消息提示
  107. /// </summary>
  108. public static string Succeed = "操作成功!";
  109. /// <summary>
  110. /// 失败 消息提示
  111. /// </summary>
  112. public static string Fail = "操作失败!";
  113. /// <summary>
  114. /// 添加成功
  115. /// </summary>
  116. public static string AddSucceed = "添加成功!";
  117. /// <summary>
  118. /// 添加成功
  119. /// </summary>
  120. public static string AddFail = "添加失败!";
  121. /// <summary>
  122. /// 修改成功
  123. /// </summary>
  124. public static string EditSucceed = "修改成功!";
  125. /// <summary>
  126. /// 修改成功
  127. /// </summary>
  128. public static string EditFail = "修改失败!";
  129. /// <summary>
  130. /// 端口错误消息提示
  131. /// </summary>
  132. public static string Port = "请检查端口值是否正确!“portType”:1:WEB;2:ANDROID;3:IOS;";
  133. /// <summary>
  134. /// 端口错误消息提示-Mobile
  135. /// </summary>
  136. public static string MobilePort = "请检查端口值是否正确!“portType”:2:ANDROID;3:IOS;";
  137. /// <summary>
  138. /// PageIndex 错误消息提示
  139. /// </summary>
  140. public static string PageIndex = "请检查当前页面(pageIndex)是否正确!";
  141. /// <summary>
  142. /// PageSize 错误消息提示
  143. /// </summary>
  144. public static string PageSize = "请检查每页长度(pageSize)是否正确!";
  145. /// <summary>
  146. /// 团组Id错误消息提示
  147. /// </summary>
  148. public static string DiId = "请检查团组Id是否正确!";
  149. /// <summary>
  150. /// 数据Id错误消息提示
  151. /// </summary>
  152. public static string Id = "请检查数据Id(id)是否正确!";
  153. /// <summary>
  154. /// 数据Id错误消息提示
  155. /// </summary>
  156. public static string Status = "请检查状态Id(Status)是否正确!1 添加 2 修改";
  157. /// <summary>
  158. /// UserId错误消息提示
  159. /// </summary>
  160. public static string UserId = "请检查UserId是否正确!";
  161. /// <summary>
  162. /// OperateId错误消息提示
  163. /// </summary>
  164. public static string OperateId = "请传入有效的操作类型Id";
  165. /// <summary>
  166. /// PageId错误消息提示
  167. /// </summary>
  168. public static string PageId = "请检查PageId是否正确!";
  169. /// <summary>
  170. /// CheckAuth 错误消息提示
  171. /// </summary>
  172. public static string CheckAuth = "您没有查看权限!";
  173. }
  174. }