feat(work): 新增会议投票管理相关接口

This commit is contained in:
Fu Diwei
2023-06-16 15:34:35 +08:00
parent 62c69ffba5
commit 8a8cc35b0e
30 changed files with 1081 additions and 0 deletions

View File

@@ -640,6 +640,168 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
}
#endregion
#region Poll
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/poll/create_theme 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/98834 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingPollCreateThemeResponse> ExecuteCgibinMeetingPollCreateThemeAsync(this WechatWorkClient client, Models.CgibinMeetingPollCreateThemeRequest 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", "meeting", "poll", "create_theme")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingPollCreateThemeResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/poll/update_theme 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/98835 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingPollUpdateThemeResponse> ExecuteCgibinMeetingPollUpdateThemeAsync(this WechatWorkClient client, Models.CgibinMeetingPollUpdateThemeRequest 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", "meeting", "poll", "update_theme")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingPollUpdateThemeResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/poll/get_poll_list 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/98836 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingPollGetPollListResponse> ExecuteCgibinMeetingPollGetPollListAsync(this WechatWorkClient client, Models.CgibinMeetingPollGetPollListRequest 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", "meeting", "poll", "get_poll_list")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingPollGetPollListResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/poll/get_theme_info 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/98837 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingPollGetThemeInfoResponse> ExecuteCgibinMeetingPollGetThemeInfoAsync(this WechatWorkClient client, Models.CgibinMeetingPollGetThemeInfoRequest 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", "meeting", "poll", "get_theme_info")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingPollGetThemeInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/poll/get_poll_detail 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/98838 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingPollGetPollDetailResponse> ExecuteCgibinMeetingPollGetPollDetailAsync(this WechatWorkClient client, Models.CgibinMeetingPollGetPollDetailRequest 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", "meeting", "poll", "get_poll_detail")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingPollGetPollDetailResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/poll/delete 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/98839 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingPollDeleteResponse> ExecuteCgibinMeetingPollDeleteAsync(this WechatWorkClient client, Models.CgibinMeetingPollDeleteRequest 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", "meeting", "poll", "delete")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingPollDeleteResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/poll/start 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/98840 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingPollStartResponse> ExecuteCgibinMeetingPollStartAsync(this WechatWorkClient client, Models.CgibinMeetingPollStartRequest 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", "meeting", "poll", "start")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingPollStartResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/poll/finish 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/98841 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingPollFinishResponse> ExecuteCgibinMeetingPollFinishAsync(this WechatWorkClient client, Models.CgibinMeetingPollFinishRequest 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", "meeting", "poll", "finish")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingPollFinishResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region RealControl
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/realcontrol/set 接口。</para>

View File

@@ -0,0 +1,88 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/create_theme 接口的请求。</para>
/// </summary>
public class CgibinMeetingPollCreateThemeRequest : WechatWorkRequest
{
public static class Types
{
public class Question
{
/// <summary>
/// 获取或设置问题类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("question_type")]
[System.Text.Json.Serialization.JsonPropertyName("question_type")]
public int QuestionType { get; set; }
/// <summary>
/// 获取或设置问题描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("question_desc")]
[System.Text.Json.Serialization.JsonPropertyName("question_desc")]
public string QuestionDescription { get; set; } = string.Empty;
/// <summary>
/// 获取或设置选项列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_option")]
[System.Text.Json.Serialization.JsonPropertyName("poll_option")]
public IList<string> OptionList { get; set; } = new List<string>();
}
}
/// <summary>
/// 获取或设置会议 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("meetingid")]
[System.Text.Json.Serialization.JsonPropertyName("meetingid")]
public string MeetingId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置操作者的 UserId。
/// </summary>
[Newtonsoft.Json.JsonProperty("operator_userid")]
[System.Text.Json.Serialization.JsonPropertyName("operator_userid")]
public string OperatorUserId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置终端设备类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("instance_id")]
[System.Text.Json.Serialization.JsonPropertyName("instance_id")]
public int InstanceId { get; set; }
/// <summary>
/// 获取或设置投票主题。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_topic")]
[System.Text.Json.Serialization.JsonPropertyName("poll_topic")]
public string PollTopic { get; set; } = string.Empty;
/// <summary>
/// 获取或设置投票主题描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_desc")]
[System.Text.Json.Serialization.JsonPropertyName("poll_desc")]
public string PollDescription { get; set; } = string.Empty;
/// <summary>
/// 获取或设置是否匿名。
/// </summary>
[Newtonsoft.Json.JsonProperty("is_anony")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalNullableBooleanConverter))]
[System.Text.Json.Serialization.JsonPropertyName("is_anony")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalNullableBooleanConverter))]
public bool? IsAnonymous { get; set; }
/// <summary>
/// 获取或设置投票问题列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_questions")]
[System.Text.Json.Serialization.JsonPropertyName("poll_questions")]
public IList<Types.Question> QuestionList { get; set; } = new List<Types.Question>();
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/create_theme 接口的响应。</para>
/// </summary>
public class CgibinMeetingPollCreateThemeResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置投票主题 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_theme_id")]
[System.Text.Json.Serialization.JsonPropertyName("poll_theme_id")]
public string PollThemeId { get; set; } = default!;
}
}

