diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinWedocExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinWedocExtensions.cs index 1667fb4a..63bf0534 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinWedocExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinWedocExtensions.cs @@ -374,5 +374,67 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion + + #region Vip + /// + /// 异步调用 [POST] /cgi-bin/wedoc/vip/batch_add 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/99516 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocVipBatchAddAsync(this WechatWorkClient client, Models.CgibinWedocVipBatchAddRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "cgi-bin", "wedoc", "vip", "batch_add") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/wedoc/vip/batch_del 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/99517 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocVipBatchDeleteAsync(this WechatWorkClient client, Models.CgibinWedocVipBatchDeleteRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "cgi-bin", "wedoc", "vip", "batch_del") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/wedoc/vip/list 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/99518 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocVipListAsync(this WechatWorkClient client, Models.CgibinWedocVipListRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "cgi-bin", "wedoc", "vip", "list") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerBatchGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerBatchGetResponse.cs index beb779f2..c2a802bb 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerBatchGetResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerBatchGetResponse.cs @@ -92,7 +92,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models /// [Newtonsoft.Json.JsonProperty("customer_list")] [System.Text.Json.Serialization.JsonPropertyName("customer_list")] - public Types.Customer[] CustomerLsit { get; set; } = default!; + public Types.Customer[] CustomerList { get; set; } = default!; /// /// 获取或设置无效的外部联系人账号列表。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipBatchAddRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipBatchAddRequest.cs new file mode 100644 index 00000000..9e8b7649 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipBatchAddRequest.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/vip/batch_add 接口的请求。 + /// + public class CgibinWedocVipBatchAddRequest : WechatWorkRequest + { + /// + /// 获取或设置成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("userid_list")] + [System.Text.Json.Serialization.JsonPropertyName("userid_list")] + public IList UserIdList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipBatchAddResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipBatchAddResponse.cs new file mode 100644 index 00000000..64429102 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipBatchAddResponse.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/vip/batch_add 接口的响应。 + /// + public class CgibinWedocVipBatchAddResponse : WechatWorkResponse + { + /// + /// 获取或设置分配成功的成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("succ_userid_list")] + [System.Text.Json.Serialization.JsonPropertyName("succ_userid_list")] + public string[]? SuccessfulUserIdList { get; set; } + + /// + /// 获取或设置分配失败的成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("fail_userid_list")] + [System.Text.Json.Serialization.JsonPropertyName("fail_userid_list")] + public string[]? FailedUserIdList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipBatchDeleteRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipBatchDeleteRequest.cs new file mode 100644 index 00000000..1843dfe9 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipBatchDeleteRequest.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/vip/batch_del 接口的请求。 + /// + public class CgibinWedocVipBatchDeleteRequest : WechatWorkRequest + { + /// + /// 获取或设置成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("userid_list")] + [System.Text.Json.Serialization.JsonPropertyName("userid_list")] + public IList UserIdList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipBatchDeleteResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipBatchDeleteResponse.cs new file mode 100644 index 00000000..e7eeb851 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipBatchDeleteResponse.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/vip/batch_del 接口的响应。 + /// + public class CgibinWedocVipBatchDeleteResponse : WechatWorkResponse + { + /// + /// 获取或设置撤销分配成功的成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("succ_userid_list")] + [System.Text.Json.Serialization.JsonPropertyName("succ_userid_list")] + public string[]? SuccessfulUserIdList { get; set; } + + /// + /// 获取或设置撤销分配失败的成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("fail_userid_list")] + [System.Text.Json.Serialization.JsonPropertyName("fail_userid_list")] + public string[]? FailedUserIdList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipListRequest.cs new file mode 100644 index 00000000..de5c77f1 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipListRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/vip/list 接口的请求。 + /// + public class CgibinWedocVipListRequest : WechatWorkRequest + { + /// + /// 获取或设置分页每页数量。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int? Limit { get; set; } + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("cursor")] + [System.Text.Json.Serialization.JsonPropertyName("cursor")] + public string? Cursor { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipListResponse.cs new file mode 100644 index 00000000..628234d4 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Vip/CgibinWedocVipListResponse.cs @@ -0,0 +1,29 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/vip/list 接口的响应。 + /// + public class CgibinWedocVipListResponse : WechatWorkResponse + { + /// + /// 获取或设置成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("userid_list")] + [System.Text.Json.Serialization.JsonPropertyName("userid_list")] + public string[] UserIdList { get; set; } = default!; + + /// + /// 获取或设置是否还有更多数据。 + /// + [Newtonsoft.Json.JsonProperty("has_more")] + [System.Text.Json.Serialization.JsonPropertyName("has_more")] + public bool HasMore { get; set; } + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("next_cursor")] + [System.Text.Json.Serialization.JsonPropertyName("next_cursor")] + public string? NextCursor { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipBatchAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipBatchAddRequest.json new file mode 100644 index 00000000..52aeeaf6 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipBatchAddRequest.json @@ -0,0 +1,3 @@ +{ + "userid_list": [ "zhangsan", "lisi", "wangwu" ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipBatchAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipBatchAddResponse.json new file mode 100644 index 00000000..e57127d7 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipBatchAddResponse.json @@ -0,0 +1,6 @@ +{ + "errcode": 0, + "errmsg": "ok", + "succ_userid_list": [ "zhangsan", "lisi" ], + "fail_userid_list": [ "wangwu" ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipBatchDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipBatchDeleteRequest.json new file mode 100644 index 00000000..52aeeaf6 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipBatchDeleteRequest.json @@ -0,0 +1,3 @@ +{ + "userid_list": [ "zhangsan", "lisi", "wangwu" ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipBatchDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipBatchDeleteResponse.json new file mode 100644 index 00000000..e57127d7 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipBatchDeleteResponse.json @@ -0,0 +1,6 @@ +{ + "errcode": 0, + "errmsg": "ok", + "succ_userid_list": [ "zhangsan", "lisi" ], + "fail_userid_list": [ "wangwu" ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipListRequest.json new file mode 100644 index 00000000..36e6e636 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipListRequest.json @@ -0,0 +1,4 @@ +{ + "cursor": "CURSOR", + "limit": 2 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipListResponse.json new file mode 100644 index 00000000..61cade4d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Vip/CgibinWedocVipListResponse.json @@ -0,0 +1,7 @@ +{ + "errcode": 0, + "errmsg": "ok", + "has_more": true, + "next_cursor": "GNIJIGEO", + "userid_list": [ "zhangsan", "lisi" ] +}