From 1b331068bad1dcbd27393f2a15ccdc9b069d1e84 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Wed, 12 Oct 2022 20:41:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(work):=20=E6=96=B0=E5=A2=9E=E6=99=BA?= =?UTF-8?q?=E6=85=A7=E7=A1=AC=E4=BB=B6=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DeviceData/DeviceDataAuthChangeEvent.cs | 27 +++ ...ClientExecuteCgibinDeviceDataExtensions.cs | 174 ++++++++++++++++++ ...inDeviceDataAddAccessControlRuleRequest.cs | 78 ++++++++ ...nDeviceDataAddAccessControlRuleResponse.cs | 22 +++ ...eviceDataDeleteAccessControlRuleRequest.cs | 15 ++ ...viceDataDeleteAccessControlRuleResponse.cs | 9 + ...inDeviceDataGetAccessControlRuleRequest.cs | 15 ++ ...nDeviceDataGetAccessControlRuleResponse.cs | 93 ++++++++++ ...eviceDataModifyAccessControlRuleRequest.cs | 52 ++++++ ...viceDataModifyAccessControlRuleResponse.cs | 15 ++ ...inDeviceDataGetAccessControlDataRequest.cs | 73 ++++++++ ...nDeviceDataGetAccessControlDataResponse.cs | 80 ++++++++ .../CgibinDeviceDataGetAuthInfoRequest.cs | 15 ++ .../CgibinDeviceDataGetAuthInfoResponse.cs | 66 +++++++ .../CgibinDeviceDataGetCheckinDataRequest.cs | 73 ++++++++ .../CgibinDeviceDataGetCheckinDataResponse.cs | 59 ++++++ ...ibinDeviceDataGetTemperatureDataRequest.cs | 73 ++++++++ ...binDeviceDataGetTemperatureDataResponse.cs | 80 ++++++++ .../DeviceData/DeviceDataAuthChangeEvent.xml | 7 + ...DeviceDataAddAccessControlRuleRequest.json | 36 ++++ ...eviceDataAddAccessControlRuleResponse.json | 6 + ...iceDataDeleteAccessControlRuleRequest.json | 3 + ...DeviceDataGetAccessControlRuleRequest.json | 3 + ...eviceDataGetAccessControlRuleResponse.json | 78 ++++++++ ...iceDataModifyAccessControlRuleRequest.json | 37 ++++ ...ceDataModifyAccessControlRuleResponse.json | 5 + ...DeviceDataGetAccessControlDataRequest.json | 11 ++ ...eviceDataGetAccessControlDataResponse.json | 25 +++ .../CgibinDeviceDataGetAuthInfoRequest.json | 3 + .../CgibinDeviceDataGetAuthInfoResponse.json | 15 ++ ...CgibinDeviceDataGetCheckinDataRequest.json | 10 + ...gibinDeviceDataGetCheckinDataResponse.json | 14 ++ ...inDeviceDataGetTemperatureDataRequest.json | 11 ++ ...nDeviceDataGetTemperatureDataResponse.json | 25 +++ 34 files changed, 1308 insertions(+) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Events/DeviceData/DeviceDataAuthChangeEvent.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinDeviceDataExtensions.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataDeleteAccessControlRuleRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataDeleteAccessControlRuleResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAuthInfoRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAuthInfoResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetCheckinDataRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetCheckinDataResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/DeviceData/DeviceDataAuthChangeEvent.xml create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataDeleteAccessControlRuleRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAuthInfoRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAuthInfoResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetCheckinDataRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetCheckinDataResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Events/DeviceData/DeviceDataAuthChangeEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/DeviceData/DeviceDataAuthChangeEvent.cs new file mode 100644 index 00000000..ea88bff6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/DeviceData/DeviceDataAuthChangeEvent.cs @@ -0,0 +1,27 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Events +{ + /// + /// 表示 INFO.device_data_auth_change 事件的数据。 + /// REF: https://developer.work.weixin.qq.com/document/path/96103 + /// + public class DeviceDataAuthChangeEvent : WechatWorkEvent, WechatWorkEvent.Serialization.IXmlSerializable + { + /// + /// 获取或设置第三方应用的 SuiteId。 + /// + [System.Xml.Serialization.XmlElement("SuiteId")] + public string SuiteId { get; set; } = default!; + + /// + /// 获取或设置授权方的 CorpId。 + /// + [System.Xml.Serialization.XmlElement("AuthCorpId")] + public string AuthorizerCorpId { get; set; } = default!; + + /// + /// 获取或设置应用 ID。 + /// + [System.Xml.Serialization.XmlElement("AgentID")] + public int AgentId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinDeviceDataExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinDeviceDataExtensions.cs new file mode 100644 index 00000000..324fd142 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinDeviceDataExtensions.cs @@ -0,0 +1,174 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Flurl; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.Work +{ + public static class WechatWorkClientExecuteCgibinDeviceDataExtensions + { + /// + /// 异步调用 [POST] /cgi-bin/devicedata/get_auth_info 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/96097 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinDeviceDataGetAuthInfoAsync(this WechatWorkClient client, Models.CgibinDeviceDataGetAuthInfoRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "cgi-bin", "devicedata", "get_auth_info") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/devicedata/get_checkin_data 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/96027 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinDeviceDataGetCheckinDataAsync(this WechatWorkClient client, Models.CgibinDeviceDataGetCheckinDataRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "cgi-bin", "devicedata", "get_checkin_data") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/devicedata/get_temperature_data 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/96028 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinDeviceDataGetTemperatureDataAsync(this WechatWorkClient client, Models.CgibinDeviceDataGetTemperatureDataRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "cgi-bin", "devicedata", "get_temperature_data") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/devicedata/get_accesscontrol_data 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/96029 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinDeviceDataGetAccessControlDataAsync(this WechatWorkClient client, Models.CgibinDeviceDataGetAccessControlDataRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "cgi-bin", "devicedata", "get_accesscontrol_data") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, cancellationToken: cancellationToken); + } + + #region AccessControlRule + /// + /// 异步调用 [POST] /cgi-bin/devicedata/get_accesscontrol_rule 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/96030 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinDeviceDataGetAccessControlRuleAsync(this WechatWorkClient client, Models.CgibinDeviceDataGetAccessControlRuleRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "cgi-bin", "devicedata", "get_accesscontrol_rule") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/devicedata/add_accesscontrol_rule 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/96031 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinDeviceDataAddAccessControlRuleAsync(this WechatWorkClient client, Models.CgibinDeviceDataAddAccessControlRuleRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "cgi-bin", "devicedata", "add_accesscontrol_rule") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/devicedata/mod_accesscontrol_rule 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/96221 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinDeviceDataModifyAccessControlRuleAsync(this WechatWorkClient client, Models.CgibinDeviceDataModifyAccessControlRuleRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "cgi-bin", "devicedata", "mod_accesscontrol_rule") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/devicedata/del_accesscontrol_rule 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/96227 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinDeviceDataDeleteAccessControlRuleAsync(this WechatWorkClient client, Models.CgibinDeviceDataDeleteAccessControlRuleRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "cgi-bin", "devicedata", "del_accesscontrol_rule") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, cancellationToken: cancellationToken); + } + #endregion + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleRequest.cs new file mode 100644 index 00000000..4e3a1adc --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleRequest.cs @@ -0,0 +1,78 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/add_accesscontrol_rule 接口的请求。 + /// + public class CgibinDeviceDataAddAccessControlRuleRequest : WechatWorkRequest + { + public static class Types + { + public class PassRule + { + public static class Types + { + public class EffectUser + { + /// + /// 获取或设置成员的 OpenUserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("open_userid")] + [System.Text.Json.Serialization.JsonPropertyName("open_userid")] + public string OpenUserId { get; set; } = string.Empty; + + /// + /// 获取或设置成员类型。 + /// + [Newtonsoft.Json.JsonProperty("user_type")] + [System.Text.Json.Serialization.JsonPropertyName("user_type")] + public int? UserType { get; set; } + } + } + + /// + /// 获取或设置门禁放行规则列表。 + /// + [Newtonsoft.Json.JsonProperty("rule_list")] + [System.Text.Json.Serialization.JsonPropertyName("rule_list")] + public IList RuleList { get; set; } = new List(); + + /// + /// 获取或设置生效成员列表。 + /// + [Newtonsoft.Json.JsonProperty("effect_open_userid_list")] + [System.Text.Json.Serialization.JsonPropertyName("effect_open_userid_list")] + public IList EffectUserList { get; set; } = new List(); + } + } + + /// + /// 获取或设置门禁规则名称。 + /// + [Newtonsoft.Json.JsonProperty("rule_name")] + [System.Text.Json.Serialization.JsonPropertyName("rule_name")] + public string RuleName { get; set; } = string.Empty; + + /// + /// 获取或设置设备序列号列表。 + /// + [Newtonsoft.Json.JsonProperty("device_sn_list")] + [System.Text.Json.Serialization.JsonPropertyName("device_sn_list")] + public IList DeviceSerialNumberList { get; set; } = new List(); + + /// + /// 获取或设置门禁规则。 + /// + [Newtonsoft.Json.JsonProperty("pass_rule")] + [System.Text.Json.Serialization.JsonPropertyName("pass_rule")] + public Types.PassRule? PassRule { get; set; } + + /// + /// 获取或设置远程门禁规则。 + /// + [Newtonsoft.Json.JsonProperty("remote_pass_rule")] + [System.Text.Json.Serialization.JsonPropertyName("remote_pass_rule")] + public Types.PassRule? RemotePassRule { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleResponse.cs new file mode 100644 index 00000000..7b4a6a4a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleResponse.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/add_accesscontrol_rule 接口的响应。 + /// + public class CgibinDeviceDataAddAccessControlRuleResponse : WechatWorkResponse + { + /// + /// 获取或设置门禁规则 ID。 + /// + [Newtonsoft.Json.JsonProperty("rule_id")] + [System.Text.Json.Serialization.JsonPropertyName("rule_id")] + public string RuleId { get; set; } = default!; + + /// + /// 获取或设置非法的 OpenUserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("invalid_list")] + [System.Text.Json.Serialization.JsonPropertyName("invalid_list")] + public string[]? InvalidOpenUserIdList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataDeleteAccessControlRuleRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataDeleteAccessControlRuleRequest.cs new file mode 100644 index 00000000..4128a2fc --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataDeleteAccessControlRuleRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/del_accesscontrol_rule 接口的请求。 + /// + public class CgibinDeviceDataDeleteAccessControlRuleRequest : WechatWorkRequest + { + /// + /// 获取或设置门禁规则 ID。 + /// + [Newtonsoft.Json.JsonProperty("rule_id")] + [System.Text.Json.Serialization.JsonPropertyName("rule_id")] + public string RuleId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataDeleteAccessControlRuleResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataDeleteAccessControlRuleResponse.cs new file mode 100644 index 00000000..8614e8ad --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataDeleteAccessControlRuleResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/del_accesscontrol_rule 接口的响应。 + /// + public class CgibinDeviceDataDeleteAccessControlRuleResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleRequest.cs new file mode 100644 index 00000000..98f7bbbe --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/get_accesscontrol_rule 接口的请求。 + /// + public class CgibinDeviceDataGetAccessControlRuleRequest : WechatWorkRequest + { + /// + /// 获取或设置设备序列号。 + /// + [Newtonsoft.Json.JsonProperty("device_sn")] + [System.Text.Json.Serialization.JsonPropertyName("device_sn")] + public string DeviceSerialNumberList { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleResponse.cs new file mode 100644 index 00000000..7ce32fdc --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleResponse.cs @@ -0,0 +1,93 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/get_accesscontrol_rule 接口的响应。 + /// + public class CgibinDeviceDataGetAccessControlRuleResponse : WechatWorkResponse + { + public static class Types + { + public class PassRuleList + { + /// + /// 获取或设置门禁规则列表。 + /// + [Newtonsoft.Json.JsonProperty("items")] + [System.Text.Json.Serialization.JsonPropertyName("items")] + public Types.PassRuleItem[] Items { get; set; } = default!; + } + + public class PassRuleItem + { + public static class Types + { + public class EffectUser + { + /// + /// 获取或设置成员的 OpenUserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("open_userid")] + [System.Text.Json.Serialization.JsonPropertyName("open_userid")] + public string OpenUserId { get; set; } = default!; + + /// + /// 获取或设置成员类型。 + /// + [Newtonsoft.Json.JsonProperty("user_type")] + [System.Text.Json.Serialization.JsonPropertyName("user_type")] + public int? UserType { get; set; } + } + } + + /// + /// 获取或设置门禁规则 ID。 + /// + [Newtonsoft.Json.JsonProperty("rule_id")] + [System.Text.Json.Serialization.JsonPropertyName("rule_id")] + public string RuleId { get; set; } = default!; + + /// + /// 获取或设置门禁规则名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string RuleName { get; set; } = default!; + + /// + /// 获取或设置门禁放行规则列表。 + /// + [Newtonsoft.Json.JsonProperty("rule_list")] + [System.Text.Json.Serialization.JsonPropertyName("rule_list")] + public string[] RuleList { get; set; } = default!; + + /// + /// 获取或设置生效成员列表。 + /// + [Newtonsoft.Json.JsonProperty("effect_open_userid_list")] + [System.Text.Json.Serialization.JsonPropertyName("effect_open_userid_list")] + public Types.EffectUser[] EffectUserList { get; set; } = default!; + + /// + /// 获取或设置门禁生效时间戳。 + /// + [Newtonsoft.Json.JsonProperty("effect_time")] + [System.Text.Json.Serialization.JsonPropertyName("effect_time")] + public long EffectTimestamp { get; set; } + } + } + + /// + /// 获取或设置门禁规则列表。 + /// + [Newtonsoft.Json.JsonProperty("pass_rule")] + [System.Text.Json.Serialization.JsonPropertyName("pass_rule")] + public Types.PassRuleList? PassRuleList { get; set; } + + /// + /// 获取或设置远程门禁规则列表。 + /// + [Newtonsoft.Json.JsonProperty("remote_pass_rule")] + [System.Text.Json.Serialization.JsonPropertyName("remote_pass_rule")] + public Types.PassRuleList? RemotePassRuleList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleRequest.cs new file mode 100644 index 00000000..fa7fc4c2 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleRequest.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/mod_accesscontrol_rule 接口的请求。 + /// + public class CgibinDeviceDataModifyAccessControlRuleRequest : WechatWorkRequest + { + public static class Types + { + public class PassRule : CgibinDeviceDataAddAccessControlRuleRequest.Types.PassRule + { + } + } + + /// + /// 获取或设置门禁规则 ID。 + /// + [Newtonsoft.Json.JsonProperty("rule_id")] + [System.Text.Json.Serialization.JsonPropertyName("rule_id")] + public string RuleId { get; set; } = string.Empty; + + /// + /// 获取或设置门禁规则名称。 + /// + [Newtonsoft.Json.JsonProperty("rule_name")] + [System.Text.Json.Serialization.JsonPropertyName("rule_name")] + public string RuleName { get; set; } = string.Empty; + + /// + /// 获取或设置设备序列号列表。 + /// + [Newtonsoft.Json.JsonProperty("device_sn_list")] + [System.Text.Json.Serialization.JsonPropertyName("device_sn_list")] + public IList DeviceSerialNumberList { get; set; } = new List(); + + /// + /// 获取或设置门禁规则。 + /// + [Newtonsoft.Json.JsonProperty("pass_rule")] + [System.Text.Json.Serialization.JsonPropertyName("pass_rule")] + public Types.PassRule? PassRule { get; set; } + + /// + /// 获取或设置远程门禁规则。 + /// + [Newtonsoft.Json.JsonProperty("remote_pass_rule")] + [System.Text.Json.Serialization.JsonPropertyName("remote_pass_rule")] + public Types.PassRule? RemotePassRule { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleResponse.cs new file mode 100644 index 00000000..9d97f179 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/mod_accesscontrol_rule 接口的响应。 + /// + public class CgibinDeviceDataModifyAccessControlRuleResponse : WechatWorkResponse + { + /// + /// 获取或设置非法的 OpenUserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("invalid_list")] + [System.Text.Json.Serialization.JsonPropertyName("invalid_list")] + public string[]? InvalidOpenUserIdList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataRequest.cs new file mode 100644 index 00000000..5ad72a56 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataRequest.cs @@ -0,0 +1,73 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/get_accesscontrol_data 接口的请求。 + /// + public class CgibinDeviceDataGetAccessControlDataRequest : WechatWorkRequest + { + /// + /// 获取或设置应用 ID。 + /// + [Newtonsoft.Json.JsonProperty("agentid")] + [System.Text.Json.Serialization.JsonPropertyName("agentid")] + public int? AgentId { get; set; } + + /// + /// 获取或设置成员类型。 + /// + [Newtonsoft.Json.JsonProperty("user_type")] + [System.Text.Json.Serialization.JsonPropertyName("user_type")] + public int UserType { get; set; } + + /// + /// 获取或设置设备上传记录的开始时间戳。 + /// + [Newtonsoft.Json.JsonProperty("begin_time")] + [System.Text.Json.Serialization.JsonPropertyName("begin_time")] + public long BeginTimestamp { get; set; } + + /// + /// 获取或设置设备上传记录的结束时间戳。 + /// + [Newtonsoft.Json.JsonProperty("end_time")] + [System.Text.Json.Serialization.JsonPropertyName("end_time")] + public long EndTimestamp { get; set; } + + /// + /// 获取或设置门禁通行数据筛选条件。 + /// + [Newtonsoft.Json.JsonProperty("data_filter_type")] + [System.Text.Json.Serialization.JsonPropertyName("data_filter_type")] + public int DataFilterType { get; set; } + + /// + /// 获取或设置设备序列号列表。 + /// + [Newtonsoft.Json.JsonProperty("device_sn_list")] + [System.Text.Json.Serialization.JsonPropertyName("device_sn_list")] + public IList? DeviceSerialNumberList { get; set; } + + /// + /// 获取或设置成员的 OpenUserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("open_userid_list")] + [System.Text.Json.Serialization.JsonPropertyName("open_userid_list")] + public IList? OpenUserIdList { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int? Limit { get; set; } + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("cursor")] + [System.Text.Json.Serialization.JsonPropertyName("cursor")] + public string? Cursor { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataResponse.cs new file mode 100644 index 00000000..6d415d1a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataResponse.cs @@ -0,0 +1,80 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/get_accesscontrol_data 接口的响应。 + /// + public class CgibinDeviceDataGetAccessControlDataResponse : WechatWorkResponse + { + public static class Types + { + public class AccessControlDataList + { + /// + /// 获取或设置门禁通行数据列表。 + /// + [Newtonsoft.Json.JsonProperty("items")] + [System.Text.Json.Serialization.JsonPropertyName("items")] + public AccessControlDataItem[] Items { get; set; } = default!; + } + + public class AccessControlDataItem + { + /// + /// 获取或设置成员类型。 + /// + [Newtonsoft.Json.JsonProperty("user_type")] + [System.Text.Json.Serialization.JsonPropertyName("user_type")] + public int UserType { get; set; } + + /// + /// 获取或设置成员的 OpenUserId。 + /// + [Newtonsoft.Json.JsonProperty("open_userid")] + [System.Text.Json.Serialization.JsonPropertyName("open_userid")] + public string OpenUserId { get; set; } = default!; + + /// + /// 获取或设置设备的序列号。 + /// + [Newtonsoft.Json.JsonProperty("device_sn")] + [System.Text.Json.Serialization.JsonPropertyName("device_sn")] + public string DeviceSerialNumber { get; set; } = default!; + + /// + /// 获取或设置通行时间戳。 + /// + [Newtonsoft.Json.JsonProperty("timestamp")] + [System.Text.Json.Serialization.JsonPropertyName("timestamp")] + public long Timestamp { get; set; } + + /// + /// 获取或设置通行类型。 + /// + [Newtonsoft.Json.JsonProperty("pass_type")] + [System.Text.Json.Serialization.JsonPropertyName("pass_type")] + public int PassType { get; set; } + + /// + /// 获取或设置通行方法。 + /// + [Newtonsoft.Json.JsonProperty("pass_method")] + [System.Text.Json.Serialization.JsonPropertyName("pass_method")] + public int PassMethod { get; set; } + } + } + + /// + /// 获取或设置门禁通行数据列表。 + /// + [Newtonsoft.Json.JsonProperty("accesscontrol_data")] + [System.Text.Json.Serialization.JsonPropertyName("accesscontrol_data")] + public Types.AccessControlDataList AccessControlDataList { get; set; } = default!; + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("next_cursor")] + [System.Text.Json.Serialization.JsonPropertyName("next_cursor")] + public string? NextCursor { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAuthInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAuthInfoRequest.cs new file mode 100644 index 00000000..8b4b7832 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAuthInfoRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/get_auth_info 接口的请求。 + /// + public class CgibinDeviceDataGetAuthInfoRequest : WechatWorkRequest + { + /// + /// 获取或设置应用 ID。 + /// + [Newtonsoft.Json.JsonProperty("agentid")] + [System.Text.Json.Serialization.JsonPropertyName("agentid")] + public int? AgentId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAuthInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAuthInfoResponse.cs new file mode 100644 index 00000000..48246dd9 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetAuthInfoResponse.cs @@ -0,0 +1,66 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/get_auth_info 接口的响应。 + /// + public class CgibinDeviceDataGetAuthInfoResponse : WechatWorkResponse + { + public static class Types + { + public class DeviceList + { + /// + /// 获取或设置设备列表。 + /// + [Newtonsoft.Json.JsonProperty("item")] + [System.Text.Json.Serialization.JsonPropertyName("item")] + public DeviceItem[] Items { get; set; } = default!; + } + + public class DeviceItem + { + /// + /// 获取或设置设备类型。 + /// + [Newtonsoft.Json.JsonProperty("device_type")] + [System.Text.Json.Serialization.JsonPropertyName("device_type")] + public int DeviceType { get; set; } + + /// + /// 获取或设置设备的序列号。 + /// + [Newtonsoft.Json.JsonProperty("device_sn")] + [System.Text.Json.Serialization.JsonPropertyName("device_sn")] + public string DeviceSerialNumber { get; set; } = default!; + + /// + /// 获取或设置设备出厂型号。 + /// + [Newtonsoft.Json.JsonProperty("model_name")] + [System.Text.Json.Serialization.JsonPropertyName("model_name")] + public string? ModelName { get; set; } + + /// + /// 获取或设置设备出厂名。 + /// + [Newtonsoft.Json.JsonProperty("default_name")] + [System.Text.Json.Serialization.JsonPropertyName("default_name")] + public string? DefaultName { get; set; } + + /// + /// 获取或设置设备备注名。 + /// + [Newtonsoft.Json.JsonProperty("remark_name")] + [System.Text.Json.Serialization.JsonPropertyName("remark_name")] + public string? RemarkName { get; set; } + } + } + + /// + /// 获取或设置设备列表。 + /// + [Newtonsoft.Json.JsonProperty("device_list")] + [System.Text.Json.Serialization.JsonPropertyName("device_list")] + public Types.DeviceList DeviceList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetCheckinDataRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetCheckinDataRequest.cs new file mode 100644 index 00000000..06c7016f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetCheckinDataRequest.cs @@ -0,0 +1,73 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/get_checkin_data 接口的请求。 + /// + public class CgibinDeviceDataGetCheckinDataRequest : WechatWorkRequest + { + /// + /// 获取或设置应用 ID。 + /// + [Newtonsoft.Json.JsonProperty("agentid")] + [System.Text.Json.Serialization.JsonPropertyName("agentid")] + public int? AgentId { get; set; } + + /// + /// 获取或设置成员类型。 + /// + [Newtonsoft.Json.JsonProperty("user_type")] + [System.Text.Json.Serialization.JsonPropertyName("user_type")] + public int UserType { get; set; } + + /// + /// 获取或设置设备上传记录的开始时间戳。 + /// + [Newtonsoft.Json.JsonProperty("begin_time")] + [System.Text.Json.Serialization.JsonPropertyName("begin_time")] + public long BeginTimestamp { get; set; } + + /// + /// 获取或设置设备上传记录的结束时间戳。 + /// + [Newtonsoft.Json.JsonProperty("end_time")] + [System.Text.Json.Serialization.JsonPropertyName("end_time")] + public long EndTimestamp { get; set; } + + /// + /// 获取或设置打卡数据筛选条件。 + /// + [Newtonsoft.Json.JsonProperty("data_filter_type")] + [System.Text.Json.Serialization.JsonPropertyName("data_filter_type")] + public int DataFilterType { get; set; } + + /// + /// 获取或设置设备序列号列表。 + /// + [Newtonsoft.Json.JsonProperty("device_sn_list")] + [System.Text.Json.Serialization.JsonPropertyName("device_sn_list")] + public IList? DeviceSerialNumberList { get; set; } + + /// + /// 获取或设置成员的 OpenUserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("open_userid_list")] + [System.Text.Json.Serialization.JsonPropertyName("open_userid_list")] + public IList? OpenUserIdList { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int? Limit { get; set; } + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("cursor")] + [System.Text.Json.Serialization.JsonPropertyName("cursor")] + public string? Cursor { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetCheckinDataResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetCheckinDataResponse.cs new file mode 100644 index 00000000..de50a737 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetCheckinDataResponse.cs @@ -0,0 +1,59 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/get_checkin_data 接口的响应。 + /// + public class CgibinDeviceDataGetCheckinDataResponse : WechatWorkResponse + { + public static class Types + { + public class CheckinDataList + { + /// + /// 获取或设置打卡数据列表。 + /// + [Newtonsoft.Json.JsonProperty("items")] + [System.Text.Json.Serialization.JsonPropertyName("items")] + public CheckinDataItem[] Items { get; set; } = default!; + } + + public class CheckinDataItem + { + /// + /// 获取或设置成员的 OpenUserId。 + /// + [Newtonsoft.Json.JsonProperty("open_userid")] + [System.Text.Json.Serialization.JsonPropertyName("open_userid")] + public string OpenUserId { get; set; } = default!; + + /// + /// 获取或设置设备的序列号。 + /// + [Newtonsoft.Json.JsonProperty("device_sn")] + [System.Text.Json.Serialization.JsonPropertyName("device_sn")] + public string DeviceSerialNumber { get; set; } = default!; + + /// + /// 获取或设置打卡时间戳。 + /// + [Newtonsoft.Json.JsonProperty("checkin_time")] + [System.Text.Json.Serialization.JsonPropertyName("checkin_time")] + public long CheckinTimestamp { get; set; } + } + } + + /// + /// 获取或设置打卡数据列表。 + /// + [Newtonsoft.Json.JsonProperty("checkindata")] + [System.Text.Json.Serialization.JsonPropertyName("checkindata")] + public Types.CheckinDataList CheckinDataList { get; set; } = default!; + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("next_cursor")] + [System.Text.Json.Serialization.JsonPropertyName("next_cursor")] + public string? NextCursor { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataRequest.cs new file mode 100644 index 00000000..df910157 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataRequest.cs @@ -0,0 +1,73 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/get_temperature_data 接口的请求。 + /// + public class CgibinDeviceDataGetTemperatureDataRequest : WechatWorkRequest + { + /// + /// 获取或设置应用 ID。 + /// + [Newtonsoft.Json.JsonProperty("agentid")] + [System.Text.Json.Serialization.JsonPropertyName("agentid")] + public int? AgentId { get; set; } + + /// + /// 获取或设置成员类型。 + /// + [Newtonsoft.Json.JsonProperty("user_type")] + [System.Text.Json.Serialization.JsonPropertyName("user_type")] + public int UserType { get; set; } + + /// + /// 获取或设置设备上传记录的开始时间戳。 + /// + [Newtonsoft.Json.JsonProperty("begin_time")] + [System.Text.Json.Serialization.JsonPropertyName("begin_time")] + public long BeginTimestamp { get; set; } + + /// + /// 获取或设置设备上传记录的结束时间戳。 + /// + [Newtonsoft.Json.JsonProperty("end_time")] + [System.Text.Json.Serialization.JsonPropertyName("end_time")] + public long EndTimestamp { get; set; } + + /// + /// 获取或设置温度检测数据筛选条件。 + /// + [Newtonsoft.Json.JsonProperty("data_filter_type")] + [System.Text.Json.Serialization.JsonPropertyName("data_filter_type")] + public int DataFilterType { get; set; } + + /// + /// 获取或设置设备序列号列表。 + /// + [Newtonsoft.Json.JsonProperty("device_sn_list")] + [System.Text.Json.Serialization.JsonPropertyName("device_sn_list")] + public IList? DeviceSerialNumberList { get; set; } + + /// + /// 获取或设置成员的 OpenUserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("open_userid_list")] + [System.Text.Json.Serialization.JsonPropertyName("open_userid_list")] + public IList? OpenUserIdList { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int? Limit { get; set; } + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("cursor")] + [System.Text.Json.Serialization.JsonPropertyName("cursor")] + public string? Cursor { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataResponse.cs new file mode 100644 index 00000000..28ec69c9 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataResponse.cs @@ -0,0 +1,80 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/devicedata/get_temperature_data 接口的响应。 + /// + public class CgibinDeviceDataGetTemperatureDataResponse : WechatWorkResponse + { + public static class Types + { + public class TemperatureDataList + { + /// + /// 获取或设置温度检测数据列表。 + /// + [Newtonsoft.Json.JsonProperty("items")] + [System.Text.Json.Serialization.JsonPropertyName("items")] + public TemperatureDataItem[] Items { get; set; } = default!; + } + + public class TemperatureDataItem + { + /// + /// 获取或设置成员类型。 + /// + [Newtonsoft.Json.JsonProperty("user_type")] + [System.Text.Json.Serialization.JsonPropertyName("user_type")] + public int UserType { get; set; } + + /// + /// 获取或设置成员的 OpenUserId。 + /// + [Newtonsoft.Json.JsonProperty("open_userid")] + [System.Text.Json.Serialization.JsonPropertyName("open_userid")] + public string OpenUserId { get; set; } = default!; + + /// + /// 获取或设置设备的序列号。 + /// + [Newtonsoft.Json.JsonProperty("device_sn")] + [System.Text.Json.Serialization.JsonPropertyName("device_sn")] + public string DeviceSerialNumber { get; set; } = default!; + + /// + /// 获取或设置测温时间戳。 + /// + [Newtonsoft.Json.JsonProperty("timestamp")] + [System.Text.Json.Serialization.JsonPropertyName("timestamp")] + public long Timestamp { get; set; } + + /// + /// 获取或设置测温温度。 + /// + [Newtonsoft.Json.JsonProperty("temperature")] + [System.Text.Json.Serialization.JsonPropertyName("temperature")] + public string Temperature { get; set; } = default!; + + /// + /// 获取或设置状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + } + } + + /// + /// 获取或设置温度检测数据列表。 + /// + [Newtonsoft.Json.JsonProperty("temperature_data")] + [System.Text.Json.Serialization.JsonPropertyName("temperature_data")] + public Types.TemperatureDataList TemperatureDataList { get; set; } = default!; + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("next_cursor")] + [System.Text.Json.Serialization.JsonPropertyName("next_cursor")] + public string? NextCursor { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/DeviceData/DeviceDataAuthChangeEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/DeviceData/DeviceDataAuthChangeEvent.xml new file mode 100644 index 00000000..1cf360f7 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/DeviceData/DeviceDataAuthChangeEvent.xml @@ -0,0 +1,7 @@ + + + + + 1403610513 + 1000001 + diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleRequest.json new file mode 100644 index 00000000..734fca53 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleRequest.json @@ -0,0 +1,36 @@ +{ + "device_sn_list": ["SN"], + "rule_name": "access_rule_name_xxx", + "pass_rule": { + "rule_list": [ + "9:00-10:00 * * 1-5 *", + "9:00-10:00,15:30-17:45 * * 0,6 *" + ], + "effect_open_userid_list": [ + { + "open_userid": "user1", + "user_type": 0 + }, + { + "open_userid": "user2", + "user_type": 2 + } + ] + }, + "remote_pass_rule": { + "rule_list": [ + "9:00-10:00 * * 1-5 *", + "9:00-10:00,15:30-17:45 * * 0,6 *" + ], + "effect_open_userid_list": [ + { + "open_userid": "user1", + "user_type": 0 + }, + { + "open_userid": "user2", + "user_type": 2 + } + ] + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleResponse.json new file mode 100644 index 00000000..1121072a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataAddAccessControlRuleResponse.json @@ -0,0 +1,6 @@ +{ + "errcode": 0, + "errmsg": "ok", + "rule_id": "xxx", + "invalid_list": [] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataDeleteAccessControlRuleRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataDeleteAccessControlRuleRequest.json new file mode 100644 index 00000000..c0e33536 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataDeleteAccessControlRuleRequest.json @@ -0,0 +1,3 @@ +{ + "rule_id": "xxx" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleRequest.json new file mode 100644 index 00000000..688ec8c5 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleRequest.json @@ -0,0 +1,3 @@ +{ + "device_sn": "SN" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleResponse.json new file mode 100644 index 00000000..18b73f2a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataGetAccessControlRuleResponse.json @@ -0,0 +1,78 @@ +{ + "errcode": 0, + "errmsg": "ok", + "pass_rule": { + "items": [ + { + "rule_id": "xxx", + "name": "rule_name", + "rule_list": [ + "9:00-10:00 * * 1-5 *", + "16:00-19:05 * * 6 *", + "20:00-21:30 * * 0 *" + ], + "effect_time": 1542874137, + "effect_open_userid_list": [ + { + "open_userid": "user1", + "user_type": 0 + }, + { + "open_userid": "user2", + "user_type": 2 + } + ] + }, + { + "rule_id": "xxq", + "rule_list": ["9:300-10:00 * * 6 *"], + "effect_time": 1542874137, + "effect_open_userid_list": [ + { + "open_userid": "user1", + "user_type": 0 + }, + { + "open_userid": "user2", + "user_type": 2 + } + ] + } + ] + }, + "remote_pass_rule": { + "items": [ + { + "rule_id": "xxx", + "name": "rule_name", + "rule_list": ["9:00-10:00 * * 1-5 *", "11:00-12:00 * * 6,0 *"], + "effect_time": 1542874137, + "effect_open_userid_list": [ + { + "open_userid": "user1", + "user_type": 0 + }, + { + "open_userid": "user2", + "user_type": 2 + } + ] + }, + { + "rule_id": "xxq", + "rule_list": ["9:300-10:00 * * 6 *"], + "effect_time": 1542874137, + "effect_open_userid_list": [ + { + "open_userid": "user1", + "user_type": 0 + }, + { + "open_userid": "user2", + "user_type": 2 + } + ] + } + ] + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleRequest.json new file mode 100644 index 00000000..2befdc25 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleRequest.json @@ -0,0 +1,37 @@ +{ + "rule_id": "xxx", + "device_sn_list": ["SN"], + "rule_name": "access_rule_name_xxx", + "pass_rule": { + "rule_list": [ + "9:00-10:00 * * 1-5 *", + "9:00-10:00,15:30-17:45 * * 0,6 *" + ], + "effect_open_userid_list": [ + { + "open_userid": "user1", + "user_type": 0 + }, + { + "open_userid": "user2", + "user_type": 2 + } + ] + }, + "remote_pass_rule": { + "rule_list": [ + "9:00-10:00 * * 1-5 *", + "9:00-10:00,15:30-17:45 * * 0,6 *" + ], + "effect_open_userid_list": [ + { + "open_userid": "user1", + "user_type": 0 + }, + { + "open_userid": "user2", + "user_type": 2 + } + ] + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleResponse.json new file mode 100644 index 00000000..b7f0abf6 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/AccessControlRule/CgibinDeviceDataModifyAccessControlRuleResponse.json @@ -0,0 +1,5 @@ +{ + "errcode": 0, + "errmsg": "ok", + "invalid_list": [] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataRequest.json new file mode 100644 index 00000000..55883451 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataRequest.json @@ -0,0 +1,11 @@ +{ + "user_type": 0, + "begin_time": 12345, + "end_time": 67890, + "data_filter_type": 1, + "device_sn_list": ["SN1", "SN2"], + "open_userid_list": [], + "cursor": "CURSOR", + "limit": 0, + "agentid": 10000 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataResponse.json new file mode 100644 index 00000000..75ef0d8f --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAccessControlDataResponse.json @@ -0,0 +1,25 @@ +{ + "errcode": 0, + "errmsg": "ok", + "accesscontrol_data": { + "items": [ + { + "open_userid": "userid1", + "user_type": 0, + "timestamp": 1662697304, + "pass_type": 1, + "pass_method": 0, + "device_sn": "C00123122" + }, + { + "open_userid": "userid2", + "user_type": 0, + "timestamp": 1662697304, + "pass_type": 1, + "pass_method": 0, + "device_sn": "C00123122" + } + ] + }, + "next_cursor": "FVXbiWcnRUTZ8ZBzI905eQ==" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAuthInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAuthInfoRequest.json new file mode 100644 index 00000000..c4e7fd01 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAuthInfoRequest.json @@ -0,0 +1,3 @@ +{ + "agentid": 1 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAuthInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAuthInfoResponse.json new file mode 100644 index 00000000..5c34b7b4 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetAuthInfoResponse.json @@ -0,0 +1,15 @@ +{ + "errcode": 0, + "errmsg": "ok", + "device_list": { + "item": [ + { + "device_sn": "SN", + "remark_name": "设备备注名", + "default_name": "设备出厂名", + "model_name": "PRODUCT_MODEL", + "device_type": 1 + } + ] + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetCheckinDataRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetCheckinDataRequest.json new file mode 100644 index 00000000..656ddd24 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetCheckinDataRequest.json @@ -0,0 +1,10 @@ +{ + "user_type": 0, + "begin_time": 12345, + "end_time": 67890, + "data_filter_type": 1, + "device_sn_list": ["SN1", "SN2"], + "cursor": "CURSOR", + "limit": 0, + "agentid": 10000 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetCheckinDataResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetCheckinDataResponse.json new file mode 100644 index 00000000..3cfe65ba --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetCheckinDataResponse.json @@ -0,0 +1,14 @@ +{ + "errcode": 0, + "errmsg": "ok", + "checkindata": { + "items": [ + { + "open_userid": "x1", + "checkin_time": 12345, + "device_sn": "SN" + } + ] + }, + "next_cursor": "NEXT_CURSOR" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataRequest.json new file mode 100644 index 00000000..55883451 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataRequest.json @@ -0,0 +1,11 @@ +{ + "user_type": 0, + "begin_time": 12345, + "end_time": 67890, + "data_filter_type": 1, + "device_sn_list": ["SN1", "SN2"], + "open_userid_list": [], + "cursor": "CURSOR", + "limit": 0, + "agentid": 10000 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataResponse.json new file mode 100644 index 00000000..dd865622 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinDeviceData/CgibinDeviceDataGetTemperatureDataResponse.json @@ -0,0 +1,25 @@ +{ + "errcode": 0, + "errmsg": "ok", + "temperature_data": { + "items": [ + { + "open_userid": "userid1", + "user_type": 0, + "timestamp": 1662697304, + "temperature": "36.7", + "status": 0, + "device_sn": "C00123122" + }, + { + "open_userid": "userid2", + "user_type": 0, + "timestamp": 1662697304, + "temperature": "36.7", + "status": 0, + "device_sn": "C00123122" + } + ] + }, + "next_cursor": "FVXbiWcnRUTZ8ZBzI905eQ==" +}