feat(wxads): 新增广告帐号模块相关 API 封装

This commit is contained in:
Fu Diwei
2021-06-11 21:20:02 +08:00
parent c414de558b
commit f21930a2c0
9 changed files with 342 additions and 1 deletions

View File

@@ -0,0 +1,74 @@
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Flurl;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.Wechat.Ads
{
public static class WechatAdsClientExecuteAdvertiserExtensions
{
/// <summary>
/// <para>异步调用 [POST] /advertiser/add 接口。</para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.AdvertiserAddResponse> ExecuteAdvertiserAddAsync(this WechatAdsClient client, Models.AdvertiserAddRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(HttpMethod.Post, "advertiser", "add")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.AdvertiserAddResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /advertiser/update 接口。</para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.AdvertiserUpdateResponse> ExecuteAdvertiserUpdateAsync(this WechatAdsClient client, Models.AdvertiserUpdateRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(HttpMethod.Post, "advertiser", "update")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.AdvertiserUpdateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /advertiser/get 接口。</para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.AdvertiserGetResponse> ExecuteAdvertiserGetAsync(this WechatAdsClient client, Models.AdvertiserGetRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(HttpMethod.Get, "advertiser", "get")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestAsync<Models.AdvertiserGetResponse>(flurlReq, cancellationToken: cancellationToken);
}
}
}

View File

@@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Ads.Models
{
/// <summary>
/// <para>表示 [POST] /advertiser/add 接口的请求。</para>
/// </summary>
public class AdvertiserAddRequest : WechatAdsRequest
{
/// <summary>
/// 获取或设置行业 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("system_industry_id")]
[System.Text.Json.Serialization.JsonPropertyName("system_industry_id")]
public int IndustryId { get; set; }
/// <summary>
/// 获取或设置联系人姓名。
/// </summary>
[Newtonsoft.Json.JsonProperty("contact_person")]
[System.Text.Json.Serialization.JsonPropertyName("contact_person")]
public string ContactPerson { get; set; } = string.Empty;
/// <summary>
/// 获取或设置联系人电话号码。
/// </summary>
[Newtonsoft.Json.JsonProperty("contact_person_telephone")]
[System.Text.Json.Serialization.JsonPropertyName("contact_person_telephone")]
public string ContactTeleNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置经营性质类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("business_type")]
[System.Text.Json.Serialization.JsonPropertyName("business_type")]
public string? BusinessType { get; set; }
/// <summary>
/// 获取或设置经营内容。
/// </summary>
[Newtonsoft.Json.JsonProperty("business_content")]
[System.Text.Json.Serialization.JsonPropertyName("business_content")]
public string? BusinessContent { get; set; }
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Ads.Models
{
/// <summary>
/// <para>表示 [POST] /advertiser/add 接口的响应。</para>
/// </summary>
public class AdvertiserAddResponse : WechatAdsResponse
{
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Ads.Models
{
/// <summary>
/// <para>表示 [GET] /advertiser/get 接口的请求。</para>
/// </summary>
public class AdvertiserGetRequest : WechatAdsRequest
{
}
}

View File

@@ -0,0 +1,73 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Ads.Models
{
/// <summary>
/// <para>表示 [GET] /advertiser/get 接口的响应。</para>
/// </summary>
public class AdvertiserGetResponse : WechatAdsResponse
{
public static class Types
{
public class Data
{
/// <summary>
/// 获取或设置公众号名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("wechat_account_name")]
[System.Text.Json.Serialization.JsonPropertyName("wechat_account_name")]
public string WechatAccountNickname { get; set; } = default!;
/// <summary>
/// 获取或设置系统状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("system_status")]
[System.Text.Json.Serialization.JsonPropertyName("system_status")]
public string SystemStatus { get; set; } = default!;
/// <summary>
/// 获取或设置行业 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("industry_id")]
[System.Text.Json.Serialization.JsonPropertyName("industry_id")]
public int IndustryId { get; set; }
/// <summary>
/// 获取或设置联系人姓名。
/// </summary>
[Newtonsoft.Json.JsonProperty("contact_person")]
[System.Text.Json.Serialization.JsonPropertyName("contact_person")]
public string ContactPerson { get; set; } = default!;
/// <summary>
/// 获取或设置联系人电话号码。
/// </summary>
[Newtonsoft.Json.JsonProperty("contact_person_telephone")]
[System.Text.Json.Serialization.JsonPropertyName("contact_person_telephone")]
public string ContactTeleNumber { get; set; } = default!;
/// <summary>
/// 获取或设置经营性质类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("business_type")]
[System.Text.Json.Serialization.JsonPropertyName("business_type")]
public string? BusinessType { get; set; }
/// <summary>
/// 获取或设置经营内容。
/// </summary>
[Newtonsoft.Json.JsonProperty("business_content")]
[System.Text.Json.Serialization.JsonPropertyName("business_content")]
public string? BusinessContent { get; set; }
}
}
/// <summary>
/// 获取或设置返回数据。
/// </summary>
[Newtonsoft.Json.JsonProperty("data")]
[System.Text.Json.Serialization.JsonPropertyName("data")]
public Types.Data Data { get; set; } = default!;
}
}

View File

@@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Ads.Models
{
/// <summary>
/// <para>表示 [POST] /advertiser/update 接口的请求。</para>
/// </summary>
public class AdvertiserUpdateRequest : WechatAdsRequest
{
/// <summary>
/// 获取或设置行业 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("system_industry_id")]
[System.Text.Json.Serialization.JsonPropertyName("system_industry_id")]
public int? IndustryId { get; set; }
/// <summary>
/// 获取或设置联系人姓名。
/// </summary>
[Newtonsoft.Json.JsonProperty("contact_person")]
[System.Text.Json.Serialization.JsonPropertyName("contact_person")]
public string? ContactPerson { get; set; }
/// <summary>
/// 获取或设置联系人电话号码。
/// </summary>
[Newtonsoft.Json.JsonProperty("contact_person_telephone")]
[System.Text.Json.Serialization.JsonPropertyName("contact_person_telephone")]
public string? ContactTeleNumber { get; set; }
/// <summary>
/// 获取或设置经营性质类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("business_type")]
[System.Text.Json.Serialization.JsonPropertyName("business_type")]
public string? BusinessType { get; set; }
/// <summary>
/// 获取或设置经营内容。
/// </summary>
[Newtonsoft.Json.JsonProperty("business_content")]
[System.Text.Json.Serialization.JsonPropertyName("business_content")]
public string? BusinessContent { get; set; }
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Ads.Models
{
/// <summary>
/// <para>表示 [POST] /advertiser/update 接口的响应。</para>
/// </summary>
public class AdvertiserUpdateResponse : WechatAdsResponse
{
}
}

View File

@@ -10,6 +10,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads
/// <summary>
/// 主域名(默认)。
/// </summary>
public const string DEFAULT = "https://api.weixin.qq.com";
public const string DEFAULT = "https://api.weixin.qq.com/marketing";
}
}