Files
juipnet/Infrastructure/Hncore.Infrastructure/OpenApi/OpenApiResult.cs
“wanyongkang” 40a40b6d36 忽略
2020-12-28 14:55:48 +08:00

111 lines
3.0 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using Hncore.Infrastructure.Common;
using Hncore.Infrastructure.Extension;
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
namespace Hncore.Infrastructure.OpenApi
{
public class OpenApiResult<T> where T : class, new()
{
[JsonProperty("code")] public OpenApiReturnCode Code { get; private set; }
[JsonProperty("message")] public string Message { get; private set; } = "";
[JsonProperty("timestamp")] public long Timestamp { get; set; }
[JsonProperty("sign")] public string Sign { get; set; }
[JsonProperty("data")] public T Data { get; set; } = new T();
private static readonly Dictionary<Enum, string> Dic;
static OpenApiResult()
{
Dic = ObjectExtension.ToDescriptionDictionary<OpenApiReturnCode>();
}
public OpenApiResult(OpenApiReturnCode code = OpenApiReturnCode.Success, string message = "")
{
Code = code;
if (string.IsNullOrEmpty(message) && Dic.ContainsKey(Code))
{
Message = Dic[Code];
}
else
{
Message = message;
}
this.Timestamp = DateTimeHelper.ToUnixTimestamp(DateTime.Now);
}
public void CreateSign(string key)
{
this.Sign = OpenApiSignUtil.CreateSign(this.Timestamp, key);
}
public OpenApiResult<T> CreateSign(HttpContext httpContext)
{
var key = httpContext.Items["OpenApiAppKey"].ToString();
this.Sign = OpenApiSignUtil.CreateSign(this.Timestamp, key);
return this;
}
}
public class OpenApiResult : OpenApiResult<object>
{
public OpenApiResult(OpenApiReturnCode code = OpenApiReturnCode.Success, string message = "") : base(code,
message)
{
}
public new OpenApiResult CreateSign(HttpContext httpContext)
{
var key = httpContext.Items["OpenApiAppKey"].ToString();
this.Sign = OpenApiSignUtil.CreateSign(this.Timestamp, key);
return this;
}
}
public enum OpenApiReturnCode
{
/// <summary>
/// 成功
/// </summary>
[Description("成功")] Success = 10000,
/// <summary>
/// 验签失败
/// </summary>
[Description("未授权")] Unauthorized = 40001,
/// <summary>
/// 验签失败
/// </summary>
[Description("验签失败")] SignError = 40002,
/// <summary>
/// 时间戳过期
/// </summary>
[Description("时间戳过期")] TimeStampExpired = 40003,
/// <summary>
/// 内部错误
/// </summary>
[Description("内部错误")] InternalError = 50000,
/// <summary>
/// 处理失败
/// </summary>
[Description("处理失败")] Error = 500001
}
}