feat(work): 新增企业邮箱业务邮箱相关接口

This commit is contained in:
Fu Diwei
2022-03-14 16:49:50 +08:00
parent 5608151f1d
commit ca042d5fd3
25 changed files with 529 additions and 15 deletions

View File

@@ -115,5 +115,111 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestWithJsonAsync<Models.CgibinExmailGroupGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region PublicMail
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/exmail/publicmail/create 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/95511 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinExmailPublicMailCreateResponse> ExecuteCgibinExmailPublicMailCreateAsync(this WechatWorkClient client, Models.CgibinExmailPublicMailCreateRequest 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", "exmail", "publicmail", "create")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinExmailPublicMailCreateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/exmail/publicmail/update 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/95511 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinExmailPublicMailUpdateResponse> ExecuteCgibinExmailPublicMailUpdateAsync(this WechatWorkClient client, Models.CgibinExmailPublicMailUpdateRequest 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", "exmail", "publicmail", "update")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinExmailPublicMailUpdateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/exmail/publicmail/delete 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/95511 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinExmailPublicMailDeleteResponse> ExecuteCgibinExmailPublicMailDeleteAsync(this WechatWorkClient client, Models.CgibinExmailPublicMailDeleteRequest 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", "exmail", "publicmail", "delete")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinExmailPublicMailDeleteResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/exmail/publicmail/search 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/95510 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinExmailPublicMailSearchResponse> ExecuteCgibinExmailPublicMailSearchAsync(this WechatWorkClient client, Models.CgibinExmailPublicMailSearchRequest 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.Get, "cgi-bin", "exmail", "publicmail", "search")
.SetQueryParam("access_token", request.AccessToken)
.SetQueryParam("fuzzy", request.IsFuzzy ? 1 : 0);
if (request.EmailOrName != null)
flurlReq.SetQueryParam("email", request.EmailOrName);
return await client.SendRequestWithJsonAsync<Models.CgibinExmailPublicMailSearchResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/exmail/publicmail/get 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/95510 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinExmailPublicMailGetResponse> ExecuteCgibinExmailPublicMailGetAsync(this WechatWorkClient client, Models.CgibinExmailPublicMailGetRequest 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", "exmail", "publicmail", "get")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinExmailPublicMailGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
}
}

View File

@@ -100,7 +100,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
public int? AllowType { get; set; }
/// <summary>
/// 获取或设置使用权限
/// 获取或设置使用的邮箱列表
/// </summary>
[Newtonsoft.Json.JsonProperty("allow_emaillist")]
[System.Text.Json.Serialization.JsonPropertyName("allow_emaillist")]

View File

@@ -98,7 +98,7 @@
public int AllowType { get; set; }
/// <summary>
/// 获取或设置使用权限
/// 获取或设置使用的邮箱列表
/// </summary>
[Newtonsoft.Json.JsonProperty("allow_emaillist")]
[System.Text.Json.Serialization.JsonPropertyName("allow_emaillist")]

View File

@@ -10,7 +10,7 @@
public class EmailGroup
{
/// <summary>
/// 获取或设置邮件群组ID。
/// 获取或设置邮件群组 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("groupid")]
[System.Text.Json.Serialization.JsonPropertyName("groupid")]
@@ -31,12 +31,5 @@
[Newtonsoft.Json.JsonProperty("groups")]
[System.Text.Json.Serialization.JsonPropertyName("groups")]
public Types.EmailGroup[] EmailGroupList { get; set; } = default!;
/// <summary>
/// 获取或设置返回条数。
/// </summary>
[Newtonsoft.Json.JsonProperty("count")]
[System.Text.Json.Serialization.JsonPropertyName("count")]
public int Count { get; set; }
}
}

View File

@@ -1,6 +1,4 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/exmail/group/update 接口的请求。</para>
@@ -76,7 +74,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
public int? AllowType { get; set; }
/// <summary>
/// 获取或设置使用权限
/// 获取或设置使用的邮箱列表
/// </summary>
[Newtonsoft.Json.JsonProperty("allow_emaillist")]
[System.Text.Json.Serialization.JsonPropertyName("allow_emaillist")]

View File

@@ -0,0 +1,66 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/exmail/publicmail/create 接口的请求。</para>
/// </summary>
public class CgibinExmailPublicMailCreateRequest : WechatWorkRequest
{
public static class Types
{
public class UserIdList
{
/// <summary>
/// 获取或设置成员账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("list")]
[System.Text.Json.Serialization.JsonPropertyName("list")]
public IList<string> Items { get; set; } = new List<string>();
}
public class TagIdList : CgibinExmailGroupCreateRequest.Types.TagIdList
{
}
public class DepartmentIdList : CgibinExmailGroupCreateRequest.Types.DepartmentIdList
{
}
}
/// <summary>
/// 获取或设置业务邮箱。
/// </summary>
[Newtonsoft.Json.JsonProperty("email")]
[System.Text.Json.Serialization.JsonPropertyName("email")]
public string Email { get; set; } = string.Empty;
/// <summary>
/// 获取或设置业务邮箱名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 获取或设置允许使用的成员账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("userid_list")]
[System.Text.Json.Serialization.JsonPropertyName("userid_list")]
public Types.UserIdList? AllowUserIdList { get; set; }
/// <summary>
/// 获取或设置允许使用的标签 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("tag_list")]
[System.Text.Json.Serialization.JsonPropertyName("tag_list")]
public Types.TagIdList? AllowTagIdList { get; set; }
/// <summary>
/// 获取或设置允许使用的部门 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("department_list")]
[System.Text.Json.Serialization.JsonPropertyName("department_list")]
public Types.DepartmentIdList? AllowDepartmentIdList { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/exmail/publicmail/create 接口的响应。</para>
/// </summary>
public class CgibinExmailPublicMailCreateResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置业务邮箱 ID
/// </summary>
[Newtonsoft.Json.JsonProperty("id")]
[System.Text.Json.Serialization.JsonPropertyName("id")]
public int Id { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/exmail/publicmail/delete 接口的请求。</para>
/// </summary>
public class CgibinExmailPublicMailDeleteRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置业务邮箱 ID
/// </summary>
[Newtonsoft.Json.JsonProperty("id")]
[System.Text.Json.Serialization.JsonPropertyName("id")]
public int Id { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/exmail/publicmail/delete 接口的响应。</para>
/// </summary>
public class CgibinExmailPublicMailDeleteResponse : WechatWorkResponse
{
}
}

View File

@@ -0,0 +1,17 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/exmail/publicmail/get 接口的请求。</para>
/// </summary>
public class CgibinExmailPublicMailGetRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置业务邮箱 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("id_list")]
[System.Text.Json.Serialization.JsonPropertyName("id_list")]
public IList<int> IdList { get; set; } = new List<int>();
}
}

View File

@@ -0,0 +1,84 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/exmail/publicmail/get 接口的响应。</para>
/// </summary>
public class CgibinExmailPublicMailGetResponse : WechatWorkResponse
{
public static class Types
{
public class Mail
{
public static class Types
{
public class UserIdList
{
/// <summary>
/// 获取或设置成员账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("list")]
[System.Text.Json.Serialization.JsonPropertyName("list")]
public string[] Items { get; set; } = default!;
}
public class TagIdList : CgibinExmailGroupGetResponse.Types.TagIdList
{
}
public class DepartmentIdList : CgibinExmailGroupGetResponse.Types.DepartmentIdList
{
}
}
/// <summary>
/// 获取或设置业务邮箱 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("id")]
[System.Text.Json.Serialization.JsonPropertyName("id")]
public int Id { get; set; }
/// <summary>
/// 获取或设置业务邮箱地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("email")]
[System.Text.Json.Serialization.JsonPropertyName("email")]
public string Email { get; set; } = default!;
/// <summary>
/// 获取或设置业务邮箱名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string Name { get; set; } = default!;
/// <summary>
/// 获取或设置允许使用的成员账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("userid_list")]
[System.Text.Json.Serialization.JsonPropertyName("userid_list")]
public Types.UserIdList? AllowUserIdList { get; set; }
/// <summary>
/// 获取或设置允许使用的标签 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("tag_list")]
[System.Text.Json.Serialization.JsonPropertyName("tag_list")]
public Types.TagIdList? AllowTagIdList { get; set; }
/// <summary>
/// 获取或设置允许使用的部门 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("department_list")]
[System.Text.Json.Serialization.JsonPropertyName("department_list")]
public Types.DepartmentIdList? AllowDepartmentIdList { get; set; }
}
}
/// <summary>
/// 获取或设置业务邮箱列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("list")]
[System.Text.Json.Serialization.JsonPropertyName("list")]
public Types.Mail[] MailList { get; set; } = default!;
}
}

