From d35a23578f6d50f74f46ffddd4335a2f90e248f9 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Sat, 5 Aug 2023 19:19:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(work):=20=E9=9A=8F=E5=AE=98=E6=96=B9?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=8E=B7=E5=AE=A2=E5=8A=A9=E6=89=8B=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=8E=A5=E5=8F=A3=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...tExecuteCgibinExternalContactExtensions.cs | 23 +++++++++++++++ ...ContactCustomerAcquisitionQuotaResponse.cs | 27 +++++++++++++++++ ...tactCustomerAcquisitionStatisticRequest.cs | 29 +++++++++++++++++++ ...actCustomerAcquisitionStatisticResponse.cs | 22 ++++++++++++++ ...ntactCustomerAcquisitionQuotaResponse.json | 12 +++++++- ...tCustomerAcquisitionStatisticResponse.json | 6 ++++ 6 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionStatisticRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionStatisticResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionStatisticResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs index 31d94a3d..e2eb9c3a 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs @@ -615,6 +615,29 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + + /// + /// 异步调用 [GET] /cgi-bin/externalcontact/customer_acquisition/statistic 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97375 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinExternalContactCustomerAcquisitionStatisticAsync(this WechatWorkClient client, Models.CgibinExternalContactCustomerAcquisitionStatisticRequest 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", "externalcontact", "customer_acquisition", "statistic") + .SetQueryParam("access_token", request.AccessToken) + .SetQueryParam("link_id", request.LinkId) + .SetQueryParam("start_time", request.StartTimestamp) + .SetQueryParam("end_time", request.EndTimestamp); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } #endregion #region CustomerStrategy diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionQuotaResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionQuotaResponse.cs index c21919ac..d9089fb6 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionQuotaResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionQuotaResponse.cs @@ -5,6 +5,26 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models /// public class CgibinExternalContactCustomerAcquisitionQuotaResponse : WechatWorkResponse { + public static class Types + { + public class Quota + { + /// + /// 获取或设置即将过期额度。 + /// + [Newtonsoft.Json.JsonProperty("balance")] + [System.Text.Json.Serialization.JsonPropertyName("balance")] + public int Balance { get; set; } + + /// + /// 获取或设置额度过期时间戳。 + /// + [Newtonsoft.Json.JsonProperty("expire_date")] + [System.Text.Json.Serialization.JsonPropertyName("expire_date")] + public long ExpireTimestamp { get; set; } + } + } + /// /// 获取或设置累计使用量。 /// @@ -18,5 +38,12 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models [Newtonsoft.Json.JsonProperty("balance")] [System.Text.Json.Serialization.JsonPropertyName("balance")] public int Balance { get; set; } + + /// + /// 获取或设置即将过期额度列表。 + /// + [Newtonsoft.Json.JsonProperty("quota_list")] + [System.Text.Json.Serialization.JsonPropertyName("quota_list")] + public Types.Quota[]? QuotaList { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionStatisticRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionStatisticRequest.cs new file mode 100644 index 00000000..9c75171d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionStatisticRequest.cs @@ -0,0 +1,29 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/externalcontact/customer_acquisition/statistic 接口的请求。 + /// + public class CgibinExternalContactCustomerAcquisitionStatisticRequest : WechatWorkRequest + { + /// + /// 获取或设置获客链接 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string LinkId { get; set; } = string.Empty; + + /// + /// 获取或设置统计起始时间戳。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public long StartTimestamp { get; set; } + + /// + /// 获取或设置统计结束时间戳。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public long EndTimestamp { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionStatisticResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionStatisticResponse.cs new file mode 100644 index 00000000..60bf93e7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionStatisticResponse.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/externalcontact/customer_acquisition/statistic 接口的响应。 + /// + public class CgibinExternalContactCustomerAcquisitionStatisticResponse : WechatWorkResponse + { + /// + /// 获取或设置点击链接客户数。 + /// + [Newtonsoft.Json.JsonProperty("click_link_customer_cnt")] + [System.Text.Json.Serialization.JsonPropertyName("click_link_customer_cnt")] + public int ClickLinkCustomerCount { get; set; } + + /// + /// 获取或设置新增客户数。 + /// + [Newtonsoft.Json.JsonProperty("new_customer_cnt")] + [System.Text.Json.Serialization.JsonPropertyName("new_customer_cnt")] + public int NewCustomerCount { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionQuotaResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionQuotaResponse.json index f8c34e7a..bf6e8f5d 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionQuotaResponse.json +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionQuotaResponse.json @@ -2,5 +2,15 @@ "errcode": 0, "errmsg": "ok", "total": 1000, - "balance": 500 + "balance": 500, + "quota_list": [ + { + "expire_date": 1689350400, + "balance": 200 + }, + { + "expire_date": 1692028800, + "balance": 300 + } + ] } diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionStatisticResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionStatisticResponse.json new file mode 100644 index 00000000..c1760b3a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionStatisticResponse.json @@ -0,0 +1,6 @@ +{ + "errcode": 0, + "errmsg": "ok", + "click_link_customer_cnt": 1000, + "new_customer_cnt": 500 +}