Compare commits

...
3 Commits
Author SHA1 Message Date
xrain 1c8ea86fd3 add basemodel 2021-06-05 11:20:32 +08:00
xrain f5e4cc97ba new request type 2021-06-05 07:56:48 +08:00
xrain 8550d663de fix useapi mutil return bug 2021-06-03 17:16:55 +08:00
4 changed files with 80 additions and 7 deletions
+11 -1
View File
@@ -1,4 +1,5 @@
using System;
namespace SimApi.Communications
{
/// <summary>
@@ -9,6 +10,15 @@ namespace SimApi.Communications
public int Id { get; set; }
}
/// <summary>
/// 动态类型单字段请求
/// </summary>
/// <typeparam name="T"></typeparam>
public class SimApiOneFieldRequest<T>
{
public T Data { get; set; }
}
/// <summary>
/// 基础分页请求
/// </summary>
@@ -17,4 +27,4 @@ namespace SimApi.Communications
public int Page { get; set; }
public int Count { get; set; }
}
}
}
+7
View File
@@ -37,5 +37,12 @@ namespace SimApi.Helpers
return strbul.ToString();
}
public static void Log(string message, string type = "Information")
{
Console.WriteLine($"[ SimApi ][ {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff")} ][ {type} ]");
Console.WriteLine(message);
Console.WriteLine("");
}
}
}
+45
View File
@@ -0,0 +1,45 @@
using System;
using System.Linq;
using System.Text.Json;
namespace SimApi.Models
{
public class SimApiBaseModel
{
protected virtual string[] MapperIgnoreField { get; set; } = {"Id", "CreatedAt", "UpdatedAt"};
protected virtual string UpdatedTimeField { get; set; } = "UpdatedAt";
public void MapData<TS>(TS source, bool mapAll = false)
{
//获取要赋值的源数据不为null的项目
var sourceProps = source.GetType().GetProperties().Where(x => x.GetValue(source) != null)
.Select(x => new {x.Name, x.PropertyType})
.ToDictionary(x => x.Name, x => x.PropertyType);
//获取目标对象的属性信息
var targetProps = GetType().GetProperties().Select(x => new {x.Name, x.PropertyType})
.ToDictionary(x => x.Name, x => x.PropertyType);
foreach (var sp in sourceProps)
{
//检查源对象不为空的属性是否在目标对象中存在
if (targetProps.ContainsKey(sp.Key) && sp.Value == targetProps[sp.Key] &&
(!MapperIgnoreField.Contains(sp.Key) || mapAll))
{
GetType().GetProperty(sp.Key)?
.SetValue(this, source.GetType().GetProperty(sp.Key)?.GetValue(source));
}
}
UpdateTime();
}
/// <summary>
/// 更新update时间
/// </summary>
/// <returns></returns>
public void UpdateTime()
{
GetType().GetProperty(UpdatedTimeField)?.SetValue(this, DateTime.Now);
}
}
}
+17 -6
View File
@@ -153,15 +153,23 @@ namespace SimApi
public static IApplicationBuilder UseSimApi(this IApplicationBuilder builder)
{
var options = builder.ApplicationServices.GetService<SimApiOptions>();
if (options.EnableForwardHeaders)
{
SimApiUtil.Log("开始配置ForwardedHeaders...");
builder.UseForwardedHeaders();
}
if (options.EnableSimApiAuth)
{
SimApiUtil.Log("开始配置SimApiAuth...");
builder.UseMiddleware<SimApiAuthMiddleware>();
}
if (options.EnableSimApiDoc)
{
SimApiUtil.Log("开始配置SimApiDoc...");
var docOptions = options.SimApiDocOptions;
return builder.UseSwagger(x => x.RouteTemplate = "/swagger/{documentName}.json").UseSwaggerUI(x =>
builder.UseSwagger(x => x.RouteTemplate = "/swagger/{documentName}.json").UseSwaggerUI(x =>
{
x.DocumentTitle = docOptions.DocumentTitle;
foreach (var group in docOptions.ApiGroups)
@@ -177,17 +185,20 @@ namespace SimApi
if (options.EnableSimApiException)
{
SimApiUtil.Log("开始配置SimApiException...");
builder.UseMiddleware<SimApiExceptionMiddleware>();
}
if (options.EnableForwardHeaders)
//请求一下检测存储错误
if (options.EnableSimApiStorage)
{
builder.UseForwardedHeaders();
SimApiUtil.Log("开始配置SimApiStorage...");
builder.ApplicationServices.GetService<SimApiStorage>();
}
//请求一下检测存储错误
if(options.EnableSimApiStorage){
builder.ApplicationServices.GetService<SimApiStorage>();
if (options.EnableLowerUrl)
{
SimApiUtil.Log("开始配置使用URL小写...");
}
return builder;