From 06dede8d1d1c38275c1e6f84bdbc7ba276b517cb Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Tue, 21 Sep 2021 21:51:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(wxapi):=20=E6=96=B0=E5=A2=9E=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E4=BA=A4=E6=98=93=E7=BB=84=E4=BB=B6=E4=BC=98?= =?UTF-8?q?=E6=83=A0=E5=88=B8=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 --- .../WechatApiClientExecuteShopExtensions.cs | 202 +++++++++++ .../Coupon/ProductCouponCreateRequest.cs | 8 +- .../Coupon/ProductCouponGetResponse.cs | 4 +- .../Shop/Coupon/ShopCouponAddRequest.cs | 250 +++++++++++++ .../Shop/Coupon/ShopCouponAddResponse.cs | 12 + .../Shop/Coupon/ShopCouponGetListRequest.cs | 25 ++ .../Shop/Coupon/ShopCouponGetListResponse.cs | 103 ++++++ .../Shop/Coupon/ShopCouponGetRequest.cs | 18 + .../Shop/Coupon/ShopCouponGetResponse.cs | 338 ++++++++++++++++++ .../ShopCouponUpdateCouponStockRequest.cs | 58 +++ .../ShopCouponUpdateCouponStockResponse.cs | 12 + .../Shop/Coupon/ShopCouponUpdateRequest.cs | 204 +++++++++++ .../Shop/Coupon/ShopCouponUpdateResponse.cs | 12 + .../Coupon/ShopCouponUpdateStatusRequest.cs | 25 ++ .../Coupon/ShopCouponUpdateStatusResponse.cs | 12 + .../ShopCouponAddUserCouponRequest.cs | 59 +++ .../ShopCouponAddUserCouponResponse.cs | 12 + .../ShopCouponGetUserCouponListRequest.cs | 32 ++ .../ShopCouponGetUserCouponListResponse.cs | 107 ++++++ .../ShopCouponUpdateUserCouponRequest.cs | 72 ++++ .../ShopCouponUpdateUserCouponResponse.cs | 12 + ...ShopCouponUpdateUserCouponStatusRequest.cs | 39 ++ ...hopCouponUpdateUserCouponStatusResponse.cs | 12 + .../Shop/Coupon/ShopCouponAddRequest.json | 50 +++ .../Shop/Coupon/ShopCouponAddResponse.json | 3 + .../Shop/Coupon/ShopCouponGetListRequest.json | 4 + .../Coupon/ShopCouponGetListResponse.json | 114 ++++++ .../Shop/Coupon/ShopCouponGetRequest.json | 3 + .../Shop/Coupon/ShopCouponGetResponse.json | 53 +++ .../ShopCouponUpdateCouponStockRequest.json | 9 + .../ShopCouponUpdateCouponStockResponse.json | 3 + .../Shop/Coupon/ShopCouponUpdateRequest.json | 47 +++ .../Shop/Coupon/ShopCouponUpdateResponse.json | 3 + .../Coupon/ShopCouponUpdateStatusRequest.json | 4 + .../ShopCouponUpdateStatusResponse.json | 3 + .../ShopCouponAddUserCouponRequest.json | 9 + .../ShopCouponAddUserCouponResponse.json | 3 + .../ShopCouponGetUserCouponListRequest.json | 5 + .../ShopCouponGetUserCouponListResponse.json | 30 ++ .../ShopCouponUpdateUserCouponRequest.json | 11 + .../ShopCouponUpdateUserCouponResponse.json | 3 + ...opCouponUpdateUserCouponStatusRequest.json | 6 + ...pCouponUpdateUserCouponStatusResponse.json | 3 + 43 files changed, 1988 insertions(+), 6 deletions(-) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponAddRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponAddResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetListRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetListResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateCouponStockRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateCouponStockResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateStatusRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateStatusResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponAddRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponAddResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetListRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetListResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateCouponStockRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateCouponStockResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateStatusRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateStatusResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs index a6efeba4..ac880683 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs @@ -733,5 +733,207 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion + + #region Coupon + /// + /// 异步调用 [POST] /shop/coupon/add 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/coupon/add_coupon.html + /// + /// + /// + /// + /// + public static async Task ExecuteShopCouponAddAsync(this WechatApiClient client, Models.ShopCouponAddRequest 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", "coupon", "add") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /shop/coupon/get 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/coupon/get_coupon.html + /// + /// + /// + /// + /// + public static async Task ExecuteShopCouponGetAsync(this WechatApiClient client, Models.ShopCouponGetRequest 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", "coupon", "get") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /shop/coupon/get_list 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/coupon/get_coupon_list.html + /// + /// + /// + /// + /// + public static async Task ExecuteShopCouponGetListAsync(this WechatApiClient client, Models.ShopCouponGetListRequest 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", "coupon", "get_list") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /shop/coupon/update 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/coupon/update_coupon.html + /// + /// + /// + /// + /// + public static async Task ExecuteShopCouponUpdateAsync(this WechatApiClient client, Models.ShopCouponUpdateRequest 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", "coupon", "update") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /shop/coupon/update_status 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/coupon/update_coupon_status.html + /// + /// + /// + /// + /// + public static async Task ExecuteShopCouponUpdateStatusAsync(this WechatApiClient client, Models.ShopCouponUpdateStatusRequest 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", "coupon", "update_status") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /shop/coupon/update_coupon_stock 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/coupon/update_coupon_stock.html + /// + /// + /// + /// + /// + public static async Task ExecuteShopCouponUpdateCouponStockAsync(this WechatApiClient client, Models.ShopCouponUpdateCouponStockRequest 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", "coupon", "update_coupon_stock") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /shop/coupon/add_user_coupon 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/coupon/add_usercoupon.html + /// + /// + /// + /// + /// + public static async Task ExecuteShopCouponAddUserCouponAsync(this WechatApiClient client, Models.ShopCouponAddUserCouponRequest 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", "coupon", "add_user_coupon") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /shop/coupon/get_usercoupon_list 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/coupon/get_usercoupon_list.html + /// + /// + /// + /// + /// + public static async Task ExecuteShopCouponGetUserCouponListAsync(this WechatApiClient client, Models.ShopCouponGetUserCouponListRequest 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", "coupon", "get_usercoupon_list") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /shop/coupon/update_user_coupon 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/coupon/update_usercoupon.html + /// + /// + /// + /// + /// + public static async Task ExecuteShopCouponUpdateUserCouponAsync(this WechatApiClient client, Models.ShopCouponUpdateUserCouponRequest 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", "coupon", "update_user_coupon") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /shop/coupon/update_usercoupon_status 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/coupon/update_usercoupon_status.html + /// + /// + /// + /// + /// + public static async Task ExecuteShopCouponUpdateUserCouponStatusAsync(this WechatApiClient client, Models.ShopCouponUpdateUserCouponStatusRequest 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", "coupon", "update_usercoupon_status") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/Coupon/ProductCouponCreateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/Coupon/ProductCouponCreateRequest.cs index 463eed07..4ba06562 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/Coupon/ProductCouponCreateRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/Coupon/ProductCouponCreateRequest.cs @@ -116,28 +116,28 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models /// [Newtonsoft.Json.JsonProperty("limit_num_one_person")] [System.Text.Json.Serialization.JsonPropertyName("limit_num_one_person")] - public int LimitPerUser { get; set; } + public int? LimitPerUser { get; set; } /// /// 获取或设置领取总数量。 /// [Newtonsoft.Json.JsonProperty("total_num")] [System.Text.Json.Serialization.JsonPropertyName("total_num")] - public int TotalNumber { get; set; } + public int? TotalNumber { get; set; } /// /// 获取或设置领取开始时间戳。 /// [Newtonsoft.Json.JsonProperty("start_time")] [System.Text.Json.Serialization.JsonPropertyName("start_time")] - public long StartTimestamp { get; set; } + public long? StartTimestamp { get; set; } /// /// 获取或设置领取结束时间戳。 /// [Newtonsoft.Json.JsonProperty("end_time")] [System.Text.Json.Serialization.JsonPropertyName("end_time")] - public long EndTimestamp { get; set; } + public long? EndTimestamp { get; set; } } public class Validity diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/Coupon/ProductCouponGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/Coupon/ProductCouponGetResponse.cs index b3117866..fc29851d 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/Coupon/ProductCouponGetResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Product/Coupon/ProductCouponGetResponse.cs @@ -127,14 +127,14 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models /// [Newtonsoft.Json.JsonProperty("limit_num_one_person")] [System.Text.Json.Serialization.JsonPropertyName("limit_num_one_person")] - public int LimitPerUser { get; set; } + public int? LimitPerUser { get; set; } /// /// 获取或设置领取总数量。 /// [Newtonsoft.Json.JsonProperty("total_num")] [System.Text.Json.Serialization.JsonPropertyName("total_num")] - public int TotalNumber { get; set; } + public int? TotalNumber { get; set; } /// /// 获取或设置领取开始时间戳。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponAddRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponAddRequest.cs new file mode 100644 index 00000000..8e3d7e41 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponAddRequest.cs @@ -0,0 +1,250 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/add 接口的请求。 + /// + public class ShopCouponAddRequest : WechatApiRequest + { + public static class Types + { + public class Coupon + { + public static class Types + { + public class CouponDetail + { + public static class Types + { + public class Discount + { + public static class Types + { + public class DiscountCondidtion + { + public static class Types + { + public class TradeIn + { + /// + /// 获取或设置商家自定义商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_product_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_product_id")] + public string OutProductId { get; set; } = string.Empty; + + /// + /// 获取或设置换购金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("price")] + [System.Text.Json.Serialization.JsonPropertyName("price")] + public int Price { get; set; } + } + + public class BuyGet + { + /// + /// 获取或设置购买的商家自定义商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("buy_out_product_id")] + [System.Text.Json.Serialization.JsonPropertyName("buy_out_product_id")] + public string BuyOutProductId { get; set; } = string.Empty; + + /// + /// 获取或设置购买的商品数量。 + /// + [Newtonsoft.Json.JsonProperty("buy_product_cnt")] + [System.Text.Json.Serialization.JsonPropertyName("buy_product_cnt")] + public int BuyProductCount { get; set; } + + /// + /// 获取或设置赠送的商家自定义商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("get_out_product_id")] + [System.Text.Json.Serialization.JsonPropertyName("get_out_product_id")] + public string GetOutProductId { get; set; } = string.Empty; + + /// + /// 获取或设置赠送的商品数量。 + /// + [Newtonsoft.Json.JsonProperty("get_product_cnt")] + [System.Text.Json.Serialization.JsonPropertyName("get_product_cnt")] + public int GetProductCount { get; set; } + } + } + + /// + /// 获取或设置商品数量。 + /// + [Newtonsoft.Json.JsonProperty("product_cnt")] + [System.Text.Json.Serialization.JsonPropertyName("product_cnt")] + public int? ProductCount { get; set; } + + /// + /// 获取或设置商品价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("product_price")] + [System.Text.Json.Serialization.JsonPropertyName("product_price")] + public int? ProductPrice { get; set; } + + /// + /// 获取或设置商家自定义商品 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("out_product_ids")] + [System.Text.Json.Serialization.JsonPropertyName("out_product_ids")] + public IList? ProductIdList { get; set; } + + /// + /// 获取或设置换购信息。 + /// + [Newtonsoft.Json.JsonProperty("tradein_info")] + [System.Text.Json.Serialization.JsonPropertyName("tradein_info")] + public Types.TradeIn? TradeIn { get; set; } + + /// + /// 获取或设置买赠券信息。 + /// + [Newtonsoft.Json.JsonProperty("buyget_info")] + [System.Text.Json.Serialization.JsonPropertyName("buyget_info")] + public Types.BuyGet? BuyGet { get; set; } + } + } + + /// + /// 获取或设置优惠条件信息。 + /// + [Newtonsoft.Json.JsonProperty("discount_condition")] + [System.Text.Json.Serialization.JsonPropertyName("discount_condition")] + public Types.DiscountCondidtion? DiscountCondidtion { get; set; } + + /// + /// 获取或设置满减金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("discount_fee")] + [System.Text.Json.Serialization.JsonPropertyName("discount_fee")] + public int? DiscountFee { get; set; } + + /// + /// 获取或设置折扣数值(范围:1000~10000)。 + /// + [Newtonsoft.Json.JsonProperty("discount_num")] + [System.Text.Json.Serialization.JsonPropertyName("discount_num")] + public int? DiscountNumber { get; set; } + } + + public class Promotion + { + public static class Types + { + public class Finder + { + /// + /// 获取或设置视频号昵称。 + /// + [Newtonsoft.Json.JsonProperty("nickname")] + [System.Text.Json.Serialization.JsonPropertyName("nickname")] + public string? Nickname { get; set; } + } + } + + /// + /// 获取或设置推广类型。 + /// + [Newtonsoft.Json.JsonProperty("promote_type")] + [System.Text.Json.Serialization.JsonPropertyName("promote_type")] + public int PromoteType { get; set; } + + /// + /// 获取或设置推广视频号信息。 + /// + [Newtonsoft.Json.JsonProperty("finder")] + [System.Text.Json.Serialization.JsonPropertyName("finder")] + public Types.Finder? Finder { get; set; } + } + + public class Reception : ProductCouponCreateRequest.Types.Reception + { + } + + public class Validity : ProductCouponCreateRequest.Types.Validity + { + } + } + + /// + /// 获取或设置优惠券名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; + + /// + /// 获取或设置优惠信息。 + /// + [Newtonsoft.Json.JsonProperty("discount_info")] + [System.Text.Json.Serialization.JsonPropertyName("discount_info")] + public Types.Discount Discount { get; set; } = new Types.Discount(); + + /// + /// 获取或设置推广信息。 + /// + [Newtonsoft.Json.JsonProperty("promote_info")] + [System.Text.Json.Serialization.JsonPropertyName("promote_info")] + public Types.Promotion? Promotion { get; set; } + + /// + /// 获取或设置接收信息。 + /// + [Newtonsoft.Json.JsonProperty("receive_info")] + [System.Text.Json.Serialization.JsonPropertyName("receive_info")] + public Types.Reception? Reception { get; set; } + + /// + /// 获取或设置有效期信息。 + /// + [Newtonsoft.Json.JsonProperty("valid_info")] + [System.Text.Json.Serialization.JsonPropertyName("valid_info")] + public Types.Validity Validity { get; set; } = new Types.Validity(); + } + } + + /// + /// 获取或设置商家侧优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_coupon_id")] + public string OutCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置优惠券类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public int Type { get; set; } + + /// + /// 获取或设置优惠券推广类型。 + /// + [Newtonsoft.Json.JsonProperty("promote_type")] + [System.Text.Json.Serialization.JsonPropertyName("promote_type")] + public int PromoteType { get; set; } + + /// + /// 获取或设置优惠券信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_info")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_info")] + public Types.CouponDetail CouponDetail { get; set; } = new Types.CouponDetail(); + } + } + + /// + /// 获取或设置优惠券信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon")] + [System.Text.Json.Serialization.JsonPropertyName("coupon")] + public Types.Coupon Coupon { get; set; } = new Types.Coupon(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponAddResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponAddResponse.cs new file mode 100644 index 00000000..4663419b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponAddResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/add 接口的响应。 + /// + public class ShopCouponAddResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetListRequest.cs new file mode 100644 index 00000000..ad3dcd43 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetListRequest.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/get_list 接口的请求。 + /// + public class ShopCouponGetListRequest : WechatApiRequest + { + /// + /// 获取或设置分页起始位置。 + /// + [Newtonsoft.Json.JsonProperty("offset")] + [System.Text.Json.Serialization.JsonPropertyName("offset")] + public int Offset { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// + [Newtonsoft.Json.JsonProperty("page_size")] + [System.Text.Json.Serialization.JsonPropertyName("page_size")] + public int Limit { get; set; } = 10; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetListResponse.cs new file mode 100644 index 00000000..8b0ee630 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetListResponse.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/get_list 接口的响应。 + /// + public class ShopCouponGetListResponse : WechatApiResponse + { + public static class Types + { + public class Result + { + public static class Types + { + public class Coupon : ShopCouponGetResponse.Types.Result.Types.Coupon + { + } + + public class CouponStock + { + public static class Types + { + public class Stock + { + /// + /// 获取或设置剩余量。 + /// + [Newtonsoft.Json.JsonProperty("issued_num")] + [System.Text.Json.Serialization.JsonPropertyName("issued_num")] + public int IssuedNumber { get; set; } + + /// + /// 获取或设置发放量。 + /// + [Newtonsoft.Json.JsonProperty("receive_num")] + [System.Text.Json.Serialization.JsonPropertyName("receive_num")] + public int ReceiveNumber { get; set; } + } + } + + /// + /// 获取或设置商家侧优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_coupon_id")] + public string OutCouponId { get; set; } = default!; + + /// + /// 获取或设置库存信息。 + /// + [Newtonsoft.Json.JsonProperty("stock_info")] + [System.Text.Json.Serialization.JsonPropertyName("stock_info")] + public Types.Stock Stock { get; set; } = default!; + + /// + /// 获取或设置更新时间戳。 + /// + [Newtonsoft.Json.JsonProperty("update_time")] + [System.Text.Json.Serialization.JsonPropertyName("update_time")] + public long UpdateTimestamp { get; set; } + + /// + /// 获取或设置创建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + public long CreateTimestamp { get; set; } + } + } + + /// + /// 获取或设置优惠券信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon")] + [System.Text.Json.Serialization.JsonPropertyName("coupon")] + public Types.Coupon Coupon { get; set; } = default!; + + /// + /// 获取或设置优惠券库存信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_stock")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_stock")] + public Types.CouponStock CouponStock { get; set; } = default!; + } + } + + /// + /// 获取或设置返回结果。 + /// + [Newtonsoft.Json.JsonProperty("result_list")] + [System.Text.Json.Serialization.JsonPropertyName("result_list")] + public Types.Result[] ResultList { get; set; } = default!; + + /// + /// 获取或设置总数量。 + /// + [Newtonsoft.Json.JsonProperty("total_num")] + [System.Text.Json.Serialization.JsonPropertyName("total_num")] + public int TotalCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetRequest.cs new file mode 100644 index 00000000..c021b7ef --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/get 接口的请求。 + /// + public class ShopCouponGetRequest : WechatApiRequest + { + /// + /// 获取或设置商家侧优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_coupon_id")] + public string OutCouponId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetResponse.cs new file mode 100644 index 00000000..2d41a8fb --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponGetResponse.cs @@ -0,0 +1,338 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/get 接口的响应。 + /// + public class ShopCouponGetResponse : WechatApiResponse + { + public static class Types + { + public class Result + { + public static class Types + { + public class Coupon + { + public static class Types + { + public class CouponDetail + { + public static class Types + { + public class Discount + { + public static class Types + { + public class DiscountCondidtion + { + public static class Types + { + public class TradeIn + { + /// + /// 获取或设置商家自定义商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_product_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_product_id")] + public string OutProductId { get; set; } = default!; + + /// + /// 获取或设置换购金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("price")] + [System.Text.Json.Serialization.JsonPropertyName("price")] + public int Price { get; set; } + } + + public class BuyGet + { + /// + /// 获取或设置购买的商家自定义商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("buy_out_product_id")] + [System.Text.Json.Serialization.JsonPropertyName("buy_out_product_id")] + public string BuyOutProductId { get; set; } = default!; + + /// + /// 获取或设置购买的商品数量。 + /// + [Newtonsoft.Json.JsonProperty("buy_product_cnt")] + [System.Text.Json.Serialization.JsonPropertyName("buy_product_cnt")] + public int BuyProductCount { get; set; } + + /// + /// 获取或设置赠送的商家自定义商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("get_out_product_id")] + [System.Text.Json.Serialization.JsonPropertyName("get_out_product_id")] + public string GetOutProductId { get; set; } = default!; + + /// + /// 获取或设置赠送的商品数量。 + /// + [Newtonsoft.Json.JsonProperty("get_product_cnt")] + [System.Text.Json.Serialization.JsonPropertyName("get_product_cnt")] + public int GetProductCount { get; set; } + } + } + + /// + /// 获取或设置商品数量。 + /// + [Newtonsoft.Json.JsonProperty("product_cnt")] + [System.Text.Json.Serialization.JsonPropertyName("product_cnt")] + public int? ProductCount { get; set; } + + /// + /// 获取或设置商品价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("product_price")] + [System.Text.Json.Serialization.JsonPropertyName("product_price")] + public int? ProductPrice { get; set; } + + /// + /// 获取或设置商家自定义商品 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("out_product_ids")] + [System.Text.Json.Serialization.JsonPropertyName("out_product_ids")] + public string[]? ProductIdList { get; set; } + + /// + /// 获取或设置换购信息。 + /// + [Newtonsoft.Json.JsonProperty("tradein_info")] + [System.Text.Json.Serialization.JsonPropertyName("tradein_info")] + public Types.TradeIn? TradeIn { get; set; } + + /// + /// 获取或设置买赠券信息。 + /// + [Newtonsoft.Json.JsonProperty("buyget_info")] + [System.Text.Json.Serialization.JsonPropertyName("buyget_info")] + public Types.BuyGet? BuyGet { get; set; } + } + } + + /// + /// 获取或设置优惠条件信息。 + /// + [Newtonsoft.Json.JsonProperty("discount_condition")] + [System.Text.Json.Serialization.JsonPropertyName("discount_condition")] + public Types.DiscountCondidtion? DiscountCondidtion { get; set; } + + /// + /// 获取或设置满减金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("discount_fee")] + [System.Text.Json.Serialization.JsonPropertyName("discount_fee")] + public int? DiscountFee { get; set; } + + /// + /// 获取或设置折扣数值(范围:1000~10000)。 + /// + [Newtonsoft.Json.JsonProperty("discount_num")] + [System.Text.Json.Serialization.JsonPropertyName("discount_num")] + public int? DiscountNumber { get; set; } + } + + public class Promotion + { + public static class Types + { + public class Finder + { + /// + /// 获取或设置视频号昵称。 + /// + [Newtonsoft.Json.JsonProperty("nickname")] + [System.Text.Json.Serialization.JsonPropertyName("nickname")] + public string? Nickname { get; set; } + } + } + + /// + /// 获取或设置推广类型。 + /// + [Newtonsoft.Json.JsonProperty("promote_type")] + [System.Text.Json.Serialization.JsonPropertyName("promote_type")] + public int PromoteType { get; set; } + + /// + /// 获取或设置推广视频号信息。 + /// + [Newtonsoft.Json.JsonProperty("finder")] + [System.Text.Json.Serialization.JsonPropertyName("finder")] + public Types.Finder? Finder { get; set; } + } + + public class Reception + { + /// + /// 获取或设置单人限领数量。 + /// + [Newtonsoft.Json.JsonProperty("limit_num_one_person")] + [System.Text.Json.Serialization.JsonPropertyName("limit_num_one_person")] + public int LimitPerUser { get; set; } + + /// + /// 获取或设置领取总数量。 + /// + [Newtonsoft.Json.JsonProperty("total_num")] + [System.Text.Json.Serialization.JsonPropertyName("total_num")] + public int TotalNumber { get; set; } + + /// + /// 获取或设置领取开始时间戳。 + /// + [Newtonsoft.Json.JsonProperty("start_time")] + [System.Text.Json.Serialization.JsonPropertyName("start_time")] + public long StartTimestamp { get; set; } + + /// + /// 获取或设置领取结束时间戳。 + /// + [Newtonsoft.Json.JsonProperty("end_time")] + [System.Text.Json.Serialization.JsonPropertyName("end_time")] + public long EndTimestamp { get; set; } + } + + public class Validity + { + /// + /// 获取或设置有效期类型。 + /// + [Newtonsoft.Json.JsonProperty("valid_type")] + [System.Text.Json.Serialization.JsonPropertyName("valid_type")] + public int ValidType { get; set; } + + /// + /// 获取或设置相对生效天数。 + /// + [Newtonsoft.Json.JsonProperty("valid_day_num")] + [System.Text.Json.Serialization.JsonPropertyName("valid_day_num")] + public int? ValidDays { get; set; } + + /// + /// 获取或设置绝对生效开始时间戳。 + /// + [Newtonsoft.Json.JsonProperty("start_time")] + [System.Text.Json.Serialization.JsonPropertyName("start_time")] + public long? StartTimestamp { get; set; } + + /// + /// 获取或设置绝对生效结束时间戳。 + /// + [Newtonsoft.Json.JsonProperty("end_time")] + [System.Text.Json.Serialization.JsonPropertyName("end_time")] + public long? EndTimestamp { get; set; } + } + } + + /// + /// 获取或设置优惠券名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置优惠信息。 + /// + [Newtonsoft.Json.JsonProperty("discount_info")] + [System.Text.Json.Serialization.JsonPropertyName("discount_info")] + public Types.Discount Discount { get; set; } = default!; + + /// + /// 获取或设置推广信息。 + /// + [Newtonsoft.Json.JsonProperty("promote_info")] + [System.Text.Json.Serialization.JsonPropertyName("promote_info")] + public Types.Promotion? Promotion { get; set; } + + /// + /// 获取或设置接收信息。 + /// + [Newtonsoft.Json.JsonProperty("receive_info")] + [System.Text.Json.Serialization.JsonPropertyName("receive_info")] + public Types.Reception? Reception { get; set; } + + /// + /// 获取或设置有效期信息。 + /// + [Newtonsoft.Json.JsonProperty("valid_info")] + [System.Text.Json.Serialization.JsonPropertyName("valid_info")] + public Types.Validity Validity { get; set; } = default!; + } + } + + /// + /// 获取或设置商家侧优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_coupon_id")] + public string OutCouponId { get; set; } = default!; + + /// + /// 获取或设置优惠券类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public int Type { get; set; } + + /// + /// 获取或设置优惠券推广类型。 + /// + [Newtonsoft.Json.JsonProperty("promote_type")] + [System.Text.Json.Serialization.JsonPropertyName("promote_type")] + public int PromoteType { get; set; } + + /// + /// 获取或设置优惠券信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_info")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_info")] + public Types.CouponDetail CouponDetail { get; set; } = default!; + + /// + /// 获取或设置优惠券状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + + /// + /// 获取或设置更新时间戳。 + /// + [Newtonsoft.Json.JsonProperty("update_time")] + [System.Text.Json.Serialization.JsonPropertyName("update_time")] + public long UpdateTimestamp { get; set; } + + /// + /// 获取或设置创建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + public long CreateTimestamp { get; set; } + } + } + + /// + /// 获取或设置优惠券信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon")] + [System.Text.Json.Serialization.JsonPropertyName("coupon")] + public Types.Coupon Coupon { get; set; } = default!; + } + } + + /// + /// 获取或设置返回结果。 + /// + [Newtonsoft.Json.JsonProperty("result")] + [System.Text.Json.Serialization.JsonPropertyName("result")] + public Types.Result Result { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateCouponStockRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateCouponStockRequest.cs new file mode 100644 index 00000000..076bb6e5 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateCouponStockRequest.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/update_coupon_stock 接口的请求。 + /// + public class ShopCouponUpdateCouponStockRequest : WechatApiRequest + { + public static class Types + { + public class CouponStock + { + public static class Types + { + public class Stock + { + /// + /// 获取或设置剩余量。 + /// + [Newtonsoft.Json.JsonProperty("issued_num")] + [System.Text.Json.Serialization.JsonPropertyName("issued_num")] + public int IssuedNumber { get; set; } + + /// + /// 获取或设置发放量。 + /// + [Newtonsoft.Json.JsonProperty("receive_num")] + [System.Text.Json.Serialization.JsonPropertyName("receive_num")] + public int ReceiveNumber { get; set; } + } + } + + /// + /// 获取或设置商家侧优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_coupon_id")] + public string OutCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置库存信息。 + /// + [Newtonsoft.Json.JsonProperty("stock_info")] + [System.Text.Json.Serialization.JsonPropertyName("stock_info")] + public Types.Stock Stock { get; set; } = new Types.Stock(); + } + } + + /// + /// 获取或设置优惠券库存信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_stock")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_stock")] + public Types.CouponStock CouponStock { get; set; } = new Types.CouponStock(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateCouponStockResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateCouponStockResponse.cs new file mode 100644 index 00000000..05c24e1e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateCouponStockResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/update_coupon_stock 接口的响应。 + /// + public class ShopCouponUpdateCouponStockResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateRequest.cs new file mode 100644 index 00000000..46be0036 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateRequest.cs @@ -0,0 +1,204 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/update 接口的请求。 + /// + public class ShopCouponUpdateRequest : WechatApiRequest + { + public static class Types + { + public class Coupon + { + public static class Types + { + public class CouponDetail + { + public static class Types + { + public class Discount + { + public static class Types + { + public class DiscountCondidtion + { + public static class Types + { + public class TradeIn : ShopCouponAddRequest.Types.Coupon.Types.CouponDetail.Types.Discount.Types.DiscountCondidtion.Types.TradeIn + { + } + + public class BuyGet : ShopCouponAddRequest.Types.Coupon.Types.CouponDetail.Types.Discount.Types.DiscountCondidtion.Types.BuyGet + { + } + } + + /// + /// 获取或设置商品数量。 + /// + [Newtonsoft.Json.JsonProperty("product_cnt")] + [System.Text.Json.Serialization.JsonPropertyName("product_cnt")] + public int? ProductCount { get; set; } + + /// + /// 获取或设置商品价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("product_price")] + [System.Text.Json.Serialization.JsonPropertyName("product_price")] + public int? ProductPrice { get; set; } + + /// + /// 获取或设置商家自定义商品 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("out_product_ids")] + [System.Text.Json.Serialization.JsonPropertyName("out_product_ids")] + public IList? ProductIdList { get; set; } + + /// + /// 获取或设置换购信息。 + /// + [Newtonsoft.Json.JsonProperty("tradein_info")] + [System.Text.Json.Serialization.JsonPropertyName("tradein_info")] + public Types.TradeIn? TradeIn { get; set; } + + /// + /// 获取或设置买赠券信息。 + /// + [Newtonsoft.Json.JsonProperty("buyget_info")] + [System.Text.Json.Serialization.JsonPropertyName("buyget_info")] + public Types.BuyGet? BuyGet { get; set; } + } + } + + /// + /// 获取或设置优惠条件信息。 + /// + [Newtonsoft.Json.JsonProperty("discount_condition")] + [System.Text.Json.Serialization.JsonPropertyName("discount_condition")] + public Types.DiscountCondidtion? DiscountCondidtion { get; set; } + + /// + /// 获取或设置满减金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("discount_fee")] + [System.Text.Json.Serialization.JsonPropertyName("discount_fee")] + public int? DiscountFee { get; set; } + + /// + /// 获取或设置折扣数值(范围:1000~10000)。 + /// + [Newtonsoft.Json.JsonProperty("discount_num")] + [System.Text.Json.Serialization.JsonPropertyName("discount_num")] + public int? DiscountNumber { get; set; } + } + + public class Promotion + { + public static class Types + { + public class Finder : ShopCouponAddRequest.Types.Coupon.Types.CouponDetail.Types.Promotion.Types.Finder + { + } + } + + /// + /// 获取或设置推广类型。 + /// + [Newtonsoft.Json.JsonProperty("promote_type")] + [System.Text.Json.Serialization.JsonPropertyName("promote_type")] + public int PromoteType { get; set; } + + /// + /// 获取或设置推广视频号信息。 + /// + [Newtonsoft.Json.JsonProperty("finder")] + [System.Text.Json.Serialization.JsonPropertyName("finder")] + public Types.Finder? Finder { get; set; } + } + + public class Reception : ShopCouponAddRequest.Types.Coupon.Types.CouponDetail.Types.Reception + { + } + + public class Validity : ShopCouponAddRequest.Types.Coupon.Types.CouponDetail.Types.Validity + { + } + } + + /// + /// 获取或设置优惠券名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; + + /// + /// 获取或设置优惠信息。 + /// + [Newtonsoft.Json.JsonProperty("discount_info")] + [System.Text.Json.Serialization.JsonPropertyName("discount_info")] + public Types.Discount Discount { get; set; } = new Types.Discount(); + + /// + /// 获取或设置推广信息。 + /// + [Newtonsoft.Json.JsonProperty("promote_info")] + [System.Text.Json.Serialization.JsonPropertyName("promote_info")] + public Types.Promotion? Promotion { get; set; } + + /// + /// 获取或设置接收信息。 + /// + [Newtonsoft.Json.JsonProperty("receive_info")] + [System.Text.Json.Serialization.JsonPropertyName("receive_info")] + public Types.Reception? Reception { get; set; } + + /// + /// 获取或设置有效期信息。 + /// + [Newtonsoft.Json.JsonProperty("valid_info")] + [System.Text.Json.Serialization.JsonPropertyName("valid_info")] + public Types.Validity Validity { get; set; } = new Types.Validity(); + } + } + + /// + /// 获取或设置商家侧优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_coupon_id")] + public string OutCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置优惠券类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public int Type { get; set; } + + /// + /// 获取或设置优惠券推广类型。 + /// + [Newtonsoft.Json.JsonProperty("promote_type")] + [System.Text.Json.Serialization.JsonPropertyName("promote_type")] + public int PromoteType { get; set; } + + /// + /// 获取或设置优惠券信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_info")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_info")] + public Types.CouponDetail CouponDetail { get; set; } = new Types.CouponDetail(); + } + } + + /// + /// 获取或设置优惠券信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon")] + [System.Text.Json.Serialization.JsonPropertyName("coupon")] + public Types.Coupon Coupon { get; set; } = new Types.Coupon(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateResponse.cs new file mode 100644 index 00000000..66e7f824 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/update 接口的响应。 + /// + public class ShopCouponUpdateResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateStatusRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateStatusRequest.cs new file mode 100644 index 00000000..22d22019 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateStatusRequest.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/update_status 接口的请求。 + /// + public class ShopCouponUpdateStatusRequest : WechatApiRequest + { + /// + /// 获取或设置商家侧优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_coupon_id")] + public string OutCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置优惠券状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateStatusResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateStatusResponse.cs new file mode 100644 index 00000000..dd4494d1 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/ShopCouponUpdateStatusResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/update_status 接口的响应。 + /// + public class ShopCouponUpdateStatusResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponRequest.cs new file mode 100644 index 00000000..7e081882 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponRequest.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/add_user_coupon 接口的请求。 + /// + public class ShopCouponAddUserCouponRequest : WechatApiRequest + { + public static class Types + { + public class UserCoupon + { + /// + /// 获取或设置商家侧用户优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_user_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_user_coupon_id")] + public string OutUserCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置商家侧优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_coupon_id")] + public string OutCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置用户优惠券状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + } + } + + /// + /// 获取或设置用户 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置优惠券库存信息。 + /// + [Newtonsoft.Json.JsonProperty("user_coupon")] + [System.Text.Json.Serialization.JsonPropertyName("user_coupon")] + public Types.UserCoupon UserCoupon { get; set; } = new Types.UserCoupon(); + + /// + /// 获取或设置领取时间戳。 + /// + [Newtonsoft.Json.JsonProperty("recv_time")] + [System.Text.Json.Serialization.JsonPropertyName("recv_time")] + public long ReceiveTimestamp { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponResponse.cs new file mode 100644 index 00000000..9ab9523d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/add_user_coupon 接口的响应。 + /// + public class ShopCouponAddUserCouponResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListRequest.cs new file mode 100644 index 00000000..204456c3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListRequest.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/get_usercoupon_list 接口的请求。 + /// + public class ShopCouponGetUserCouponListRequest : WechatApiRequest + { + /// + /// 获取或设置用户 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置分页起始位置。 + /// + [Newtonsoft.Json.JsonProperty("offset")] + [System.Text.Json.Serialization.JsonPropertyName("offset")] + public int Offset { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// + [Newtonsoft.Json.JsonProperty("page_size")] + [System.Text.Json.Serialization.JsonPropertyName("page_size")] + public int Limit { get; set; } = 10; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListResponse.cs new file mode 100644 index 00000000..876287ae --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListResponse.cs @@ -0,0 +1,107 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/get_usercoupon_list 接口的响应。 + /// + public class ShopCouponGetUserCouponListResponse : WechatApiResponse + { + public static class Types + { + public class Result + { + public static class Types + { + public class Extra + { + /// + /// 获取或设置用户优惠券核销时间戳。 + /// + [Newtonsoft.Json.JsonProperty("use_time")] + [System.Text.Json.Serialization.JsonPropertyName("use_time")] + public long? UseTimestamp { get; set; } + } + } + + /// + /// 获取或设置用户 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置商家侧用户优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_user_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_user_coupon_id")] + public string OutUserCouponId { get; set; } = default!; + + /// + /// 获取或设置商家侧优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_coupon_id")] + public string OutCouponId { get; set; } = default!; + + /// + /// 获取或设置状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + + /// + /// 获取或设置优惠券扩展信息。 + /// + [Newtonsoft.Json.JsonProperty("ext_info")] + [System.Text.Json.Serialization.JsonPropertyName("ext_info")] + public Types.Extra Extra { get; set; } = default!; + + /// + /// 获取或设置有效开始时间。 + /// + [Newtonsoft.Json.JsonProperty("start_time")] + [System.Text.Json.Serialization.JsonPropertyName("start_time")] + public long? StartTimestamp { get; set; } + + /// + /// 获取或设置有效结束时间。 + /// + [Newtonsoft.Json.JsonProperty("end_time")] + [System.Text.Json.Serialization.JsonPropertyName("end_time")] + public long? EndTimestamp { get; set; } + + /// + /// 获取或设置创建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + public long CreateTimestamp { get; set; } + + /// + /// 获取或设置更新时间戳。 + /// + [Newtonsoft.Json.JsonProperty("update_time")] + [System.Text.Json.Serialization.JsonPropertyName("update_time")] + public long UpdateTimestamp { get; set; } + } + } + + /// + /// 获取或设置返回结果。 + /// + [Newtonsoft.Json.JsonProperty("result_list")] + [System.Text.Json.Serialization.JsonPropertyName("result_list")] + public Types.Result[] ResultList { get; set; } = default!; + + /// + /// 获取或设置总数量。 + /// + [Newtonsoft.Json.JsonProperty("total_num")] + [System.Text.Json.Serialization.JsonPropertyName("total_num")] + public int TotalCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponRequest.cs new file mode 100644 index 00000000..09fe0208 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponRequest.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/update_user_coupon 接口的请求。 + /// + public class ShopCouponUpdateUserCouponRequest : WechatApiRequest + { + public static class Types + { + public class UserCoupon + { + public static class Types + { + public class Extra + { + /// + /// 获取或设置用户优惠券核销时间戳。 + /// + [Newtonsoft.Json.JsonProperty("use_time")] + [System.Text.Json.Serialization.JsonPropertyName("use_time")] + public long? UseTimestamp { get; set; } + } + } + + /// + /// 获取或设置商家侧用户优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_user_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_user_coupon_id")] + public string OutUserCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置商家侧优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_coupon_id")] + public string OutCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置优惠券扩展信息。 + /// + [Newtonsoft.Json.JsonProperty("ext_info")] + [System.Text.Json.Serialization.JsonPropertyName("ext_info")] + public Types.Extra Extra { get; set; } = new Types.Extra(); + } + } + + /// + /// 获取或设置用户 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置优惠券库存信息。 + /// + [Newtonsoft.Json.JsonProperty("user_coupon")] + [System.Text.Json.Serialization.JsonPropertyName("user_coupon")] + public Types.UserCoupon UserCoupon { get; set; } = new Types.UserCoupon(); + + /// + /// 获取或设置领取时间戳。 + /// + [Newtonsoft.Json.JsonProperty("recv_time")] + [System.Text.Json.Serialization.JsonPropertyName("recv_time")] + public long ReceiveTimestamp { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponResponse.cs new file mode 100644 index 00000000..add82af7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/update_user_coupon 接口的响应。 + /// + public class ShopCouponUpdateUserCouponResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusRequest.cs new file mode 100644 index 00000000..9da22101 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusRequest.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/update_usercoupon_status 接口的请求。 + /// + public class ShopCouponUpdateUserCouponStatusRequest : WechatApiRequest + { + /// + /// 获取或设置用户 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置商家侧用户优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_user_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_user_coupon_id")] + public string OutUserCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置商家侧优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("out_coupon_id")] + public string OutCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置用户优惠券状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusResponse.cs new file mode 100644 index 00000000..335a284b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/coupon/update_usercoupon_status 接口的响应。 + /// + public class ShopCouponUpdateUserCouponStatusResponse : WechatApiResponse + { + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponAddRequest.json new file mode 100644 index 00000000..e85fbb7c --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponAddRequest.json @@ -0,0 +1,50 @@ +{ + "coupon": { + "out_coupon_id": "coupon_id_1", + "type": 101, + "promote_type": 4, + "coupon_info": { + "name": "示例优惠券", + "promote_info": { + "promote_type": 4, + "finder": { + "nickname": "视频号昵称" + } + }, + "discount_info": { + "discount_condition": { + "product_cnt": 2, + "product_price": 5000, + "out_product_ids": [ + "product_id_3", + "product_id_4" + ], + "tradein_info": { + "out_product_id": "product_id_5", + "price": 10000 + }, + "buyget_info": { + "buy_out_product_id": "product_id_1", + "buy_product_cnt": 3, + "get_out_product_id": "product_id_2", + "get_product_cnt": 2131241242 + } + }, + "discount_num": 9800, + "discount_fee": 6400 + }, + "receive_info": { + "start_time": 1625451250, + "end_time": 1625454250, + "limit_num_one_person": 10, + "total_num": 100 + }, + "valid_info": { + "valid_type": 1, + "valid_day_num": 10, + "start_time": "1625451250", + "end_time": "1625464250" + } + } + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponAddResponse.json new file mode 100644 index 00000000..27dc7b40 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponAddResponse.json @@ -0,0 +1,3 @@ +{ + "errcode": 0 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetListRequest.json new file mode 100644 index 00000000..2beb41c6 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetListRequest.json @@ -0,0 +1,4 @@ +{ + "page_size": 3, + "offset": 2 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetListResponse.json new file mode 100644 index 00000000..cd6d8c3a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetListResponse.json @@ -0,0 +1,114 @@ +{ + "errcode": 0, + "total_num": 10, + "result_list": [ + { + "coupon": { + "out_coupon_id": "out_coupon_id_3", + "type": 101, + "promote_type": 4, + "coupon_info": { + "name": "测试3", + "promote_info": { + "promote_type": 4, + "finder": {} + }, + "receive_info": { + "total_num": 100 + } + }, + "status": 0, + "create_time": 1625218450, + "update_time": 1625238573 + }, + "coupon_stock": { + "out_coupon_id": "out_coupon_id_3", + "stock_info": { + "issued_num": 99, + "receive_num": 1 + }, + "create_time": 1625226181, + "update_time": 1625237877 + } + }, + { + "coupon": { + "out_coupon_id": "out_coupon_id_4", + "type": 101, + "promote_type": 4, + "coupon_info": { + "name": "测试4", + "promote_info": { + "promote_type": 4, + "finder": {} + }, + "receive_info": { + "total_num": 1000 + } + }, + "status": 1, + "create_time": 1625239595, + "update_time": 1625239595 + } + }, + { + "coupon": { + "out_coupon_id": "coupon_id_1", + "type": 101, + "promote_type": 4, + "coupon_info": { + "name": "示例优惠券", + "promote_info": { + "promote_type": 4, + "finder": { + "nickname": "视频号昵称" + } + }, + "discount_info": { + "discount_condition": { + "product_cnt": 2, + "product_price": 5000, + "out_product_ids": [ "product_id_3", "product_id_4" ], + "tradein_info": { + "out_product_id": "product_id_5", + "price": 10000 + }, + "buyget_info": { + "buy_out_product_id": "product_id_1", + "buy_product_cnt": 3, + "get_out_product_id": "product_id_2", + "get_product_cnt": 2131241242 + } + }, + "discount_num": 9800, + "discount_fee": 6400 + }, + "receive_info": { + "start_time": 1625451250, + "end_time": 1625454250, + "limit_num_one_person": 10, + "total_num": 100 + }, + "valid_info": { + "valid_type": 1, + "valid_day_num": 10, + "start_time": 1625451250, + "end_time": 1625464250 + } + }, + "status": 2, + "create_time": 1625454641, + "update_time": 1625473652 + }, + "coupon_stock": { + "out_coupon_id": "coupon_id_1", + "stock_info": { + "issued_num": 99, + "receive_num": 1 + }, + "create_time": 1625473652, + "update_time": 1625474308 + } + } + ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetRequest.json new file mode 100644 index 00000000..61a049a0 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetRequest.json @@ -0,0 +1,3 @@ +{ + "out_coupon_id": "out_coupon_id_1" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetResponse.json new file mode 100644 index 00000000..3f22c212 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponGetResponse.json @@ -0,0 +1,53 @@ +{ + "errcode": 0, + "result": { + "coupon": { + "out_coupon_id": "coupon_id_1", + "type": 101, + "promote_type": 4, + "coupon_info": { + "name": "示例优惠券", + "promote_info": { + "promote_type": 4, + "finder": { + "nickname": "视频号昵称" + } + }, + "discount_info": { + "discount_condition": { + "product_cnt": 2, + "product_price": 5000, + "out_product_ids": [ "product_id_3", "product_id_4" ], + "tradein_info": { + "out_product_id": "product_id_5", + "price": 10000 + }, + "buyget_info": { + "buy_out_product_id": "product_id_1", + "buy_product_cnt": 3, + "get_out_product_id": "product_id_2", + "get_product_cnt": 2131241242 + } + }, + "discount_num": 9800, + "discount_fee": 6400 + }, + "receive_info": { + "start_time": 1625451250, + "end_time": 1625454250, + "limit_num_one_person": 10, + "total_num": 100 + }, + "valid_info": { + "valid_type": 1, + "valid_day_num": 10, + "start_time": 1625451250, + "end_time": 1625464250 + } + }, + "status": 1, + "create_time": 1625454641, + "update_time": 1625454641 + } + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateCouponStockRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateCouponStockRequest.json new file mode 100644 index 00000000..92de6d5c --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateCouponStockRequest.json @@ -0,0 +1,9 @@ +{ + "coupon_stock": { + "out_coupon_id": "coupon_id_1", + "stock_info": { + "issued_num": 60, + "receive_num": 40 + } + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateCouponStockResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateCouponStockResponse.json new file mode 100644 index 00000000..27dc7b40 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateCouponStockResponse.json @@ -0,0 +1,3 @@ +{ + "errcode": 0 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateRequest.json new file mode 100644 index 00000000..63af756d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateRequest.json @@ -0,0 +1,47 @@ +{ + "coupon": { + "out_coupon_id": "coupon_id_1", + "type": 101, + "promote_type": 4, + "coupon_info": { + "name": "示例优惠券", + "promote_info": { + "promote_type": 4, + "finder": { + "nickname": "视频号昵称" + } + }, + "discount_info": { + "discount_condition": { + "product_cnt": 2, + "product_price": 5000, + "out_product_ids": [ "product_id_3", "product_id_4" ], + "tradein_info": { + "out_product_id": "product_id_5", + "price": 10000 + }, + "buyget_info": { + "buy_out_product_id": "product_id_1", + "buy_product_cnt": 3, + "get_out_product_id": "product_id_2", + "get_product_cnt": 2131241242 + } + }, + "discount_num": 9800, + "discount_fee": 6400 + }, + "receive_info": { + "start_time": 1625451250, + "end_time": 1625454250, + "limit_num_one_person": 10, + "total_num": 100 + }, + "valid_info": { + "valid_type": 1, + "valid_day_num": 10, + "start_time": 1625451250, + "end_time": 1625464250 + } + } + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateResponse.json new file mode 100644 index 00000000..27dc7b40 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateResponse.json @@ -0,0 +1,3 @@ +{ + "errcode": 0 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateStatusRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateStatusRequest.json new file mode 100644 index 00000000..2a703eac --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateStatusRequest.json @@ -0,0 +1,4 @@ +{ + "out_coupon_id": "12345678", + "status": 2 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateStatusResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateStatusResponse.json new file mode 100644 index 00000000..27dc7b40 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/ShopCouponUpdateStatusResponse.json @@ -0,0 +1,3 @@ +{ + "errcode": 0 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponRequest.json new file mode 100644 index 00000000..0ec15125 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponRequest.json @@ -0,0 +1,9 @@ +{ + "openid": "oIJ9d5Ad4JMhbybqJ3_J73LkR_Io", + "user_coupon": { + "out_user_coupon_id": "user_coupon_id_1", + "out_coupon_id": "coupon_id_1", + "status": 100 + }, + "recv_time": 1628147893 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponResponse.json new file mode 100644 index 00000000..27dc7b40 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponAddUserCouponResponse.json @@ -0,0 +1,3 @@ +{ + "errcode": 0 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListRequest.json new file mode 100644 index 00000000..f57d970c --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListRequest.json @@ -0,0 +1,5 @@ +{ + "page_size": 2, + "offset": 1, + "openid": "oIJ9d5Ad4JMhbybqJ3_J73LkR_Io" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListResponse.json new file mode 100644 index 00000000..8e478fab --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponGetUserCouponListResponse.json @@ -0,0 +1,30 @@ +{ + "errcode": 0, + "total_num": 3, + "result_list": [ + { + "out_user_coupon_id": "out_user_coupon_id_1", + "openid": "oIJ9d5Ad4JMhbybqJ3_J73LkR_Io", + "out_coupon_id": "coupon_id_1", + "status": 100, + "create_time": 1625474308, + "update_time": 1625474308, + "end_time": 1625464250, + "ext_info": {}, + "start_time": 1625451250 + }, + { + "out_user_coupon_id": "out_user_coupon_id_2", + "openid": "oIJ9d5Ad4JMhbybqJ3_J73LkR_Io", + "out_coupon_id": "out_coupon_id_3", + "status": 102, + "create_time": 1625237877, + "update_time": 1625237997, + "end_time": 0, + "ext_info": { + "use_time": 1625237997 + }, + "start_time": 0 + } + ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponRequest.json new file mode 100644 index 00000000..b7f7ffa2 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponRequest.json @@ -0,0 +1,11 @@ +{ + "openid": "oIJ9d5Ad4JMhbybqJ3_J73LkR_Io", + "user_coupon": { + "out_user_coupon_id": "out_user_coupon_id_1", + "out_coupon_id": "out_coupon_id_3", + "ext_info": { + "use_time": 1628139497 + } + }, + "recv_time": 1628147893 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponResponse.json new file mode 100644 index 00000000..27dc7b40 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponResponse.json @@ -0,0 +1,3 @@ +{ + "errcode": 0 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusRequest.json new file mode 100644 index 00000000..1661631b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusRequest.json @@ -0,0 +1,6 @@ +{ + "openid": "oIJ9d5Ad4JMhbybqJ3_J73LkR_Io", + "out_coupon_id": "coupon_id_1", + "out_user_coupon_id": "user_coupon_id_1", + "status": 102 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusResponse.json new file mode 100644 index 00000000..27dc7b40 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Coupon/UserCoupon/ShopCouponUpdateUserCouponStatusResponse.json @@ -0,0 +1,3 @@ +{ + "errcode": 0 +} \ No newline at end of file