feat: 新增网络研讨会报名管理相关接口

This commit is contained in:
Fu Diwei 2023-06-15 22:44:15 +08:00
parent 79ab95f76a
commit 6067b200e2
30 changed files with 552 additions and 0 deletions

View File

@ -1124,6 +1124,148 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingWebinarUpdateWarmUpResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#region /Webinar/Enroll
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/webinar/enroll/set_config 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/98875 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingWebinarEnrollSetConfigResponse> ExecuteCgibinMeetingWebinarEnrollSetConfigAsync(this WechatWorkClient client, Models.CgibinMeetingWebinarEnrollSetConfigRequest 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", "webinar", "enroll", "set_config")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingWebinarEnrollSetConfigResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/webinar/enroll/get_config 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/98874 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingWebinarEnrollGetConfigResponse> ExecuteCgibinMeetingWebinarEnrollGetConfigAsync(this WechatWorkClient client, Models.CgibinMeetingWebinarEnrollGetConfigRequest 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", "webinar", "enroll", "get_config")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingWebinarEnrollGetConfigResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/webinar/enroll/query_by_tmp_openid 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/98873 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingWebinarEnrollQueryByTempOpenIdResponse> ExecuteCgibinMeetingWebinarEnrollQueryByTempOpenIdAsync(this WechatWorkClient client, Models.CgibinMeetingWebinarEnrollQueryByTempOpenIdRequest 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", "webinar", "enroll", "query_by_tmp_openid")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingWebinarEnrollQueryByTempOpenIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/webinar/enroll/list 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/98876 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingWebinarEnrollListResponse> ExecuteCgibinMeetingWebinarEnrollListAsync(this WechatWorkClient client, Models.CgibinMeetingWebinarEnrollListRequest 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", "webinar", "enroll", "list")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingWebinarEnrollListResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/webinar/enroll/approve 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/98877 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingWebinarEnrollApproveResponse> ExecuteCgibinMeetingWebinarEnrollApproveAsync(this WechatWorkClient client, Models.CgibinMeetingWebinarEnrollApproveRequest 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", "webinar", "enroll", "approve")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingWebinarEnrollApproveResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/webinar/enroll/import 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/98880 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingWebinarEnrollImportResponse> ExecuteCgibinMeetingWebinarEnrollImportAsync(this WechatWorkClient client, Models.CgibinMeetingWebinarEnrollImportRequest 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", "webinar", "enroll", "import")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingWebinarEnrollImportResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/webinar/enroll/delete 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/98881 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingWebinarEnrollDeleteResponse> ExecuteCgibinMeetingWebinarEnrollDeleteAsync(this WechatWorkClient client, Models.CgibinMeetingWebinarEnrollDeleteRequest 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", "webinar", "enroll", "delete")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingWebinarEnrollDeleteResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#endregion
}
}

View File

@ -62,6 +62,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
/// </summary>
[Newtonsoft.Json.JsonProperty("enroll_id")]
[System.Text.Json.Serialization.JsonPropertyName("enroll_id")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalStringReadOnlyConverter))]
public string EnrollId { get; set; } = default!;
/// <summary>

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/webinar/enroll/approve 接口的请求。</para>
/// </summary>
public class CgibinMeetingWebinarEnrollApproveRequest : CgibinMeetingEnrollApproveRequest
{
}
}

View File

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

View File

@ -0,0 +1,24 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/webinar/enroll/delete 接口的请求。</para>
/// </summary>
public class CgibinMeetingWebinarEnrollDeleteRequest : CgibinMeetingEnrollDeleteRequest
{
public static new class Types
{
public class Enroll : CgibinMeetingEnrollDeleteRequest.Types.Enroll
{
}
}
/// <summary>
/// 获取或设置报名列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("enroll_id_list")]
[System.Text.Json.Serialization.JsonPropertyName("enroll_id_list")]
public new IList<Types.Enroll> EnrollList { get; set; } = new List<Types.Enroll>();
}
}

