using Newtonsoft.Json; namespace IRaCIS.Core.Infrastructure.Extention { /// <summary> /// 响应数据输出 泛型 /// </summary> public class ResponseOutput<T> : IResponseOutput<T> { /// <summary> /// 是否成功标记 /// </summary> public bool IsSuccess { get; private set; } public ApiResponseCodeEnum Code { get; set; } = ApiResponseCodeEnum.OK; /// <summary> /// 消息 /// </summary> public string ErrorMessage { get; private set; } /// <summary> /// 数据 兼顾以前 Json序列化的时候返回属性名为“Result” /// </summary> [JsonProperty("Result")] public T Data { get; private set; } [JsonProperty("OtherInfo")] public object OtherData { get; set; } /// <summary> /// 成功 /// </summary> /// <param name="data">数据</param> /// <param name="msg">消息</param> //public ResponseOutput<T> Ok(T data, string msg = "", ApiResponseCodeEnum code = ApiResponseCodeEnum.OK) //{ // IsSuccess = true; // Code = code; // Data = data; // ErrorMessage = msg; // return this; //} public ResponseOutput<T> Ok(T data, object otherData, string msg = "", ApiResponseCodeEnum code = ApiResponseCodeEnum.OK) { IsSuccess = true; Code = code; Data = data; OtherData=otherData; ErrorMessage = msg; return this; } /// <summary> /// 失败 /// </summary> /// <param name="msg">提示消息</param> /// <param name="data">数据</param> /// <returns></returns> public ResponseOutput<T> NotOk(string msg = "", T data = default, ApiResponseCodeEnum code = ApiResponseCodeEnum.OK) { IsSuccess = false; Code = code; ErrorMessage = msg; Data = data; return this; } } //public class ResponseOutput<T, T2> : IResponseOutput<T, T2> //{ // [JsonProperty("Result")] // public T Data { get; private set; } // public T2 OtherInfo { get; private set; } // public bool IsSuccess { get; private set; } // public ApiResponseCodeEnum Code { get; set; } // public string ErrorMessage { get; private set; } // public ResponseOutput<T, T2> Ok(T data, T2 otherInfo, string msg = "") // { // IsSuccess = true; // Data = data; // OtherInfo = otherInfo; // ErrorMessage = msg; // return this; // } //} /// <summary> /// 响应数据静态输出 为了代码简洁 不用每处都New /// </summary> public static class ResponseOutput { //public static IResponseOutput<T, T2> Ok<T, T2>(T data, T2 otherInfo, string msg = "") //{ // return new ResponseOutput<T, T2>().Ok(data, otherInfo); //} /// <summary> /// 成功 -----适合查询 /// </summary> /// <param name="data">数据</param> /// <param name="msg">消息</param> /// <returns></returns> //public static IResponseOutput<T> Ok<T>(T data = default, string msg = "") //{ // return new ResponseOutput<T>().Ok(data, msg); //} public static IResponseOutput<T> Ok<T>(T data = default, object otherData = default, string msg = "", ApiResponseCodeEnum code = ApiResponseCodeEnum.OK) { return new ResponseOutput<T>().Ok(data, otherData, msg, code); } /// <summary> /// 成功 /// </summary> /// <returns></returns> public static IResponseOutput Ok() { return Ok<string>(); } /// <summary> /// 失败 /// </summary> /// <param name="msg">消息</param> /// <param name="data">数据</param> /// <returns></returns> public static IResponseOutput<T> NotOk<T>(string msg = "", T data = default, ApiResponseCodeEnum code = ApiResponseCodeEnum.BusinessValidationFailed) { return new ResponseOutput<T>().NotOk(msg, data, code); } //public static IResponseOutput<T> NotOk<T>( T data = default, ApiResponseCodeEnum code = ApiResponseCodeEnum.BusinessValidationFailed) //{ // return new ResponseOutput<T>().NotOk("", data, code); //} /// <summary> /// 失败 /// </summary> /// <param name="msg">消息</param> /// <returns></returns> public static IResponseOutput<string> NotOk(string msg = "", ApiResponseCodeEnum code = ApiResponseCodeEnum.BusinessValidationFailed) { return new ResponseOutput<string>().NotOk(msg,code:code); } public static IResponseOutput<string> DBNotExistIfNUll(object businessObject) { return new ResponseOutput<string>().NotOk($"The business object{businessObject.GetType().Name} does not exist in the database, or was deleted by someone else, or an incorrect parameter query caused"); } /// <summary> /// 根据布尔值返回结果 --适合删除 /// </summary> /// <param name="success"></param> /// <returns></returns> public static IResponseOutput Result(bool success) { return success ? Ok() : NotOk("Expect a change, but the database data has not changed"); } /// <summary> /// 根据布尔值返回结果 --适合添加和更新一起 /// </summary> /// <param name="success"></param> /// <returns></returns> public static IResponseOutput<T> Result<T>(bool success, T data = default) { return success ? Ok<T>(data) : NotOk<T>("Saved failed",data); } ///// <summary> ///// 根据布尔值返回结果 ///// </summary> ///// <param name="success"></param> ///// <returns></returns> //public static IResponseOutput Result<T>(bool success) //{ // return success ? Ok<T>() : NotOk<T>(); //} } }