feat(work): 新增高级功能申请审批相关接口

This commit is contained in:
Fu Diwei
2024-06-01 15:43:01 +08:00
parent 5ef5fad1a2
commit 4809c8fe31
17 changed files with 520 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Events
{
/// <summary>
/// <para>表示 EVENT.finish_vip_account_approval 事件的数据。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/99877 ]]>
/// </para>
/// </summary>
public class FinishVipAccountApprovalEvent : WechatWorkEvent
{
/// <summary>
/// 获取或设置应用 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("AgentID")]
[System.Text.Json.Serialization.JsonPropertyName("AgentID")]
[System.Xml.Serialization.XmlElement("AgentID")]
public int AgentId { get; set; }
/// <summary>
/// 获取或设置状态改变类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("FinishType")]
[System.Text.Json.Serialization.JsonPropertyName("FinishType")]
[System.Xml.Serialization.XmlElement("FinishType")]
public int FinishType { get; set; }
/// <summary>
/// 获取或设置申请 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("ApplyId")]
[System.Text.Json.Serialization.JsonPropertyName("ApplyId")]
[System.Xml.Serialization.XmlElement("ApplyId")]
public string ApplyId { get; set; } = default!;
}
}

View File

@@ -0,0 +1,44 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Events
{
/// <summary>
/// <para>表示 EVENT.submit_vip_account_approval 事件的数据。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/99876 ]]>
/// </para>
/// </summary>
public class SubmitVipAccountApprovalEvent : WechatWorkEvent
{
/// <summary>
/// 获取或设置应用 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("AgentID")]
[System.Text.Json.Serialization.JsonPropertyName("AgentID")]
[System.Xml.Serialization.XmlElement("AgentID")]
public int AgentId { get; set; }
/// <summary>
/// 获取或设置申请的高级账号类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("BusinessType")]
[System.Text.Json.Serialization.JsonPropertyName("BusinessType")]
[System.Xml.Serialization.XmlElement("BusinessType")]
public int BusinessType { get; set; }
/// <summary>
/// 获取或设置申请 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("ApplyId")]
[System.Text.Json.Serialization.JsonPropertyName("ApplyId")]
[System.Xml.Serialization.XmlElement("ApplyId")]
public string ApplyId { get; set; } = default!;
/// <summary>
/// 获取或设置申请原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("ApplyReason")]
[System.Text.Json.Serialization.JsonPropertyName("ApplyReason")]
[System.Xml.Serialization.XmlElement("ApplyReason")]
public string ApplyReason { get; set; } = default!;
}
}

View File

@@ -0,0 +1,81 @@
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.Wechat.Work
{
public static class WechatWorkClientExecuteCgibinAdvancedFeatureExtensions
{
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/advanced_feature/set_approval_detail 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/99880 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinAdvancedFeatureSetApprovalDetailResponse> ExecuteCgibinAdvancedFeatureSetApprovalDetailAsync(this WechatWorkClient client, Models.CgibinAdvancedFeatureSetApprovalDetailRequest 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
.CreateFlurlRequest(request, HttpMethod.Post, "cgi-bin", "advanced_feature", "set_approval_detail")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.CgibinAdvancedFeatureSetApprovalDetailResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/advanced_feature/get_apply_id_list 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/99883 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinAdvancedFeatureGetApplyIdListResponse> ExecuteCgibinAdvancedFeatureGetApplyIdListAsync(this WechatWorkClient client, Models.CgibinAdvancedFeatureGetApplyIdListRequest 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
.CreateFlurlRequest(request, HttpMethod.Post, "cgi-bin", "advanced_feature", "get_apply_id_list")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.CgibinAdvancedFeatureGetApplyIdListResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/advanced_feature/get_approval_info 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/99885 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinAdvancedFeatureGetApprovalInfoResponse> ExecuteCgibinAdvancedFeatureGetApprovalInfoAsync(this WechatWorkClient client, Models.CgibinAdvancedFeatureGetApprovalInfoRequest 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
.CreateFlurlRequest(request, HttpMethod.Post, "cgi-bin", "advanced_feature", "get_approval_info")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.CgibinAdvancedFeatureGetApprovalInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}

View File

@@ -0,0 +1,43 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_feature/get_apply_id_list 接口的请求。</para>
/// </summary>
public class CgibinAdvancedFeatureGetApplyIdListRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置申请的高级账号类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("business_type")]
[System.Text.Json.Serialization.JsonPropertyName("business_type")]
public int BusinessType { get; set; }
/// <summary>
/// 获取或设置申请的成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("userid")]
[System.Text.Json.Serialization.JsonPropertyName("userid")]
public string UserId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置申请类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("req_type")]
[System.Text.Json.Serialization.JsonPropertyName("req_type")]
public int? RequestType { get; set; }
/// <summary>
/// 获取或设置分页游标。
/// </summary>
[Newtonsoft.Json.JsonProperty("cursor")]
[System.Text.Json.Serialization.JsonPropertyName("cursor")]
public string? Cursor { get; set; }
/// <summary>
/// 获取或设置分页每页数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("limit")]
[System.Text.Json.Serialization.JsonPropertyName("limit")]
public int? Limit { get; set; }
}
}

View File

