using IRaCIS.Core.Domain.Share; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using static System.Runtime.InteropServices.JavaScript.JSType; namespace IRaCIS.Core.Infrastructure.Extention { /// /// 响应数据输出 泛型 /// public class ResponseOutput : IResponseOutput { /// /// 是否成功标记 /// public bool IsSuccess { get; private set; } public ApiResponseCodeEnum Code { get; set; } = ApiResponseCodeEnum.OK; /// /// 消息 /// public string ErrorMessage { get; private set; } /// /// 数据 兼顾以前 Json序列化的时候返回属性名为“Result” /// [JsonProperty("Result")] public T Data { get; set; } [JsonProperty("OtherInfo")] public object OtherData { get; set; } public string LocalizedInfo { get; set; } public ResponseOutput Ok(T data, object otherData, string msg = "", ApiResponseCodeEnum code = ApiResponseCodeEnum.OK) { IsSuccess = true; Code = code; Data = data; OtherData = otherData; ErrorMessage = msg; return this; } /// /// 失败 /// /// 提示消息 /// 数据 /// public ResponseOutput NotOk(string msg = "", T data = default, ApiResponseCodeEnum code = ApiResponseCodeEnum.OK, string localizedInfo = "") { IsSuccess = false; Code = code; ErrorMessage = msg; Data = data; LocalizedInfo = localizedInfo; return this; } } /// /// 响应数据静态输出 为了代码简洁 不用每处都New /// public static class ResponseOutput { public static IResponseOutput Ok(T data = default, object otherData = default, string msg = "", ApiResponseCodeEnum code = ApiResponseCodeEnum.OK) { return new ResponseOutput().Ok(data, otherData, msg, code); } /// /// 成功 /// /// public static IResponseOutput Ok() { return Ok(); } /// /// 失败 /// /// 消息 /// 数据 /// public static IResponseOutput NotOk(string msg = "", T data = default, ApiResponseCodeEnum code = ApiResponseCodeEnum.BusinessValidationFailed, string localizedInfo = "") { return new ResponseOutput().NotOk(msg, data, code, localizedInfo); } /// /// 失败 /// /// 消息 /// public static IResponseOutput NotOk(string msg = "", ApiResponseCodeEnum code = ApiResponseCodeEnum.BusinessValidationFailed) { return new ResponseOutput().NotOk(msg, code: code); } public static IResponseOutput NotOk(LocalizedString msg, ApiResponseCodeEnum code = ApiResponseCodeEnum.BusinessValidationFailed) { var key = msg.Name; var info = string.Empty; if (!string.IsNullOrWhiteSpace(key) && StaticData.Localizer_Dev_Dic.ContainsKey(key)) { info = $"[{key}]:{StaticData.Localizer_Dev_Dic[key]}"; } return new ResponseOutput().NotOk(msg, code: code, localizedInfo: info); } public static IResponseOutput DBNotExistIfNUll(object businessObject) { return new ResponseOutput().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"); } /// /// 根据布尔值返回结果 --适合删除 /// /// /// public static IResponseOutput Result(bool success) { return success ? Ok() : NotOk("Expect a change, but the database data has not changed"); } /// /// 根据布尔值返回结果 --适合添加和更新一起 /// /// /// public static IResponseOutput Result(bool success, T data = default) { return success ? Ok(data) : NotOk("Saved failed", data); } ///// ///// 根据布尔值返回结果 ///// ///// ///// //public static IResponseOutput Result(bool success) //{ // return success ? Ok() : NotOk(); //} } }