From fbb0e6077b07a6963a35678864376a4295f4ce31 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Tue, 9 Apr 2024 10:20:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(work):=20=E6=96=B0=E5=A2=9E=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E4=BC=9A=E8=AE=AE=E5=8F=91=E8=B5=B7=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Events/Meeting/MeetingStatisticsEvent.cs | 28 ++++++++++++ ...orkClientExecuteCgibinMeetingExtensions.cs | 25 +++++++++++ ...binMeetingStatisticsGetStartListRequest.cs | 43 +++++++++++++++++++ ...inMeetingStatisticsGetStartListResponse.cs | 42 ++++++++++++++++++ .../Meeting/MeetingStatisticsEvent.xml | 9 ++++ ...nMeetingStatisticsGetStartListRequest.json | 7 +++ ...MeetingStatisticsGetStartListResponse.json | 15 +++++++ 7 files changed, 169 insertions(+) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Events/Meeting/MeetingStatisticsEvent.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Meeting/MeetingStatisticsEvent.xml create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Meeting/MeetingStatisticsEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Meeting/MeetingStatisticsEvent.cs new file mode 100644 index 00000000..22bca3d0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Meeting/MeetingStatisticsEvent.cs @@ -0,0 +1,28 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Events +{ + /// + /// 表示 EVENT.meeting_statistics 事件的数据。 + /// + /// REF:
+ /// + ///
+ ///
+ public class MeetingStatisticsEvent : WechatWorkEvent + { + /// + /// 获取或设置变更类型。 + /// + [Newtonsoft.Json.JsonProperty("ChangeType")] + [System.Text.Json.Serialization.JsonPropertyName("ChangeType")] + [System.Xml.Serialization.XmlElement("ChangeType")] + public string ChangeType { get; set; } = default!; + + /// + /// 获取或设置会议状态。 + /// + [Newtonsoft.Json.JsonProperty("Status")] + [System.Text.Json.Serialization.JsonPropertyName("Status")] + [System.Xml.Serialization.XmlElement("Status")] + public int Status { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMeetingExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMeetingExtensions.cs index 915d85ce..c1b19bb4 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMeetingExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMeetingExtensions.cs @@ -1870,6 +1870,31 @@ namespace SKIT.FlurlHttpClient.Wechat.Work } #endregion + #region Statistics + /// + /// 异步调用 [POST] /cgi-bin/meeting/statistics/get_start_list 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCgibinMeetingStatisticsGetStartListAsync(this WechatWorkClient client, Models.CgibinMeetingStatisticsGetStartListRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "cgi-bin", "meeting", "statistics", "get_start_list") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + #region Vip /// /// 异步调用 [POST] /cgi-bin/meeting/vip/submit_batch_add_job 接口。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListRequest.cs new file mode 100644 index 00000000..1efc93fc --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListRequest.cs @@ -0,0 +1,43 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/meeting/statistics/get_start_list 接口的请求。 + /// + public class CgibinMeetingStatisticsGetStartListRequest : WechatWorkRequest + { + /// + /// 获取或设置查询类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public int Type { 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("cursor")] + [System.Text.Json.Serialization.JsonPropertyName("cursor")] + public string? Cursor { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int? Limit { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListResponse.cs new file mode 100644 index 00000000..b8cdab23 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListResponse.cs @@ -0,0 +1,42 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/meeting/statistics/get_start_list 接口的响应。 + /// + public class CgibinMeetingStatisticsGetStartListResponse : WechatWorkResponse + { + public static class Types + { + public class Meeting + { + /// + /// 获取或设置会议发起者的 UserId。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string UserId { get; set; } = default!; + + /// + /// 获取或设置会议发起时间戳。 + /// + [Newtonsoft.Json.JsonProperty("start_time")] + [System.Text.Json.Serialization.JsonPropertyName("start_time")] + public long StartTimestamp { get; set; } + } + } + + /// + /// 获取或设置会议列表。 + /// + [Newtonsoft.Json.JsonProperty("meeting_list")] + [System.Text.Json.Serialization.JsonPropertyName("meeting_list")] + public Types.Meeting[] MeetingList { 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/Meeting/MeetingStatisticsEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Meeting/MeetingStatisticsEvent.xml new file mode 100644 index 00000000..a52df723 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Meeting/MeetingStatisticsEvent.xml @@ -0,0 +1,9 @@ + + + + 1348831860 + + + + 1 + diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListRequest.json new file mode 100644 index 00000000..2dc11712 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListRequest.json @@ -0,0 +1,7 @@ +{ + "type": 1, + "begin_time": 1700000000, + "end_time": 1700001000, + "limit": 1000, + "cursor": "CURSOR" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListResponse.json new file mode 100644 index 00000000..f3904a96 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/Statistics/CgibinMeetingStatisticsGetStartListResponse.json @@ -0,0 +1,15 @@ +{ + "errcode": 0, + "errmsg": "ok", + "next_cursor": "abcd", + "meeting_list": [ + { + "userid": "USERID1", + "start_time": 1700000000 + }, + { + "userid": "USERID2", + "start_time": 1700000000 + } + ] +}