From f0d19e79a01054e7e7cc5a8bf364d8e9e65ce80a Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Thu, 30 Sep 2021 17:06:57 +0800 Subject: [PATCH] =?UTF-8?q?feat(work):=20=E6=96=B0=E5=A2=9E=E5=AE=A2?= =?UTF-8?q?=E6=9C=8D=E5=8D=87=E7=BA=A7=E6=9C=8D=E5=8A=A1=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...chatWorkClientExecuteCgibinKfExtensions.cs | 65 +++++++++++++++ ...inKfCustomerCancelUpgradeServiceRequest.cs | 22 +++++ ...nKfCustomerCancelUpgradeServiceResponse.cs | 9 +++ ...fCustomerGetUpgradeServiceConfigRequest.cs | 9 +++ ...CustomerGetUpgradeServiceConfigResponse.cs | 52 ++++++++++++ .../CgibinKfCustomerUpgradeServiceRequest.cs | 80 +++++++++++++++++++ .../CgibinKfCustomerUpgradeServiceResponse.cs | 9 +++ ...KfCustomerCancelUpgradeServiceRequest.json | 4 + ...fCustomerCancelUpgradeServiceResponse.json | 4 + ...ustomerGetUpgradeServiceConfigRequest.json | 1 + ...stomerGetUpgradeServiceConfigResponse.json | 20 +++++ ...CgibinKfCustomerUpgradeServiceRequest.json | 13 +++ ...gibinKfCustomerUpgradeServiceResponse.json | 4 + 13 files changed, 292 insertions(+) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinKfExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinKfExtensions.cs index 461dbd91..446d80e2 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinKfExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinKfExtensions.cs @@ -225,6 +225,71 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion + + #region Customer + /// + /// 异步调用 [GET] /cgi-bin/kf/customer/get_upgrade_service_config 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94674 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94702 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinKfCustomerGetUpgradeServiceConfigAsync(this WechatWorkClient client, Models.CgibinKfCustomerGetUpgradeServiceConfigRequest 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", "kf", "customer", "get_upgrade_service_config") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/kf/customer/upgrade_service 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94674 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94702 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinKfCustomerUpgradeServiceAsync(this WechatWorkClient client, Models.CgibinKfCustomerUpgradeServiceRequest 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", "kf", "customer", "upgrade_service") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/kf/customer/cancel_upgrade_service 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94674 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94702 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinKfCustomerCancelUpgradeServiceAsync(this WechatWorkClient client, Models.CgibinKfCustomerCancelUpgradeServiceRequest 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", "kf", "customer", "cancel_upgrade_service") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion /// /// 异步调用 [POST] /cgi-bin/kf/send_msg 接口。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceRequest.cs new file mode 100644 index 00000000..88de3028 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/kf/customer/cancel_upgrade_service 接口的请求。 + /// + public class CgibinKfCustomerCancelUpgradeServiceRequest : WechatWorkRequest + { + /// + /// 获取或设置客服账号 ID。 + /// + [Newtonsoft.Json.JsonProperty("open_kfid")] + [System.Text.Json.Serialization.JsonPropertyName("open_kfid")] + public string OpenKfId { get; set; } = string.Empty; + + /// + /// 获取或设置外部联系人账号。 + /// + [Newtonsoft.Json.JsonProperty("external_userid")] + [System.Text.Json.Serialization.JsonPropertyName("external_userid")] + public string ExternalUserId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceResponse.cs new file mode 100644 index 00000000..451aa097 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/kf/customer/cancel_upgrade_service 接口的响应。 + /// + public class CgibinKfCustomerCancelUpgradeServiceResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigRequest.cs new file mode 100644 index 00000000..4fabf6e3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/kf/customer/get_upgrade_service_config 接口的请求。 + /// + public class CgibinKfCustomerGetUpgradeServiceConfigRequest : WechatWorkRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigResponse.cs new file mode 100644 index 00000000..a21b6b14 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigResponse.cs @@ -0,0 +1,52 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/kf/customer/get_upgrade_service_config 接口的响应。 + /// + public class CgibinKfCustomerGetUpgradeServiceConfigResponse : WechatWorkResponse + { + public static class Types + { + public class MemberRange + { + /// + /// 获取或设置专员的 UserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("userid_list")] + [System.Text.Json.Serialization.JsonPropertyName("userid_list")] + public string[]? UserIdList { get; set; } + + /// + /// 获取或设置专员的部门 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("department_id_list")] + [System.Text.Json.Serialization.JsonPropertyName("department_id_list")] + public int[]? DepartmentIdList { get; set; } + } + + public class GroupChatRange + { + /// + /// 获取或设置客户群 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("chat_id_list")] + [System.Text.Json.Serialization.JsonPropertyName("chat_id_list")] + public string[]? GroupChatIdList { get; set; } + } + } + + /// + /// 获取或设置专员服务配置范围信息。 + /// + [Newtonsoft.Json.JsonProperty("member_range")] + [System.Text.Json.Serialization.JsonPropertyName("member_range")] + public Types.MemberRange? MemberRange { get; set; } + + /// + /// 获取或设置客户群配置范围信息。 + /// + [Newtonsoft.Json.JsonProperty("groupchat_range")] + [System.Text.Json.Serialization.JsonPropertyName("groupchat_range")] + public Types.GroupChatRange? GroupChatRange { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceRequest.cs new file mode 100644 index 00000000..4db9ea87 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceRequest.cs @@ -0,0 +1,80 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/kf/customer/upgrade_service 接口的请求。 + /// + public class CgibinKfCustomerUpgradeServiceRequest : WechatWorkRequest + { + public static class Types + { + public class Member + { + /// + /// 获取或设置服务专员的 UserId。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string UserId { get; set; } = string.Empty; + + /// + /// 获取或设置推荐语。 + /// + [Newtonsoft.Json.JsonProperty("wording")] + [System.Text.Json.Serialization.JsonPropertyName("wording")] + public string? Wording { get; set; } + } + + public class GroupChat + { + /// + /// 获取或设置客户群 ID。 + /// + [Newtonsoft.Json.JsonProperty("chat_id")] + [System.Text.Json.Serialization.JsonPropertyName("chat_id")] + public string GroupChatId { get; set; } = string.Empty; + + /// + /// 获取或设置推荐语。 + /// + [Newtonsoft.Json.JsonProperty("wording")] + [System.Text.Json.Serialization.JsonPropertyName("wording")] + public string? Wording { get; set; } + } + } + + /// + /// 获取或设置客服账号 ID。 + /// + [Newtonsoft.Json.JsonProperty("open_kfid")] + [System.Text.Json.Serialization.JsonPropertyName("open_kfid")] + public string OpenKfId { get; set; } = string.Empty; + + /// + /// 获取或设置外部联系人账号。 + /// + [Newtonsoft.Json.JsonProperty("external_userid")] + [System.Text.Json.Serialization.JsonPropertyName("external_userid")] + public string ExternalUserId { get; set; } = string.Empty; + + /// + /// 获取或设置升级服务类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public int Type { get; set; } + + /// + /// 获取或设置专员信息。 + /// + [Newtonsoft.Json.JsonProperty("member")] + [System.Text.Json.Serialization.JsonPropertyName("member")] + public Types.Member? Member { get; set; } + + /// + /// 获取或设置客户群信息。 + /// + [Newtonsoft.Json.JsonProperty("groupchat")] + [System.Text.Json.Serialization.JsonPropertyName("groupchat")] + public Types.GroupChat? GroupChat { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceResponse.cs new file mode 100644 index 00000000..326cd926 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/kf/customer/upgrade_service 接口的响应。 + /// + public class CgibinKfCustomerUpgradeServiceResponse : WechatWorkResponse + { + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceRequest.json new file mode 100644 index 00000000..56e20da1 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceRequest.json @@ -0,0 +1,4 @@ +{ + "open_kfid": "kfxxxxxxxxxxxxxx", + "external_userid": "wmxxxxxxxxxxxxxxxxxx" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceResponse.json new file mode 100644 index 00000000..f752befe --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerCancelUpgradeServiceResponse.json @@ -0,0 +1,4 @@ +{ + "errcode": 0, + "errmsg": "ok" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigRequest.json new file mode 100644 index 00000000..22fdca1b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigRequest.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigResponse.json new file mode 100644 index 00000000..57f8f1a5 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerGetUpgradeServiceConfigResponse.json @@ -0,0 +1,20 @@ +{ + "errcode": 0, + "errmsg": "ok", + "member_range": { + "userid_list": [ + "zhangsan", + "lisi" + ], + "department_id_list": [ + 2, + 3 + ] + }, + "groupchat_range": { + "chat_id_list": [ + "wraaaaaaaaaaaaaaaa", + "wrbbbbbbbbbbbbbbb" + ] + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceRequest.json new file mode 100644 index 00000000..019f40c2 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceRequest.json @@ -0,0 +1,13 @@ +{ + "open_kfid": "kfxxxxxxxxxxxxxx", + "external_userid": "wmxxxxxxxxxxxxxxxxxx", + "type": 1, + "member": { + "userid": "zhangsan", + "wording": "你好,我是你的专属服务专员zhangsan" + }, + "groupchat": { + "chat_id": "wraaaaaaaaaaaaaaaa", + "wording": "欢迎加入你的专属服务群" + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceResponse.json new file mode 100644 index 00000000..f752befe --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Customer/CgibinKfCustomerUpgradeServiceResponse.json @@ -0,0 +1,4 @@ +{ + "errcode": 0, + "errmsg": "ok" +} \ No newline at end of file