diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinHealthExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinHealthExtensions.cs
new file mode 100644
index 00000000..ece11b31
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinHealthExtensions.cs
@@ -0,0 +1,98 @@
+using System;
+using System.Collections.Generic;
+using System.Net.Http;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using Flurl;
+using Flurl.Http;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work
+{
+ public static class WechatWorkClientExecuteCgibinHealthExtensions
+ {
+ ///
+ /// 异步调用 [POST] /cgi-bin/health/get_health_report_stat 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93676
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinHealthGetHealthReportStatisticsAsync(this WechatWorkClient client, Models.CgibinHealthGetHealthReportStatisticsRequest 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(HttpMethod.Post, "cgi-bin", "health", "get_health_report_stat")
+ .SetOptions(request)
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/health/get_report_jobids 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93677
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinHealthGetReportJobIdsAsync(this WechatWorkClient client, Models.CgibinHealthGetReportJobIdsRequest 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(HttpMethod.Post, "cgi-bin", "health", "get_report_jobids")
+ .SetOptions(request)
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/health/get_report_job_info 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93678
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinHealthGetReportJobInfoAsync(this WechatWorkClient client, Models.CgibinHealthGetReportJobInfoRequest 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(HttpMethod.Post, "cgi-bin", "health", "get_report_job_info")
+ .SetOptions(request)
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/health/get_report_answer 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93679
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinHealthGetReportAnswerAsync(this WechatWorkClient client, Models.CgibinHealthGetReportAnswerRequest 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(HttpMethod.Post, "cgi-bin", "health", "get_report_answer")
+ .SetOptions(request)
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinSchoolExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinSchoolExtensions.cs
index 535e66f3..9223cbf3 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinSchoolExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinSchoolExtensions.cs
@@ -98,6 +98,78 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
}
#region User
+
+ ///
+ /// 异步调用 [GET] /cgi-bin/school/user/get 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92337
+ /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92038
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinSchoolUserGetAsync(this WechatWorkClient client, Models.CgibinSchoolUserGetRequest 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(HttpMethod.Get, "cgi-bin", "school", "user", "get")
+ .SetOptions(request)
+ .SetQueryParam("access_token", request.AccessToken)
+ .SetQueryParam("userid", request.StudentOrParentUserId);
+
+ return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [GET] /cgi-bin/school/user/list 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92338
+ /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92043
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinSchoolUserListAsync(this WechatWorkClient client, Models.CgibinSchoolUserListRequest 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(HttpMethod.Get, "cgi-bin", "school", "user", "list")
+ .SetOptions(request)
+ .SetQueryParam("access_token", request.AccessToken)
+ .SetQueryParam("department_id", request.DeparmentId);
+
+ if (request.RequireFetchChild.HasValue)
+ flurlReq.SetQueryParam("fetch_child", request.RequireFetchChild.Value ? 1 : 0);
+
+ return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [GET] /cgi-bin/school/user/list_parent 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92446
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinSchoolUserListParentAsync(this WechatWorkClient client, Models.CgibinSchoolUserListParentRequest 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(HttpMethod.Get, "cgi-bin", "school", "user", "list_parent")
+ .SetOptions(request)
+ .SetQueryParam("access_token", request.AccessToken)
+ .SetQueryParam("department_id", request.DeparmentId);
+
+ return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken);
+ }
+
#region UserStudent
///
/// 异步调用 [POST] /cgi-bin/school/user/create_student 接口。
@@ -368,77 +440,71 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
}
#endregion
+ #region UserHealth
///
- /// 异步调用 [GET] /cgi-bin/school/user/get 接口。
- /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92337
- /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92038
+ /// 异步调用 [POST] /cgi-bin/school/user/get_teacher_customize_health_info 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93744
///
///
///
///
///
- public static async Task ExecuteCgibinSchoolUserGetAsync(this WechatWorkClient client, Models.CgibinSchoolUserGetRequest request, CancellationToken cancellationToken = default)
+ public static async Task ExecuteCgibinSchoolUserGetTeacherCustomizeHealthInfoAsync(this WechatWorkClient client, Models.CgibinSchoolUserGetTeacherCustomizeHealthInfoRequest 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(HttpMethod.Get, "cgi-bin", "school", "user", "get")
+ .CreateRequest(HttpMethod.Post, "cgi-bin", "school", "user", "get_teacher_customize_health_info")
.SetOptions(request)
- .SetQueryParam("access_token", request.AccessToken)
- .SetQueryParam("userid", request.StudentOrParentUserId);
+ .SetQueryParam("access_token", request.AccessToken);
- return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken);
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
- /// 异步调用 [GET] /cgi-bin/school/user/list 接口。
- /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92338
- /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92043
+ /// 异步调用 [POST] /cgi-bin/school/user/get_student_customize_health_info 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93745
///
///
///
///
///
- public static async Task ExecuteCgibinSchoolUserListAsync(this WechatWorkClient client, Models.CgibinSchoolUserListRequest request, CancellationToken cancellationToken = default)
+ public static async Task ExecuteCgibinSchoolUserGetStudentCustomizeHealthInfoAsync(this WechatWorkClient client, Models.CgibinSchoolUserGetStudentCustomizeHealthInfoRequest 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(HttpMethod.Get, "cgi-bin", "school", "user", "list")
+ .CreateRequest(HttpMethod.Post, "cgi-bin", "school", "user", "get_student_customize_health_info")
.SetOptions(request)
- .SetQueryParam("access_token", request.AccessToken)
- .SetQueryParam("department_id", request.DeparmentId);
+ .SetQueryParam("access_token", request.AccessToken);
- if (request.RequireFetchChild.HasValue)
- flurlReq.SetQueryParam("fetch_child", request.RequireFetchChild.Value ? 1 : 0);
-
- return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken);
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
- /// 异步调用 [GET] /cgi-bin/school/user/list_parent 接口。
- /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92446
+ /// 异步调用 [POST] /cgi-bin/school/user/get_health_qrcode 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93746
///
///
///
///
///
- public static async Task ExecuteCgibinSchoolUserListParentAsync(this WechatWorkClient client, Models.CgibinSchoolUserListParentRequest request, CancellationToken cancellationToken = default)
+ public static async Task ExecuteCgibinSchoolUserGetHealthQrcodeAsync(this WechatWorkClient client, Models.CgibinSchoolUserGetHealthQrcodeRequest 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(HttpMethod.Get, "cgi-bin", "school", "user", "list_parent")
+ .CreateRequest(HttpMethod.Post, "cgi-bin", "school", "user", "get_health_qrcode")
.SetOptions(request)
- .SetQueryParam("access_token", request.AccessToken)
- .SetQueryParam("department_id", request.DeparmentId);
+ .SetQueryParam("access_token", request.AccessToken);
- return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken);
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
+ #endregion
#region Department
///
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinUserExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinUserExtensions.cs
index 59464977..b5ac68de 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinUserExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinUserExtensions.cs
@@ -265,6 +265,28 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
+ ///
+ /// 异步调用 [POST] /cgi-bin/user/get_active_stat 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92714
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinUserGetActiveStatAsync(this WechatWorkClient client, Models.CgibinUserGetActiveStatRequest 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(HttpMethod.Post, "cgi-bin", "user", "get_active_stat")
+ .SetOptions(request)
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ #region Auth
///
/// 异步调用 [GET] /cgi-bin/user/authsucc 接口。
/// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90203
@@ -289,24 +311,53 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
}
///
- /// 异步调用 [POST] /cgi-bin/user/get_active_stat 接口。
- /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92714
+ /// 异步调用 [GET] /cgi-bin/user/list_member_auth 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94513
///
///
///
///
///
- public static async Task ExecuteCgibinUserGetActiveStatAsync(this WechatWorkClient client, Models.CgibinUserGetActiveStatRequest request, CancellationToken cancellationToken = default)
+ public static async Task ExecuteCgibinUserListMemberAuthAsync(this WechatWorkClient client, Models.CgibinUserListMemberAuthRequest 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(HttpMethod.Post, "cgi-bin", "user", "get_active_stat")
+ .CreateRequest(HttpMethod.Get, "cgi-bin", "user", "list_member_auth")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
- return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ if (!string.IsNullOrEmpty(request.NextCursor))
+ flurlReq.SetQueryParam("cursor", request.NextCursor);
+
+ if (request.Limit.HasValue)
+ flurlReq.SetQueryParam("limit", request.Limit);
+
+ return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken);
}
+
+ ///
+ /// 异步调用 [GET] /cgi-bin/user/check_member_auth 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94514
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinUserCheckMemberAuthAsync(this WechatWorkClient client, Models.CgibinUserCheckMemberAuthRequest 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(HttpMethod.Get, "cgi-bin", "user", "check_member_auth")
+ .SetOptions(request)
+ .SetQueryParam("access_token", request.AccessToken)
+ .SetQueryParam("open_userid", request.OpenUserId);
+
+ return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken);
+ }
+ #endregion
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDialog/CgibinDialogGetDialogRecordRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDialog/CgibinDialogGetDialogRecordRequest.cs
index b6805573..37385768 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDialog/CgibinDialogGetDialogRecordRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDialog/CgibinDialogGetDialogRecordRequest.cs
@@ -4,7 +4,7 @@ using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
///
- /// 表示 [POST] /cgi-bin/gettoken 接口的请求。
+ /// 表示 [POST] /cgi-bin/dial/get_dial_record 接口的请求。
///
public class CgibinDialogGetDialogRecordRequest : WechatWorkRequest
{
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDialog/CgibinDialogGetDialogRecordResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDialog/CgibinDialogGetDialogRecordResponse.cs
index 0673d2e4..35405997 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDialog/CgibinDialogGetDialogRecordResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinDialog/CgibinDialogGetDialogRecordResponse.cs
@@ -4,7 +4,7 @@ using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
///
- /// 表示 [POST] /cgi-bin/gettoken 接口的响应。
+ /// 表示 [POST] /cgi-bin/dial/get_dial_record 接口的响应。
///
public class CgibinDialogGetDialogRecordResponse : WechatWorkResponse
{
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetHealthReportStatisticsRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetHealthReportStatisticsRequest.cs
new file mode 100644
index 00000000..23be9a78
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetHealthReportStatisticsRequest.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/health/get_health_report_stat 接口的请求。
+ ///
+ public class CgibinHealthGetHealthReportStatisticsRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置指定查询的日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("date")]
+ [System.Text.Json.Serialization.JsonPropertyName("date")]
+ public string DateString { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetHealthReportStatisticsResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetHealthReportStatisticsResponse.cs
new file mode 100644
index 00000000..3af51c8f
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetHealthReportStatisticsResponse.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/health/get_health_report_stat 接口的响应。
+ ///
+ public class CgibinHealthGetHealthReportStatisticsResponse : WechatWorkResponse
+ {
+ ///
+ /// 获取或设置应用使用次数。
+ ///
+ [Newtonsoft.Json.JsonProperty("pv")]
+ [System.Text.Json.Serialization.JsonPropertyName("pv")]
+ public int PV { get; set; }
+
+ ///
+ /// 获取或设置应用使用人数。
+ ///
+ [Newtonsoft.Json.JsonProperty("uv")]
+ [System.Text.Json.Serialization.JsonPropertyName("uv")]
+ public int UV { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportAnswerRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportAnswerRequest.cs
new file mode 100644
index 00000000..51123a2e
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportAnswerRequest.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/health/get_report_answer 接口的请求。
+ ///
+ public class CgibinHealthGetReportAnswerRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置任务 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("jobid")]
+ [System.Text.Json.Serialization.JsonPropertyName("jobid")]
+ public string ReportJobId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置任务日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("date")]
+ [System.Text.Json.Serialization.JsonPropertyName("date")]
+ public string DateString { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置分页起始位置。
+ ///
+ [Newtonsoft.Json.JsonProperty("offset")]
+ [System.Text.Json.Serialization.JsonPropertyName("offset")]
+ public int? Offset { 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/CgibinHealth/CgibinHealthGetReportAnswerResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportAnswerResponse.cs
new file mode 100644
index 00000000..a34e13c6
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportAnswerResponse.cs
@@ -0,0 +1,100 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/health/get_report_answer 接口的响应。
+ ///
+ public class CgibinHealthGetReportAnswerResponse : WechatWorkResponse
+ {
+ public static class Types
+ {
+ public class Answer
+ {
+ public static class Types
+ {
+ public class ReportValue
+ {
+ ///
+ /// 获取或设置问题 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("question_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("question_id")]
+ public int QuestionId { get; set; }
+
+ ///
+ /// 获取或设置单选题答案编号。
+ ///
+ [Newtonsoft.Json.JsonProperty("single_choice")]
+ [System.Text.Json.Serialization.JsonPropertyName("single_choice")]
+ public int? SignleChoice { get; set; }
+
+ ///
+ /// 获取或设置单选题答案编号。
+ ///
+ [Newtonsoft.Json.JsonProperty("multi_choice")]
+ [System.Text.Json.Serialization.JsonPropertyName("multi_choice")]
+ public int[]? MultipleChoice { get; set; }
+
+ ///
+ /// 获取或设置填空题答案内容。
+ ///
+ [Newtonsoft.Json.JsonProperty("text")]
+ [System.Text.Json.Serialization.JsonPropertyName("text")]
+ public string? Text { get; set; }
+
+ ///
+ /// 获取或设置文件 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("fileid")]
+ [System.Text.Json.Serialization.JsonPropertyName("fileid")]
+ public string[]? FileIdList { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置 ID 类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("id_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("id_type")]
+ public int IdType { get; set; }
+
+ ///
+ /// 获取或设置填写人成员账号。
+ ///
+ [Newtonsoft.Json.JsonProperty("userid")]
+ [System.Text.Json.Serialization.JsonPropertyName("userid")]
+ public string? UserId { get; set; }
+
+ ///
+ /// 获取或设置填写人学生账号。
+ ///
+ [Newtonsoft.Json.JsonProperty("student_userid")]
+ [System.Text.Json.Serialization.JsonPropertyName("student_userid")]
+ public string? StudentUserId { get; set; }
+
+ ///
+ /// 获取或设置填写人家长账号。
+ ///
+ [Newtonsoft.Json.JsonProperty("parent_userid")]
+ [System.Text.Json.Serialization.JsonPropertyName("parent_userid")]
+ public string? ParentUserId { get; set; }
+
+ ///
+ /// 获取或设置填写答案列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("report_values")]
+ [System.Text.Json.Serialization.JsonPropertyName("report_values")]
+ public Types.ReportValue[] ReportValueList { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置答案列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("answers")]
+ [System.Text.Json.Serialization.JsonPropertyName("answers")]
+ public Types.Answer[] AnswerList { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportJobIdsRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportJobIdsRequest.cs
new file mode 100644
index 00000000..032dcd2e
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportJobIdsRequest.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/health/get_report_jobids 接口的请求。
+ ///
+ public class CgibinHealthGetReportJobIdsRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置分页起始位置。
+ ///
+ [Newtonsoft.Json.JsonProperty("offset")]
+ [System.Text.Json.Serialization.JsonPropertyName("offset")]
+ public int? Offset { 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/CgibinHealth/CgibinHealthGetReportJobIdsResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportJobIdsResponse.cs
new file mode 100644
index 00000000..d3d03070
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportJobIdsResponse.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/health/get_report_jobids 接口的响应。
+ ///
+ public class CgibinHealthGetReportJobIdsResponse : WechatWorkResponse
+ {
+ ///
+ /// 获取或设置任务 ID 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("jobids")]
+ [System.Text.Json.Serialization.JsonPropertyName("jobids")]
+ public string[] ReportJobIdList { get; set; } = default!;
+
+ ///
+ /// 获取或设置翻页是否结束。
+ ///
+ [Newtonsoft.Json.JsonProperty("ending")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedBooleanConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("ending")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedBooleanConverter))]
+ public bool IsEnding { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportJobInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportJobInfoRequest.cs
new file mode 100644
index 00000000..db1ea80f
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportJobInfoRequest.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/health/get_report_job_info 接口的请求。
+ ///
+ public class CgibinHealthGetReportJobInfoRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置任务 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("jobid")]
+ [System.Text.Json.Serialization.JsonPropertyName("jobid")]
+ public string ReportJobId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置任务日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("date")]
+ [System.Text.Json.Serialization.JsonPropertyName("date")]
+ public string DateString { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportJobInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportJobInfoResponse.cs
new file mode 100644
index 00000000..f807e92a
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportJobInfoResponse.cs
@@ -0,0 +1,179 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/health/get_report_job_info 接口的响应。
+ ///
+ public class CgibinHealthGetReportJobInfoResponse : WechatWorkResponse
+ {
+ public static class Types
+ {
+ public class ReportJob
+ {
+ public static class Types
+ {
+ public class ReportRange
+ {
+ ///
+ /// 获取或设置用户 UserId 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("userids")]
+ [System.Text.Json.Serialization.JsonPropertyName("userids")]
+ public string[]? UserIdList { get; set; }
+
+ ///
+ /// 获取或设置部门 ID 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("partyids")]
+ [System.Text.Json.Serialization.JsonPropertyName("partyids")]
+ public int[]? DepartmentIdList { get; set; }
+ }
+
+ public class ReportTo
+ {
+ ///
+ /// 获取或设置用户 UserId 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("userids")]
+ [System.Text.Json.Serialization.JsonPropertyName("userids")]
+ public string[]? UserIdList { get; set; }
+ }
+
+ public class QuestionTemplate
+ {
+ public static class Types
+ {
+ public class Option
+ {
+ ///
+ /// 获取或设置选项 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("option_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("option_id")]
+ public int OptionId { get; set; }
+
+ ///
+ /// 获取或设置选项文本。
+ ///
+ [Newtonsoft.Json.JsonProperty("option_text")]
+ [System.Text.Json.Serialization.JsonPropertyName("option_text")]
+ public string Text { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置问题 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("question_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("question_id")]
+ public int QuestionId { get; set; }
+
+ ///
+ /// 获取或设置问题标题。
+ ///
+ [Newtonsoft.Json.JsonProperty("title")]
+ [System.Text.Json.Serialization.JsonPropertyName("title")]
+ public string Title { get; set; } = default!;
+
+ ///
+ /// 获取或设置问题类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("question_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("question_type")]
+ public int Type { get; set; }
+
+ ///
+ /// 获取或设置是否必填。
+ ///
+ [Newtonsoft.Json.JsonProperty("is_required")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedBooleanConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("is_required")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedBooleanConverter))]
+ public bool IsRequired { get; set; }
+
+ ///
+ /// 获取或设置选项列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("option_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("option_list")]
+ public Types.Option[]? OptionList { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置任务名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("title")]
+ [System.Text.Json.Serialization.JsonPropertyName("title")]
+ public string Title { get; set; } = default!;
+
+ ///
+ /// 获取或设置发起人成员账号。
+ ///
+ [Newtonsoft.Json.JsonProperty("creator")]
+ [System.Text.Json.Serialization.JsonPropertyName("creator")]
+ public string CreatorUserId { get; set; } = default!;
+
+ ///
+ /// 获取或设置 ID 类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("type")]
+ [System.Text.Json.Serialization.JsonPropertyName("type")]
+ public int IdType { get; set; }
+
+ ///
+ /// 获取或设置已完成上报人数。
+ ///
+ [Newtonsoft.Json.JsonProperty("finish_cnt")]
+ [System.Text.Json.Serialization.JsonPropertyName("finish_cnt")]
+ public int FinishCount { get; set; }
+
+ ///
+ /// 获取或设置上报方式。
+ ///
+ [Newtonsoft.Json.JsonProperty("report_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("report_type")]
+ public int ReportType { get; set; }
+
+ ///
+ /// 获取或设置上报范围信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("apply_range")]
+ [System.Text.Json.Serialization.JsonPropertyName("apply_range")]
+ public Types.ReportRange ReportRange { get; set; } = default!;
+
+ ///
+ /// 获取或设置汇报对象信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("report_to")]
+ [System.Text.Json.Serialization.JsonPropertyName("report_to")]
+ public Types.ReportTo ReportTo { get; set; } = default!;
+
+ ///
+ /// 获取或设置非工作日是否需要上报。
+ ///
+ [Newtonsoft.Json.JsonProperty("skip_weekend")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedBooleanConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("skip_weekend")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedBooleanConverter))]
+ public bool IsSkipWeekend { get; set; }
+
+ ///
+ /// 获取或设置上报问题列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("question_templates")]
+ [System.Text.Json.Serialization.JsonPropertyName("question_templates")]
+ public Types.QuestionTemplate[] QuestionTemplateList { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置任务信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("job_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("job_info")]
+ public Types.ReportJob ReportJob { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinLiving/CgibinLivingGetWatchStatisticsResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinLiving/CgibinLivingGetWatchStatisticsResponse.cs
index bf8a2e14..ac4a1edc 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinLiving/CgibinLivingGetWatchStatisticsResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinLiving/CgibinLivingGetWatchStatisticsResponse.cs
@@ -47,6 +47,20 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
[System.Text.Json.Serialization.JsonPropertyName("is_mic")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedBooleanConverter))]
public bool IsMic { get; set; }
+
+ ///
+ /// 获取或设置邀请人的成员账号。
+ ///
+ [Newtonsoft.Json.JsonProperty("invitor_userid")]
+ [System.Text.Json.Serialization.JsonPropertyName("invitor_userid")]
+ public string? InvitorUserId { get; set; }
+
+ ///
+ /// 获取或设置邀请人的外部联系人账号。
+ ///
+ [Newtonsoft.Json.JsonProperty("invitor_external_userid")]
+ [System.Text.Json.Serialization.JsonPropertyName("invitor_external_userid")]
+ public string? InvitorExternalUserId { get; set; }
}
public class ExternalUser
@@ -96,6 +110,20 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
[System.Text.Json.Serialization.JsonPropertyName("is_mic")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedBooleanConverter))]
public bool IsMic { get; set; }
+
+ ///
+ /// 获取或设置邀请人的成员账号。
+ ///
+ [Newtonsoft.Json.JsonProperty("invitor_userid")]
+ [System.Text.Json.Serialization.JsonPropertyName("invitor_userid")]
+ public string? InvitorUserId { get; set; }
+
+ ///
+ /// 获取或设置邀请人的外部联系人账号。
+ ///
+ [Newtonsoft.Json.JsonProperty("invitor_external_userid")]
+ [System.Text.Json.Serialization.JsonPropertyName("invitor_external_userid")]
+ public string? InvitorExternalUserId { get; set; }
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageSendRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageSendRequest.cs
index 52a33420..e9af7f2f 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageSendRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageSendRequest.cs
@@ -367,6 +367,50 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
[System.Text.Json.Serialization.JsonPropertyName("btn")]
public IList ButtonList { get; set; } = new List();
}
+
+ public class TemplateMessage
+ {
+ public static class Types
+ {
+ public class KeyValue
+ {
+ ///
+ /// 获取或设置消息内容的 Key。
+ ///
+ [Newtonsoft.Json.JsonProperty("key")]
+ [System.Text.Json.Serialization.JsonPropertyName("key")]
+ public string Key { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置消息内容的值。
+ ///
+ [Newtonsoft.Json.JsonProperty("value")]
+ [System.Text.Json.Serialization.JsonPropertyName("value")]
+ public string Value { get; set; } = string.Empty;
+ }
+ }
+
+ ///
+ /// 获取或设置模板 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("template_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("template_id")]
+ public string TemplateId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置点击模板消息后的跳转链接。
+ ///
+ [Newtonsoft.Json.JsonProperty("url")]
+ [System.Text.Json.Serialization.JsonPropertyName("url")]
+ public string Url { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置消息内容键值对。
+ ///
+ [Newtonsoft.Json.JsonProperty("content_item")]
+ [System.Text.Json.Serialization.JsonPropertyName("content_item")]
+ public IList ContentItemList { get; set; } = new List();
+ }
}
///
@@ -480,6 +524,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
[System.Text.Json.Serialization.JsonPropertyName("interactive_taskcard")]
public Types.TaskCardMessage? MessageContentForTaskCard { get; set; }
+ ///
+ /// 获取或设置模板消息信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("template_msg")]
+ [System.Text.Json.Serialization.JsonPropertyName("template_msg")]
+ public Types.TemplateMessage? MessageContentForTemplate { get; set; }
+
///
/// 获取或设置应用 ID。如果不指定将使用构造 时的 参数。
///
@@ -487,6 +538,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
[System.Text.Json.Serialization.JsonPropertyName("agentid")]
public int? AgentId { get; set; }
+ ///
+ /// 获取或设置用户选择凭证列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("selected_ticket_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("selected_ticket_list")]
+ public IList? SelectedTicketList { get; set; }
+
///
/// 获取或设置是否是保密消息。
///
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetHealthQrcodeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetHealthQrcodeRequest.cs
new file mode 100644
index 00000000..abf98eae
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetHealthQrcodeRequest.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/school/user/get_health_qrcode 接口的请求。
+ ///
+ public class CgibinSchoolUserGetHealthQrcodeRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置 ID 类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("type")]
+ [System.Text.Json.Serialization.JsonPropertyName("type")]
+ public int IdType { get; set; }
+
+ ///
+ /// 获取或设置用户 UserId 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("userids")]
+ [System.Text.Json.Serialization.JsonPropertyName("userids")]
+ public IList UserIdList { get; set; } = new List();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetHealthQrcodeResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetHealthQrcodeResponse.cs
new file mode 100644
index 00000000..3045e02b
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetHealthQrcodeResponse.cs
@@ -0,0 +1,52 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/school/user/get_health_qrcode 接口的响应。
+ ///
+ public class CgibinSchoolUserGetHealthQrcodeResponse : WechatWorkResponse
+ {
+ public static class Types
+ {
+ public class Result
+ {
+ ///
+ /// 获取或设置错误码。
+ ///
+ [Newtonsoft.Json.JsonProperty("errcode")]
+ [System.Text.Json.Serialization.JsonPropertyName("errcode")]
+ public int ErrorCode { get; set; }
+
+ ///
+ /// 获取或设置错误信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("errmsg")]
+ [System.Text.Json.Serialization.JsonPropertyName("errmsg")]
+ public string? ErrorMessage { get; set; }
+
+ ///
+ /// 获取或设置用户 UserId。
+ ///
+ [Newtonsoft.Json.JsonProperty("userid")]
+ [System.Text.Json.Serialization.JsonPropertyName("userid")]
+ public string UserId { get; set; } = default!;
+
+ ///
+ /// 获取或设置二维码数据。
+ ///
+ [Newtonsoft.Json.JsonProperty("qrcode_data")]
+ [System.Text.Json.Serialization.JsonPropertyName("qrcode_data")]
+ public string? QrcodeData { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置健康码结果列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("result_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("result_list")]
+ public Types.Result[] ResultList { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetStudentCustomizeHealthInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetStudentCustomizeHealthInfoRequest.cs
new file mode 100644
index 00000000..398a951e
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetStudentCustomizeHealthInfoRequest.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/school/user/get_student_customize_health_info 接口的请求。
+ ///
+ public class CgibinSchoolUserGetStudentCustomizeHealthInfoRequest : CgibinSchoolUserGetTeacherCustomizeHealthInfoRequest
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetStudentCustomizeHealthInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetStudentCustomizeHealthInfoResponse.cs
new file mode 100644
index 00000000..53a6ae82
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetStudentCustomizeHealthInfoResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/school/user/get_student_customize_health_info 接口的响应。
+ ///
+ public class CgibinSchoolUserGetStudentCustomizeHealthInfoResponse : CgibinSchoolUserGetTeacherCustomizeHealthInfoResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetTeacherCustomizeHealthInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetTeacherCustomizeHealthInfoRequest.cs
new file mode 100644
index 00000000..66992ba9
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetTeacherCustomizeHealthInfoRequest.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/school/user/get_teacher_customize_health_info 接口的请求。
+ ///
+ public class CgibinSchoolUserGetTeacherCustomizeHealthInfoRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置指定查询的日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("date")]
+ [System.Text.Json.Serialization.JsonPropertyName("date")]
+ public string DateString { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置翻页标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("next_key")]
+ [System.Text.Json.Serialization.JsonPropertyName("next_key")]
+ public string? NextCursor { 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/CgibinSchool/User/Health/CgibinSchoolUserGetTeacherCustomizeHealthInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetTeacherCustomizeHealthInfoResponse.cs
new file mode 100644
index 00000000..9ef82344
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetTeacherCustomizeHealthInfoResponse.cs
@@ -0,0 +1,180 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/school/user/get_teacher_customize_health_info 接口的响应。
+ ///
+ public class CgibinSchoolUserGetTeacherCustomizeHealthInfoResponse : WechatWorkResponse
+ {
+ public static class Types
+ {
+ public class HealthInfo
+ {
+ public static class Types
+ {
+ public class ReportValue
+ {
+ ///
+ /// 获取或设置问题 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("question_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("question_id")]
+ public int QuestionId { get; set; }
+
+ ///
+ /// 获取或设置单选题答案编号。
+ ///
+ [Newtonsoft.Json.JsonProperty("single_chose")]
+ [System.Text.Json.Serialization.JsonPropertyName("single_chose")]
+ public int? SignleChoice { get; set; }
+
+ ///
+ /// 获取或设置填空题答案内容。
+ ///
+ [Newtonsoft.Json.JsonProperty("text")]
+ [System.Text.Json.Serialization.JsonPropertyName("text")]
+ public string? Text { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置用户 UserId。
+ ///
+ [Newtonsoft.Json.JsonProperty("userid")]
+ [System.Text.Json.Serialization.JsonPropertyName("userid")]
+ public string UserId { get; set; } = default!;
+
+ ///
+ /// 获取或设置健康码状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("health_qrcode_status")]
+ [System.Text.Json.Serialization.JsonPropertyName("health_qrcode_status")]
+ public int HealthQrcodeStatus { get; set; }
+
+ ///
+ /// 获取或设置健康状态是否为本人填写。
+ ///
+ [Newtonsoft.Json.JsonProperty("self_submit")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedBooleanConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("self_submit")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedBooleanConverter))]
+ public bool IsSelfSubmit { get; set; }
+
+ ///
+ /// 获取或设置填写答案列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("report_values")]
+ [System.Text.Json.Serialization.JsonPropertyName("report_values")]
+ public Types.ReportValue[] ReportValueList { get; set; } = default!;
+ }
+
+ public class QuestionTemplate
+ {
+ public static class Types
+ {
+ public class Option
+ {
+ ///
+ /// 获取或设置选项 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("option_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("option_id")]
+ public int OptionId { get; set; }
+
+ ///
+ /// 获取或设置选项文本。
+ ///
+ [Newtonsoft.Json.JsonProperty("option_text")]
+ [System.Text.Json.Serialization.JsonPropertyName("option_text")]
+ public string Text { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置问题 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("question_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("question_id")]
+ public int QuestionId { get; set; }
+
+ ///
+ /// 获取或设置问题标题。
+ ///
+ [Newtonsoft.Json.JsonProperty("title")]
+ [System.Text.Json.Serialization.JsonPropertyName("title")]
+ public string Title { get; set; } = default!;
+
+ ///
+ /// 获取或设置问题类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("question_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("question_type")]
+ public int Type { get; set; }
+
+ ///
+ /// 获取或设置是否必填。
+ ///
+ [Newtonsoft.Json.JsonProperty("is_must_fill")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedBooleanConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("is_must_fill")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedBooleanConverter))]
+ public bool IsRequired { get; set; }
+
+ ///
+ /// 获取或设置是否隐藏。
+ ///
+ [Newtonsoft.Json.JsonProperty("is_not_display")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedBooleanConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("is_not_display")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedBooleanConverter))]
+ public bool IsHidden { get; set; }
+
+ ///
+ /// 获取或设置选项列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("option_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("option_list")]
+ public Types.Option[]? OptionList { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置自定义问题模板 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("template_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("template_id")]
+ public string TemplateId { get; set; } = default!;
+
+ ///
+ /// 获取或设置自定义问题列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("question_templates")]
+ [System.Text.Json.Serialization.JsonPropertyName("question_templates")]
+ public Types.QuestionTemplate[] QuestionTemplateList { get; set; } = default!;
+
+ ///
+ /// 获取或设置健康信息列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("health_infos")]
+ [System.Text.Json.Serialization.JsonPropertyName("health_infos")]
+ public Types.HealthInfo[] HealthInfoList { get; set; } = default!;
+
+ ///
+ /// 获取或设置翻页是否结束。
+ ///
+ [Newtonsoft.Json.JsonProperty("ending")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedBooleanConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("ending")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedBooleanConverter))]
+ public bool IsEnding { get; set; }
+
+ ///
+ /// 获取或设置翻页标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("next_key")]
+ [System.Text.Json.Serialization.JsonPropertyName("next_key")]
+ public string? NextCursor { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoResponse.cs
index 814428ee..593ee1e9 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoResponse.cs
@@ -220,6 +220,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public int? AppId { get; set; }
+ ///
+ /// 获取或设置授权模式。
+ ///
+ [Newtonsoft.Json.JsonProperty("auth_mode")]
+ [System.Text.Json.Serialization.JsonPropertyName("auth_mode")]
+ public int AuthMode { get; set; }
+
///
/// 获取或设置应用权限信息。
///
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserAuthSuccessRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserAuthSuccessRequest.cs
similarity index 100%
rename from src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserAuthSuccessRequest.cs
rename to src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserAuthSuccessRequest.cs
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserAuthSuccessResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserAuthSuccessResponse.cs
similarity index 100%
rename from src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserAuthSuccessResponse.cs
rename to src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserAuthSuccessResponse.cs
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserCheckMemberAuthRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserCheckMemberAuthRequest.cs
new file mode 100644
index 00000000..4381e391
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserCheckMemberAuthRequest.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [GET] /cgi-bin/user/check_member_auth 接口的请求。
+ ///
+ public class CgibinUserCheckMemberAuthRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置第三方成员唯一标识。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string OpenUserId { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserCheckMemberAuthResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserCheckMemberAuthResponse.cs
new file mode 100644
index 00000000..55163c22
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserCheckMemberAuthResponse.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [GET] /cgi-bin/user/check_member_auth 接口的响应。
+ ///
+ public class CgibinUserCheckMemberAuthResponse : WechatWorkResponse
+ {
+ ///
+ /// 获取或设置成员是否已授权。
+ ///
+ [Newtonsoft.Json.JsonProperty("is_member_auth")]
+ [System.Text.Json.Serialization.JsonPropertyName("is_member_auth")]
+ public bool IsMemberAuth { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserListMemberAuthRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserListMemberAuthRequest.cs
new file mode 100644
index 00000000..c1af042b
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserListMemberAuthRequest.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [GET] /cgi-bin/user/list_member_auth 接口的请求。
+ ///
+ public class CgibinUserListMemberAuthRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置翻页标记。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string? NextCursor { get; set; }
+
+ ///
+ /// 获取或设置分页每页数量。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public int? Limit { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserListMemberAuthResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserListMemberAuthResponse.cs
new file mode 100644
index 00000000..e2574df9
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserListMemberAuthResponse.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [GET] /cgi-bin/user/list_member_auth 接口的响应。
+ ///
+ public class CgibinUserListMemberAuthResponse : WechatWorkResponse
+ {
+ public static class Types
+ {
+ public class MemberAuth
+ {
+ ///
+ /// 获取或设置第三方成员唯一标识。
+ ///
+ [Newtonsoft.Json.JsonProperty("open_userid")]
+ [System.Text.Json.Serialization.JsonPropertyName("open_userid")]
+ public string OepnUserId { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置成员授权列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("member_auth_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("member_auth_list")]
+ public Types.MemberAuth[] MemberAuthList { 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/CgibinUser/CgibinUserGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserGetResponse.cs
index 4fb1c294..1ed31876 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserGetResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserGetResponse.cs
@@ -261,7 +261,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
///
[Newtonsoft.Json.JsonProperty("order")]
[System.Text.Json.Serialization.JsonPropertyName("order")]
- public int[] DepartmentOrderList { get; set; } = default!;
+ public int[]? DepartmentOrderList { get; set; }
///
/// 获取或设置部门领导状态列表。