From ac92d68a8821d2a64bcffc620db9b8d5c3fd6229 Mon Sep 17 00:00:00 2001 From: CortexCore <2630229280@qq.com> Date: Sat, 4 May 2024 16:12:06 +0800 Subject: [PATCH] 1 --- src/Models/IDIS_Model.cs | 99 +++++++++++++++++++++++ src/Models/IDIS_Query_Data.cs | 35 ++++++++ src/Models/IDIS_Register_Data.cs | 22 ++++- src/Models/IDIS_Template_Item.cs | 4 +- src/Models/IDIS_Template_Item_MetaData.cs | 2 +- src/Services/IDIS_Service.cs | 21 +++-- src/Services/IDIS_TemplateService.cs | 13 ++- 7 files changed, 179 insertions(+), 17 deletions(-) create mode 100644 src/Models/IDIS_Model.cs create mode 100644 src/Models/IDIS_Query_Data.cs diff --git a/src/Models/IDIS_Model.cs b/src/Models/IDIS_Model.cs new file mode 100644 index 0000000..f0ee736 --- /dev/null +++ b/src/Models/IDIS_Model.cs @@ -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(); + public virtual IDIS_Register_Data.ValueInfo[] AsValueInfo() + { + var list = new List(); + 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 + { + 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() 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(); + } + } + +} \ No newline at end of file diff --git a/src/Models/IDIS_Query_Data.cs b/src/Models/IDIS_Query_Data.cs new file mode 100644 index 0000000..f641afa --- /dev/null +++ b/src/Models/IDIS_Query_Data.cs @@ -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(); +} \ No newline at end of file diff --git a/src/Models/IDIS_Register_Data.cs b/src/Models/IDIS_Register_Data.cs index f7ff8f2..ae04baf 100644 --- a/src/Models/IDIS_Register_Data.cs +++ b/src/Models/IDIS_Register_Data.cs @@ -7,10 +7,30 @@ namespace IDIS.Models; /// 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 Value; + public required ValueInfo[] Value; } \ No newline at end of file diff --git a/src/Models/IDIS_Template_Item.cs b/src/Models/IDIS_Template_Item.cs index 0c79da9..7c14443 100644 --- a/src/Models/IDIS_Template_Item.cs +++ b/src/Models/IDIS_Template_Item.cs @@ -6,7 +6,7 @@ namespace IDIS.Models /// /// 基于IDIS v1的标识模板值 /// - 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(); + public IDIS_Template_Item_MetaData MetaData { get; set; } } } \ No newline at end of file diff --git a/src/Models/IDIS_Template_Item_MetaData.cs b/src/Models/IDIS_Template_Item_MetaData.cs index 49caeed..7a2c305 100644 --- a/src/Models/IDIS_Template_Item_MetaData.cs +++ b/src/Models/IDIS_Template_Item_MetaData.cs @@ -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() { diff --git a/src/Services/IDIS_Service.cs b/src/Services/IDIS_Service.cs index 569cad5..21a9c28 100644 --- a/src/Services/IDIS_Service.cs +++ b/src/Services/IDIS_Service.cs @@ -25,21 +25,30 @@ namespace IDIS.Services /// event Action OnDisconnected; + /// + /// 解析标识的回调的回调 + /// + event Action OnQuery; + + /// + /// 注册标识的回调 + /// + event Action OnRegister; + /// /// 基于标识模板注册标识 /// /// 标识码 /// 标识模板 /// 值,通常为字典 - /// - UniTask RegisterAsync(string handle, string templateVersion,IDictionary value); + UniTask RegisterAsync(string handle, string templateVersion,IDIS_Register_Data.ValueInfo[] value); /// /// 异步删除标识 /// /// 标识码 /// 是否删除成功 - UniTask DeleteAsync(string code); + UniTask DeleteAsync(string code); /// /// 异步删除标识 @@ -47,7 +56,7 @@ namespace IDIS.Services /// 标识码 /// 标识索引 /// - UniTask DeleteIdDataAsync(string code, int index); + UniTask DeleteIdDataAsync(string code, int index); /// /// 更新标识值 @@ -55,14 +64,14 @@ namespace IDIS.Services /// 标识码 /// 需要更新的标识列表 /// - UniTask UpdateAsync(string code, IDictionary value); + UniTask UpdateAsync(string code, IDictionary value); /// /// 异步解析标识 /// /// 标识码 /// - UniTask QueryAsync(string code); + UniTask QueryAsync(string code); /// /// 标识码是否已注册 diff --git a/src/Services/IDIS_TemplateService.cs b/src/Services/IDIS_TemplateService.cs index 3623d48..8d756e9 100644 --- a/src/Services/IDIS_TemplateService.cs +++ b/src/Services/IDIS_TemplateService.cs @@ -11,34 +11,33 @@ namespace IDIS.Services { event Action OnTemplateCreated; event Action OnTemplateDeleted; + /// - /// 查询数据模板 + /// 查询标识模板 /// /// 前缀 /// 模板版本 /// - UniTask QueryAsync(string prefix, string version); + UniTask QueryAsync(string prefix, string version); /// /// 获取所有数据模板 /// /// - UniTask ToArrayAsync(); + UniTask ToArrayAsync(); /// /// 保存数据模板 /// 模板不存在时为会新增模板信息 /// /// 模板信息 - /// - UniTask SaveAsync(IDIS_Template template); + UniTask SaveAsync(IDIS_Template template); /// /// 删除数据模板 /// /// /// - /// - UniTask DeleteAsync (string prefix, string version); + UniTask DeleteAsync (string prefix, string version); } } \ No newline at end of file