/******************************************************************************* * Copyright(c) 2014 dongke All rights reserved. / Confidential * 类的信息: * 1.程序名称:ServiceResultManager.cs * 2.功能描述:服务返回实体共通处理 * 编辑履历: * 作者 日期 版本 修改内容 * 陈晓野 2015/03/27 1.00 新建 *******************************************************************************/ using System.Diagnostics; using System.Windows.Forms; using Dongke.IBOSS.PRD.Basics.BaseControls; using Dongke.IBOSS.PRD.Basics.BaseResources; using Dongke.IBOSS.PRD.Basics.Library; using Dongke.IBOSS.PRD.Client.DataModels; using Dongke.IBOSS.PRD.WCF.DataModels; namespace Dongke.IBOSS.PRD.Client.Controls { #region 异步处理的委托 /// /// 异步处理 /// /// public delegate T DKAsyncMethod(); #endregion /// /// 服务返回实体共通处理 /// public static class ServiceResultManager { public enum ExitType { None, ReLogin, Close, } public static void Invoke(Form owner, ServiceResultEntity sre) { if (sre == null || sre.Status > Constant.ServiceResultStatus.Success) { return; } if (sre.Status == Constant.ServiceResultStatus.Success) { //DKMessageBox.ShowDialog(owner, DKMessageCode.I_CMN_S_002); return; } DialogResult dialogResult; ExitType exitType = ExitType.None; switch (sre.Status) { // -1:验证失败 case Constant.ServiceResultStatus.ValidationFailed: // -2:此用户没有登录 case Constant.ServiceResultStatus.UserNotLogin: dialogResult = DKMessageBox.ShowDialog(owner, DKMessageCode.WYN_CMN_S_002); if (dialogResult == DialogResult.Yes) { exitType = ExitType.ReLogin; } else { exitType = ExitType.Close; } break; // -3:此用户已在其他客户端登录 case Constant.ServiceResultStatus.UserOtherLogin: dialogResult = DKMessageBox.ShowDialog(owner, DKMessageCode.WYN_CMN_S_003, LogInUserInfo.CurrentUser.CurrentUserEntity.UserCode); if (dialogResult == DialogResult.Yes) { exitType = ExitType.ReLogin; } else { exitType = ExitType.Close; } break; // -4系统账务日期错误 case Constant.ServiceResultStatus.AccountDateError: DKMessageBox.ShowDialog(owner, DKMessageCode.W_CMN_S_001); exitType = ExitType.Close; break; // -100:没有查询结果 case Constant.ServiceResultStatus.NoSearchResults: DKMessageBox.ShowDialog(owner, DKMessageCode.I_CMN_S_001); break; // -101:没有更新任何数据 case Constant.ServiceResultStatus.NoModifyData: DKMessageBox.ShowDialog(owner, DKMessageCode.I_CMN_S_001); break; // -102:数据已被其他用户更改 case Constant.ServiceResultStatus.DataChanged: DKMessageBox.ShowDialog(owner, DKMessageCode.W_CMN_S_005); break; // -103:有重复数据,更新失败 case Constant.ServiceResultStatus.DataDuplicated: DKMessageBox.ShowDialog(owner, DKMessageCode.W_CMN_S_006, sre.Message); break; // -800:License中无此模块权限 case Constant.ServiceResultStatus.NoLicensesRight: // todo break; // -801:此用户无此操作权限 case Constant.ServiceResultStatus.NoFunRight: // todo break; // -999:系统异常 case Constant.ServiceResultStatus.SystemError: //DKMessageBox.ShowDialog(owner, DKMessageCode.E_CMN_S_001); //break; throw new System.Exception(sre.Message); default: break; } // todo //// 写错误日志 // OutputLog.Trace(LogPriority.Warning, // "Authorization", // "Authorization()", // ex.ToString()); if (exitType == ExitType.None) { return; } System.Diagnostics.Process.GetCurrentProcess().Close(); System.Environment.Exit(0); if (exitType == ExitType.ReLogin) { Process.Start(Constant.S_SYSTEM_CLIENT_NAME); } } } }