From 46fc9ae69f311ad517351be3af27d5d77031ec17 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Tue, 12 Apr 2022 11:43:00 +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=E7=BA=A0?= =?UTF-8?q?=E7=BA=B7=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 | 72 ++++++++- .../Models/Card/CardCreateRequest.cs | 4 +- .../Models/Card/CardUpdateRequest.cs | 2 +- .../CgibinMenu/CgibinMenuGetResponse.cs | 2 +- ...MessageWxopenTemplateUniformSendRequest.cs | 1 - .../Complaint/ShopComplaintGetListRequest.cs | 64 ++++++++ .../Complaint/ShopComplaintGetListResponse.cs | 105 ++++++++++++ .../Shop/Complaint/ShopComplaintGetRequest.cs | 15 ++ .../Complaint/ShopComplaintGetResponse.cs | 150 ++++++++++++++++++ .../ShopComplaintUploadMaterialRequest.cs | 44 +++++ .../ShopComplaintUploadMaterialResponse.cs | 9 ++ .../Shop/Funds/ShopFundsGetBalanceResponse.cs | 6 +- .../Funds/ShopFundsGetOrderFlowResponse.cs | 2 +- .../ShopFundsGetWithdrawDetailResponse.cs | 2 +- .../ShopFundsSubmitWithdrawRequest.cs | 2 +- .../ShopComplaintGetListRequest.json | 7 + .../ShopComplaintGetListResponse.json | 20 +++ .../Complaint/ShopComplaintGetRequest.json | 3 + .../Complaint/ShopComplaintGetResponse.json | 36 +++++ .../ShopComplaintUploadMaterialRequest.json | 7 + 20 files changed, 536 insertions(+), 17 deletions(-) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetListRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetListResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintUploadMaterialRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintUploadMaterialResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetListRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetListResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintUploadMaterialRequest.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs index c899b5d3..c36f8838 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs @@ -1231,7 +1231,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion - + #region Funds /// /// 异步调用 [POST] /shop/funds/scanorderflow 接口。 @@ -1352,7 +1352,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } - + /// /// 异步调用 [POST] /shop/funds/setbankaccount 接口。 /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/setbankaccount.html @@ -1392,7 +1392,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } - + /// /// 异步调用 [POST] /shop/funds/qrcode/gen 接口。 /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/qrcode/gen.html @@ -1412,7 +1412,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } - + /// /// 异步调用 [POST] /shop/funds/qrcode/get 接口。 /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/qrcode/get.html @@ -1432,7 +1432,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } - + /// /// 异步调用 [POST] /shop/funds/qrcode/check 接口。 /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/qrcode/check.html @@ -1453,5 +1453,67 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion + + #region Complaint + /// + /// 异步调用 [POST] /shop/complaint/get_list 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/complaint/complaint_get_list.html + /// + /// + /// + /// + /// + public static async Task ExecuteShopComplaintGetListAsync(this WechatApiClient client, Models.ShopComplaintGetListRequest 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", "complaint", "get_list") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /shop/complaint/get 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/complaint/complaint_get.html + /// + /// + /// + /// + /// + public static async Task ExecuteShopComplaintGetAsync(this WechatApiClient client, Models.ShopComplaintGetRequest 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", "complaint", "get") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /shop/complaint/upload_material 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/complaint/upload_material.html + /// + /// + /// + /// + /// + public static async Task ExecuteShopComplaintUploadMaterialAsync(this WechatApiClient client, Models.ShopComplaintUploadMaterialRequest 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", "complaint", "upload_material") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Card/CardCreateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Card/CardCreateRequest.cs index 0513e897..19e713ac 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Card/CardCreateRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Card/CardCreateRequest.cs @@ -743,7 +743,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models { public class Base : GrouponCard.Types.Base { - public new static class Types + public static new class Types { public class GiftCard { @@ -885,7 +885,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models { public class Base : GrouponCard.Types.Base { - public new static class Types + public static new class Types { public class Payment { diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Card/CardUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Card/CardUpdateRequest.cs index 347d9a7d..57fb48a1 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Card/CardUpdateRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Card/CardUpdateRequest.cs @@ -449,7 +449,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models { public class Base : GrouponCard.Types.Base { - public new static class Types + public static new class Types { public class Payment { diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMenu/CgibinMenuGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMenu/CgibinMenuGetResponse.cs index 24916d3a..414b24bf 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMenu/CgibinMenuGetResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMenu/CgibinMenuGetResponse.cs @@ -97,7 +97,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models public class ConditionalMenu : Menu { - public new static class Types + public static new class Types { public class MatchRule { diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageWxopen/CgibinMessageWxopenTemplateUniformSendRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageWxopen/CgibinMessageWxopenTemplateUniformSendRequest.cs index e0d925db..34ad59fa 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageWxopen/CgibinMessageWxopenTemplateUniformSendRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageWxopen/CgibinMessageWxopenTemplateUniformSendRequest.cs @@ -1,4 +1,3 @@ -using System; using System.Collections.Generic; namespace SKIT.FlurlHttpClient.Wechat.Api.Models diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetListRequest.cs new file mode 100644 index 00000000..58b3c089 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetListRequest.cs @@ -0,0 +1,64 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/complaint/get_list 接口的请求。 + /// + public class ShopComplaintGetListRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置纠纷单状态。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public int? State { get; set; } + + /// + /// 获取或设置纠纷单类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public int? Type { get; set; } + + /// + /// 获取或设置申请时间开始时间戳。 + /// + [Newtonsoft.Json.JsonProperty("begin_create_time")] + [System.Text.Json.Serialization.JsonPropertyName("begin_create_time")] + public long? BeginCreateTimestamp { get; set; } + + /// + /// 获取或设置申请时间截止时间戳。 + /// + [Newtonsoft.Json.JsonProperty("end_create_time")] + [System.Text.Json.Serialization.JsonPropertyName("end_create_time")] + public long? EndCreateTimestamp { get; set; } + + /// + /// 获取或设置关联订单号。 + /// + [Newtonsoft.Json.JsonProperty("order_id")] + [System.Text.Json.Serialization.JsonPropertyName("order_id")] + public long? OrderId { get; set; } + + /// + /// 获取或设置关联售后单号。 + /// + [Newtonsoft.Json.JsonProperty("after_sale_order_id")] + [System.Text.Json.Serialization.JsonPropertyName("after_sale_order_id")] + public long? AftersaleOrderId { get; set; } + + /// + /// 获取或设置分页起始位置。 + /// + [Newtonsoft.Json.JsonProperty("offset")] + [System.Text.Json.Serialization.JsonPropertyName("offset")] + public int Offset { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int Limit { get; set; } = 10; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetListResponse.cs new file mode 100644 index 00000000..f63e2361 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetListResponse.cs @@ -0,0 +1,105 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/complaint/get_list 接口的响应。 + /// + public class ShopComplaintGetListResponse : WechatApiResponse + { + public static class Types + { + public class ComplaintOrder + { + /// + /// 获取或设置关联订单 ID。 + /// + [Newtonsoft.Json.JsonProperty("order_id")] + [System.Text.Json.Serialization.JsonPropertyName("order_id")] + public long OrderId { get; set; } + + /// + /// 获取或设置关联售后单号。 + /// + [Newtonsoft.Json.JsonProperty("after_sale_order_id")] + [System.Text.Json.Serialization.JsonPropertyName("after_sale_order_id")] + public long AftersaleOrderId { get; set; } + + /// + /// 获取或设置纠纷单 ID。 + /// + [Newtonsoft.Json.JsonProperty("complaint_order_id")] + [System.Text.Json.Serialization.JsonPropertyName("complaint_order_id")] + public long ComplaintOrderId { get; set; } + + /// + /// 获取或设置用户 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置用户电话号码。 + /// + [Newtonsoft.Json.JsonProperty("phone_number")] + [System.Text.Json.Serialization.JsonPropertyName("phone_number")] + public string PhoneNumber { get; set; } = default!; + + /// + /// 获取或设置状态。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public int State { get; set; } + + /// + /// 获取或设置类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public int Type { 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("expired_time")] + [System.Text.Json.Serialization.JsonPropertyName("expired_time")] + public long ExpireTimestamp { get; set; } + + /// + /// 获取或设置判责结果。 + /// + [Newtonsoft.Json.JsonProperty("judge_result")] + [System.Text.Json.Serialization.JsonPropertyName("judge_result")] + public int JudgeResult { get; set; } + } + } + + /// + /// 获取或设置售后单列表。 + /// + [Newtonsoft.Json.JsonProperty("orders")] + [System.Text.Json.Serialization.JsonPropertyName("orders")] + public Types.ComplaintOrder[] ComplaintList { get; set; } = default!; + + /// + /// 获取或设置售后单总数量。 + /// + [Newtonsoft.Json.JsonProperty("total")] + [System.Text.Json.Serialization.JsonPropertyName("total")] + public int TotalCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetRequest.cs new file mode 100644 index 00000000..687b2bc1 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/complaint/get 接口的请求。 + /// + public class ShopComplaintGetRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置纠纷单 ID。 + /// + [Newtonsoft.Json.JsonProperty("complaint_order_id")] + [System.Text.Json.Serialization.JsonPropertyName("complaint_order_id")] + public long ComplaintOrderId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetResponse.cs new file mode 100644 index 00000000..14d3aa17 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintGetResponse.cs @@ -0,0 +1,150 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/complaint/get 接口的响应。 + /// + public class ShopComplaintGetResponse : WechatApiResponse + { + public static class Types + { + public class ComplaintOrder : ShopComplaintGetListResponse.Types.ComplaintOrder + { + } + + public class ComplaintFlowList + { + /// + /// 获取或设置流程列表。 + /// + [Newtonsoft.Json.JsonProperty("list")] + [System.Text.Json.Serialization.JsonPropertyName("list")] + public ComplaintFlowItem[] Items { get; set; } = default!; + } + + public class ComplaintFlowItem + { + public static class Types + { + public class Material + { + /// + /// 获取或设置文本信息。 + /// + [Newtonsoft.Json.JsonProperty("content")] + [System.Text.Json.Serialization.JsonPropertyName("content")] + public string Content { get; set; } = default!; + + /// + /// 获取或设置图片 URL 列表。 + /// + [Newtonsoft.Json.JsonProperty("media_url_list")] + [System.Text.Json.Serialization.JsonPropertyName("media_url_list")] + public string[] MediaUrlList { get; set; } = default!; + } + + public class OpenPlatformRecord + { + /// + /// 获取或设置状态。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public int State { get; set; } + + /// + /// 获取或设置状态描述。 + /// + [Newtonsoft.Json.JsonProperty("state_describe")] + [System.Text.Json.Serialization.JsonPropertyName("state_describe")] + public string StateDescription { get; set; } = default!; + + /// + /// 获取或设置处理事件。 + /// + [Newtonsoft.Json.JsonProperty("event")] + [System.Text.Json.Serialization.JsonPropertyName("event")] + public int Event { get; set; } + + /// + /// 获取或设置处理事件描述。 + /// + [Newtonsoft.Json.JsonProperty("event_describe")] + [System.Text.Json.Serialization.JsonPropertyName("event_describe")] + public string EventDescription { get; set; } = default!; + + /// + /// 获取或设置时间戳。 + /// + [Newtonsoft.Json.JsonProperty("time")] + [System.Text.Json.Serialization.JsonPropertyName("time")] + public long Timestamp { get; set; } + + /// + /// 获取或设置凭证信息。 + /// + [Newtonsoft.Json.JsonProperty("material_info")] + [System.Text.Json.Serialization.JsonPropertyName("material_info")] + public Material? Material { get; set; } + } + + public class UserRecord : OpenPlatformRecord + { + + } + + public class MerchantRecord : OpenPlatformRecord + { + /// + /// 获取或设置处理人员昵称。 + /// + [Newtonsoft.Json.JsonProperty("operator_nickname")] + [System.Text.Json.Serialization.JsonPropertyName("operator_nickname")] + public string OperatorNickname { get; set; } = default!; + } + } + + /// + /// 获取或设置操作对象类型。 + /// + [Newtonsoft.Json.JsonProperty("object")] + [System.Text.Json.Serialization.JsonPropertyName("object")] + public int ObjectType { get; set; } + + /// + /// 获取或设置平台操作记录。 + /// + [Newtonsoft.Json.JsonProperty("op_record")] + [System.Text.Json.Serialization.JsonPropertyName("op_record")] + public Types.OpenPlatformRecord? OpenPlatformRecord { get; set; } + + /// + /// 获取或设置用户操作记录。 + /// + [Newtonsoft.Json.JsonProperty("user_record")] + [System.Text.Json.Serialization.JsonPropertyName("user_record")] + public Types.UserRecord? UserRecord { get; set; } + + /// + /// 获取或设置商家操作记录。 + /// + [Newtonsoft.Json.JsonProperty("merchant_record")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_record")] + public Types.MerchantRecord? MerchantRecord { get; set; } + } + } + + /// + /// 获取或设置纠纷单信息。 + /// + [Newtonsoft.Json.JsonProperty("order")] + [System.Text.Json.Serialization.JsonPropertyName("order")] + public Types.ComplaintOrder ComplaintOrder { get; set; } = default!; + + /// + /// 获取或设置纠纷流程列表。 + /// + [Newtonsoft.Json.JsonProperty("flow_info")] + [System.Text.Json.Serialization.JsonPropertyName("flow_info")] + public Types.ComplaintFlowList ComplaintFlowList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintUploadMaterialRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintUploadMaterialRequest.cs new file mode 100644 index 00000000..ebf5a676 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintUploadMaterialRequest.cs @@ -0,0 +1,44 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/complaint/upload_material 接口的请求。 + /// + public class ShopComplaintUploadMaterialRequest : WechatApiRequest, IInferable + { + public static class Types + { + public class Material + { + /// + /// 获取或设置文本信息。 + /// + [Newtonsoft.Json.JsonProperty("content")] + [System.Text.Json.Serialization.JsonPropertyName("content")] + public string Content { get; set; } = string.Empty; + + /// + /// 获取或设置图片 URL 列表。 + /// + [Newtonsoft.Json.JsonProperty("media_url_list")] + [System.Text.Json.Serialization.JsonPropertyName("media_url_list")] + public IList MediaUrlList { get; set; } = new List(); + } + } + + /// + /// 获取或设置纠纷单号。 + /// + [Newtonsoft.Json.JsonProperty("complaint_order_id")] + [System.Text.Json.Serialization.JsonPropertyName("complaint_order_id")] + public long ComplaintOrderId { get; set; } + + /// + /// 获取或设置凭证信息。 + /// + [Newtonsoft.Json.JsonProperty("material_info")] + [System.Text.Json.Serialization.JsonPropertyName("material_info")] + public Types.Material Material { get; set; } = new Types.Material(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintUploadMaterialResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintUploadMaterialResponse.cs new file mode 100644 index 00000000..800bbc95 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Complaint/ShopComplaintUploadMaterialResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/complaint/upload_material 接口的响应。 + /// + public class ShopComplaintUploadMaterialResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/ShopFundsGetBalanceResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/ShopFundsGetBalanceResponse.cs index 764192fd..1ebd68dc 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/ShopFundsGetBalanceResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/ShopFundsGetBalanceResponse.cs @@ -1,6 +1,4 @@ -using System; - -namespace SKIT.FlurlHttpClient.Wechat.Api.Models +namespace SKIT.FlurlHttpClient.Wechat.Api.Models { /// /// 表示 [POST] /shop/funds/getbalance 接口的响应。 @@ -24,7 +22,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models [Newtonsoft.Json.JsonProperty("pending_amount")] [System.Text.Json.Serialization.JsonPropertyName("pending_amount")] public int PendingAmount { get; set; } - } + } } /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/ShopFundsGetOrderFlowResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/ShopFundsGetOrderFlowResponse.cs index 22392116..e9d5ca05 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/ShopFundsGetOrderFlowResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/ShopFundsGetOrderFlowResponse.cs @@ -70,7 +70,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models [System.Text.Json.Serialization.JsonPropertyName("bookkeeping_time")] [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RegularDateTimeOffsetConverter))] public DateTimeOffset BookKeepingTIme { get; set; } - } + } } /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/Withdraw/ShopFundsGetWithdrawDetailResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/Withdraw/ShopFundsGetWithdrawDetailResponse.cs index 28a45321..94f9f2d3 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/Withdraw/ShopFundsGetWithdrawDetailResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/Withdraw/ShopFundsGetWithdrawDetailResponse.cs @@ -15,7 +15,7 @@ [Newtonsoft.Json.JsonProperty("amount")] [System.Text.Json.Serialization.JsonPropertyName("amount")] public int Amount { get; set; } - + /// /// 获取或设置提现备注。 /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/Withdraw/ShopFundsSubmitWithdrawRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/Withdraw/ShopFundsSubmitWithdrawRequest.cs index 04140917..bec1c38a 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/Withdraw/ShopFundsSubmitWithdrawRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Funds/Withdraw/ShopFundsSubmitWithdrawRequest.cs @@ -11,7 +11,7 @@ [Newtonsoft.Json.JsonProperty("amount")] [System.Text.Json.Serialization.JsonPropertyName("amount")] public int Amount { get; set; } - + /// /// 获取或设置提现备注。 /// diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetListRequest.json new file mode 100644 index 00000000..3f6bbc96 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetListRequest.json @@ -0,0 +1,7 @@ +{ + "state": 2, + "begin_create_time": 1641280180, + "end_create_time": 1641280180, + "offset": 0, + "limit": 10 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetListResponse.json new file mode 100644 index 00000000..11c1916b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetListResponse.json @@ -0,0 +1,20 @@ +{ + "errcode": 0, + "errmsg": "ok", + "orders": [ + { + "after_sale_order_id": 123, + "complaint_order_id": 123, + "create_time": 1647431667, + "expired_time": 0, + "judge_result": 8, + "openid": "abcef", + "order_id": "123", + "phone_number": "12345678912", + "state": 230014, + "type": 7, + "update_time": 1647431879 + } + ], + "total": 1 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetRequest.json new file mode 100644 index 00000000..e353bbdf --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetRequest.json @@ -0,0 +1,3 @@ +{ + "complaint_order_id": 123 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetResponse.json new file mode 100644 index 00000000..256d01b7 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintGetResponse.json @@ -0,0 +1,36 @@ +{ + "errcode": 0, + "errmsg": "ok", + "flow_info": { + "list": [ + { + "user_record": { + "event": 240001, + "event_describe": "用户发起投诉", + "material_info": { + "content": "测试", + "media_url_list": [ + "url" + ] + }, + "state": 230000, + "state_describe": "商家售后处理中", + "time": "1647431667908" + } + } + ] + }, + "order": { + "after_sale_order_id": 123, + "complaint_order_id": 123, + "create_time": 1647431667, + "expired_time": 0, + "judge_result": 8, + "openid": "abcef", + "order_id": "123", + "phone_number": "12345678912", + "state": 230001, + "type": 7, + "update_time": 1647431879 + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintUploadMaterialRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintUploadMaterialRequest.json new file mode 100644 index 00000000..4e3c5d76 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Complaint/ShopComplaintUploadMaterialRequest.json @@ -0,0 +1,7 @@ +{ + "complaint_order_id": 123, + "material_info": { + "content": "说明一下", + "media_url_list": [ "xx", "xx" ] + } +} \ No newline at end of file