C#公共类
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

365 lines
12 KiB

using Microsoft.AspNetCore.Mvc;
using System;
using System.ComponentModel;
namespace Common.Helper.Response
{
public static class ResponseHelper
{
/// <summary>
/// 首位:
/// 3:warning
/// 4:info(提示信息)
/// 5:error;
/// 6:后端校验,前端不报错
/// 倒数第二位:
/// 0:代码校验出的错
/// 1:业务流程里面的错误
/// 4: notFind
/// 5: 权限
/// </summary>
public enum ErrorEnum
{
#region 3:warning
//倒数第二位 0
//倒数第二位 1
/// <summary>
/// 申请单已经发送到检验科,请联系检验科取消配血,并在his中删除医嘱及记账信息
/// </summary>
[Description("申请单已经发送到检验科,请联系检验科取消配血,并在his中删除医嘱及记账信息")]
HasBeenSent = 30011,
/// <summary>
/// 申请已发送或已作废,请勿重复操作
/// </summary>
[Description("申请已发送或已作废,请勿重复操作")]
RepeatSending = 30012,
/// <summary>
/// 条码作废- 改条码在检验科已经扫码上机,不能作废
/// </summary>
[Description("该条码在检验科已经扫码上机,不能作废")]
NotCancelBarcode = 30013,
/// <summary>
/// 检验科未发血
/// </summary>
[Description("检验科未发血")]
NotSend = 30014,
/// <summary>
/// 血袋已接收
/// </summary>
[Description("血袋已接收")]
BloodReceived = 30015,
/// <summary>
/// 操作时间不能超过当前时间
/// </summary>
[Description("操作时间不能超过当前时间")]
NurseTimeOut = 30016,
/// <summary>
/// 输注记录已反馈
/// </summary>
[Description("输注记录已反馈")]
InfusionFeedback = 3017,
/// <summary>
/// 输注记录已反馈
/// </summary>
[Description("血袋配血科室不匹配")]
DeptMismatch = 3018,
[Description("自助申请单名称重复")]
ApplicationNameRepeat = 30019,
[Description("该用户码不属于此次采集场所")]
UserCodeError = 300101,
[Description("该申请未审核")]
ApplicationNotAudit = 300102,
[Description("Excel有误")]
ExcelIsError = 300103,
[Description("未付款")]
Unpaid = 300104,
[Description("该用户信息已经注册过")]
UserInfoRepeat = 300105,
[Description("该用户信息已经注册过")]
UserBindRepeat = 300106,
[Description("已超过最终上传时间")]
UploadFileTimeOut = 300107,
[Description("请登录")]
NotLogin = 300108,
[Description("团检申请不能停用")]
GroupInspectionNotDelete = 300109,
[Description("该申请已经停用")]
ApplicationIsStop = 300120,
//倒数第二位 4
/// <summary>
/// 未找到数据
/// </summary>
[Description("未找到数据")]
NotFindData = 30041,
/// <summary>
/// 未找到输血申请单信息
/// </summary>
[Description("未找到输血申请单信息")]
NotFindBloodRequest = 30042,
/// <summary>
/// 未找到患者信息
/// </summary>
[Description("未找到患者信息")]
NotFindPatientInfo = 30043,
/// <summary>
/// 未找到样本信息
/// </summary>
[Description("未找到样本信息")]
NotFindSampleInfo = 30044,
/// <summary>
/// 未找到知情同意书信息
/// </summary>
[Description("未找到知情同意书信息")]
NotFindInformed = 30045,
/// <summary>
/// 未找到交叉配血信息
/// </summary>
[Description("未找到交叉配血信息")]
NotFindBloodMatch = 30046,
/// <summary>
/// 未找到血袋库存信息
/// </summary>
[Description("未找到血袋库存信息")]
NotFindBlood = 30047,
/// <summary>
/// 未找到输注记录数据
/// </summary>
[Description("未找到输注记录")]
NotFindInfusion = 30048,
/// <summary>
/// 未找到不良反应记录
/// </summary>
[Description("未找到不良反应记录")]
NotFindReaction = 30049,
/// <summary>
/// 未找到输注前巡视记录
/// </summary>
[Description("未找到输注前巡视记录")]
NotFindBeforeInspect = 30410,
/// <summary>
/// 未找到报告单
/// </summary>
[Description("未找到报告单")]
NotFindReport = 30411,
//倒数第二位 5 权限
/// <summary>
/// 输血申请未审核
/// </summary>
[Description("输血申请未审核")]
UnReviewBloodRequisition = 30051,
/// <summary>
/// 未进行医生审核
/// </summary>
[Description("未进行医生审核")]
UnReviewDoctor = 30052,
/// <summary>
/// 权限不足,医生无相关证书信息,如果确有证书请到his添加
/// </summary>
[Description("权限不足,医生无相关证书信息,如果确有证书请到his添加")]
InsufficientPermissions = 30053,
/// <summary>
/// 医生审核职称权限不足
/// </summary>
[Description("权限不足,医生职称不符合审核要求")]
InsufficientDoctorTitle = 30054,
/// <summary>
/// 护士审核权限不足
/// </summary>
[Description("护士审核权限不足")]
NurseInsufficient = 30055,
#endregion
#region 4:info
/// <summary>
/// 正在配血,请等待
/// </summary>
[Description("正在配血,请等待")]
Matching = 40011,
#endregion
#region 5:error
/// <summary>
/// Token错误
/// </summary>
[Description("Token错误")]
TokenError = 50001,
[Description("参数错误")]
ParamsError = 50002,
[Description("登录失败,用户名或密码错误")]
UserAndPwError = 50011,
/// <summary>
/// 医嘱业务流程错误-输血申请单发送
/// </summary>
[Description("业务逻辑错误")]
BusinessError = 50012,
/// <summary>
/// 血型未确认-创建知情同意书
/// </summary>
[Description("患者血型未确认")]
BloodAboRhError = 50013,
/// <summary>
/// 科室不匹配-首页获取在院患者列表
/// </summary>
[Description("科室不匹配")]
DeptMismatchError = 50014,
#endregion
#region 6:后端校验,前端不报错
[Description("登录失败,用户名或密码为空")]
UserAndPwIsNull = 60001,
#endregion
}
/// <summary>
/// 获取枚举对应的Description
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static string GetDescription(this Enum val)
{
var field = val.GetType().GetField(val.ToString());
if (field == null)
return null;
var customAttribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute));
return customAttribute == null ? val.ToString() : ((DescriptionAttribute)customAttribute).Description;
}
/// <summary>
/// 返回需单独处理错误的信息
/// </summary>
/// <param name="enums"></param>
/// <returns></returns>
public static ActionResult Fail(ErrorEnum enums)
{
var code = Convert.ToInt32(enums);
var message = enums.GetDescription();
var result = new ResultModel(code, message, "");
return new OkObjectResult(result);
}
/// <summary>
/// 返回需单独处理错误的信息,自定义message
/// </summary>
/// <param name="enums"></param>
/// <param name="message"></param>
/// <returns></returns>
public static ActionResult Fail(ErrorEnum enums, string message)
{
var code = Convert.ToInt32(enums);
var result = new ResultModel(code, message, "");
return new OkObjectResult(result);
}
/// <summary>
///
/// </summary>
/// <param name="data"></param>
/// <param name="enums"></param>
/// <returns></returns>
public static ActionResult Fail(object data, ErrorEnum enums)
{
var result = new ResultModel(Convert.ToInt32(enums),enums.GetDescription(), data);
return new OkObjectResult(result);
}
/// <summary>
/// 成功(200,无返回)
/// </summary>
/// <returns></returns>
public static ActionResult Success()
{
var result = new ResultModel(200, "Success", "");
return new OkObjectResult(result);
}
/// <summary>
/// 成功(200,返回数据)
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static ActionResult Success(object data)//File(ms.ToArray(), "application/pdf");
{
var result = new ResultModel(200, "Success", data);
return new OkObjectResult(result);
}
/// <summary>
/// 返回自定义错误
/// </summary>
/// <param name="message"></param>
/// <param name="code"></param>
/// <returns></returns>
public static ActionResult CustomizeFail(string message, int code = 5)
{
code = code switch
{
5 => 50001,
6 => 60001,
4 => 40001,
3 => 30001,
_ => code
};
return new OkObjectResult(new ResultModel(code, message, ""));
}
/// <summary>
/// 失败(500)
/// </summary>
/// <returns></returns>
public static ActionResult ServerError()
{
var result = new ResultModel(500, "服务器内部错误,请联系系统管理员。", "");
return new OkObjectResult(result);
}
/// <summary>
/// 失败(500)
/// </summary>
/// <returns></returns>
public static ActionResult Fail(Exception ex)
{
var result = new ResultModel(500, ex.Message, "");
return new OkObjectResult(result);
}
}
public class ResultModel
{
public int Code { get; set; }
public string Message { get; set; }
public object Data { get; set; }
public ResultModel()
{
}
public ResultModel(int code, string message, object data)
{
Code = code;
Message = message;
Data = data;
}
}
}