From 0fdbbffd7e885659bad9ab19bc806836c139dde5 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Wed, 9 Jun 2021 17:09:49 +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=E7=9B=B8=E5=85=B3=20API=20?= =?UTF-8?q?=E5=B0=81=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ApiClientExecuteUnionPromoterExtensions.cs | 263 ++++++++ .../Product/SPU/ProductSPUAddRequest.cs | 4 +- .../Product/SPU/ProductSPUGetResponse.cs | 4 +- .../Product/SPU/ProductSPUUpdateRequest.cs | 2 +- .../Order/UnionPromoterOrderInfoRequest.cs | 18 + .../Order/UnionPromoterOrderInfoResponse.cs | 245 ++++++++ .../Order/UnionPromoterOrderSearchRequest.cs | 39 ++ .../Order/UnionPromoterOrderSearchResponse.cs | 40 ++ .../UnionPromoterProductCategoryRequest.cs | 12 + .../UnionPromoterProductCategoryResponse.cs | 40 ++ .../UnionPromoterProductGenerateRequest.cs | 52 ++ .../UnionPromoterProductGenerateResponse.cs | 170 ++++++ .../UnionPromoterProductListRequest.cs | 116 ++++ .../UnionPromoterProductListResponse.cs | 566 ++++++++++++++++++ .../UnionPromoterPromotionAddRequest.cs | 18 + .../UnionPromoterPromotionAddResponse.cs | 18 + .../UnionPromoterPromotionDeleteRequest.cs | 25 + .../UnionPromoterPromotionDeleteResponse.cs | 12 + .../UnionPromoterPromotionListRequest.cs | 25 + .../UnionPromoterPromotionListResponse.cs | 53 ++ .../UnionPromoterPromotionUpdateRequest.cs | 48 ++ .../UnionPromoterPromotionUpdateResponse.cs | 12 + 22 files changed, 1777 insertions(+), 5 deletions(-) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionPromoterExtensions.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderInfoRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderInfoResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductCategoryRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductCategoryResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductGenerateRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductGenerateResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductListRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductListResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionAddRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionAddResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionDeleteRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionDeleteResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionListRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionListResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionUpdateRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionUpdateResponse.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionPromoterExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionPromoterExtensions.cs new file mode 100644 index 00000000..fe287aa7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionPromoterExtensions.cs @@ -0,0 +1,263 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Flurl; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.Api +{ + public static class WechatApiClientExecuteUnionPromoterExtensions + { + #region Promotion + /// + /// 异步调用 [POST] /union/promoter/promotion/add 接口。 + /// REF: https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/promotion.html#_1-%E6%B7%BB%E5%8A%A0%E6%8E%A8%E5%B9%BF%E4%BD%8D + /// + /// + /// + /// + /// + public static async Task ExecuteUnionPromoterPromotionAddAsync(this WechatApiClient client, Models.UnionPromoterPromotionAddRequest 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(HttpMethod.Post, "union", "promoter", "promotion", "add") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /union/promoter/promotion/del 接口。 + /// REF: https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/promotion.html#_2-%E5%88%A0%E9%99%A4%E6%8E%A8%E5%B9%BF%E4%BD%8D + /// + /// + /// + /// + /// + public static async Task ExecuteUnionPromoterPromotionDeleteAsync(this WechatApiClient client, Models.UnionPromoterPromotionDeleteRequest 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(HttpMethod.Post, "union", "promoter", "promotion", "del") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /union/promoter/promotion/upd 接口。 + /// REF: https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/promotion.html#_3-%E7%BC%96%E8%BE%91%E6%8E%A8%E5%B9%BF%E4%BD%8D + /// + /// + /// + /// + /// + public static async Task ExecuteUnionPromoterPromotionUpdateAsync(this WechatApiClient client, Models.UnionPromoterPromotionUpdateRequest 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(HttpMethod.Post, "union", "promoter", "promotion", "upd") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /union/promoter/promotion/list 接口。 + /// REF: https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/promotion.html#_4-%E8%8E%B7%E5%8F%96%E6%8E%A8%E5%B9%BF%E4%BD%8D%E5%88%97%E8%A1%A8 + /// + /// + /// + /// + /// + public static async Task ExecuteUnionPromoterPromotionListAsync(this WechatApiClient client, Models.UnionPromoterPromotionListRequest 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(HttpMethod.Get, "union", "promoter", "promotion", "list") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken) + .SetQueryParam("start", request.Offset) + .SetQueryParam("limit", request.Limit); + + return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken); + } + #endregion + + #region Product + /// + /// 异步调用 [GET] /union/promoter/product/category 接口。 + /// REF: https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/product/category.html#_1-%E8%8E%B7%E5%8F%96%E8%81%94%E7%9B%9F%E5%95%86%E5%93%81%E7%B1%BB%E7%9B%AE%E5%88%97%E8%A1%A8%E5%8F%8A%E7%B1%BB%E7%9B%AEID + /// + /// + /// + /// + /// + public static async Task ExecuteUnionPromoterProductCategoryAsync(this WechatApiClient client, Models.UnionPromoterProductCategoryRequest 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(HttpMethod.Get, "union", "promoter", "product", "category") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /union/promoter/product/list 接口。 + /// REF: https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/product/category.html#_2-%E6%9F%A5%E8%AF%A2%E5%95%86%E5%93%81%E8%AF%A6%E6%83%85%E4%BF%A1%E6%81%AF + /// + /// + /// + /// + /// + public static async Task ExecuteUnionPromoterProductListAsync(this WechatApiClient client, Models.UnionPromoterProductListRequest 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(HttpMethod.Get, "union", "promoter", "product", "list") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken) + .SetQueryParam("from", request.Offset) + .SetQueryParam("limit", request.Limit); + + if (request.QueryType.HasValue) + flurlReq.SetQueryParam("queryType", request.QueryType.Value); + + if (!string.IsNullOrEmpty(request.Query)) + flurlReq.SetQueryParam("query", request.Query); + + if (request.MaxPrice.HasValue) + flurlReq.SetQueryParam("maxPrice", request.MaxPrice.Value); + + if (request.MinPrice.HasValue) + flurlReq.SetQueryParam("minPrice", request.MinPrice.Value); + + if (request.MinCommissionValue.HasValue) + flurlReq.SetQueryParam("minCommissionValue", request.MinCommissionValue.Value); + + if (request.MinCommissionRatio.HasValue) + flurlReq.SetQueryParam("minCommissionRatio", request.MinCommissionRatio.Value); + + if (request.SortType.HasValue) + flurlReq.SetQueryParam("sortType", request.SortType.Value); + + if (request.HasCoupon.HasValue) + flurlReq.SetQueryParam("hasCoupon", request.HasCoupon.Value ? 1 : 0); + + if (request.ShopAppIdList != null && request.ShopAppIdList.Any()) + flurlReq.SetQueryParam("shopAppIds", string.Join(",", request.ShopAppIdList)); + + if (request.CategoryId.HasValue) + flurlReq.SetQueryParam("categoryId", request.CategoryId); + + if (request.CategoryIdList != null && request.CategoryIdList.Any()) + flurlReq.SetQueryParam("category", string.Join(",", request.CategoryIdList)); + + if (request.CategoryIdBlackList != null && request.CategoryIdBlackList.Any()) + flurlReq.SetQueryParam("noCategory", string.Join(",", request.CategoryIdBlackList)); + + if (request.ProductIdList != null && request.ProductIdList.Any()) + flurlReq.SetQueryParam("productId", string.Join(",", request.ProductIdList)); + + return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /union/promoter/product/generate 接口。 + /// REF: https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/product/category.html#_3-%E8%8E%B7%E5%8F%96%E5%95%86%E5%93%81%E6%8E%A8%E5%B9%BF%E7%B4%A0%E6%9D%90 + /// + /// + /// + /// + /// + public static async Task ExecuteUnionPromoterProductGenerateAsync(this WechatApiClient client, Models.UnionPromoterProductGenerateRequest 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(HttpMethod.Post, "union", "promoter", "product", "generate") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + + #region Order + /// + /// 异步调用 [POST] /union/promoter/order/info 接口。 + /// REF: https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/order/order-info.html#_1-%E6%A0%B9%E6%8D%AE%E8%AE%A2%E5%8D%95ID%E6%9F%A5%E8%AF%A2%E8%AE%A2%E5%8D%95%E8%AF%A6%E6%83%85 + /// + /// + /// + /// + /// + public static async Task ExecuteUnionPromoterOrderInfoAsync(this WechatApiClient client, Models.UnionPromoterOrderInfoRequest 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(HttpMethod.Post, "union", "promoter", "order", "info") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /union/promoter/order/search 接口。 + /// REF: https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/order/order-info.html#_2-%E6%A0%B9%E6%8D%AE%E8%AE%A2%E5%8D%95%E6%94%AF%E4%BB%98%E6%97%B6%E9%97%B4%E3%80%81%E8%AE%A2%E5%8D%95%E5%88%86%E4%BD%A3%E7%8A%B6%E6%80%81%E6%8B%89%E5%8F%96%E8%AE%A2%E5%8D%95%E8%AF%A6%E6%83%85 + /// + /// + /// + /// + /// + public static async Task ExecuteUnionPromoterOrderSearchAsync(this WechatApiClient client, Models.UnionPromoterOrderSearchRequest 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(HttpMethod.Get, "union", "promoter", "order", "search") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken) + .SetQueryParam("page", request.Page); + + if (request.StartTimestamp.HasValue) + flurlReq.SetQueryParam("startTimestamp", request.StartTimestamp.Value); + + if (request.EndTimestamp.HasValue) + flurlReq.SetQueryParam("endTimestamp", request.EndTimestamp.Value); + + if (!string.IsNullOrEmpty(request.CommissionStatus)) + flurlReq.SetQueryParam("commissionStatus", request.CommissionStatus); + + return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken); + } + #endregion + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/SPU/ProductSPUAddRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/SPU/ProductSPUAddRequest.cs index 68d61d0f..21bb384f 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/SPU/ProductSPUAddRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/SPU/ProductSPUAddRequest.cs @@ -10,7 +10,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models { public static class Types { - public class Description + public class Detail { /// /// 获取或设置商品详情图片 Url 列表。 @@ -164,7 +164,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models /// [Newtonsoft.Json.JsonProperty("desc_info")] [System.Text.Json.Serialization.JsonPropertyName("desc_info")] - public Types.Description Description { get; set; } = new Types.Description(); + public Types.Detail Detail { get; set; } = new Types.Detail(); /// /// 获取或设置品牌 ID。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/SPU/ProductSPUGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/SPU/ProductSPUGetResponse.cs index 2be0e928..68ce7ec8 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/SPU/ProductSPUGetResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/SPU/ProductSPUGetResponse.cs @@ -24,7 +24,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models { public static class Types { - public class Description + public class Detail { /// /// 获取或设置商品详情图片 Url 列表。 @@ -129,7 +129,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models /// [Newtonsoft.Json.JsonProperty("desc_info")] [System.Text.Json.Serialization.JsonPropertyName("desc_info")] - public Types.Description Description { get; set; } = default!; + public Types.Detail Detail { get; set; } = default!; /// /// 获取或设置品牌 ID。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/SPU/ProductSPUUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/SPU/ProductSPUUpdateRequest.cs index e7b2a9aa..b4036158 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/SPU/ProductSPUUpdateRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/SPU/ProductSPUUpdateRequest.cs @@ -10,7 +10,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models { public static class Types { - public class Description : ProductSPUAddRequest.Types.Description + public class Description : ProductSPUAddRequest.Types.Detail { } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderInfoRequest.cs new file mode 100644 index 00000000..e0e1eda8 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderInfoRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /union/promoter/order/info 接口的请求。 + /// + public class UnionPromoterOrderInfoRequest : WechatApiRequest + { + /// + /// 获取或设置订单 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("orderIdList")] + [System.Text.Json.Serialization.JsonPropertyName("orderIdList")] + public IList OrderIdList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderInfoResponse.cs new file mode 100644 index 00000000..218aaf68 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderInfoResponse.cs @@ -0,0 +1,245 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /union/promoter/order/info 接口的响应。 + /// + public class UnionPromoterOrderInfoResponse : WechatApiResponse + { + public static class Types + { + public class Order + { + public static class Types + { + public class Product + { + /// + /// 获取或设置商品 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("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] + public string Title { get; set; } = default!; + + /// + /// 获取或设置商品缩略图 URL。 + /// + [Newtonsoft.Json.JsonProperty("thumbImg")] + [System.Text.Json.Serialization.JsonPropertyName("thumbImg")] + public string ThumbnailImageUrl { get; set; } = default!; + + /// + /// 获取或设置商品价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("price")] + [Newtonsoft.Json.JsonConverter(typeof(Converters.NewtonsoftJsonCurrencyConverter))] + [System.Text.Json.Serialization.JsonPropertyName("price")] + [System.Text.Json.Serialization.JsonConverter(typeof(Converters.SystemTextJsonCurrencyConverter))] + public int Price { get; set; } + + /// + /// 获取或设置佣金比例(单位:万分之一)。 + /// + [Newtonsoft.Json.JsonProperty("ratio")] + [System.Text.Json.Serialization.JsonPropertyName("ratio")] + public int CommissionRatio { get; set; } + + /// + /// 获取或设置佣金金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("commission")] + [Newtonsoft.Json.JsonConverter(typeof(Converters.NewtonsoftJsonCurrencyConverter))] + [System.Text.Json.Serialization.JsonPropertyName("commission")] + [System.Text.Json.Serialization.JsonConverter(typeof(Converters.SystemTextJsonCurrencyConverter))] + public int CommissionValue { get; set; } + + /// + /// 获取或设置分佣状态。 + /// + [Newtonsoft.Json.JsonProperty("commissionStatus")] + [System.Text.Json.Serialization.JsonPropertyName("commissionStatus")] + public string CommissionStatus { get; set; } = default!; + + /// + /// 获取或设置商品类目名称,使用逗号分隔。 + /// + [Newtonsoft.Json.JsonProperty("categoryStr")] + [System.Text.Json.Serialization.JsonPropertyName("categoryStr")] + public string CategoryNames { get; set; } = default!; + + /// + /// 获取或设置推广信息。 + /// + [Newtonsoft.Json.JsonProperty("promotionInfo")] + [System.Text.Json.Serialization.JsonPropertyName("promotionInfo")] + public Promotion? Promotion { get; set; } + + /// + /// 获取或设置自定义扩展参数。 + /// + [Newtonsoft.Json.JsonProperty("customizeInfo")] + [System.Text.Json.Serialization.JsonPropertyName("customizeInfo")] + public string? CustomizeExtra { get; set; } + } + + public class Promotion + { + /// + /// 获取或设置推广位 ID。 + /// + [Newtonsoft.Json.JsonProperty("promotionSourcePid")] + [System.Text.Json.Serialization.JsonPropertyName("promotionSourcePid")] + public string PromotionId { get; set; } = default!; + + /// + /// 获取或设置推广位 ID。 + /// + [Newtonsoft.Json.JsonProperty("promotionSourceName")] + [System.Text.Json.Serialization.JsonPropertyName("promotionSourceName")] + public string SourceName { get; set; } = default!; + } + } + + /// + /// 获取或设置订单 ID。 + /// + [Newtonsoft.Json.JsonProperty("orderId")] + [System.Text.Json.Serialization.JsonPropertyName("orderId")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long OrderId { get; set; } + + /// + /// 获取或设置商品列表。 + /// + [Newtonsoft.Json.JsonProperty("productList")] + [System.Text.Json.Serialization.JsonPropertyName("productList")] + public Types.Product[] ProductList { get; set; } = default!; + + /// + /// 获取或设置小商店名称。 + /// + [Newtonsoft.Json.JsonProperty("shopAppid")] + [System.Text.Json.Serialization.JsonPropertyName("shopAppid")] + public string? ShopAppId { get; set; } + + /// + /// 获取或设置小商店名称。 + /// + [Newtonsoft.Json.JsonProperty("shopName")] + [System.Text.Json.Serialization.JsonPropertyName("shopName")] + public string? ShopName { get; set; } + + /// + /// 获取或设置付款时间。 + /// + [Newtonsoft.Json.JsonProperty("payTime")] + [System.Text.Json.Serialization.JsonPropertyName("payTime")] + public long? PayTimestamp { get; set; } + + /// + /// 获取或设置确认收货时间。 + /// + [Newtonsoft.Json.JsonProperty("confirmReceiptTime")] + [System.Text.Json.Serialization.JsonPropertyName("confirmReceiptTime")] + public long? ConfirmReceiptTimestamp { get; set; } + } + } + + internal static class Converters + { + internal class NewtonsoftJsonCurrencyConverter : Newtonsoft.Json.JsonConverter + { + public override bool CanRead + { + get { return true; } + } + + public override bool CanWrite + { + get { return true; } + } + + public override int ReadJson(Newtonsoft.Json.JsonReader reader, Type objectType, int existingValue, bool hasExistingValue, Newtonsoft.Json.JsonSerializer serializer) + { + if (reader.TokenType == Newtonsoft.Json.JsonToken.Null) + { + return existingValue; + } + else if (reader.TokenType == Newtonsoft.Json.JsonToken.String) + { + string? value = serializer.Deserialize(reader); + if (value == null) + return existingValue; + + value = value.Replace("¥", string.Empty).Replace("-", string.Empty); + if (string.IsNullOrEmpty(value)) + return existingValue; + + if (double.TryParse(value, out double currency)) + { + return (int)(currency * 100); + } + } + + throw new Newtonsoft.Json.JsonReaderException(); + } + + public override void WriteJson(Newtonsoft.Json.JsonWriter writer, int value, Newtonsoft.Json.JsonSerializer serializer) + { + writer.WriteValue("¥" + ((double)value / 100).ToString("#.##")); + } + } + + internal class SystemTextJsonCurrencyConverter : System.Text.Json.Serialization.JsonConverter + { + public override int Read(ref System.Text.Json.Utf8JsonReader reader, Type typeToConvert, System.Text.Json.JsonSerializerOptions options) + { + if (reader.TokenType == System.Text.Json.JsonTokenType.Null) + { + return default; + } + else if (reader.TokenType == System.Text.Json.JsonTokenType.String) + { + string? value = reader.GetString(); + if (value == null) + return default; + + value = value.Replace("¥", string.Empty).Replace("-", string.Empty); + if (string.IsNullOrEmpty(value)) + return default; + + if (double.TryParse(value, out double currency)) + { + return (int)(currency * 100); + } + } + + throw new System.Text.Json.JsonException(); + } + + public override void Write(System.Text.Json.Utf8JsonWriter writer, int value, System.Text.Json.JsonSerializerOptions options) + { + writer.WriteStringValue("¥" + ((double)value / 100).ToString("#.##")); + } + } + } + + /// + /// 获取或设置订单列表。 + /// + [Newtonsoft.Json.JsonProperty("orderList")] + [System.Text.Json.Serialization.JsonPropertyName("orderList")] + + public Types.Order[] OrderList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchRequest.cs new file mode 100644 index 00000000..2286dfd1 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchRequest.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /union/promoter/order/search 接口的请求。 + /// + public class UnionPromoterOrderSearchRequest : WechatApiRequest + { + /// + /// 获取或设置分页页数(从 1 开始)。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Page { get; set; } = 1; + + /// + /// 获取或设置指定起始时间戳。 + /// + [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; } + + /// + /// 获取或设置指定分佣状态。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? CommissionStatus { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchResponse.cs new file mode 100644 index 00000000..80e011c9 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchResponse.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /union/promoter/order/search 接口的响应。 + /// + public class UnionPromoterOrderSearchResponse : WechatApiResponse + { + public static class Types + { + public class Order : UnionPromoterOrderInfoResponse.Types.Order + { + } + } + + /// + /// 获取或设置订单列表。 + /// + [Newtonsoft.Json.JsonProperty("orderList")] + [System.Text.Json.Serialization.JsonPropertyName("orderList")] + + public Types.Order[] OrderList { get; set; } = default!; + + /// + /// 获取或设置订单总数量。 + /// + [Newtonsoft.Json.JsonProperty("totalNum")] + [System.Text.Json.Serialization.JsonPropertyName("totalNum")] + public int Total { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// + [Newtonsoft.Json.JsonProperty("pageSize")] + [System.Text.Json.Serialization.JsonPropertyName("pageSize")] + public int Limit { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductCategoryRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductCategoryRequest.cs new file mode 100644 index 00000000..6d11d631 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductCategoryRequest.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /union/promoter/product/category 接口的请求。 + /// + public class UnionPromoterProductCategoryRequest : WechatApiRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductCategoryResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductCategoryResponse.cs new file mode 100644 index 00000000..9c58eae6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductCategoryResponse.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /union/promoter/product/category 接口的响应。 + /// + public class UnionPromoterProductCategoryResponse : WechatApiResponse + { + public static class Types + { + public class Category + { + /// + /// 获取或设置类目 ID。 + /// + [Newtonsoft.Json.JsonProperty("catId")] + [System.Text.Json.Serialization.JsonPropertyName("catId")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int CategoryId { get; set; } = default!; + + /// + /// 获取或设置类目名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + } + } + + /// + /// 获取或设置商品类目列表。 + /// + [Newtonsoft.Json.JsonProperty("productCats")] + [System.Text.Json.Serialization.JsonPropertyName("productCats")] + + public Types.Category[] CategoryList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductGenerateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductGenerateRequest.cs new file mode 100644 index 00000000..d21861a4 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductGenerateRequest.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /union/promoter/product/generate 接口的请求。 + /// + public class UnionPromoterProductGenerateRequest : WechatApiRequest + { + public static class Types + { + public class Product + { + /// + /// 获取或设置商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("productId")] + [System.Text.Json.Serialization.JsonPropertyName("productId")] + public long ProductId { get; set; } + + /// + /// 获取或设置所属小商店 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appId")] + [System.Text.Json.Serialization.JsonPropertyName("appId")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置自定义扩展参数。 + /// + [Newtonsoft.Json.JsonProperty("customizeInfo")] + [System.Text.Json.Serialization.JsonPropertyName("customizeInfo")] + public string? CustomizeExtra { get; set; } + } + } + + /// + /// 获取或设置推广位 ID。 + /// + [Newtonsoft.Json.JsonProperty("pid")] + [System.Text.Json.Serialization.JsonPropertyName("pid")] + public string PromotionId { get; set; } = string.Empty; + + /// + /// 获取或设置商品列表。 + /// + [Newtonsoft.Json.JsonProperty("productList")] + [System.Text.Json.Serialization.JsonPropertyName("productList")] + public IList ProductList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductGenerateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductGenerateResponse.cs new file mode 100644 index 00000000..55460f42 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductGenerateResponse.cs @@ -0,0 +1,170 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /union/promoter/product/generate 接口的响应。 + /// + public class UnionPromoterProductGenerateResponse : WechatApiResponse + { + public static class Types + { + public class ProductPromotion + { + public static class Types + { + public class Product + { + /// + /// 获取或设置商品 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("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] + public string Title { get; set; } = default!; + + /// + /// 获取或设置商品副标题。 + /// + [Newtonsoft.Json.JsonProperty("subTitle")] + [System.Text.Json.Serialization.JsonPropertyName("subTitle")] + public string? SubTitle { get; set; } + + /// + /// 获取或设置主图 Url 列表。 + /// + [Newtonsoft.Json.JsonProperty("headImg")] + [System.Text.Json.Serialization.JsonPropertyName("headImg")] + public string[] HeadImageUrlList { get; set; } = default!; + + /// + /// 获取或设置 SKU 最低价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("minPrice")] + [System.Text.Json.Serialization.JsonPropertyName("minPrice")] + public int MinPrice { get; set; } + + /// + /// 获取或设置商品库存。 + /// + [Newtonsoft.Json.JsonProperty("totalStockNum")] + [System.Text.Json.Serialization.JsonPropertyName("totalStockNum")] + public int Stock { get; set; } + + /// + /// 获取或设置小商店名称。 + /// + [Newtonsoft.Json.JsonProperty("shopAppid")] + [System.Text.Json.Serialization.JsonPropertyName("shopAppid")] + public string? ShopAppId { get; set; } + + /// + /// 获取或设置小商店名称。 + /// + [Newtonsoft.Json.JsonProperty("shopName")] + [System.Text.Json.Serialization.JsonPropertyName("shopName")] + public string? ShopName { get; set; } + + /// + /// 获取或设置是否引用小商店组件。 + /// + [Newtonsoft.Json.JsonProperty("pluginResult")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedNullableBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("pluginResult")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedNullableBooleanConverter))] + public bool? UsePlugin { get; set; } + } + + public class Share + { + /// + /// 获取或设置小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appId")] + [System.Text.Json.Serialization.JsonPropertyName("appId")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置小程序页面路径。 + /// + [Newtonsoft.Json.JsonProperty("path")] + [System.Text.Json.Serialization.JsonPropertyName("path")] + public string PagePath { get; set; } = default!; + + /// + /// 获取或设置经过 Base64 编码的小程序码图片。 + /// + [Newtonsoft.Json.JsonProperty("wxaCode")] + [System.Text.Json.Serialization.JsonPropertyName("wxaCode")] + public string EncodingWxaCode { get; set; } = default!; + + /// + /// 获取或设置推广商品文案。 + /// + [Newtonsoft.Json.JsonProperty("promotionWording")] + [System.Text.Json.Serialization.JsonPropertyName("promotionWording")] + public string? PromotionText { get; set; } + + /// + /// 获取或设置推广商品链接。 + /// + [Newtonsoft.Json.JsonProperty("promotionUrl")] + [System.Text.Json.Serialization.JsonPropertyName("promotionUrl")] + public string? PromotionUrl { get; set; } = default!; + + /// + /// 获取或设置推广商品带券文案。 + /// + [Newtonsoft.Json.JsonProperty("couponPromotionWording")] + [System.Text.Json.Serialization.JsonPropertyName("couponPromotionWording")] + public string? PromotionWithCouponText { get; set; } + + /// + /// 获取或设置推广商品带券链接。 + /// + [Newtonsoft.Json.JsonProperty("couponPromotionUrl")] + [System.Text.Json.Serialization.JsonPropertyName("couponPromotionUrl")] + public string? PromotionWithCouponUrl { get; set; } = default!; + } + } + + /// + /// 获取或设置推广位 ID。 + /// + [Newtonsoft.Json.JsonProperty("pid")] + [System.Text.Json.Serialization.JsonPropertyName("pid")] + public string PromotionId { get; set; } = default!; + + /// + /// 获取或设置商品信息。 + /// + [Newtonsoft.Json.JsonProperty("productInfo")] + [System.Text.Json.Serialization.JsonPropertyName("productInfo")] + public Types.Product Product { get; set; } = default!; + + /// + /// 获取或设置推广相关信息。 + /// + [Newtonsoft.Json.JsonProperty("shareInfo")] + [System.Text.Json.Serialization.JsonPropertyName("shareInfo")] + public Types.Share? Share { get; set; } + } + } + + /// + /// 获取或设置商品推广素材列表。 + /// + [Newtonsoft.Json.JsonProperty("list")] + [System.Text.Json.Serialization.JsonPropertyName("list")] + + public Types.ProductPromotion[] ProductPromotionList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductListRequest.cs new file mode 100644 index 00000000..10860a57 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductListRequest.cs @@ -0,0 +1,116 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /union/promoter/product/list 接口的请求。 + /// + public class UnionPromoterProductListRequest : WechatApiRequest + { + /// + /// 获取或设置分页起始位置。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Offset { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Limit { get; set; } = 20; + + /// + /// 获取或设置搜索类型。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int? QueryType { get; set; } + + /// + /// 获取或设置搜索关键词。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? Query { get; set; } + + /// + /// 获取或设置商品最高价格(单位:分)。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int? MaxPrice { get; set; } + + /// + /// 获取或设置商品最低价格(单位:分)。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int? MinPrice { get; set; } + + /// + /// 获取或设置佣金金额下限(单位:分)。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int? MinCommissionValue { get; set; } + + /// + /// 获取或设置佣金比例下限(单位:万分之一)。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int? MinCommissionRatio { get; set; } + + /// + /// 获取或设置排序方式。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int? SortType { get; set; } + + /// + /// 获取或设置小商店 AppId 列表。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public IList? ShopAppIdList { get; set; } + + /// + /// 获取或设置是否有联盟优惠券。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public bool? HasCoupon { get; set; } + + /// + /// 获取或设置商品类目 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int? CategoryId { get; set; } + + /// + /// 获取或设置商品类目 ID 列表。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public IList? CategoryIdList { get; set; } + + /// + /// 获取或设置商品类目 ID 黑名单列表。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public IList? CategoryIdBlackList { get; set; } + + /// + /// 获取或设置商品 ID 列表。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public IList? ProductIdList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductListResponse.cs new file mode 100644 index 00000000..fbf4423a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Product/UnionPromoterProductListResponse.cs @@ -0,0 +1,566 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /union/promoter/product/list 接口的响应。 + /// + public class UnionPromoterProductListResponse : WechatApiResponse + { + public static class Types + { + public class Product + { + public static class Types + { + public class ProductDetail + { + public static class Types + { + public class Category + { + /// + /// 获取或设置商品类目 ID。 + /// + [Newtonsoft.Json.JsonProperty("catId")] + [System.Text.Json.Serialization.JsonPropertyName("catId")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int CategoryId { get; set; } + + /// + /// 获取或设置上级商品类目名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + } + + public class Attribute + { + /// + /// 获取或设置属性的 Key。 + /// + [Newtonsoft.Json.JsonProperty("key")] + [System.Text.Json.Serialization.JsonPropertyName("key")] + public string Key { get; set; } = default!; + + /// + /// 获取或设置属性的值。 + /// + [Newtonsoft.Json.JsonProperty("value")] + [System.Text.Json.Serialization.JsonPropertyName("value")] + public string Value { get; set; } = default!; + } + + public class Information + { + public static class Types + { + public class Detail + { + /// + /// 获取或设置商品详情图片 Url 列表。 + /// + [Newtonsoft.Json.JsonProperty("detailImg")] + [System.Text.Json.Serialization.JsonPropertyName("detailImg")] + public string[] ImageUrlList { get; set; } = default!; + } + + public class Express + { + /// + /// 获取或设置运费模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("templateId")] + [System.Text.Json.Serialization.JsonPropertyName("templateId")] + public int TemplateId { get; set; } + } + } + + /// + /// 获取或设置商品标题。 + /// + [Newtonsoft.Json.JsonProperty("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] + public string Title { get; set; } = default!; + + /// + /// 获取或设置商品副标题。 + /// + [Newtonsoft.Json.JsonProperty("subTitle")] + [System.Text.Json.Serialization.JsonPropertyName("subTitle")] + public string? SubTitle { get; set; } + + /// + /// 获取或设置主图 Url 列表。 + /// + [Newtonsoft.Json.JsonProperty("headImg")] + [System.Text.Json.Serialization.JsonPropertyName("headImg")] + public string[] HeadImageUrlList { get; set; } = default!; + + /// + /// 获取或设置商品详情信息。 + /// + [Newtonsoft.Json.JsonProperty("detail")] + [System.Text.Json.Serialization.JsonPropertyName("detail")] + public Types.Detail Detail { get; set; } = default!; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brandId")] + [System.Text.Json.Serialization.JsonPropertyName("brandId")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int BrandId { get; set; } + + /// + /// 获取或设置品牌名称。 + /// + [Newtonsoft.Json.JsonProperty("brand")] + [System.Text.Json.Serialization.JsonPropertyName("brand")] + public string? BrandName { get; set; } + + /// + /// 获取或设置型号。 + /// + [Newtonsoft.Json.JsonProperty("model")] + [System.Text.Json.Serialization.JsonPropertyName("model")] + public string? Model { get; set; } + + /// + /// 获取或设置商品类目列表。 + /// + [Newtonsoft.Json.JsonProperty("category")] + [System.Text.Json.Serialization.JsonPropertyName("category")] + public Category[] CategoryList { get; set; } = default!; + + /// + /// 获取或设置商品属性列表。 + /// + [Newtonsoft.Json.JsonProperty("param")] + [System.Text.Json.Serialization.JsonPropertyName("param")] + public Attribute[] AttributeList { get; set; } = default!; + + /// + /// 获取或设置运费信息。 + /// + [Newtonsoft.Json.JsonProperty("expressInfo")] + [System.Text.Json.Serialization.JsonPropertyName("expressInfo")] + public Types.Express Express { get; set; } = default!; + + /// + /// 获取或设置 SKU 最低价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("minPrice")] + [System.Text.Json.Serialization.JsonPropertyName("minPrice")] + public int MinPrice { get; set; } + + /// + /// 获取或设置总库存。 + /// + [Newtonsoft.Json.JsonProperty("totalStockNum")] + [System.Text.Json.Serialization.JsonPropertyName("totalStockNum")] + public int Stock { get; set; } + } + + public class SKU + { + public static class Types + { + public class Information + { + public static class Types + { + public class Stock + { + /// + /// 获取或设置库存量。 + /// + [Newtonsoft.Json.JsonProperty("stockNum")] + [System.Text.Json.Serialization.JsonPropertyName("stockNum")] + public int Value { get; set; } + } + } + + /// + /// 获取或设置缩略图 URL。 + /// + [Newtonsoft.Json.JsonProperty("thumbImg")] + [System.Text.Json.Serialization.JsonPropertyName("thumbImg")] + public string ThumbnailUrl { get; set; } = default!; + + /// + /// 获取或设置售价(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("salePrice")] + [System.Text.Json.Serialization.JsonPropertyName("salePrice")] + public int SalePrice { get; set; } + + /// + /// 获取或设置市场价(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("marketPrice")] + [System.Text.Json.Serialization.JsonPropertyName("marketPrice")] + public int MarketPrice { get; set; } + + /// + /// 获取或设置库存信息。 + /// + [Newtonsoft.Json.JsonProperty("stockInfo")] + [System.Text.Json.Serialization.JsonPropertyName("stockInfo")] + public Types.Stock Stock { get; set; } = default!; + + /// + /// 获取或设置商品编码。 + /// + [Newtonsoft.Json.JsonProperty("skuCode")] + [System.Text.Json.Serialization.JsonPropertyName("skuCode")] + public string? SKUCode { get; set; } + } + } + + /// + /// 获取或设置 SKU ID。 + /// + [Newtonsoft.Json.JsonProperty("skuId")] + [System.Text.Json.Serialization.JsonPropertyName("skuId")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long SKUId { get; set; } + + /// + /// 获取或设置 SKU 上线状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + + /// + /// 获取或设置 SKU 基本信息。 + /// + [Newtonsoft.Json.JsonProperty("productSkuInfo")] + [System.Text.Json.Serialization.JsonPropertyName("productSkuInfo")] + public Types.Information Information { get; set; } = default!; + } + } + + /// + /// 获取或设置商品 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("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + + /// + /// 获取或设置商品基本信息。 + /// + [Newtonsoft.Json.JsonProperty("info")] + [System.Text.Json.Serialization.JsonPropertyName("info")] + public Types.Information Information { get; set; } = default!; + + /// + /// 获取或设置 SKU 列表。 + /// + [Newtonsoft.Json.JsonProperty("skus")] + [System.Text.Json.Serialization.JsonPropertyName("skus")] + public Types.SKU[] SKUList { get; set; } = default!; + } + + public class League + { + /// + /// 获取或设置是否有佣金。 + /// + [Newtonsoft.Json.JsonProperty("hasCommission")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("hasCommission")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedBooleanConverter))] + public bool HasCommission { get; set; } + + /// + /// 获取或设置佣金比例(单位:万分之一)。 + /// + [Newtonsoft.Json.JsonProperty("commissionRatio")] + [System.Text.Json.Serialization.JsonPropertyName("commissionRatio")] + public int? CommissionRatio { get; set; } + + /// + /// 获取或设置佣金金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("commissionValue")] + [System.Text.Json.Serialization.JsonPropertyName("commissionValue")] + public int? CommissionValue { get; set; } + } + + public class Shop + { + /// + /// 获取或设置小商店 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appId")] + [System.Text.Json.Serialization.JsonPropertyName("appId")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置小商店名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置小商店头像 URL。 + /// + [Newtonsoft.Json.JsonProperty("headImgUrl")] + [System.Text.Json.Serialization.JsonPropertyName("headImgUrl")] + public string HeadImageUrl { get; set; } = default!; + } + + public class Coupon + { + public static class Types + { + public class CouponDetail + { + public static class Types + { + public class Discount + { + public static class Types + { + public class DiscountCondidtion + { + /// + /// 获取或设置商品数量。 + /// + [Newtonsoft.Json.JsonProperty("productCnt")] + [System.Text.Json.Serialization.JsonPropertyName("productCnt")] + public int? ProductCount { get; set; } + + /// + /// 获取或设置商品 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("productIds")] + [System.Text.Json.Serialization.JsonPropertyName("productIds")] + public long[]? ProductIdList { get; set; } + + /// + /// 获取或设置商品价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("productPrice")] + [System.Text.Json.Serialization.JsonPropertyName("productPrice")] + public int? ProductPrice { get; set; } + } + } + + /// + /// 获取或设置优惠条件信息。 + /// + [Newtonsoft.Json.JsonProperty("discountCondition")] + [System.Text.Json.Serialization.JsonPropertyName("discountCondition")] + public Types.DiscountCondidtion? DiscountCondidtion { get; set; } + + /// + /// 获取或设置满减金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("discountFee")] + [System.Text.Json.Serialization.JsonPropertyName("discountFee")] + public int? DiscountFee { get; set; } + + /// + /// 获取或设置折扣数值(范围:1000~10000)。 + /// + [Newtonsoft.Json.JsonProperty("discountNum")] + [System.Text.Json.Serialization.JsonPropertyName("discountNum")] + public int? DiscountNumber { get; set; } + } + + public class Reception + { + /// + /// 获取或设置单人限领数量。 + /// + [Newtonsoft.Json.JsonProperty("limitNumOnePerson")] + [System.Text.Json.Serialization.JsonPropertyName("limitNumOnePerson")] + public int LimitPerUser { get; set; } + + /// + /// 获取或设置领取开始时间戳。 + /// + [Newtonsoft.Json.JsonProperty("startTime")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.CommonNullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("startTime")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.CommonNullableDateTimeOffsetConverter))] + public DateTimeOffset? StartTime { get; set; } + + /// + /// 获取或设置领取结束时间戳。 + /// + [Newtonsoft.Json.JsonProperty("endTime")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.CommonNullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("endTime")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.CommonNullableDateTimeOffsetConverter))] + public DateTimeOffset? EndTime { get; set; } + } + + public class Validity + { + /// + /// 获取或设置有效期类型。 + /// + [Newtonsoft.Json.JsonProperty("validType")] + [System.Text.Json.Serialization.JsonPropertyName("validType")] + public string ValidType { get; set; } = default!; + + /// + /// 获取或设置相对生效天数。 + /// + [Newtonsoft.Json.JsonProperty("validDayNum")] + [System.Text.Json.Serialization.JsonPropertyName("validDayNum")] + public int? ValidDays { get; set; } + + /// + /// 获取或设置绝对生效开始时间戳。 + /// + [Newtonsoft.Json.JsonProperty("startTime")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.CommonNullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("startTime")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.CommonNullableDateTimeOffsetConverter))] + public DateTimeOffset? StartTime { get; set; } + + /// + /// 获取或设置绝对生效结束时间戳。 + /// + [Newtonsoft.Json.JsonProperty("endTime")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.CommonNullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("endTime")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.CommonNullableDateTimeOffsetConverter))] + public DateTimeOffset? EndTime { get; set; } + } + } + + /// + /// 获取或设置优惠券类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public int Type { get; set; } + + /// + /// 获取或设置优惠券库存。 + /// + [Newtonsoft.Json.JsonProperty("restNum")] + [System.Text.Json.Serialization.JsonPropertyName("restNum")] + public int Stock { get; set; } + + /// + /// 获取或设置优惠信息。 + /// + [Newtonsoft.Json.JsonProperty("discountInfo")] + [System.Text.Json.Serialization.JsonPropertyName("discountInfo")] + public Types.Discount Discount { get; set; } = default!; + + /// + /// 获取或设置接收信息。 + /// + [Newtonsoft.Json.JsonProperty("receiveInfo")] + [System.Text.Json.Serialization.JsonPropertyName("receiveInfo")] + public Types.Reception? Reception { get; set; } + + /// + /// 获取或设置有效期信息。 + /// + [Newtonsoft.Json.JsonProperty("validInfo")] + [System.Text.Json.Serialization.JsonPropertyName("validInfo")] + public Types.Validity Validity { get; set; } = default!; + } + } + + /// + /// 获取或设置是否有联盟优惠券。 + /// + [Newtonsoft.Json.JsonProperty("hasCoupon")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("hasCoupon")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedBooleanConverter))] + public bool HasCommission { get; set; } + + /// + /// 获取或设置优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("couponId")] + [System.Text.Json.Serialization.JsonPropertyName("couponId")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int? CouponId { get; set; } + + /// + /// 获取或设置优惠券详细信息。 + /// + [Newtonsoft.Json.JsonProperty("couponInfo")] + [System.Text.Json.Serialization.JsonPropertyName("couponInfo")] + public Types.CouponDetail? CouponDetail { get; set; } + } + } + + /// + /// 获取或设置商品 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("product")] + [System.Text.Json.Serialization.JsonPropertyName("product")] + public Types.ProductDetail ProductDetail { get; set; } = default!; + + /// + /// 获取或设置联盟佣金信息。 + /// + [Newtonsoft.Json.JsonProperty("leagueExInfo")] + [System.Text.Json.Serialization.JsonPropertyName("leagueExInfo")] + public Types.League League { get; set; } = default!; + + /// + /// 获取或设置商品所属小商店信息。 + /// + [Newtonsoft.Json.JsonProperty("shopInfo")] + [System.Text.Json.Serialization.JsonPropertyName("shopInfo")] + public Types.Shop Shop { get; set; } = default!; + + /// + /// 获取或设置联盟优惠券信息。 + /// + [Newtonsoft.Json.JsonProperty("couponInfo")] + [System.Text.Json.Serialization.JsonPropertyName("couponInfo")] + public Types.Coupon? Coupon { get; set; } + } + } + + /// + /// 获取或设置商品列表。 + /// + [Newtonsoft.Json.JsonProperty("productList")] + [System.Text.Json.Serialization.JsonPropertyName("productList")] + + public Types.Product[] ProductList { get; set; } = default!; + + /// + /// 获取或设置商品总数量。 + /// + [Newtonsoft.Json.JsonProperty("total")] + [System.Text.Json.Serialization.JsonPropertyName("total")] + public int Total { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionAddRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionAddRequest.cs new file mode 100644 index 00000000..dc13daf9 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionAddRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /union/promoter/promotion/add 接口的请求。 + /// + public class UnionPromoterPromotionAddRequest : WechatApiRequest + { + /// + /// 获取或设置推广位名称。 + /// + [Newtonsoft.Json.JsonProperty("promotionSourceName")] + [System.Text.Json.Serialization.JsonPropertyName("promotionSourceName")] + public string SourceName { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionAddResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionAddResponse.cs new file mode 100644 index 00000000..0ab387d0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionAddResponse.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /union/promoter/promotion/add 接口的响应。 + /// + public class UnionPromoterPromotionAddResponse : WechatApiResponse + { + /// + /// 获取或设置推广位 ID。 + /// + [Newtonsoft.Json.JsonProperty("pid")] + [System.Text.Json.Serialization.JsonPropertyName("pid")] + public string PromotionId { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionDeleteRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionDeleteRequest.cs new file mode 100644 index 00000000..665e2c2d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionDeleteRequest.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /union/promoter/promotion/del 接口的请求。 + /// + public class UnionPromoterPromotionDeleteRequest : WechatApiRequest + { + /// + /// 获取或设置推广位 ID。 + /// + [Newtonsoft.Json.JsonProperty("promotionSourcePid")] + [System.Text.Json.Serialization.JsonPropertyName("promotionSourcePid")] + public string PromotionId { get; set; } = string.Empty; + + /// + /// 获取或设置推广位名称。 + /// + [Newtonsoft.Json.JsonProperty("promotionSourceName")] + [System.Text.Json.Serialization.JsonPropertyName("promotionSourceName")] + public string SourceName { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionDeleteResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionDeleteResponse.cs new file mode 100644 index 00000000..d96062f4 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionDeleteResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /union/promoter/promotion/del 接口的响应。 + /// + public class UnionPromoterPromotionDeleteResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionListRequest.cs new file mode 100644 index 00000000..f7a2381a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionListRequest.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /union/promoter/promotion/list 接口的请求。 + /// + public class UnionPromoterPromotionListRequest : WechatApiRequest + { + /// + /// 获取或设置分页起始位置。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Offset { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Limit { get; set; } = 20; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionListResponse.cs new file mode 100644 index 00000000..49048f52 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionListResponse.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /union/promoter/promotion/list 接口的响应。 + /// + public class UnionPromoterPromotionListResponse : WechatApiResponse + { + public static class Types + { + public class Promotion + { + /// + /// 获取或设置推广位 ID。 + /// + [Newtonsoft.Json.JsonProperty("promotionSourcePid")] + [System.Text.Json.Serialization.JsonPropertyName("promotionSourcePid")] + public string PromotionId { get; set; } = default!; + + /// + /// 获取或设置推广位名称。 + /// + [Newtonsoft.Json.JsonProperty("promotionSourceName")] + [System.Text.Json.Serialization.JsonPropertyName("promotionSourceName")] + public string SourceName { get; set; } = default!; + } + } + + /// + /// 获取或设置推广位列表。 + /// + [Newtonsoft.Json.JsonProperty("promotionSourceList")] + [System.Text.Json.Serialization.JsonPropertyName("promotionSourceList")] + + public Types.Promotion[] PromotionList { get; set; } = default!; + + /// + /// 获取或设置推广位总数量。 + /// + [Newtonsoft.Json.JsonProperty("total")] + [System.Text.Json.Serialization.JsonPropertyName("total")] + public int Total { get; set; } + + /// + /// 获取或设置允许创建的推广位最大数量。 + /// + [Newtonsoft.Json.JsonProperty("promotionMaxCnt")] + [System.Text.Json.Serialization.JsonPropertyName("promotionMaxCnt")] + public int MaxPromotionCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionUpdateRequest.cs new file mode 100644 index 00000000..6a644a8e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionUpdateRequest.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /union/promoter/promotion/upd 接口的请求。 + /// + public class UnionPromoterPromotionUpdateRequest : WechatApiRequest + { + public static class Types + { + public class Promotion + { + /// + /// 获取或设置推广位名称。 + /// + [Newtonsoft.Json.JsonProperty("promotionSourceName")] + [System.Text.Json.Serialization.JsonPropertyName("promotionSourceName")] + public string SourceName { get; set; } = string.Empty; + } + + public class PreviousPromotion : Promotion + { + /// + /// 获取或设置推广位 ID。 + /// + [Newtonsoft.Json.JsonProperty("promotionSourcePid")] + [System.Text.Json.Serialization.JsonPropertyName("promotionSourcePid")] + public string PromotionId { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置修改前的推广位信息。 + /// + [Newtonsoft.Json.JsonProperty("previousPromotionInfo")] + [System.Text.Json.Serialization.JsonPropertyName("previousPromotionInfo")] + public Types.PreviousPromotion PreviousPromotion { get; set; } = new Types.PreviousPromotion(); + + /// + /// 获取或设置修改后的推广位信息。 + /// + [Newtonsoft.Json.JsonProperty("promotionInfo")] + [System.Text.Json.Serialization.JsonPropertyName("promotionInfo")] + public Types.Promotion Promotion { get; set; } = new Types.Promotion(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionUpdateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionUpdateResponse.cs new file mode 100644 index 00000000..9b51ca5a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Promotion/UnionPromoterPromotionUpdateResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /union/promoter/promotion/upd 接口的响应。 + /// + public class UnionPromoterPromotionUpdateResponse : WechatApiResponse + { + } +}