View File

@@ -0,0 +1,43 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/delete 接口的请求。</para>
/// </summary>
public class CgibinMeetingPollDeleteRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置会议 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("meetingid")]
[System.Text.Json.Serialization.JsonPropertyName("meetingid")]
public string MeetingId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置投票主题 ID。与字段 <see cref="PollId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_theme_id")]
[System.Text.Json.Serialization.JsonPropertyName("poll_theme_id")]
public string? PollThemeId { get; set; }
/// <summary>
/// 获取或设置投票 ID。与字段 <see cref="PollThemeId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_id")]
[System.Text.Json.Serialization.JsonPropertyName("poll_id")]
public string? PollId { get; set; }
/// <summary>
/// 获取或设置操作者的 UserId。
/// </summary>
[Newtonsoft.Json.JsonProperty("operator_userid")]
[System.Text.Json.Serialization.JsonPropertyName("operator_userid")]
public string OperatorUserId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置终端设备类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("instance_id")]
[System.Text.Json.Serialization.JsonPropertyName("instance_id")]
public int InstanceId { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/delete 接口的响应。</para>
/// </summary>
public class CgibinMeetingPollDeleteResponse : WechatWorkResponse
{
}
}

View File

@@ -0,0 +1,43 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/finish 接口的请求。</para>
/// </summary>
public class CgibinMeetingPollFinishRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置会议 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("meetingid")]
[System.Text.Json.Serialization.JsonPropertyName("meetingid")]
public string MeetingId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置投票主题 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_theme_id")]
[System.Text.Json.Serialization.JsonPropertyName("poll_theme_id")]
public string PollThemeId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置投票 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_id")]
[System.Text.Json.Serialization.JsonPropertyName("poll_id")]
public string PollId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置操作者的 UserId。
/// </summary>
[Newtonsoft.Json.JsonProperty("operator_userid")]
[System.Text.Json.Serialization.JsonPropertyName("operator_userid")]
public string OperatorUserId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置终端设备类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("instance_id")]
[System.Text.Json.Serialization.JsonPropertyName("instance_id")]
public int InstanceId { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/finish 接口的响应。</para>
/// </summary>
public class CgibinMeetingPollFinishResponse : WechatWorkResponse
{
}
}

View File

@@ -0,0 +1,36 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/get_poll_detail 接口的请求。</para>
/// </summary>
public class CgibinMeetingPollGetPollDetailRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置会议 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("meetingid")]
[System.Text.Json.Serialization.JsonPropertyName("meetingid")]
public string MeetingId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置投票 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_id")]
[System.Text.Json.Serialization.JsonPropertyName("poll_id")]
public string PollId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置操作者的 UserId。
/// </summary>
[Newtonsoft.Json.JsonProperty("operator_userid")]
[System.Text.Json.Serialization.JsonPropertyName("operator_userid")]
public string OperatorUserId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置终端设备类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("instance_id")]
[System.Text.Json.Serialization.JsonPropertyName("instance_id")]
public int InstanceId { get; set; }
}
}

View File

@@ -0,0 +1,165 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/get_poll_detail 接口的响应。</para>
/// </summary>
public class CgibinMeetingPollGetPollDetailResponse : WechatWorkResponse
{
public static class Types
{
public class Question
{
public static class Types
{
public class Option
{
public static class Types
{
public class User
{
/// <summary>
/// 获取或设置成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("userid")]
[System.Text.Json.Serialization.JsonPropertyName("userid")]
public string? UserId { get; set; }
/// <summary>
/// 获取或设置参会的成员临时 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("tmp_openid")]
[System.Text.Json.Serialization.JsonPropertyName("tmp_openid")]
public string? TempOpenId { get; set; }
}
}
/// <summary>
/// 获取或设置选项 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("option_id")]
[System.Text.Json.Serialization.JsonPropertyName("option_id")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalStringReadOnlyConverter))]
public string QuestionId { get; set; } = default!;
/// <summary>
/// 获取或设置选项描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("option_desc")]
[System.Text.Json.Serialization.JsonPropertyName("option_desc")]
public string OptionDescription { get; set; } = default!;
/// <summary>
/// 获取或设置投票数。
/// </summary>
[Newtonsoft.Json.JsonProperty("option_num")]
[System.Text.Json.Serialization.JsonPropertyName("option_num")]
public int Number { get; set; }
/// <summary>
/// 获取或设置投票率范围0100
/// </summary>
[Newtonsoft.Json.JsonProperty("rate")]
[System.Text.Json.Serialization.JsonPropertyName("rate")]
public int Rate { get; set; }
/// <summary>
/// 获取或设置投票用户列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("option_user")]
[System.Text.Json.Serialization.JsonPropertyName("option_user")]
public Types.User[]? UserList { get; set; }
}
}
/// <summary>
/// 获取或设置问题 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("question_id")]
[System.Text.Json.Serialization.JsonPropertyName("question_id")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalStringReadOnlyConverter))]
public string QuestionId { get; set; } = default!;
/// <summary>
/// 获取或设置问题类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("question_type")]
[System.Text.Json.Serialization.JsonPropertyName("question_type")]
public int QuestionType { get; set; }
/// <summary>
/// 获取或设置问题描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("question_desc")]
[System.Text.Json.Serialization.JsonPropertyName("question_desc")]
public string QuestionDescription { get; set; } = default!;
/// <summary>
/// 获取或设置选项列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("option_info")]
[System.Text.Json.Serialization.JsonPropertyName("option_info")]
public Types.Option[] OptionList { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置投票主题 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_theme_id")]
[System.Text.Json.Serialization.JsonPropertyName("poll_theme_id")]
public string PollThemeId { get; set; } = default!;
/// <summary>
/// 获取或设置投票主题。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_topic")]
[System.Text.Json.Serialization.JsonPropertyName("poll_topic")]
public string PollTopic { get; set; } = default!;
/// <summary>
/// 获取或设置投票主题描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_desc")]
[System.Text.Json.Serialization.JsonPropertyName("poll_desc")]
public string PollDescription { get; set; } = default!;
/// <summary>
/// 获取或设置投票状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("status")]
[System.Text.Json.Serialization.JsonPropertyName("status")]
public int Status { get; set; }
/// <summary>
/// 获取或设置是否共享。
/// </summary>
[Newtonsoft.Json.JsonProperty("is_shared")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))]
[System.Text.Json.Serialization.JsonPropertyName("is_shared")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
public bool IsShared { get; set; }
/// <summary>
/// 获取或设置是否匿名。
/// </summary>
[Newtonsoft.Json.JsonProperty("is_anony")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))]
[System.Text.Json.Serialization.JsonPropertyName("is_anony")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
public bool IsAnonymous { get; set; }
/// <summary>
/// 获取或设置投票人数。
/// </summary>
[Newtonsoft.Json.JsonProperty("vote_total_num")]
[System.Text.Json.Serialization.JsonPropertyName("vote_total_num")]
public int VoteTotalCount { get; set; }
/// <summary>
/// 获取或设置投票问题列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_question_data")]
[System.Text.Json.Serialization.JsonPropertyName("poll_question_data")]
public Types.Question[] QuestionList { get; set; } = default!;
}
}

View File

@@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/get_poll_list 接口的请求。</para>
/// </summary>
public class CgibinMeetingPollGetPollListRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置会议 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("meetingid")]
[System.Text.Json.Serialization.JsonPropertyName("meetingid")]
public string MeetingId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置操作者的 UserId。
/// </summary>
[Newtonsoft.Json.JsonProperty("operator_userid")]
[System.Text.Json.Serialization.JsonPropertyName("operator_userid")]
public string OperatorUserId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置终端设备类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("instance_id")]
[System.Text.Json.Serialization.JsonPropertyName("instance_id")]
public int InstanceId { get; set; }
}
}

View File

@@ -0,0 +1,80 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/get_poll_list 接口的响应。</para>
/// </summary>
public class CgibinMeetingPollGetPollListResponse : WechatWorkResponse
{
public static class Types
{
public class PollTheme
{
public static class Types
{
public class Poll
{
/// <summary>
/// 获取或设置投票 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_id")]
[System.Text.Json.Serialization.JsonPropertyName("poll_id")]
public string PollId { get; set; } = default!;
/// <summary>
/// 获取或设置投票主题。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_topic")]
[System.Text.Json.Serialization.JsonPropertyName("poll_topic")]
public string PollTopic { get; set; } = default!;
/// <summary>
/// 获取或设置投票状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("status")]
[System.Text.Json.Serialization.JsonPropertyName("status")]
public int Status { get; set; }
/// <summary>
/// 获取或设置是否共享。
/// </summary>
[Newtonsoft.Json.JsonProperty("is_shared")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))]
[System.Text.Json.Serialization.JsonPropertyName("is_shared")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
public bool IsShared { get; set; }
/// <summary>
/// 获取或设置是否匿名。
/// </summary>
[Newtonsoft.Json.JsonProperty("is_anony")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))]
[System.Text.Json.Serialization.JsonPropertyName("is_anony")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
public bool IsAnonymous { get; set; }
}
}
/// <summary>
/// 获取或设置投票主题 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_theme_id")]
[System.Text.Json.Serialization.JsonPropertyName("poll_theme_id")]
public string PollThemeId { get; set; } = default!;
/// <summary>
/// 获取或设置投票列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("polls_info")]
[System.Text.Json.Serialization.JsonPropertyName("polls_info")]
public Types.Poll[] PollList { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置投票主题列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("polls_theme_info")]
[System.Text.Json.Serialization.JsonPropertyName("polls_theme_info")]
public Types.PollTheme[] PollThemeList { get; set; } = default!;
}
}

View File

@@ -0,0 +1,36 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/get_theme_info 接口的请求。</para>
/// </summary>
public class CgibinMeetingPollGetThemeInfoRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置会议 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("meetingid")]
[System.Text.Json.Serialization.JsonPropertyName("meetingid")]
public string MeetingId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置投票主题 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_theme_id")]
[System.Text.Json.Serialization.JsonPropertyName("poll_theme_id")]
public string PollThemeId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置操作者的 UserId。
/// </summary>
[Newtonsoft.Json.JsonProperty("operator_userid")]
[System.Text.Json.Serialization.JsonPropertyName("operator_userid")]
public string OperatorUserId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置终端设备类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("instance_id")]
[System.Text.Json.Serialization.JsonPropertyName("instance_id")]
public int InstanceId { get; set; }
}
}

View File

