Result.cs 6.1 KB

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