ServiceResultManager.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. /*******************************************************************************
  2. * Copyright(c) 2014 dongke All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:ServiceResultManager.cs
  5. * 2.功能描述:服务返回实体共通处理
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 陈晓野 2015/03/27 1.00 新建
  9. *******************************************************************************/
  10. using System.Diagnostics;
  11. using System.Windows.Forms;
  12. using Dongke.IBOSS.PRD.Basics.BaseControls;
  13. using Dongke.IBOSS.PRD.Basics.BaseResources;
  14. using Dongke.IBOSS.PRD.Basics.Library;
  15. using Dongke.IBOSS.PRD.Client.DataModels;
  16. using Dongke.IBOSS.PRD.WCF.DataModels;
  17. namespace Dongke.IBOSS.PRD.Client.Controls
  18. {
  19. #region 异步处理的委托
  20. /// <summary>
  21. /// 异步处理
  22. /// </summary>
  23. /// <returns></returns>
  24. public delegate T DKAsyncMethod<T>();
  25. #endregion
  26. /// <summary>
  27. /// 服务返回实体共通处理
  28. /// </summary>
  29. public static class ServiceResultManager
  30. {
  31. public enum ExitType
  32. {
  33. None,
  34. ReLogin,
  35. Close,
  36. }
  37. public static void Invoke(Form owner, ServiceResultEntity sre)
  38. {
  39. if (sre == null || sre.Status > Constant.ServiceResultStatus.Success)
  40. {
  41. return;
  42. }
  43. if (sre.Status == Constant.ServiceResultStatus.Success)
  44. {
  45. //DKMessageBox.ShowDialog(owner, DKMessageCode.I_CMN_S_002);
  46. return;
  47. }
  48. DialogResult dialogResult;
  49. ExitType exitType = ExitType.None;
  50. switch (sre.Status)
  51. {
  52. // -1:验证失败
  53. case Constant.ServiceResultStatus.ValidationFailed:
  54. // -2:此用户没有登录
  55. case Constant.ServiceResultStatus.UserNotLogin:
  56. dialogResult = DKMessageBox.ShowDialog(owner, DKMessageCode.WYN_CMN_S_002);
  57. if (dialogResult == DialogResult.Yes)
  58. {
  59. exitType = ExitType.ReLogin;
  60. }
  61. else
  62. {
  63. exitType = ExitType.Close;
  64. }
  65. break;
  66. // -3:此用户已在其他客户端登录
  67. case Constant.ServiceResultStatus.UserOtherLogin:
  68. dialogResult = DKMessageBox.ShowDialog(owner,
  69. DKMessageCode.WYN_CMN_S_003,
  70. LogInUserInfo.CurrentUser.CurrentUserEntity.UserCode);
  71. if (dialogResult == DialogResult.Yes)
  72. {
  73. exitType = ExitType.ReLogin;
  74. }
  75. else
  76. {
  77. exitType = ExitType.Close;
  78. }
  79. break;
  80. // -4系统账务日期错误
  81. case Constant.ServiceResultStatus.AccountDateError:
  82. DKMessageBox.ShowDialog(owner, DKMessageCode.W_CMN_S_001);
  83. exitType = ExitType.Close;
  84. break;
  85. // -100:没有查询结果
  86. case Constant.ServiceResultStatus.NoSearchResults:
  87. DKMessageBox.ShowDialog(owner, DKMessageCode.I_CMN_S_001);
  88. break;
  89. // -101:没有更新任何数据
  90. case Constant.ServiceResultStatus.NoModifyData:
  91. DKMessageBox.ShowDialog(owner, DKMessageCode.I_CMN_S_001);
  92. break;
  93. // -102:数据已被其他用户更改
  94. case Constant.ServiceResultStatus.DataChanged:
  95. DKMessageBox.ShowDialog(owner, DKMessageCode.W_CMN_S_005);
  96. break;
  97. // -103:有重复数据,更新失败
  98. case Constant.ServiceResultStatus.DataDuplicated:
  99. DKMessageBox.ShowDialog(owner, DKMessageCode.W_CMN_S_006, sre.Message);
  100. break;
  101. // -800:License中无此模块权限
  102. case Constant.ServiceResultStatus.NoLicensesRight:
  103. // todo
  104. break;
  105. // -801:此用户无此操作权限
  106. case Constant.ServiceResultStatus.NoFunRight:
  107. // todo
  108. break;
  109. // -999:系统异常
  110. case Constant.ServiceResultStatus.SystemError:
  111. //DKMessageBox.ShowDialog(owner, DKMessageCode.E_CMN_S_001);
  112. //break;
  113. throw new System.Exception(sre.Message);
  114. default:
  115. break;
  116. }
  117. // todo
  118. //// 写错误日志
  119. // OutputLog.Trace(LogPriority.Warning,
  120. // "Authorization",
  121. // "Authorization()",
  122. // ex.ToString());
  123. if (exitType == ExitType.None)
  124. {
  125. return;
  126. }
  127. System.Diagnostics.Process.GetCurrentProcess().Close();
  128. System.Environment.Exit(0);
  129. if (exitType == ExitType.ReLogin)
  130. {
  131. Process.Start(Constant.S_SYSTEM_CLIENT_NAME);
  132. }
  133. }
  134. }
  135. }