diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinSchoolExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinSchoolExtensions.cs index 456988ad..233e50dc 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinSchoolExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinSchoolExtensions.cs @@ -91,6 +91,27 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + /// + /// 异步调用 [GET] /cgi-bin/school/getuserinfo 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/95791 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinSchoolGetUserInfoAsync(this WechatWorkClient client, Models.CgibinSchoolGetUserInfoRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Get, "cgi-bin", "school", "getuserinfo") + .SetQueryParam("access_token", request.AccessToken) + .SetQueryParam("code", request.Code); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #region User /// /// 异步调用 [GET] /cgi-bin/school/user/get 接口。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/CgibinSchoolGetUserInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/CgibinSchoolGetUserInfoRequest.cs new file mode 100644 index 00000000..597e3a8f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/CgibinSchoolGetUserInfoRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/school/getuserinfo 接口的请求。 + /// + public class CgibinSchoolGetUserInfoRequest : WechatWorkRequest + { + /// + /// 获取或设置成员授权码。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string Code { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/CgibinSchoolGetUserInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/CgibinSchoolGetUserInfoResponse.cs new file mode 100644 index 00000000..d19563e4 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSchool/CgibinSchoolGetUserInfoResponse.cs @@ -0,0 +1,29 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/school/getuserinfo 接口的响应。 + /// + public class CgibinSchoolGetUserInfoResponse : WechatWorkResponse + { + /// + /// 获取或设置手机设备号。 + /// + [Newtonsoft.Json.JsonProperty("DeviceId")] + [System.Text.Json.Serialization.JsonPropertyName("DeviceId")] + public string? DeviceId { get; set; } + + /// + /// 获取或设置家长账号。 + /// + [Newtonsoft.Json.JsonProperty("parent_userid")] + [System.Text.Json.Serialization.JsonPropertyName("parent_userid")] + public string? ParentUserId{ get; set; } + + /// + /// 获取或设置学生账号。 + /// + [Newtonsoft.Json.JsonProperty("student_userid")] + [System.Text.Json.Serialization.JsonPropertyName("student_userid")] + public string? StudentUserId{ get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinSchool/CgibinSchoolGetUserInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinSchool/CgibinSchoolGetUserInfoResponse.json new file mode 100644 index 00000000..a54220ce --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinSchool/CgibinSchoolGetUserInfoResponse.json @@ -0,0 +1,7 @@ +{ + "errcode": 0, + "errmsg": "ok", + "DeviceId": "DEVICEID", + "parent_userid": "parent_userid", + "student_userid": "student_userid" +}