This commit is contained in:
parent
4db0176004
commit
ac92d68a88
|
@ -0,0 +1,99 @@
|
|||
using System.ComponentModel;
|
||||
using System.Reflection;
|
||||
using IDIS.Models;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace IDIS.Model
|
||||
{
|
||||
public record IDIS_Model
|
||||
{
|
||||
[JsonIgnore]
|
||||
public virtual string[] Tags { get; set; } = Array.Empty<string>();
|
||||
public virtual IDIS_Register_Data.ValueInfo[] AsValueInfo()
|
||||
{
|
||||
var list = new List<IDIS_Register_Data.ValueInfo>();
|
||||
list.Add(new IDIS_Register_Data.ValueInfo
|
||||
{
|
||||
Data = new IDIS_Register_Data.ValueData
|
||||
{
|
||||
Value = string.Join(";",Tags),
|
||||
Format = "string"
|
||||
},
|
||||
Index = 0,
|
||||
Type = "Tags"
|
||||
});
|
||||
var index = 1;
|
||||
foreach (var x in GetProperties())
|
||||
{
|
||||
var valueInfo = new IDIS_Register_Data.ValueInfo
|
||||
{
|
||||
Data =new IDIS_Register_Data.ValueData()
|
||||
{
|
||||
Value = x.GetValue(this)!.ToString()!,
|
||||
Format = x.PropertyType.Name,
|
||||
},
|
||||
Index = index++,
|
||||
Type = x.Name
|
||||
};
|
||||
list.Add(valueInfo);
|
||||
}
|
||||
return list.ToArray();
|
||||
}
|
||||
public virtual IDIS_Template AsTemplate()
|
||||
{
|
||||
var template = new IDIS_Template
|
||||
{
|
||||
Description = "This is a template",
|
||||
Prefix = "88.123.99",
|
||||
Version = "1.0.0"
|
||||
};
|
||||
|
||||
var metaList = new List<IDIS_Template_Item>
|
||||
{
|
||||
new()
|
||||
{
|
||||
IdType = "tags",
|
||||
Name = "标签",
|
||||
MetaData = new IDIS_Template_Item_MetaData()
|
||||
{
|
||||
MinLength = 0,
|
||||
MaxLength = 255,
|
||||
Type = "string"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
foreach (var x in GetProperties())
|
||||
{
|
||||
var item = new IDIS_Template_Item
|
||||
{
|
||||
IdType = x.Name,
|
||||
};
|
||||
var meta = new IDIS_Template_Item_MetaData();
|
||||
if (x.GetCustomAttribute<DisplayNameAttribute>() is { } displayName)
|
||||
{
|
||||
item.Name = displayName.DisplayName;
|
||||
}
|
||||
meta.Type = x.PropertyType.Name;
|
||||
meta.MinLength = 0;
|
||||
meta.MaxLength = 255;
|
||||
|
||||
|
||||
item.MetaData = meta;
|
||||
|
||||
metaList.Add(item);
|
||||
}
|
||||
|
||||
template.Items = metaList.ToArray();
|
||||
return template;
|
||||
}
|
||||
private PropertyInfo[] GetProperties()
|
||||
{
|
||||
return GetType()
|
||||
.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
|
||||
.Where(x => x.Name is not ("EqualityContract" or "Tags"))
|
||||
.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
using Newtonsoft.Json;
|
||||
|
||||
namespace IDIS.Models;
|
||||
[Serializable]
|
||||
public record IDIS_Query_Data
|
||||
{
|
||||
public record QueryData
|
||||
{
|
||||
[JsonProperty("format")]
|
||||
public string Format;
|
||||
[JsonProperty("value")]
|
||||
public string Value;
|
||||
}
|
||||
public record QueryInfo
|
||||
{
|
||||
[JsonProperty("data")]
|
||||
public QueryData Data;
|
||||
[JsonProperty("auth")]
|
||||
public string Auth;
|
||||
[JsonProperty("index")]
|
||||
public int Index;
|
||||
[JsonProperty("type")]
|
||||
public string Type;
|
||||
}
|
||||
[JsonProperty("code")]
|
||||
public int Code;
|
||||
[JsonProperty("prefix")]
|
||||
public string Prefix;
|
||||
[JsonProperty("handle")]
|
||||
public string Handle;
|
||||
[JsonProperty("templateVersion")]
|
||||
public string TemplateVersion;
|
||||
[JsonProperty("value")]
|
||||
public QueryInfo[] Value=Array.Empty<QueryInfo>();
|
||||
}
|
|
@ -7,10 +7,30 @@ namespace IDIS.Models;
|
|||
/// </summary>
|
||||
public class IDIS_Register_Data
|
||||
{
|
||||
public record ValueData
|
||||
{
|
||||
[JsonProperty("format")]
|
||||
public string Format;
|
||||
[JsonProperty("value")]
|
||||
public string Value;
|
||||
|
||||
}
|
||||
public record ValueInfo
|
||||
{
|
||||
[JsonProperty("auth")]
|
||||
public string Auth;
|
||||
[JsonProperty("index")]
|
||||
public int Index;
|
||||
[JsonProperty("data")]
|
||||
public ValueData Data;
|
||||
[JsonProperty("type")]
|
||||
public string Type;
|
||||
}
|
||||
|
||||
[JsonProperty("handle")]
|
||||
public required string Handle;
|
||||
[JsonProperty("templateVersion")]
|
||||
public required string TemplateVersion;
|
||||
[JsonProperty("value")]
|
||||
public required Dictionary<string, object> Value;
|
||||
public required ValueInfo[] Value;
|
||||
}
|
|
@ -6,7 +6,7 @@ namespace IDIS.Models
|
|||
/// <summary>
|
||||
/// 基于IDIS v1的标识模板值
|
||||
/// </summary>
|
||||
public class IDIS_Template_Item
|
||||
public record IDIS_Template_Item
|
||||
{
|
||||
public IDIS_Template_Item(){}
|
||||
public IDIS_Template_Item(string name,string idType)
|
||||
|
@ -19,6 +19,6 @@ namespace IDIS.Models
|
|||
[JsonProperty("idType")]
|
||||
public string IdType { get; set; } = string.Empty;
|
||||
[JsonProperty("metaData")]
|
||||
public IDIS_Template_Item_MetaData[] MetaData { get; set; } = Array.Empty<IDIS_Template_Item_MetaData>();
|
||||
public IDIS_Template_Item_MetaData MetaData { get; set; }
|
||||
}
|
||||
}
|
|
@ -4,7 +4,7 @@ using Newtonsoft.Json;
|
|||
namespace IDIS
|
||||
{
|
||||
|
||||
public class IDIS_Template_Item_MetaData
|
||||
public record IDIS_Template_Item_MetaData
|
||||
{
|
||||
public IDIS_Template_Item_MetaData()
|
||||
{
|
||||
|
|
|
@ -25,21 +25,30 @@ namespace IDIS.Services
|
|||
/// </summary>
|
||||
event Action OnDisconnected;
|
||||
|
||||
/// <summary>
|
||||
/// 解析标识的回调的回调
|
||||
/// </summary>
|
||||
event Action<IDIS_Query_Data> OnQuery;
|
||||
|
||||
/// <summary>
|
||||
/// 注册标识的回调
|
||||
/// </summary>
|
||||
event Action<string,string> OnRegister;
|
||||
|
||||
/// <summary>
|
||||
/// 基于标识模板注册标识
|
||||
/// </summary>
|
||||
/// <param name="handle">标识码</param>
|
||||
/// <param name="templateVersion">标识模板</param>
|
||||
/// <param name="value">值,通常为字典</param>
|
||||
/// <returns></returns>
|
||||
UniTask<IDIS_Response> RegisterAsync(string handle, string templateVersion,IDictionary<string,object> value);
|
||||
UniTask RegisterAsync(string handle, string templateVersion,IDIS_Register_Data.ValueInfo[] value);
|
||||
|
||||
/// <summary>
|
||||
/// 异步删除标识
|
||||
/// </summary>
|
||||
/// <param name="code">标识码</param>
|
||||
/// <returns>是否删除成功</returns>
|
||||
UniTask<IDIS_Response> DeleteAsync(string code);
|
||||
UniTask DeleteAsync(string code);
|
||||
|
||||
/// <summary>
|
||||
/// 异步删除标识
|
||||
|
@ -47,7 +56,7 @@ namespace IDIS.Services
|
|||
/// <param name="code">标识码</param>
|
||||
/// <param name="index">标识索引</param>
|
||||
/// <returns></returns>
|
||||
UniTask<IDIS_Response> DeleteIdDataAsync(string code, int index);
|
||||
UniTask DeleteIdDataAsync(string code, int index);
|
||||
|
||||
/// <summary>
|
||||
/// 更新标识值
|
||||
|
@ -55,14 +64,14 @@ namespace IDIS.Services
|
|||
/// <param name="code">标识码</param>
|
||||
/// <param name="value">需要更新的标识列表</param>
|
||||
/// <returns></returns>
|
||||
UniTask<IDIS_Response> UpdateAsync(string code, IDictionary<string,object> value);
|
||||
UniTask UpdateAsync(string code, IDictionary<string,object> value);
|
||||
|
||||
/// <summary>
|
||||
/// 异步解析标识
|
||||
/// </summary>
|
||||
/// <param name="code">标识码</param>
|
||||
/// <returns><see cref="IDIS_Response"/></returns>
|
||||
UniTask<IDIS_Response> QueryAsync(string code);
|
||||
UniTask<IDIS_Query_Data> QueryAsync(string code);
|
||||
|
||||
/// <summary>
|
||||
/// 标识码是否已注册
|
||||
|
|
|
@ -11,34 +11,33 @@ namespace IDIS.Services
|
|||
{
|
||||
event Action<IDIS_Template> OnTemplateCreated;
|
||||
event Action<IDIS_Template> OnTemplateDeleted;
|
||||
|
||||
/// <summary>
|
||||
/// 查询数据模板
|
||||
/// 查询标识模板
|
||||
/// </summary>
|
||||
/// <param name="prefix">前缀</param>
|
||||
/// <param name="version">模板版本</param>
|
||||
/// <returns></returns>
|
||||
UniTask<IDIS_Response> QueryAsync(string prefix, string version);
|
||||
UniTask<IDIS_Template> QueryAsync(string prefix, string version);
|
||||
|
||||
/// <summary>
|
||||
/// 获取所有数据模板
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
UniTask<IDIS_Response> ToArrayAsync();
|
||||
UniTask<IDIS_Template[]> ToArrayAsync();
|
||||
|
||||
/// <summary>
|
||||
/// 保存数据模板
|
||||
/// <para>模板不存在时为会新增模板信息</para>
|
||||
/// </summary>
|
||||
/// <param name="template">模板信息</param>
|
||||
/// <returns></returns>
|
||||
UniTask<IDIS_Response> SaveAsync(IDIS_Template template);
|
||||
UniTask SaveAsync(IDIS_Template template);
|
||||
|
||||
/// <summary>
|
||||
/// 删除数据模板
|
||||
/// </summary>
|
||||
/// <param name="prefix"></param>
|
||||
/// <param name="version"></param>
|
||||
/// <returns></returns>
|
||||
UniTask<IDIS_Response> DeleteAsync (string prefix, string version);
|
||||
UniTask DeleteAsync (string prefix, string version);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue