From 5d753ff8f4c72e58d6c7b2602aa25f3e3229ce18 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Sun, 19 Jun 2022 22:20:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(wxapi):=20=E6=96=B0=E5=A2=9E=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E8=81=94=E7=9B=9F=E6=9F=A5=E6=8E=A8=E5=B9=BF?= =?UTF-8?q?=20Tag=20=E8=A7=A3=E6=9E=90=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ApiClientExecuteUnionPromoterExtensions.cs | 20 +++++++ .../UnionPromoterProductParseTagRequest.cs | 17 ++++++ .../UnionPromoterProductParseTagResponse.cs | 58 +++++++++++++++++++ .../UnionPromoterProductParseTagRequest.json | 3 + .../UnionPromoterProductParseTagResponse.json | 11 ++++ 5 files changed, 109 insertions(+) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductParseTagRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductParseTagResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/UnionPromoter/Product/UnionPromoterProductParseTagRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/UnionPromoter/Product/UnionPromoterProductParseTagResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionPromoterExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionPromoterExtensions.cs index 33abcfec..7a690b34 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionPromoterExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionPromoterExtensions.cs @@ -258,6 +258,26 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + + /// + /// 异步调用 [POST] /union/promoter/product/parse_tag 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/union/access-guidelines/promoter/api/parse_tag.html + /// + /// + /// + /// + /// + public static async Task ExecuteUnionPromoterProductParseTagAsync(this WechatApiClient client, Models.UnionPromoterProductParseTagRequest 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, "union", "promoter", "product", "parse_tag") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } #endregion #region OpenProduct diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductParseTagRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductParseTagRequest.cs new file mode 100644 index 00000000..ad169862 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductParseTagRequest.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /union/promoter/product/parse_tag 接口的请求。 + /// + public class UnionPromoterProductParseTagRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置商品推广 Tag 列表。 + /// + [Newtonsoft.Json.JsonProperty("tagList")] + [System.Text.Json.Serialization.JsonPropertyName("tagList")] + public IList TagList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductParseTagResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductParseTagResponse.cs new file mode 100644 index 00000000..abcacd42 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductParseTagResponse.cs @@ -0,0 +1,58 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /union/promoter/product/parse_tag 接口的响应。 + /// + public class UnionPromoterProductParseTagResponse : WechatApiResponse + { + public static class Types + { + public class Tag + { + /// + /// 获取或设置商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("productId")] + [System.Text.Json.Serialization.JsonPropertyName("productId")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long ProductId { get; set; } + + /// + /// 获取或设置商品来源。 + /// + [Newtonsoft.Json.JsonProperty("source")] + [System.Text.Json.Serialization.JsonPropertyName("source")] + public int Source { get; set; } + + /// + /// 获取或设置小商店 AppId。 + /// + [Newtonsoft.Json.JsonProperty("productAppid")] + [System.Text.Json.Serialization.JsonPropertyName("productAppid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置错误码。 + /// + [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; } + } + } + + /// + /// 获取或设置商品推广 Tag 列表。 + /// + [Newtonsoft.Json.JsonProperty("tagList")] + [System.Text.Json.Serialization.JsonPropertyName("tagList")] + + public Types.Tag[] TagList { get; set; } = default!; + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/UnionPromoter/Product/UnionPromoterProductParseTagRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/UnionPromoter/Product/UnionPromoterProductParseTagRequest.json new file mode 100644 index 00000000..33b36f65 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/UnionPromoter/Product/UnionPromoterProductParseTagRequest.json @@ -0,0 +1,3 @@ +{ + "tagList": ["#小程序://好物精选/测试商品***/YcaJDQiDOFEFr5g"] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/UnionPromoter/Product/UnionPromoterProductParseTagResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/UnionPromoter/Product/UnionPromoterProductParseTagResponse.json new file mode 100644 index 00000000..3159f825 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/UnionPromoter/Product/UnionPromoterProductParseTagResponse.json @@ -0,0 +1,11 @@ +{ + "errcode": 0, + "errmsg": "ok", + "tagList": [ + { + "productId": "523480", + "source": 1, + "productAppid": "wx645f5f855bf419" + } + ] +}