diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs index 4f06addb..92853d1a 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs @@ -1409,5 +1409,112 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion + + #region ProductAlbum + /// + /// 异步调用 [POST] /cgi-bin/externalcontact/add_product_album 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/95096 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/95131 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinExternalContactAddProductAlbumAsync(this WechatWorkClient client, Models.CgibinExternalContactAddProductAlbumRequest 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, "cgi-bin", "externalcontact", "add_product_album") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/externalcontact/get_product_album_list 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/95096 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/95131 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinExternalContactGetProductAlbumListAsync(this WechatWorkClient client, Models.CgibinExternalContactGetProductAlbumListRequest 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, "cgi-bin", "externalcontact", "get_product_album_list") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/externalcontact/get_product_album 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/95096 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/95131 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinExternalContactGetProductAlbumAsync(this WechatWorkClient client, Models.CgibinExternalContactGetProductAlbumRequest 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, "cgi-bin", "externalcontact", "get_product_album") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/externalcontact/update_product_album 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/95096 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/95131 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinExternalContactUpdateProductAlbumAsync(this WechatWorkClient client, Models.CgibinExternalContactUpdateProductAlbumRequest 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, "cgi-bin", "externalcontact", "update_product_album") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/externalcontact/delete_product_album 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/95096 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/95131 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinExternalContactDeleteProductAlbumAsync(this WechatWorkClient client, Models.CgibinExternalContactDeleteProductAlbumRequest 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, "cgi-bin", "externalcontact", "delete_product_album") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMediaExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMediaExtensions.cs index 55974a6d..eab74b23 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMediaExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMediaExtensions.cs @@ -153,7 +153,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Work IFlurlRequest flurlReq = client .CreateRequest(request, HttpMethod.Post, "cgi-bin", "media", "upload_attachment") .SetQueryParam("access_token", request.AccessToken) - .SetQueryParam("type", request.Type); + .SetQueryParam("media_type", request.Type) + .SetQueryParam("attachment_type", request.AttachmentType); string boundary = "--BOUNDARY--" + DateTimeOffset.Now.Ticks.ToString("x"); using var fileContent = new ByteArrayContent(request.FileBytes ?? new byte[0]); diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactAddProductAlbumRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactAddProductAlbumRequest.cs new file mode 100644 index 00000000..964f26a4 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactAddProductAlbumRequest.cs @@ -0,0 +1,71 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/add_product_album 接口的请求。 + /// + public class CgibinExternalContactAddProductAlbumRequest : WechatWorkRequest + { + public static class Types + { + public class Attachment + { + public static class Types + { + public class Image + { + /// + /// 获取或设置图片 MediaId。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + public string MediaId { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置附件类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get; set; } = string.Empty; + + /// + /// 获取或设置图片附件信息。 + /// + [Newtonsoft.Json.JsonProperty("image")] + [System.Text.Json.Serialization.JsonPropertyName("image")] + public Types.Image? Image { get; set; } + } + } + + /// + /// 获取或设置商品描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置商品价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("price")] + [System.Text.Json.Serialization.JsonPropertyName("price")] + public int Price { get; set; } + + /// + /// 获取或设置商品编码。 + /// + [Newtonsoft.Json.JsonProperty("product_sn")] + [System.Text.Json.Serialization.JsonPropertyName("product_sn")] + public string? SerialNumber { get; set; } + + /// + /// 获取或设置商品附件列表。 + /// + [Newtonsoft.Json.JsonProperty("attachments")] + [System.Text.Json.Serialization.JsonPropertyName("attachments")] + public IList? AttachmentList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactAddProductAlbumResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactAddProductAlbumResponse.cs new file mode 100644 index 00000000..447a8463 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactAddProductAlbumResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/add_product_album 接口的响应。 + /// + public class CgibinExternalContactAddProductAlbumResponse : WechatWorkResponse + { + /// + /// 获取或设置商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_id")] + public string ProductId { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactDeleteProductAlbumRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactDeleteProductAlbumRequest.cs new file mode 100644 index 00000000..07c91fa0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactDeleteProductAlbumRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/delete_product_album 接口的请求。 + /// + public class CgibinExternalContactDeleteProductAlbumRequest : WechatWorkRequest + { + /// + /// 获取或设置商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_id")] + public string ProductId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactDeleteProductAlbumResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactDeleteProductAlbumResponse.cs new file mode 100644 index 00000000..05a1a06e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactDeleteProductAlbumResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/delete_product_album 接口的响应。 + /// + public class CgibinExternalContactDeleteProductAlbumResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumListRequest.cs new file mode 100644 index 00000000..3abcb02d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumListRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/get_product_album_list 接口的请求。 + /// + public class CgibinExternalContactGetProductAlbumListRequest : WechatWorkRequest + { + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("cursor")] + [System.Text.Json.Serialization.JsonPropertyName("cursor")] + public string? NextCursor { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int? Limit { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumListResponse.cs new file mode 100644 index 00000000..43031272 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumListResponse.cs @@ -0,0 +1,96 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/get_product_album_list 接口的响应。 + /// + public class CgibinExternalContactGetProductAlbumListResponse : WechatWorkResponse + { + public static class Types + { + public class Product + { + public static class Types + { + public class Attachment + { + public static class Types + { + public class Image + { + /// + /// 获取或设置图片 MediaId。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + public string MediaId { get; set; } = default!; + } + } + + /// + /// 获取或设置附件类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get; set; } = default!; + + /// + /// 获取或设置图片附件信息。 + /// + [Newtonsoft.Json.JsonProperty("image")] + [System.Text.Json.Serialization.JsonPropertyName("image")] + public Types.Image? Image { get; set; } + } + } + + /// + /// 获取或设置商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_id")] + public string ProductId { get; set; } = default!; + + /// + /// 获取或设置商品描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = default!; + + /// + /// 获取或设置商品价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("price")] + [System.Text.Json.Serialization.JsonPropertyName("price")] + public int Price { get; set; } + + /// + /// 获取或设置商品编码。 + /// + [Newtonsoft.Json.JsonProperty("product_sn")] + [System.Text.Json.Serialization.JsonPropertyName("product_sn")] + public string? SerialNumber { get; set; } + + /// + /// 获取或设置商品附件列表。 + /// + [Newtonsoft.Json.JsonProperty("attachments")] + [System.Text.Json.Serialization.JsonPropertyName("attachments")] + public Types.Attachment[]? AttachmentList { get; set; } + } + } + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("next_cursor")] + [System.Text.Json.Serialization.JsonPropertyName("next_cursor")] + public string? NextCursor { get; set; } + + /// + /// 获取或设置商品列表。 + /// + [Newtonsoft.Json.JsonProperty("product_list")] + [System.Text.Json.Serialization.JsonPropertyName("product_list")] + public Types.Product[] ProductList { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumRequest.cs new file mode 100644 index 00000000..7b51f3eb --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/get_product_album 接口的请求。 + /// + public class CgibinExternalContactGetProductAlbumRequest : WechatWorkRequest + { + /// + /// 获取或设置商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_id")] + public string ProductId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumResponse.cs new file mode 100644 index 00000000..cf2f1672 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumResponse.cs @@ -0,0 +1,28 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/get_product_album 接口的响应。 + /// + public class CgibinExternalContactGetProductAlbumResponse : WechatWorkResponse + { + public static class Types + { + public class Product : CgibinExternalContactGetProductAlbumListResponse.Types.Product + { + /// + /// 获取或设置创建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + public long CreateTimetamp { get; set; } + } + } + + /// + /// 获取或设置商品信息。 + /// + [Newtonsoft.Json.JsonProperty("product")] + [System.Text.Json.Serialization.JsonPropertyName("product")] + public Types.Product Product { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactUpdateProductAlbumRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactUpdateProductAlbumRequest.cs new file mode 100644 index 00000000..60dc9092 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactUpdateProductAlbumRequest.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/update_product_album 接口的请求。 + /// + public class CgibinExternalContactUpdateProductAlbumRequest : WechatWorkRequest + { + public static class Types + { + public class Attachment : CgibinExternalContactAddProductAlbumRequest.Types.Attachment + { + } + } + + /// + /// 获取或设置商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_id")] + public string ProductId { get; set; } = string.Empty; + + /// + /// 获取或设置商品描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置商品价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("price")] + [System.Text.Json.Serialization.JsonPropertyName("price")] + public int Price { get; set; } + + /// + /// 获取或设置商品编码。 + /// + [Newtonsoft.Json.JsonProperty("product_sn")] + [System.Text.Json.Serialization.JsonPropertyName("product_sn")] + public string? SerialNumber { get; set; } + + /// + /// 获取或设置商品附件列表。 + /// + [Newtonsoft.Json.JsonProperty("attachments")] + [System.Text.Json.Serialization.JsonPropertyName("attachments")] + public IList? AttachmentList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactUpdateProductAlbumResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactUpdateProductAlbumResponse.cs new file mode 100644 index 00000000..617ea35f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ProductAlbum/CgibinExternalContactUpdateProductAlbumResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/update_product_album 接口的响应。 + /// + public class CgibinExternalContactUpdateProductAlbumResponse : WechatWorkResponse + { + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactAddProductAlbumRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactAddProductAlbumRequest.json new file mode 100644 index 00000000..b527e82c --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactAddProductAlbumRequest.json @@ -0,0 +1,13 @@ +{ + "description": "世界上最好的商品", + "price": 30000, + "product_sn": "xxxxxxxx", + "attachments": [ + { + "type": "image", + "image": { + "media_id": "MEDIA_ID" + } + } + ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactAddProductAlbumResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactAddProductAlbumResponse.json new file mode 100644 index 00000000..8ebceb45 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactAddProductAlbumResponse.json @@ -0,0 +1,5 @@ +{ + "errcode": 0, + "errmsg": "ok", + "product_id": "xxxxxxxxxx" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactDeleteProductAlbumRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactDeleteProductAlbumRequest.json new file mode 100644 index 00000000..67f6a20d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactDeleteProductAlbumRequest.json @@ -0,0 +1,3 @@ +{ + "product_id": "xxxxxxxxxx" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactDeleteProductAlbumResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactDeleteProductAlbumResponse.json new file mode 100644 index 00000000..f752befe --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactDeleteProductAlbumResponse.json @@ -0,0 +1,4 @@ +{ + "errcode": 0, + "errmsg": "ok" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumListRequest.json new file mode 100644 index 00000000..677d4bf1 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumListRequest.json @@ -0,0 +1,4 @@ +{ + "limit": 50, + "cursor": "CURSOR" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumListResponse.json new file mode 100644 index 00000000..315493f6 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumListResponse.json @@ -0,0 +1,21 @@ +{ + "errcode": 0, + "errmsg": "ok", + "next_cursor": "CURSOR", + "product_list": [ + { + "product_id": "xxxxxxxxxx", + "description": "世界上最好的商品", + "price": 30000, + "product_sn": "xxxxxxxx", + "attachments": [ + { + "type": "image", + "image": { + "media_id": "MEDIA_ID" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumRequest.json new file mode 100644 index 00000000..67f6a20d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumRequest.json @@ -0,0 +1,3 @@ +{ + "product_id": "xxxxxxxxxx" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumResponse.json new file mode 100644 index 00000000..6af7d0ef --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactGetProductAlbumResponse.json @@ -0,0 +1,19 @@ +{ + "errcode": 0, + "errmsg": "ok", + "product": { + "product_id": "xxxxxxxxxx", + "description": "世界上最好的商品", + "price": 30000, + "create_time": 1600000000, + "product_sn": "xxxxxxxx", + "attachments": [ + { + "type": "image", + "image": { + "media_id": "MEDIA_ID" + } + } + ] + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactUpdateProductAlbumRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactUpdateProductAlbumRequest.json new file mode 100644 index 00000000..6816da03 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactUpdateProductAlbumRequest.json @@ -0,0 +1,14 @@ +{ + "product_id": "xxxxxxxxxx", + "description": "世界上最好的商品", + "price": 30000, + "product_sn": "xxxxxx", + "attachments": [ + { + "type": "image", + "image": { + "media_id": "MEDIA_ID" + } + } + ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactUpdateProductAlbumResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactUpdateProductAlbumResponse.json new file mode 100644 index 00000000..f752befe --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ProductAlbum/CgibinExternalContactUpdateProductAlbumResponse.json @@ -0,0 +1,4 @@ +{ + "errcode": 0, + "errmsg": "ok" +} \ No newline at end of file