using System;
using WMS.Info;
namespace WMS.Core
{
public class SysExCore : Exception
{
///
/// 异常消息
///
public string ExMsg { get; private set; }
///
/// 内部异常
///
public Exception Ex { get; private set; }
///
/// 消息类型
///
public ESysExType SysExType { get; private set; } = ESysExType.Exception;
//带有一个字符串参数和一个内部异常信息参数的构造函数
public SysExCore(ESysExType sysExType, string exMsg, Exception innerException) : base(exMsg, innerException)
{
Ex = innerException;
ExMsg = exMsg;
SysExType = sysExType;
}
public SysExCore(ESysExType sysExType, string exMsg) : base(exMsg)
{
ExMsg = exMsg;
SysExType = sysExType;
}
///
/// 错误提示信息
///
public static SysExCore ThrowFailException(string exMsg)
{
return new SysExCore(ESysExType.Fail, exMsg);
}
///
/// 错误提示信息
///
public static SysExCore ThrowInEmpty()
{
return new SysExCore(ESysExType.Fail, "请求数据为空。");
}
///
/// token无效
///
public static SysExCore ThrowToken()
{
return new SysExCore(ESysExType.LoginTimeout, "当前登录token无效,请重新登录后再操作。");
}
///
/// 登录超时
///
public static SysExCore ThrowLoginTimeout()
{
return new SysExCore(ESysExType.LoginTimeout, "登录超时,请重新登录!");
}
///
/// 密码过期
///
public static SysExCore ThrowPwdExpiration()
{
return new SysExCore(ESysExType.PwdExpiration, "用户密码已过期。");
}
///
/// 数据库连接配置文件异常
///
public static SysExCore ThrowDbSetError()
{
return new SysExCore(ESysExType.DbSetError, "数据库连接配置文件异常,请联系管理员。");
}
///
/// 数据库连接配置文件异常
///
public static SysExCore ThrowDbConnError(Exception ex)
{
return new SysExCore(ESysExType.DbConnError, ex.Message, ex);
}
public static SysExCore GetSysExCore(Exception ex)
{
if (ex is SysExCore)
{
return ex as SysExCore;
}
else
{
return new SysExCore(ESysExType.Exception, ex.Message, ex);
}
}
public static ResInfo GetResErr(Exception ex, object data = null)
{
SysExCore ec;
if (ex is SysExCore)
{
ec = ex as SysExCore;
}
else
{
ec = new SysExCore(ESysExType.Exception, ex.Message, ex);
}
EResponseCode rescode = EResponseCode.Fail;
if (ec.SysExType == ESysExType.Exception)
{
rescode = EResponseCode.Exception;
}
else if (ec.SysExType == ESysExType.LoginTimeout)
{
rescode = EResponseCode.LoginTimeout;
}
else if (ec.SysExType == ESysExType.PwdExpiration)
{
rescode = EResponseCode.PwdExpiration;
}
else if (ec.SysExType == ESysExType.PwdInit)
{
rescode = EResponseCode.PwdInit;
}
else if (ec.SysExType == ESysExType.FilterIPError)
{
rescode = EResponseCode.FilterIPError;
}
else if (ec.SysExType == ESysExType.FilterTimeError)
{
rescode = EResponseCode.FilterTimeError;
}
ResInfo infos = new ResInfo();
infos.code = rescode;
infos.info = ex.Message;
infos.data = data;
return infos;
//return new ResInfo() { code = rescode, info = ex.Message, data = data };
}
public static ResInfo GetResSucc(string Msg="", object data = null)
{
return new ResInfo() { code = EResponseCode.Success, data = data, info = string.IsNullOrWhiteSpace(Msg) ? "响应成功" : Msg };
}
}
}