View File

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

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/webinar/enroll/get_config 接口的请求。</para>
/// </summary>
public class CgibinMeetingWebinarEnrollGetConfigRequest : CgibinMeetingEnrollGetConfigRequest
{
}
}

View File

@ -0,0 +1,35 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/webinar/enroll/get_config 接口的响应。</para>
/// </summary>
public class CgibinMeetingWebinarEnrollGetConfigResponse : CgibinMeetingEnrollGetConfigResponse
{
public static new class Types
{
public class Question : CgibinMeetingEnrollGetConfigResponse.Types.Question
{
public static new class Types
{
public class Option : CgibinMeetingEnrollGetConfigResponse.Types.Question.Types.Option
{
}
}
/// <summary>
/// 获取或设置选项列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("option_list")]
[System.Text.Json.Serialization.JsonPropertyName("option_list")]
public new Types.Option[]? OptionList { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置问题列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("question_list")]
[System.Text.Json.Serialization.JsonPropertyName("question_list")]
public new Types.Question[] QuestionList { get; set; } = default!;
}
}

View File

@ -0,0 +1,24 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/webinar/enroll/import 接口的请求。</para>
/// </summary>
public class CgibinMeetingWebinarEnrollImportRequest : CgibinMeetingEnrollImportRequest
{
public static new class Types
{
public class Enroll : CgibinMeetingEnrollImportRequest.Types.Enroll
{
}
}
/// <summary>
/// 获取或设置报名列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("enroll_list")]
[System.Text.Json.Serialization.JsonPropertyName("enroll_list")]
public new IList<Types.Enroll> EnrollList { get; set; } = new List<Types.Enroll>();
}
}

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/webinar/enroll/import 接口的响应。</para>
/// </summary>
public class CgibinMeetingWebinarEnrollImportResponse : CgibinMeetingEnrollImportResponse
{
public static new class Types
{
public class Enroll : CgibinMeetingEnrollImportResponse.Types.Enroll
{
}
}
/// <summary>
/// 获取或设置报名列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("enroll_list")]
[System.Text.Json.Serialization.JsonPropertyName("enroll_list")]
public new Types.Enroll[] EnrollList { get; set; } = default!;
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/webinar/enroll/list 接口的请求。</para>
/// </summary>
public class CgibinMeetingWebinarEnrollListRequest : CgibinMeetingEnrollListRequest
{
}
}

View File

@ -0,0 +1,35 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/webinar/enroll/list 接口的响应。</para>
/// </summary>
public class CgibinMeetingWebinarEnrollListResponse : CgibinMeetingEnrollListResponse
{
public static new class Types
{
public class Enroll : CgibinMeetingEnrollListResponse.Types.Enroll
{
public static new class Types
{
public class Answer : CgibinMeetingEnrollListResponse.Types.Enroll.Types.Answer
{
}
}
/// <summary>
/// 获取或设置答题列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("answer_list")]
[System.Text.Json.Serialization.JsonPropertyName("answer_list")]
public new Types.Answer[]? AnswerList { get; set; }
}
}
/// <summary>
/// 获取或设置报名列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("enroll_list")]
[System.Text.Json.Serialization.JsonPropertyName("enroll_list")]
public new Types.Enroll[] EnrollList { get; set; } = default!;
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/webinar/enroll/query_by_tmp_openid 接口的请求。</para>
/// </summary>
public class CgibinMeetingWebinarEnrollQueryByTempOpenIdRequest : CgibinMeetingEnrollQueryByTempOpenIdRequest
{
}
}

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/webinar/enroll/query_by_tmp_openid 接口的响应。</para>
/// </summary>
public class CgibinMeetingWebinarEnrollQueryByTempOpenIdResponse : CgibinMeetingEnrollQueryByTempOpenIdResponse
{
public static new class Types
{
public class Result : CgibinMeetingEnrollQueryByTempOpenIdResponse.Types.Result
{
}
}
/// <summary>
/// 获取或设置结果列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("enroll_id_list")]
[System.Text.Json.Serialization.JsonPropertyName("enroll_id_list")]
public new Types.Result[] ResultList { get; set; } = default!;
}
}

