diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs index fdfc6d7a..54996ccb 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs @@ -295,6 +295,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api /// /// 异步调用 [POST] /shop/spu/add 接口。 /// REF: https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/SPU/add_spu.html + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/SPU/add_spu.html /// /// /// @@ -315,6 +316,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api /// /// 异步调用 [POST] /shop/spu/update 接口。 /// REF: https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/SPU/update_spu.html + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/SPU/update_spu.html /// /// /// @@ -332,9 +334,30 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + /// + /// 异步调用 [POST] /shop/spu/update_without_audit 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/SPU/update_spu.html + /// + /// + /// + /// + /// + public static async Task ExecuteShopSPUUpdateWithoutAuditAsync(this WechatApiClient client, Models.ShopSPUUpdateWithoutAuditRequest 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, "shop", "spu", "update_without_audit") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + /// /// 异步调用 [POST] /shop/spu/del 接口。 /// REF: https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/SPU/del_spu.html + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/SPU/del_spu.html /// /// /// @@ -355,6 +378,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api /// /// 异步调用 [POST] /shop/spu/del_audit 接口。 /// REF: https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/SPU/del_spu_audit.html + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/SPU/del_spu_audit.html /// /// /// @@ -375,6 +399,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api /// /// 异步调用 [POST] /shop/spu/get 接口。 /// REF: https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/SPU/get_spu.html + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/SPU/get_spu.html /// /// /// @@ -395,6 +420,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api /// /// 异步调用 [POST] /shop/spu/get_list 接口。 /// REF: https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/order/check_scene.html + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/SPU/get_spu_list.html /// /// /// @@ -415,6 +441,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api /// /// 异步调用 [POST] /shop/spu/listing 接口。 /// REF: https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/SPU/listing_spu.html + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/SPU/listing_spu.html /// /// /// @@ -435,6 +462,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api /// /// 异步调用 [POST] /shop/spu/delisting 接口。 /// REF: https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/SPU/delisting_spu.html + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/SPU/delisting_spu.html /// /// /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/SPU/ShopSPUUpdateWithoutAuditRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/SPU/ShopSPUUpdateWithoutAuditRequest.cs new file mode 100644 index 00000000..408e48c8 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/SPU/ShopSPUUpdateWithoutAuditRequest.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/spu/update_without_audit 接口的请求。 + /// + public class ShopSPUUpdateWithoutAuditRequest : WechatApiRequest + { + public static class Types + { + public class SKU + { + /// + /// 获取或设置商家自定义 SKU ID。 + /// + [Newtonsoft.Json.JsonProperty("out_sku_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_sku_id")] + public string OutSKUId { get; set; } = string.Empty; + + /// + /// 获取或设置售价(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("sale_price")] + [System.Text.Json.Serialization.JsonPropertyName("sale_price")] + public int? SalePrice { get; set; } + + /// + /// 获取或设置市场价(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("market_price")] + [System.Text.Json.Serialization.JsonPropertyName("market_price")] + public int? MarketPrice { get; set; } + + /// + /// 获取或设置库存。 + /// + [Newtonsoft.Json.JsonProperty("stock_num")] + [System.Text.Json.Serialization.JsonPropertyName("stock_num")] + public int? Stock { get; set; } + + /// + /// 获取或设置商品编码。 + /// + [Newtonsoft.Json.JsonProperty("sku_code")] + [System.Text.Json.Serialization.JsonPropertyName("sku_code")] + public string? SKUCode { get; set; } + + /// + /// 获取或设置条形码。 + /// + [Newtonsoft.Json.JsonProperty("barcode")] + [System.Text.Json.Serialization.JsonPropertyName("barcode")] + public string? BarCode { get; set; } + } + } + + /// + /// 获取或设置商品 ID。与字段 二选一。 + /// + [Newtonsoft.Json.JsonProperty("product_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_id")] + public long? ProductId { get; set; } + + /// + /// 获取或设置商家自定义商品 ID。与字段 二选一。 + /// + [Newtonsoft.Json.JsonProperty("out_product_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_product_id")] + public string? OutProductId { get; set; } + + /// + /// 获取或设置小程序商品页面路径。 + /// + [Newtonsoft.Json.JsonProperty("path")] + [System.Text.Json.Serialization.JsonPropertyName("path")] + public string? PagePath { get; set; } + + /// + /// 获取或设置 SKU 列表。 + /// + [Newtonsoft.Json.JsonProperty("skus")] + [System.Text.Json.Serialization.JsonPropertyName("skus")] + public IList? SKUList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/SPU/ShopSPUUpdateWithoutAuditResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/SPU/ShopSPUUpdateWithoutAuditResponse.cs new file mode 100644 index 00000000..a8edb5df --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/SPU/ShopSPUUpdateWithoutAuditResponse.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/spu/update_without_audit 接口的响应。 + /// + public class ShopSPUUpdateWithoutAuditResponse : WechatApiResponse + { + public static class Types + { + public class Data + { + /// + /// 获取或设置商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_id")] + public long ProductId { get; set; } + + /// + /// 获取或设置商家自定义商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_product_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_product_id")] + public string OutProductId { get; set; } = default!; + + /// + /// 获取或设置更新时间。 + /// + [Newtonsoft.Json.JsonProperty("update_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RegularDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("update_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RegularDateTimeOffsetConverter))] + public DateTimeOffset UpdateTime { get; set; } + } + } + + /// + /// 获取或设置返回数据。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public Types.Data Data { get; set; } = default!; + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/SPU/ShopSPUUpdateWithoutAuditRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/SPU/ShopSPUUpdateWithoutAuditRequest.json new file mode 100644 index 00000000..ff99d907 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/SPU/ShopSPUUpdateWithoutAuditRequest.json @@ -0,0 +1,15 @@ +{ + "out_product_id": "1234566", + "product_id": 1234566, + "path": "pages/productDetail/productDetail?productId=2176180", + "skus": [ + { + "out_sku_id": "1024", + "sale_price": 1300, + "market_price": 1500, + "stock_num": 100, + "sku_code": "A24525252", + "barcode": "13251454" + } + ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/SPU/ShopSPUUpdateWithoutAuditResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/SPU/ShopSPUUpdateWithoutAuditResponse.json new file mode 100644 index 00000000..8a8dd078 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/SPU/ShopSPUUpdateWithoutAuditResponse.json @@ -0,0 +1,9 @@ +{ + "errcode": 0, + "errmsg": "ok", + "data": { + "product_id": 1234566, + "out_product_id": "1234566", + "update_time": "2020-03-25 12:05:25" + } +} \ No newline at end of file