From 6ec8001bacfc2b24c4604b0d0d1f54dd41dd31f8 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Sat, 5 Jun 2021 21:34:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(work):=20=E5=B0=81=E8=A3=85=E9=83=A8?= =?UTF-8?q?=E5=88=86=E4=BC=81=E4=B8=9A=E5=BE=AE=E4=BF=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...WorkClientExecuteCgibinHealthExtensions.cs | 98 ++++++++++ ...WorkClientExecuteCgibinSchoolExtensions.cs | 118 +++++++++--- ...atWorkClientExecuteCgibinUserExtensions.cs | 61 +++++- .../CgibinDialogGetDialogRecordRequest.cs | 2 +- .../CgibinDialogGetDialogRecordResponse.cs | 2 +- ...nHealthGetHealthReportStatisticsRequest.cs | 18 ++ ...HealthGetHealthReportStatisticsResponse.cs | 25 +++ .../CgibinHealthGetReportAnswerRequest.cs | 39 ++++ .../CgibinHealthGetReportAnswerResponse.cs | 100 ++++++++++ .../CgibinHealthGetReportJobIdsRequest.cs | 25 +++ .../CgibinHealthGetReportJobIdsResponse.cs | 27 +++ .../CgibinHealthGetReportJobInfoRequest.cs | 25 +++ .../CgibinHealthGetReportJobInfoResponse.cs | 179 +++++++++++++++++ .../CgibinLivingGetWatchStatisticsResponse.cs | 28 +++ .../CgibinMessage/CgibinMessageSendRequest.cs | 58 ++++++ .../CgibinSchoolUserGetHealthQrcodeRequest.cs | 25 +++ ...CgibinSchoolUserGetHealthQrcodeResponse.cs | 52 +++++ ...serGetStudentCustomizeHealthInfoRequest.cs | 12 ++ ...erGetStudentCustomizeHealthInfoResponse.cs | 12 ++ ...serGetTeacherCustomizeHealthInfoRequest.cs | 32 ++++ ...erGetTeacherCustomizeHealthInfoResponse.cs | 180 ++++++++++++++++++ .../CgibinServiceGetAuthInfoResponse.cs | 7 + .../CgibinUserAuthSuccessRequest.cs | 0 .../CgibinUserAuthSuccessResponse.cs | 0 .../Auth/CgibinUserCheckMemberAuthRequest.cs | 18 ++ .../Auth/CgibinUserCheckMemberAuthResponse.cs | 18 ++ .../Auth/CgibinUserListMemberAuthRequest.cs | 25 +++ .../Auth/CgibinUserListMemberAuthResponse.cs | 38 ++++ .../CgibinUser/CgibinUserGetResponse.cs | 2 +- 29 files changed, 1192 insertions(+), 34 deletions(-) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinHealthExtensions.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetHealthReportStatisticsRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetHealthReportStatisticsResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportAnswerRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportAnswerResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportJobIdsRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportJobIdsResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportJobInfoRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinHealth/CgibinHealthGetReportJobInfoResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetHealthQrcodeRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetHealthQrcodeResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetStudentCustomizeHealthInfoRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetStudentCustomizeHealthInfoResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetTeacherCustomizeHealthInfoRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/User/Health/CgibinSchoolUserGetTeacherCustomizeHealthInfoResponse.cs rename src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/{ => Auth}/CgibinUserAuthSuccessRequest.cs (100%) rename src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/{ => Auth}/CgibinUserAuthSuccessResponse.cs (100%) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserCheckMemberAuthRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserCheckMemberAuthResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserListMemberAuthRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/Auth/CgibinUserListMemberAuthResponse.cs 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; } /// /// 获取或设置部门领导状态列表。