View File

@@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/exmail/publicmail/search 接口的请求。</para>
/// </summary>
public class CgibinExmailPublicMailSearchRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置是否开启模糊搜索。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public bool IsFuzzy { get; set; }
/// <summary>
/// 获取或设置业务邮箱或名称。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string? EmailOrName { get; set; }
}
}

View File

@@ -0,0 +1,42 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/exmail/publicmail/search 接口的响应。</para>
/// </summary>
public class CgibinExmailPublicMailSearchResponse : WechatWorkResponse
{
public static class Types
{
public class Mail
{
/// <summary>
/// 获取或设置业务邮箱 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("id")]
[System.Text.Json.Serialization.JsonPropertyName("id")]
public int Id { get; set; }
/// <summary>
/// 获取或设置业务邮箱地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("email")]
[System.Text.Json.Serialization.JsonPropertyName("email")]
public string Email { get; set; } = default!;
/// <summary>
/// 获取或设置业务邮箱名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string Name { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置业务邮箱列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("list")]
[System.Text.Json.Serialization.JsonPropertyName("list")]
public Types.Mail[] MailList { get; set; } = default!;
}
}

View File

@@ -0,0 +1,58 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/exmail/publicmail/update 接口的请求。</para>
/// </summary>
public class CgibinExmailPublicMailUpdateRequest : WechatWorkRequest
{
public static class Types
{
public class UserIdList : CgibinExmailPublicMailCreateRequest.Types.UserIdList
{
}
public class TagIdList : CgibinExmailPublicMailCreateRequest.Types.TagIdList
{
}
public class DepartmentIdList : CgibinExmailPublicMailCreateRequest.Types.DepartmentIdList
{
}
}
/// <summary>
/// 获取或设置业务邮箱 ID
/// </summary>
[Newtonsoft.Json.JsonProperty("id")]
[System.Text.Json.Serialization.JsonPropertyName("id")]
public int Id { get; set; }
/// <summary>
/// 获取或设置业务邮箱名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string? Name { get; set; }
/// <summary>
/// 获取或设置允许使用的成员账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("userid_list")]
[System.Text.Json.Serialization.JsonPropertyName("userid_list")]
public Types.UserIdList? AllowUserIdList { get; set; }
/// <summary>
/// 获取或设置允许使用的标签 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("tag_list")]
[System.Text.Json.Serialization.JsonPropertyName("tag_list")]
public Types.TagIdList? AllowTagIdList { get; set; }
/// <summary>
/// 获取或设置允许使用的部门 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("department_list")]
[System.Text.Json.Serialization.JsonPropertyName("department_list")]
public Types.DepartmentIdList? AllowDepartmentIdList { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/exmail/publicmail/update 接口的响应。</para>
/// </summary>
public class CgibinExmailPublicMailUpdateResponse : WechatWorkResponse
{
}
}

View File

@@ -1,7 +1,6 @@
{
"errcode": 0,
"errmsg": "ok",
"count": 2,
"groups": [
{
"groupid": "g_all@gzdev.com",

View File

@@ -0,0 +1,13 @@
{
"email": "apitest@gzdev.com",
"name": "apitest",
"userid_list": {
"list": ["apitest1", "apitest2"]
},
"department_list": {
"list": [1, 2]
},
"tag_list": {
"list": [1, 2]
}
}

View File

@@ -0,0 +1,5 @@
{
"errcode": 0,
"errmsg": "ok",
"id": 1
}

View File

@@ -0,0 +1,20 @@
{
"errcode": 0,
"errmsg": "ok",
"list": [
{
"id": 1,
"email": "apitest3@gzdev.com",
"name": "测试",
"userid_list": {
"list": ["member", "member2"]
},
"department_list": {
"list": [1, 2]
},
"tag_list": {
"list": [1, 2]
}
}
]
}

View File

@@ -0,0 +1,16 @@
{
"errcode": 0,
"errmsg": "ok",
"list": [
{
"id": 11,
"email": "apitest3@gzdev.com",
"name": "apitest3"
},
{
"id": 12,
"email": "apitest4@gzdev.com",
"name": "apitest4"
}
]
}

View File

@@ -0,0 +1,13 @@
{
"id": 1,
"name": "apitest",
"userid_list": {
"list": ["apitest1", "apitest2"]
},
"department_list": {
"list": [1, 2]
},
"tag_list": {
"list": [1, 2]
}
}