@@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_feature/get_apply_id_list 接口的响应。</para>
/// </summary>
public class CgibinAdvancedFeatureGetApplyIdListResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置申请 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("apply_id_list")]
[System.Text.Json.Serialization.JsonPropertyName("apply_id_list")]
public string[] ApplyIdList { get; set; } = default!;
/// <summary>
/// 获取或设置分页游标。
/// </summary>
[Newtonsoft.Json.JsonProperty("next_cursor")]
[System.Text.Json.Serialization.JsonPropertyName("next_cursor")]
public string? NextCursor { get; set; }
/// <summary>
/// 获取或设置是否还有更多数据。
/// </summary>
[Newtonsoft.Json.JsonProperty("has_more")]
[System.Text.Json.Serialization.JsonPropertyName("has_more")]
public bool HasMore { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_feature/get_approval_info 接口的请求。</para>
/// </summary>
public class CgibinAdvancedFeatureGetApprovalInfoRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置申请 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("apply_id")]
[System.Text.Json.Serialization.JsonPropertyName("apply_id")]
public string ApplyId { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,84 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_feature/get_approval_info 接口的响应。</para>
/// </summary>
public class CgibinAdvancedFeatureGetApprovalInfoResponse : WechatWorkResponse
{
public static class Types
{
public class Approval
{
/// <summary>
/// 获取或设置申请的高级账号类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("business_type")]
[System.Text.Json.Serialization.JsonPropertyName("business_type")]
public int BusinessType { get; set; }
/// <summary>
/// 获取或设置申请 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("apply_id")]
[System.Text.Json.Serialization.JsonPropertyName("apply_id")]
public string ApplyId { get; set; } = default!;
/// <summary>
/// 获取或设置审批 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("approval_id")]
[System.Text.Json.Serialization.JsonPropertyName("approval_id")]
public string ApprovalId { get; set; } = default!;
/// <summary>
/// 获取或设置审批类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("approval_type")]
[System.Text.Json.Serialization.JsonPropertyName("approval_type")]
public int ApprovalType { get; set; }
/// <summary>
/// 获取或设置审批单状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("approval_status")]
[System.Text.Json.Serialization.JsonPropertyName("approval_status")]
public int ApprovalStatus { get; set; }
/// <summary>
/// 获取或设置审批跳转链接。
/// </summary>
[Newtonsoft.Json.JsonProperty("approval_url")]
[System.Text.Json.Serialization.JsonPropertyName("approval_url")]
public string ApprovalUrl { get; set; } = default!;
/// <summary>
/// 获取或设置申请人成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("applicant")]
[System.Text.Json.Serialization.JsonPropertyName("applicant")]
public string ApplicantUserId { get; set; } = default!;
/// <summary>
/// 获取或设置申请原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("request_reason")]
[System.Text.Json.Serialization.JsonPropertyName("request_reason")]
public string ApplyReason { get; set; } = default!;
/// <summary>
/// 获取或设置创建时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("create_time")]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
public long CreateTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置审批信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("approval_info")]
[System.Text.Json.Serialization.JsonPropertyName("approval_info")]
public Types.Approval Approval { get; set; } = default!;
}
}

View File

@@ -0,0 +1,99 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_feature/set_approval_detail 接口的请求。</para>
/// </summary>
public class CgibinAdvancedFeatureSetApprovalDetailRequest : WechatWorkRequest
{
public static class Types
{
public class Process
{
public static class Types
{
public class Node
{
/// <summary>
/// 获取或设置审批节点状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("node_apv_status")]
[System.Text.Json.Serialization.JsonPropertyName("node_apv_status")]
public int NodeApproveStatus { get; set; }
/// <summary>
/// 获取或设置多人审批方式。
/// </summary>
[Newtonsoft.Json.JsonProperty("node_apv_rel")]
[System.Text.Json.Serialization.JsonPropertyName("node_apv_rel")]
public int NodeApproversRelation { get; set; }
/// <summary>
/// 获取或设置待处理人成员账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("current_approvers")]
[System.Text.Json.Serialization.JsonPropertyName("current_approvers")]
public IList<string>? CurrentApproversUserIdList { get; set; }
/// <summary>
/// 获取或设置已处理人成员账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("completed_approvers")]
[System.Text.Json.Serialization.JsonPropertyName("completed_approvers")]
public IList<string>? CompletedApproversUserIdList { get; set; }
/// <summary>
/// 获取或设置更新时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("apv_update_time")]
[System.Text.Json.Serialization.JsonPropertyName("apv_update_time")]
public long UpdateTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置节点列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("node_list")]
[System.Text.Json.Serialization.JsonPropertyName("node_list")]
public IList<Types.Node> NodeList { get; set; } = new List<Types.Node>();
}
}
/// <summary>
/// 获取或设置申请 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("apply_id")]
[System.Text.Json.Serialization.JsonPropertyName("apply_id")]
public string ApplyId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置审批 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("approval_id")]
[System.Text.Json.Serialization.JsonPropertyName("approval_id")]
public string ApprovalId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置审批单状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("approval_status")]
[System.Text.Json.Serialization.JsonPropertyName("approval_status")]
public int ApprovalStatus { get; set; }
/// <summary>
/// 获取或设置审批跳转链接。
/// </summary>
[Newtonsoft.Json.JsonProperty("approval_url")]
[System.Text.Json.Serialization.JsonPropertyName("approval_url")]
public string ApprovalUrl { get; set; } = string.Empty;
/// <summary>
/// 获取或设置审批流程信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("process_list")]
[System.Text.Json.Serialization.JsonPropertyName("process_list")]
public Types.Process Process { get; set; } = new Types.Process();
}
}

View File

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