using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HH.WMS.Client
{
public enum ResultStatus
{
Error = 0,
Success = 1,
Warning = 2
}
///
/// 返回消息固定格式
///
public class OperateResult
{
public OperateResult()
{
}
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 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 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 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;
}
}
}