View File

@ -0,0 +1,37 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/meeting/webinar/enroll/set_config 接口的请求。</para>
/// </summary>
public class CgibinMeetingWebinarEnrollSetConfigRequest : CgibinMeetingEnrollSetConfigRequest
{
public static new class Types
{
public class Question : CgibinMeetingEnrollSetConfigRequest.Types.Question
{
public static new class Types
{
public class Option : CgibinMeetingEnrollSetConfigRequest.Types.Question.Types.Option
{
}
}
/// <summary>
/// 获取或设置选项列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("option_list")]
[System.Text.Json.Serialization.JsonPropertyName("option_list")]
public new IList<Types.Option>? OptionList { get; set; }
}
}
/// <summary>
/// 获取或设置问题列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("question_list")]
[System.Text.Json.Serialization.JsonPropertyName("question_list")]
public new IList<Types.Question>? QuestionList { get; set; }
}
}

View File

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

View File

@ -0,0 +1,5 @@
{
"meetingid": "MEETINGID1",
"enroll_id_list": [ "xxxxxx", "yyyyyyy" ],
"action": 3
}

View File

@ -0,0 +1,5 @@
{
"errcode": 0,
"errmsg": "ok",
"handled_count": 2
}

View File

@ -0,0 +1,8 @@
{
"meetingid": "meetingid11234",
"enroll_id_list": [
{
"enroll_id": "123456"
}
]
}

View File

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

View File

@ -0,0 +1,20 @@
{
"errcode": 0,
"errmsg": "ok",
"approve_type": 1,
"is_collect_question": 1,
"no_registration_needed_for_staff": true,
"question_list": [
{
"is_required": 1,
"question_type": 1,
"question_title": "acd",
"special_type": 1,
"option_list": [
{
"content": "asr"
}
]
}
]
}

View File

@ -0,0 +1,11 @@
{
"meetingid": "meetingid11234",
"enroll_list": [
{
"userid": "USERID",
"area": "86",
"phone_number": "13333333333",
"nick_name": "NICKNAME"
}
]
}

View File

@ -0,0 +1,15 @@
{
"errcode": 0,
"errmsg": "ok",
"total_count": 1,
"enroll_list": [
{
"enroll_id": "123456",
"userid": "USERID",
"area": "86",
"phone_number": "13333333333",
"nick_name": "NICKNAME",
"enroll_code": "CODE"
}
]
}

View File

@ -0,0 +1,6 @@
{
"meetingid": "MEETINGID1",
"status": 1,
"cursor": "CURSOR",
"limit": 20
}

View File

@ -0,0 +1,28 @@
{
"errcode": 0,
"errmsg": "ok",
"has_more": false,
"next_cursor": "CURSOR",
"enroll_list": [
{
"enroll_id": 1386442,
"enroll_time": "2023-03-23 10:00:00",
"enroll_source_type": 2,
"nick_name": "ccc",
"status": 3,
"userid": "USERID",
"tmp_openid": "MSOPENID",
"enroll_code": "1111111",
"answer_list": [
{
"answer_content": [ "A" ],
"is_required": 1,
"question_num": 1,
"question_title": "testqus",
"question_type": 1,
"special_type": 1
}
]
}
]
}

View File

@ -0,0 +1,7 @@
{
"meetingid": "MEETINGID",
"sorting_rules": 1,
"tmp_openid_list": [
"agaqwwgdkkddd"
]
}

View File

@ -0,0 +1,10 @@
{
"errcode": 0,
"errmsg": "ok",
"enroll_id_list": [
{
"tmp_openid": "agaqwwgdkkddd",
"enroll_id": "mexxxxxxxx"
}
]
}

View File

@ -0,0 +1,19 @@
{
"meetingid": "MEETINGID1",
"approve_type": 1,
"is_collect_question": 1,
"no_registration_needed_for_staff": true,
"question_list": [
{
"is_required": 1,
"question_type": 1,
"question_title": "acd",
"special_type": 1,
"option_list": [
{
"content": "asr"
}
]
}
]
}

View File

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