@@ -0,0 +1,85 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/get_theme_info 接口的响应。</para>
/// </summary>
public class CgibinMeetingPollGetThemeInfoResponse : WechatWorkResponse
{
public static class Types
{
public class Question
{
public static class Types
{
public class Option
{
/// <summary>
/// 获取或设置选项描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("option_desc")]
[System.Text.Json.Serialization.JsonPropertyName("option_desc")]
public string OptionDescription { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置问题类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("question_type")]
[System.Text.Json.Serialization.JsonPropertyName("question_type")]
public int QuestionType { get; set; }
/// <summary>
/// 获取或设置问题描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("question_desc")]
[System.Text.Json.Serialization.JsonPropertyName("question_desc")]
public string QuestionDescription { get; set; } = default!;
/// <summary>
/// 获取或设置选项列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("option_info")]
[System.Text.Json.Serialization.JsonPropertyName("option_info")]
public Types.Option[] OptionList { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置投票主题 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_theme_id")]
[System.Text.Json.Serialization.JsonPropertyName("poll_theme_id")]
public string PollThemeId { get; set; } = default!;
/// <summary>
/// 获取或设置投票主题。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_topic")]
[System.Text.Json.Serialization.JsonPropertyName("poll_topic")]
public string PollTopic { get; set; } = default!;
/// <summary>
/// 获取或设置投票主题描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_desc")]
[System.Text.Json.Serialization.JsonPropertyName("poll_desc")]
public string PollDescription { get; set; } = default!;
/// <summary>
/// 获取或设置是否匿名。
/// </summary>
[Newtonsoft.Json.JsonProperty("is_anony")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))]
[System.Text.Json.Serialization.JsonPropertyName("is_anony")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
public bool IsAnonymous { get; set; }
/// <summary>
/// 获取或设置投票问题列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_question_data")]
[System.Text.Json.Serialization.JsonPropertyName("poll_question_data")]
public Types.Question[] QuestionList { get; set; } = default!;
}
}

View File

@@ -0,0 +1,36 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/start 接口的请求。</para>
/// </summary>
public class CgibinMeetingPollStartRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置会议 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("meetingid")]
[System.Text.Json.Serialization.JsonPropertyName("meetingid")]
public string MeetingId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置投票主题 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_theme_id")]
[System.Text.Json.Serialization.JsonPropertyName("poll_theme_id")]
public string PollThemeId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置操作者的 UserId。
/// </summary>
[Newtonsoft.Json.JsonProperty("operator_userid")]
[System.Text.Json.Serialization.JsonPropertyName("operator_userid")]
public string OperatorUserId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置终端设备类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("instance_id")]
[System.Text.Json.Serialization.JsonPropertyName("instance_id")]
public int InstanceId { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/start 接口的响应。</para>
/// </summary>
public class CgibinMeetingPollStartResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置投票 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_id")]
[System.Text.Json.Serialization.JsonPropertyName("poll_id")]
public string PollId { get; set; } = default!;
}
}

View File

@@ -0,0 +1,75 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/update_theme 接口的请求。</para>
/// </summary>
public class CgibinMeetingPollUpdateThemeRequest : WechatWorkRequest
{
public static class Types
{
public class Question : CgibinMeetingPollCreateThemeRequest.Types.Question
{
}
}
/// <summary>
/// 获取或设置会议 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("meetingid")]
[System.Text.Json.Serialization.JsonPropertyName("meetingid")]
public string MeetingId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置投票主题 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_theme_id")]
[System.Text.Json.Serialization.JsonPropertyName("poll_theme_id")]
public string PollThemeId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置操作者的 UserId。
/// </summary>
[Newtonsoft.Json.JsonProperty("operator_userid")]
[System.Text.Json.Serialization.JsonPropertyName("operator_userid")]
public string OperatorUserId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置终端设备类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("instance_id")]
[System.Text.Json.Serialization.JsonPropertyName("instance_id")]
public int InstanceId { get; set; }
/// <summary>
/// 获取或设置投票主题。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_topic")]
[System.Text.Json.Serialization.JsonPropertyName("poll_topic")]
public string PollTopic { get; set; } = string.Empty;
/// <summary>
/// 获取或设置投票主题描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_desc")]
[System.Text.Json.Serialization.JsonPropertyName("poll_desc")]
public string PollDescription { get; set; } = string.Empty;
/// <summary>
/// 获取或设置是否匿名。
/// </summary>
[Newtonsoft.Json.JsonProperty("is_anony")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalNullableBooleanConverter))]
[System.Text.Json.Serialization.JsonPropertyName("is_anony")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalNullableBooleanConverter))]
public bool? IsAnonymous { get; set; }
/// <summary>
/// 获取或设置投票问题列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("poll_questions")]
[System.Text.Json.Serialization.JsonPropertyName("poll_questions")]
public IList<Types.Question> QuestionList { get; set; } = new List<Types.Question>();
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/poll/update_theme 接口的响应。</para>
/// </summary>
public class CgibinMeetingPollUpdateThemeResponse : WechatWorkResponse
{
}
}

