using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.Collections.Generic; using System.Linq; namespace HH.WCS.SJML.Dto { public enum ResultStatus { Error = 0, Success = 1, Warning = 2 } public class OperateResult { public OperateResult() { this.okList = new List(); this.failList = new List(); } public OperateResult(ResultStatus status, string msg, bool success, int affectedRows = 0) { Status = status; Msg = msg; Success = success; AffectedRows = affectedRows; } public OperateResult(ResultStatus status, string msg, object data, bool success) { Status = status; Msg = msg; Data = data; Success = success; } public List okList { get; set; } public List failList { get; set; } public ResultStatus Status { get; set; } public string Code { get; set; } public string Msg { get; set; } public object Data { get; set; } public int AffectedRows { get; set; } public bool Success { get; set; } public static OperateResult Succeed(string msg = "succeed") { return new OperateResult(ResultStatus.Success, msg, true); } public static OperateResult Succeed(int affectedRows) { return new OperateResult(ResultStatus.Success, "succeed", true, affectedRows); } public static OperateResult Succeed(string msg, object data) { return new OperateResult(ResultStatus.Success, msg, data, true); } public static OperateResult Error(string msg = "error") { return new OperateResult(ResultStatus.Error, msg, false); } public OperateResult Error(T req, string msg, List reqList = null) { this.Success = false; if (string.IsNullOrEmpty(msg)) { if (failList.Any()) msg = failList[0].errMsg; } this.Msg = msg; this.Code = this.failList.Any() ? failList[0].errCode : ""; return this; } public OperateResult Ok(T req, List reqList = null) { this.Success = true; return this; } public static OperateResult Error(string msg, object data) { return new OperateResult(ResultStatus.Error, msg, data, false); } public static OperateResult Warning(string msg = "warning") { return new OperateResult(ResultStatus.Warning, msg, false); } public static OperateResult Warning(string msg, object data) { return new OperateResult(ResultStatus.Warning, msg, data, false); } public string Describe() { return "结果:" + (Success ? "成功!" : "失败!" + Msg); } } public static class OperateResultExtensions { public static T GetData(this OperateResult result) where T : class { if (result.Data == null) return default(T); if (result.Data.GetType() == typeof(JObject) || result.Data.GetType() == typeof(JArray) || result.Data.GetType() == typeof(string)) { string data = result.Data.ToString(); IsoDateTimeConverter timeFormat = new IsoDateTimeConverter(); timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss"; return JsonConvert.DeserializeObject(data, timeFormat); } return result.Data as T; } } }