From 3674786ceb374f38e0bee26bc06264e1e41227a4 Mon Sep 17 00:00:00 2001 From: fudiwei Date: Sat, 3 Dec 2022 17:14:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(work):=20=E9=9A=8F=E5=AE=98=E6=96=B9?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BC=9A=E8=AE=AE=E7=9B=B8=E5=85=B3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Events/Meeting/MeetingChangeEvent.cs | 22 ++ .../App/CgibinExmailAppComposeSendRequest.cs | 24 +- .../CgibinMeetingCreateRequest.cs | 180 +++++++++++++-- .../CgibinMeetingGetInfoResponse.cs | 205 ++++++++++++++---- .../CgibinMeetingUpdateRequest.cs | 75 ++++++- .../Meeting/MeetingChangeEvent.xml | 9 + .../CgibinMeetingCreateRequest.json | 32 ++- .../CgibinMeetingGetInfoResponse.json | 46 ++-- .../CgibinMeetingUpdateRequest.json | 39 +++- 9 files changed, 515 insertions(+), 117 deletions(-) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Events/Meeting/MeetingChangeEvent.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Meeting/MeetingChangeEvent.xml diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Meeting/MeetingChangeEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Meeting/MeetingChangeEvent.cs new file mode 100644 index 00000000..163841c0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Meeting/MeetingChangeEvent.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Events +{ + /// + /// 表示 EVENT.meeting_change 事件的数据。 + /// REF: https://developer.work.weixin.qq.com/document/path/93651 + /// REF: https://developer.work.weixin.qq.com/document/path/93704 + /// + public class MeetingChangeEvent : WechatWorkEvent, WechatWorkEvent.Serialization.IXmlSerializable + { + /// + /// 获取或设置操作类型。 + /// + [System.Xml.Serialization.XmlElement("ChangeType")] + public string ActionType { get; set; } = default!; + + /// + /// 获取或设置会议 ID。 + /// + [System.Xml.Serialization.XmlElement("MeetingId")] + public string MeetingId { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/App/CgibinExmailAppComposeSendRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/App/CgibinExmailAppComposeSendRequest.cs index c287e4f6..dce02861 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/App/CgibinExmailAppComposeSendRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/App/CgibinExmailAppComposeSendRequest.cs @@ -119,7 +119,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models { public static class Types { - public class Option + public class Settings { /// /// 获取或设置入会密码。 @@ -149,13 +149,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models [System.Text.Json.Serialization.JsonPropertyName("allow_enter_before_host")] public bool? AllowEnterBeforeHost { get; set; } - /// - /// 获取或设置限制成员入会模式。 - /// - [Newtonsoft.Json.JsonProperty("enter_restraint")] - [System.Text.Json.Serialization.JsonPropertyName("enter_restraint")] - public int? EnterRestraintMode { get; set; } - /// /// 获取或设置是否开启屏幕水印。 /// @@ -164,13 +157,18 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models public bool? EnableScreenWatermark { get; set; } /// - /// 获取或设置成员入会时是否静音。 + /// 获取或设置限制成员入会模式。 + /// + [Newtonsoft.Json.JsonProperty("enter_restraint")] + [System.Text.Json.Serialization.JsonPropertyName("enter_restraint")] + public int? EnterRestraintMode { get; set; } + + /// + /// 获取或设置成员入会时静音模式。 /// [Newtonsoft.Json.JsonProperty("enable_enter_mute")] - [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalNullableBooleanConverter))] [System.Text.Json.Serialization.JsonPropertyName("enable_enter_mute")] - [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalNullableBooleanConverter))] - public bool? EnableEnterMute { get; set; } + public int? EnterMuteMode { get; set; } /// /// 获取或设置会议开始提醒范围。 @@ -213,7 +211,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models /// [Newtonsoft.Json.JsonProperty("option")] [System.Text.Json.Serialization.JsonPropertyName("option")] - public Types.Option? Option { get; set; } + public Types.Settings? Settings { get; set; } /// /// 获取或设置会议主持人信息。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/CgibinMeetingCreateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/CgibinMeetingCreateRequest.cs index d664b5e1..77eef551 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/CgibinMeetingCreateRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/CgibinMeetingCreateRequest.cs @@ -18,13 +18,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models [System.Text.Json.Serialization.JsonPropertyName("userid")] public IList? UserIdList { get; set; } - /// - /// 获取或设置参与者外部联系人账号列表。 - /// - [Newtonsoft.Json.JsonProperty("external_userid")] - [System.Text.Json.Serialization.JsonPropertyName("external_userid")] - public IList? ExternalUserIdList { get; set; } - /// /// 获取或设置设备序列号列表。 /// @@ -32,14 +25,143 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models [System.Text.Json.Serialization.JsonPropertyName("device_sn")] public IList? DeviceSerialNumberList { get; set; } } + + public class Settings + { + public static class Types + { + public class Host + { + /// + /// 获取或设置企业成员的 UserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public IList? UserIdList { get; set; } + } + + public class RingUser + { + /// + /// 获取或设置企业成员的 UserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public IList? UserIdList { get; set; } + } + } + + /// + /// 获取或设置入会密码。 + /// + [Newtonsoft.Json.JsonProperty("password")] + [System.Text.Json.Serialization.JsonPropertyName("password")] + public string? Password { get; set; } + + /// + /// 获取或设置是否开启等候室。 + /// + [Newtonsoft.Json.JsonProperty("enable_waiting_room")] + [System.Text.Json.Serialization.JsonPropertyName("enable_waiting_room")] + public bool? EnableWaitingRoom { get; set; } + + /// + /// 获取或设置是否允许成员在主持人进会前加入。 + /// + [Newtonsoft.Json.JsonProperty("allow_enter_before_host")] + [System.Text.Json.Serialization.JsonPropertyName("allow_enter_before_host")] + public bool? AllowEnterBeforeHost { get; set; } + + /// + /// 获取或设置是否允许外部成员入会。 + /// + [Newtonsoft.Json.JsonProperty("allow_external_user")] + [System.Text.Json.Serialization.JsonPropertyName("allow_external_user")] + public bool? AllowExternalUser { get; set; } + + /// + /// 获取或设置成员入会时静音模式。 + /// + [Newtonsoft.Json.JsonProperty("enable_enter_mute")] + [System.Text.Json.Serialization.JsonPropertyName("enable_enter_mute")] + public int? EnterMuteMode { get; set; } + + /// + /// 获取或设置是否开启屏幕水印。 + /// + [Newtonsoft.Json.JsonProperty("enable_screen_watermark")] + [System.Text.Json.Serialization.JsonPropertyName("enable_screen_watermark")] + public bool? EnableScreenWatermark { get; set; } + + /// + /// 获取或设置会议开始提醒范围。 + /// + [Newtonsoft.Json.JsonProperty("remind_scope")] + [System.Text.Json.Serialization.JsonPropertyName("remind_scope")] + public int? RemindScope { get; set; } + + /// + /// 获取或设置会议主持人信息。 + /// + [Newtonsoft.Json.JsonProperty("hosts")] + [System.Text.Json.Serialization.JsonPropertyName("hosts")] + public Types.Host? Host { get; set; } + + /// + /// 获取或设置响铃用户信息。 + /// + [Newtonsoft.Json.JsonProperty("ring_users")] + [System.Text.Json.Serialization.JsonPropertyName("ring_users")] + public Types.RingUser? RingUser { get; set; } + } + + public class Reminder + { + /// + /// 获取或设置是否重复会议。 + /// + [Newtonsoft.Json.JsonProperty("is_repeat")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalNullableBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("is_repeat")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalNullableBooleanConverter))] + public bool? IsRepeat { get; set; } + + /// + /// 获取或设置重复类型。 + /// + [Newtonsoft.Json.JsonProperty("repeat_type")] + [System.Text.Json.Serialization.JsonPropertyName("repeat_type")] + public int? RepeatType { get; set; } + + /// + /// 获取或设置重复结束时间戳。 + /// + [Newtonsoft.Json.JsonProperty("repeat_until")] + [System.Text.Json.Serialization.JsonPropertyName("repeat_until")] + public long? RepeatUntilTimestamp { get; set; } + + /// + /// 获取或设置重复间隔。 + /// + [Newtonsoft.Json.JsonProperty("repeat_interval")] + [System.Text.Json.Serialization.JsonPropertyName("repeat_interval")] + public int? RepeatInterval { get; set; } + + /// + /// 获取或设置会议开始前多久提醒(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("remind_before")] + [System.Text.Json.Serialization.JsonPropertyName("remind_before")] + public IList? RemindBeforeEventTimeList { get; set; } + } } /// - /// 获取或设置发起者成员账号。 + /// 获取或设置管理员成员账号。 /// - [Newtonsoft.Json.JsonProperty("creator_userid")] - [System.Text.Json.Serialization.JsonPropertyName("creator_userid")] - public string CreatorUserId { get; set; } = string.Empty; + [Newtonsoft.Json.JsonProperty("admin_userid")] + [System.Text.Json.Serialization.JsonPropertyName("admin_userid")] + public string AdminUserId { get; set; } = string.Empty; /// /// 获取或设置会议标题。 @@ -62,13 +184,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models [System.Text.Json.Serialization.JsonPropertyName("meeting_duration")] public int Duration { get; set; } - /// - /// 获取或设置会议类型。 - /// - [Newtonsoft.Json.JsonProperty("type")] - [System.Text.Json.Serialization.JsonPropertyName("type")] - public int Type { get; set; } - /// /// 获取或设置会议描述。 /// @@ -77,11 +192,18 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models public string? Description { get; set; } /// - /// 获取或设置会议开始前多久提醒(单位:秒)。 + /// 获取或设置会议地点。 /// - [Newtonsoft.Json.JsonProperty("remind_time")] - [System.Text.Json.Serialization.JsonPropertyName("remind_time")] - public int? RemindBeforeEventTime { get; set; } + [Newtonsoft.Json.JsonProperty("location")] + [System.Text.Json.Serialization.JsonPropertyName("location")] + public string? Location { get; set; } + + /// + /// 获取或设置日历 ID。 + /// + [Newtonsoft.Json.JsonProperty("cal_id")] + [System.Text.Json.Serialization.JsonPropertyName("cal_id")] + public string? CalendarId { get; set; } /// /// 获取或设置参与者信息。 @@ -90,6 +212,20 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models [System.Text.Json.Serialization.JsonPropertyName("attendees")] public Types.Attendee? Attendee { get; set; } + /// + /// 获取或设置会议设置信息。 + /// + [Newtonsoft.Json.JsonProperty("settings")] + [System.Text.Json.Serialization.JsonPropertyName("settings")] + public Types.Settings? Settings { get; set; } + + /// + /// 获取或设置会议提醒信息。 + /// + [Newtonsoft.Json.JsonProperty("reminders")] + [System.Text.Json.Serialization.JsonPropertyName("reminders")] + public Types.Reminder? Reminder { get; set; } + /// /// 获取或设置授权方安装的应用 ID。 /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/CgibinMeetingGetInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/CgibinMeetingGetInfoResponse.cs index 9ade5e76..a91f8246 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/CgibinMeetingGetInfoResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/CgibinMeetingGetInfoResponse.cs @@ -31,14 +31,14 @@ public class ExternalUser { /// - /// 获取或设置参与者外部联系人账号。 + /// 获取或设置外部联系人临时 ID。 /// - [Newtonsoft.Json.JsonProperty("external_userid")] - [System.Text.Json.Serialization.JsonPropertyName("external_userid")] - public string ExternalUserId { get; set; } = default!; + [Newtonsoft.Json.JsonProperty("tmp_external_userid")] + [System.Text.Json.Serialization.JsonPropertyName("tmp_external_userid")] + public string TempExternalUserId { get; set; } = default!; /// - /// 获取或设置参与者与会状态。 + /// 获取或设置外部联系人与会状态。 /// [Newtonsoft.Json.JsonProperty("status")] [System.Text.Json.Serialization.JsonPropertyName("status")] @@ -71,10 +71,10 @@ public Types.User[] UserList { get; set; } = default!; /// - /// 获取或设置参与者外部联系人列表。 + /// 获取或设置外部联系人列表。 /// - [Newtonsoft.Json.JsonProperty("external_user")] - [System.Text.Json.Serialization.JsonPropertyName("external_user")] + [Newtonsoft.Json.JsonProperty("tmp_external_user")] + [System.Text.Json.Serialization.JsonPropertyName("tmp_external_user")] public Types.ExternalUser[] ExternalUserList { get; set; } = default!; /// @@ -84,6 +84,135 @@ [System.Text.Json.Serialization.JsonPropertyName("device")] public Types.Device[] DeviceList { get; set; } = default!; } + + public class Settings + { + public static class Types + { + public class Host + { + /// + /// 获取或设置企业成员的 UserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string[]? UserIdList { get; set; } + } + + public class RingUser + { + /// + /// 获取或设置企业成员的 UserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userids")] + public string[]? UserIdList { get; set; } + } + } + + /// + /// 获取或设置入会密码。 + /// + [Newtonsoft.Json.JsonProperty("password")] + [System.Text.Json.Serialization.JsonPropertyName("password")] + public string? Password { get; set; } + + /// + /// 获取或设置是否开启等候室。 + /// + [Newtonsoft.Json.JsonProperty("enable_waiting_room")] + [System.Text.Json.Serialization.JsonPropertyName("enable_waiting_room")] + public bool EnableWaitingRoom { get; set; } + + /// + /// 获取或设置是否允许成员在主持人进会前加入。 + /// + [Newtonsoft.Json.JsonProperty("allow_enter_before_host")] + [System.Text.Json.Serialization.JsonPropertyName("allow_enter_before_host")] + public bool AllowEnterBeforeHost { get; set; } + + /// + /// 获取或设置是否允许外部成员入会。 + /// + [Newtonsoft.Json.JsonProperty("allow_external_user")] + [System.Text.Json.Serialization.JsonPropertyName("allow_external_user")] + public bool AllowExternalUser { get; set; } + + /// + /// 获取或设置是否开启屏幕水印。 + /// + [Newtonsoft.Json.JsonProperty("enable_screen_watermark")] + [System.Text.Json.Serialization.JsonPropertyName("enable_screen_watermark")] + public bool EnableScreenWatermark { get; set; } + + /// + /// 获取或设置成员入会时静音模式。 + /// + [Newtonsoft.Json.JsonProperty("enable_enter_mute")] + [System.Text.Json.Serialization.JsonPropertyName("enable_enter_mute")] + public int EnterMuteMode { get; set; } + + /// + /// 获取或设置会议开始提醒范围。 + /// + [Newtonsoft.Json.JsonProperty("remind_scope")] + [System.Text.Json.Serialization.JsonPropertyName("remind_scope")] + public int? RemindScope { get; set; } + + /// + /// 获取或设置会议主持人信息。 + /// + [Newtonsoft.Json.JsonProperty("hosts")] + [System.Text.Json.Serialization.JsonPropertyName("hosts")] + public Types.Host? Host { get; set; } + + /// + /// 获取或设置响铃用户信息。 + /// + [Newtonsoft.Json.JsonProperty("ring_users")] + [System.Text.Json.Serialization.JsonPropertyName("ring_users")] + public Types.RingUser? RingUser { get; set; } + } + + public class Reminder + { + /// + /// 获取或设置是否重复会议。 + /// + [Newtonsoft.Json.JsonProperty("is_repeat")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalNullableBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("is_repeat")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalNullableBooleanConverter))] + public bool? IsRepeat { get; set; } + + /// + /// 获取或设置重复类型。 + /// + [Newtonsoft.Json.JsonProperty("repeat_type")] + [System.Text.Json.Serialization.JsonPropertyName("repeat_type")] + public int? RepeatType { get; set; } + + /// + /// 获取或设置重复结束时间戳。 + /// + [Newtonsoft.Json.JsonProperty("repeat_until")] + [System.Text.Json.Serialization.JsonPropertyName("repeat_until")] + public long? RepeatUntilTimestamp { get; set; } + + /// + /// 获取或设置重复间隔。 + /// + [Newtonsoft.Json.JsonProperty("repeat_interval")] + [System.Text.Json.Serialization.JsonPropertyName("repeat_interval")] + public int? RepeatInterval { get; set; } + + /// + /// 获取或设置会议开始前多久提醒(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("remind_before")] + [System.Text.Json.Serialization.JsonPropertyName("remind_before")] + public int[]? RemindBeforeEventTimeList { get; set; } + } } /// @@ -94,18 +223,18 @@ public string MeetingId { get; set; } = default!; /// - /// 获取或设置发起者成员账号。 + /// 获取或设置管理员成员账号。 /// - [Newtonsoft.Json.JsonProperty("creator_userid")] - [System.Text.Json.Serialization.JsonPropertyName("creator_userid")] - public string CreatorUserId { get; set; } = default!; + [Newtonsoft.Json.JsonProperty("admin_userid")] + [System.Text.Json.Serialization.JsonPropertyName("admin_userid")] + public string AdminUserId { get; set; } = default!; /// /// 获取或设置发起者所在主部门 ID。 /// [Newtonsoft.Json.JsonProperty("main_department")] [System.Text.Json.Serialization.JsonPropertyName("main_department")] - public long? CreatorMainDepartmentId { get; set; } + public long? AdminMainDepartmentId { get; set; } /// /// 获取或设置会议标题。 @@ -128,27 +257,6 @@ [System.Text.Json.Serialization.JsonPropertyName("meeting_duration")] public int Duration { get; set; } - /// - /// 获取或设置会议预约开始时间戳。 - /// - [Newtonsoft.Json.JsonProperty("reserve_meeting_start")] - [System.Text.Json.Serialization.JsonPropertyName("reserve_meeting_start")] - public long ReserveStartTimestamp { get; set; } - - /// - /// 获取或设置会议预约持续时长(单位:秒)。 - /// - [Newtonsoft.Json.JsonProperty("reserve_meeting_duration")] - [System.Text.Json.Serialization.JsonPropertyName("reserve_meeting_duration")] - public int ReserveDuration { get; set; } - - /// - /// 获取或设置会议类型。 - /// - [Newtonsoft.Json.JsonProperty("type")] - [System.Text.Json.Serialization.JsonPropertyName("type")] - public int Type { get; set; } - /// /// 获取或设置会议状态。 /// @@ -164,11 +272,18 @@ public string Description { get; set; } = default!; /// - /// 获取或设置会议开始前多久提醒(单位:秒)。 + /// 获取或设置会议地点。 /// - [Newtonsoft.Json.JsonProperty("remind_time")] - [System.Text.Json.Serialization.JsonPropertyName("remind_time")] - public int RemindBeforeEventTime { get; set; } + [Newtonsoft.Json.JsonProperty("location")] + [System.Text.Json.Serialization.JsonPropertyName("location")] + public string? Location { get; set; } + + /// + /// 获取或设置日历 ID。 + /// + [Newtonsoft.Json.JsonProperty("cal_id")] + [System.Text.Json.Serialization.JsonPropertyName("cal_id")] + public string? CalendarId { get; set; } /// /// 获取或设置参与者信息。 @@ -176,5 +291,19 @@ [Newtonsoft.Json.JsonProperty("attendees")] [System.Text.Json.Serialization.JsonPropertyName("attendees")] public Types.Attendee Attendee { get; set; } = default!; + + /// + /// 获取或设置会议设置信息。 + /// + [Newtonsoft.Json.JsonProperty("settings")] + [System.Text.Json.Serialization.JsonPropertyName("settings")] + public Types.Settings Settings { get; set; } = default!; + + /// + /// 获取或设置会议提醒信息。 + /// + [Newtonsoft.Json.JsonProperty("reminders")] + [System.Text.Json.Serialization.JsonPropertyName("reminders")] + public Types.Reminder? Reminder { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/CgibinMeetingUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/CgibinMeetingUpdateRequest.cs index 987693b9..e48e619b 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/CgibinMeetingUpdateRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMeeting/CgibinMeetingUpdateRequest.cs @@ -10,6 +10,38 @@ public class Attendee : CgibinMeetingCreateRequest.Types.Attendee { } + + public class Settings : CgibinMeetingCreateRequest.Types.Settings + { + public static new class Types + { + public class Host : CgibinMeetingCreateRequest.Types.Settings.Types.Host + { + } + + public class RingUser : CgibinMeetingCreateRequest.Types.Settings.Types.RingUser + { + } + } + + /// + /// 获取或设置会议主持人信息。 + /// + [Newtonsoft.Json.JsonProperty("hosts")] + [System.Text.Json.Serialization.JsonPropertyName("hosts")] + public new Types.Host? Host { get; set; } + + /// + /// 获取或设置响铃用户信息。 + /// + [Newtonsoft.Json.JsonProperty("ring_users")] + [System.Text.Json.Serialization.JsonPropertyName("ring_users")] + public new Types.RingUser? RingUser { get; set; } + } + + public class Reminder : CgibinMeetingCreateRequest.Types.Reminder + { + } } /// @@ -40,13 +72,6 @@ [System.Text.Json.Serialization.JsonPropertyName("meeting_duration")] public int? Duration { get; set; } - /// - /// 获取或设置会议类型。 - /// - [Newtonsoft.Json.JsonProperty("type")] - [System.Text.Json.Serialization.JsonPropertyName("type")] - public int? Type { get; set; } - /// /// 获取或设置会议描述。 /// @@ -55,11 +80,18 @@ public string? Description { get; set; } /// - /// 获取或设置会议开始前多久提醒(单位:秒)。 + /// 获取或设置会议地点。 /// - [Newtonsoft.Json.JsonProperty("remind_time")] - [System.Text.Json.Serialization.JsonPropertyName("remind_time")] - public int? RemindBeforeEventTime { get; set; } + [Newtonsoft.Json.JsonProperty("location")] + [System.Text.Json.Serialization.JsonPropertyName("location")] + public string? Location { get; set; } + + /// + /// 获取或设置日历 ID。 + /// + [Newtonsoft.Json.JsonProperty("cal_id")] + [System.Text.Json.Serialization.JsonPropertyName("cal_id")] + public string? CalendarId { get; set; } /// /// 获取或设置参与者信息。 @@ -67,5 +99,26 @@ [Newtonsoft.Json.JsonProperty("attendees")] [System.Text.Json.Serialization.JsonPropertyName("attendees")] public Types.Attendee? Attendee { get; set; } + + /// + /// 获取或设置会议设置信息。 + /// + [Newtonsoft.Json.JsonProperty("settings")] + [System.Text.Json.Serialization.JsonPropertyName("settings")] + public Types.Settings? Settings { get; set; } + + /// + /// 获取或设置会议提醒信息。 + /// + [Newtonsoft.Json.JsonProperty("reminders")] + [System.Text.Json.Serialization.JsonPropertyName("reminders")] + public Types.Reminder? Reminder { get; set; } + + /// + /// 获取或设置授权方安装的应用 ID。 + /// + [Newtonsoft.Json.JsonProperty("agentid")] + [System.Text.Json.Serialization.JsonPropertyName("agentid")] + public int? AgentId { get; set; } } } diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Meeting/MeetingChangeEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Meeting/MeetingChangeEvent.xml new file mode 100644 index 00000000..0457a571 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Meeting/MeetingChangeEvent.xml @@ -0,0 +1,9 @@ + + + + 1348831860 + + + + + diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/CgibinMeetingCreateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/CgibinMeetingCreateRequest.json index 0aee420a..0c3279da 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/CgibinMeetingCreateRequest.json +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/CgibinMeetingCreateRequest.json @@ -1,15 +1,35 @@ { - "creator_userid": "zhangsan", + "admin_userid": "zhangsan", "title": "新建会议", "meeting_start": 1600000000, "meeting_duration": 3600, "description": "新建会议描述", - "type": 1, - "remind_time": 60, + "location": "广州媒体港", "agentid": 1000014, "attendees": { - "userid": ["lisi", "wangwu"], - "external_userid": ["woabc", "woced"], - "device_sn": ["devsn1", "devsn2"] + "userid": ["lisi", "wangwu"] + }, + "settings": { + "remind_scope": 1, + "password": "1234", + "enable_waiting_room": false, + "allow_enter_before_host": true, + "enable_enter_mute": 1, + "allow_external_user": false, + "enable_screen_watermark": false, + "hosts": { + "userid": ["lisi", "wangwu"] + }, + "ring_users": { + "userid": ["zhangsan", "lis"] + } + }, + "cal_id": "wcjgewCwAAqeJcPI1d8Pwbjt7nttzAAA", + "reminders": { + "is_repeat": 1, + "repeat_type": 0, + "repeat_until": 1606976813, + "repeat_interval": 1, + "remind_before": [0, 900] } } diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/CgibinMeetingGetInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/CgibinMeetingGetInfoResponse.json index 31e3fdad..61395785 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/CgibinMeetingGetInfoResponse.json +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/CgibinMeetingGetInfoResponse.json @@ -1,17 +1,14 @@ { "errcode": 0, "errmsg": "ok", - "creator_userid": "zhangsan", + "admin_userid": "zhangsan", "title": "title", - "reserve_meeting_start": 1600000000, - "reserve_meeting_duration": 1600003600, "meeting_start": 1600000007, "meeting_duration": 1800, "description": "test meeting description", + "location": "广州媒体港", "main_department": 1, - "type": 1, "status": 1, - "remind_time": 60, "attendees": { "member": [ { @@ -23,25 +20,38 @@ "status": 2 } ], - "external_user": [ + "tmp_external_user": [ { - "external_userid": "woabc", + "tmp_external_userid": "woabc", "status": 3 }, { - "external_userid": "woefd", + "tmp_external_userid": "woefd", "status": 4 } - ], - "device": [ - { - "device_sn": "devicesn1", - "status": 5 - }, - { - "device_sn": "devicesn1", - "status": 5 - } ] + }, + "settings": { + "remind_scope": 4, + "password": "1234", + "enable_waiting_room": false, + "allow_enter_before_host": true, + "enable_enter_mute": 1, + "allow_external_user": false, + "enable_screen_watermark": false, + "hosts": { + "userid": ["lisi", "wangwu"] + }, + "ring_users": { + "userid": ["zhangsan", "lis"] + } + }, + "cal_id": "wcjgewCwAAqeJcPI1d8Pwbjt7nttzAAA", + "reminders": { + "is_repeat": 1, + "repeat_type": 0, + "repeat_until": 1606976813, + "repeat_interval": 1, + "remind_before": [5, 10] } } diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/CgibinMeetingUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/CgibinMeetingUpdateRequest.json index 042d82b4..95b8d89b 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/CgibinMeetingUpdateRequest.json +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMeeting/CgibinMeetingUpdateRequest.json @@ -1,14 +1,35 @@ { - "meetingid": "XXXXXXXXX", - "title": "新需求", + "meetingid": "hyxxx", + "title": "新建会议", "meeting_start": 1600000000, - "meeting_duration": 10000, - "description": "test", - "type": 1, - "remind_time": 60, + "meeting_duration": 3600, + "description": "新建会议描述", + "location": "广州媒体港", + "agentid": 1000014, "attendees": { - "userid": ["lisi", "wangwu"], - "external_userid": ["woabc", "woced"], - "device_sn": ["devsn1", "devsn2"] + "userid": ["lisi", "wangwu"] + }, + "settings": { + "remind_scope": 1, + "password": "1234", + "enable_waiting_room": false, + "allow_enter_before_host": true, + "enable_enter_mute": 1, + "allow_external_user": false, + "enable_screen_watermark": false, + "hosts": { + "userid": ["lisi", "wangwu"] + }, + "ring_users": { + "userid": ["zhangsan", "lis"] + } + }, + "cal_id": "wcjgewCwAAqeJcPI1d8Pwbjt7nttzAAA", + "reminders": { + "is_repeat": 1, + "repeat_type": 0, + "repeat_until": 1606976813, + "repeat_interval": 1, + "remind_before": [0, 900] } }