View File

@@ -0,0 +1,15 @@
{
"operator_userid": "OPENID",
"instance_id": 1,
"meetingid": "ID",
"poll_topic": "TOPIC",
"poll_desc": "desc",
"is_anony": 1,
"poll_questions": [
{
"question_type": 1,
"question_desc": "DESC",
"poll_option": [ "OPTION1", "OPTION2" ]
}
]
}

View File

@@ -0,0 +1,5 @@
{
"errcode": 0,
"errmsg": "ok",
"poll_theme_id": "theme1"
}

View File

@@ -0,0 +1,7 @@
{
"operator_userid": "OPENID",
"instance_id": 1,
"meetingid": "MEETINGID",
"poll_theme_id": "theme",
"poll_id": "ID"
}

View File

@@ -0,0 +1,7 @@
{
"operator_userid": "OPENID",
"instance_id": 1,
"meetingid": "MEETINGID",
"poll_theme_id": "themeid",
"poll_id": "ID"
}

View File

@@ -0,0 +1,6 @@
{
"operator_userid": "OPENID",
"instance_id": 1,
"meetingid": "ID",
"poll_id": "POLLID"
}

View File

@@ -0,0 +1,32 @@
{
"errcode": 0,
"errmsg": "ok",
"poll_theme_id": "theme1",
"poll_topic": "topic",
"poll_desc": "DESC",
"is_anony": 1,
"status": 1,
"is_shared": 0,
"vote_total_num": 10,
"poll_question_data": [
{
"question_desc": "DESC1",
"question_type": 1,
"question_id": "id111",
"option_info": [
{
"option_id": 1111,
"option_desc": "nigjei",
"option_num": 10,
"rate": 10,
"option_user": [
{
"userid": "NGIEO",
"tmp_openid": "GNEIGEMM"
}
]
}
]
}
]
}

View File

@@ -0,0 +1,5 @@
{
"operator_userid": "OPENID",
"instance_id": 1,
"meetingid": "ID"
}

View File

@@ -0,0 +1,18 @@
{
"errcode": 0,
"errmsg": "ok",
"polls_theme_info": [
{
"poll_theme_id": "theme1",
"polls_info": [
{
"poll_id": "pollid",
"poll_topic": "topic1",
"status": 1,
"is_shared": 1,
"is_anony": 0
}
]
}
]
}

View File

@@ -0,0 +1,6 @@
{
"operator_userid": "OPENID",
"instance_id": 1,
"meetingid": "ID",
"poll_theme_id": "theme1"
}

View File

@@ -0,0 +1,18 @@
{
"errcode": 0,
"errmsg": "ok",
"poll_topic": "TITLE",
"poll_desc": "DESC",
"is_anony": 1,
"poll_question_data": [
{
"question_desc": "desc",
"question_type": 1,
"option_info": [
{
"option_desc": "option"
}
]
}
]
}

View File

@@ -0,0 +1,6 @@
{
"operator_userid": "OPENID",
"instance_id": 1,
"meetingid": "ID",
"poll_theme_id": "THEME1"
}

View File

@@ -0,0 +1,5 @@
{
"errcode": 0,
"errmsg": "ok",
"poll_id": "POLLID"
}

View File

@@ -0,0 +1,16 @@
{
"operator_userid": "OPENID",
"instance_id": 1,
"meetingid": "ID",
"poll_theme_id": "theme1",
"poll_topic": "TOPIC",
"poll_desc": "desc",
"is_anony": 1,
"poll_questions": [
{
"question_type": 1,
"question_desc": "DESC",
"poll_option": [ "OPTION1", "OPTION2" ]
}
]
}