diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinOAExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinOAExtensions.cs
index 5a58ebc8..832f41e7 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinOAExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinOAExtensions.cs
@@ -10,47 +10,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
public static class WechatWorkClientExecuteCgibinOAExtensions
{
#region Approval
- ///
- /// 异步调用 [POST] /cgi-bin/oa/approval/copytemplate 接口。
- /// REF: https://developer.work.weixin.qq.com/document/path/92630
- ///
- ///
- ///
- ///
- ///
- public static async Task ExecuteCgibinOAApprovalCopyTemplateAsync(this WechatWorkClient client, Models.CgibinOAApprovalCopyTemplateRequest 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", "oa", "approval", "copytemplate")
- .SetQueryParam("access_token", request.AccessToken);
-
- return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
- }
-
- ///
- /// 异步调用 [POST] /cgi-bin/oa/gettemplatedetail 接口。
- /// REF: https://developer.work.weixin.qq.com/document/path/91982
- /// REF: https://developer.work.weixin.qq.com/document/path/92631
- ///
- ///
- ///
- ///
- ///
- public static async Task ExecuteCgibinOAGetTemplateDetailAsync(this WechatWorkClient client, Models.CgibinOAGetTemplateDetailRequest 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", "oa", "gettemplatedetail")
- .SetQueryParam("access_token", request.AccessToken);
-
- return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
- }
-
///
/// 异步调用 [POST] /cgi-bin/oa/applyevent 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/91853
@@ -113,6 +72,87 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/oa/approval/copytemplate 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/92630
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinOAApprovalCopyTemplateAsync(this WechatWorkClient client, Models.CgibinOAApprovalCopyTemplateRequest 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", "oa", "approval", "copytemplate")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/oa/gettemplatedetail 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/91982
+ /// REF: https://developer.work.weixin.qq.com/document/path/92631
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinOAGetTemplateDetailAsync(this WechatWorkClient client, Models.CgibinOAGetTemplateDetailRequest 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", "oa", "gettemplatedetail")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/oa/approval/create_template 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/97437
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinOAApprovalCreateTemplateAsync(this WechatWorkClient client, Models.CgibinOAApprovalCreateTemplateRequest 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", "oa", "approval", "create_template")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/oa/approval/update_template 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/97438
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinOAApprovalUpdateTemplateAsync(this WechatWorkClient client, Models.CgibinOAApprovalUpdateTemplateRequest 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", "oa", "approval", "update_template")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
#endregion
#region Vacation
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinCheckin/CgibinCheckinGetCheckinDayDataResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinCheckin/CgibinCheckinGetCheckinDayDataResponse.cs
index f21f0e14..08fd8c42 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinCheckin/CgibinCheckinGetCheckinDayDataResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinCheckin/CgibinCheckinGetCheckinDayDataResponse.cs
@@ -173,7 +173,7 @@
{
public static class Types
{
- public class MultiLangText : CgibinOAGetTemplateDetailResponse.Types.MultiLangText
+ public class MultiLangText : CgibinOAApplyEventRequest.Types.MultiLangText
{
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAApprovalCopyTemplateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalCopyTemplateRequest.cs
similarity index 100%
rename from src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAApprovalCopyTemplateRequest.cs
rename to src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalCopyTemplateRequest.cs
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAApprovalCopyTemplateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalCopyTemplateResponse.cs
similarity index 100%
rename from src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAApprovalCopyTemplateResponse.cs
rename to src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalCopyTemplateResponse.cs
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalCreateTemplateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalCreateTemplateRequest.cs
new file mode 100644
index 00000000..3c536f50
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalCreateTemplateRequest.cs
@@ -0,0 +1,292 @@
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/oa/approval/create_template 接口的请求。
+ ///
+ public class CgibinOAApprovalCreateTemplateRequest : WechatWorkRequest
+ {
+ public static class Types
+ {
+ public class MultiLangText : CgibinOAApplyEventRequest.Types.MultiLangText
+ {
+ }
+
+ public class TemplateContent
+ {
+ public static class Types
+ {
+ public class Control
+ {
+ public static class Types
+ {
+ public class Property
+ {
+ ///
+ /// 获取或设置控件类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("control")]
+ [System.Text.Json.Serialization.JsonPropertyName("control")]
+ public string Control { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置控件 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("id")]
+ [System.Text.Json.Serialization.JsonPropertyName("id")]
+ public string ControlId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置控件名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("title")]
+ [System.Text.Json.Serialization.JsonPropertyName("title")]
+ public IList? Title { get; set; }
+
+ ///
+ /// 获取或设置控件说明。
+ ///
+ [Newtonsoft.Json.JsonProperty("placeholder")]
+ [System.Text.Json.Serialization.JsonPropertyName("placeholder")]
+ public IList? Placeholder { get; set; }
+
+ ///
+ /// 获取或设置是否为必填项。
+ ///
+ [Newtonsoft.Json.JsonProperty("require")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalNullableBooleanConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("require")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalNullableBooleanConverter))]
+ public bool? IsRequired { get; set; }
+
+ ///
+ /// 获取或设置是否不可打印。
+ ///
+ [Newtonsoft.Json.JsonProperty("un_print")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("un_print")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
+ public bool IsUnprintable { get; set; }
+ }
+
+ public class Config
+ {
+ ///
+ /// 获取或设置 Date 控件配置信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("date")]
+ [System.Text.Json.Serialization.JsonPropertyName("date")]
+ public DateControlConfig? Date { get; set; }
+
+ ///
+ /// 获取或设置 Selector 控件配置信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("selector")]
+ [System.Text.Json.Serialization.JsonPropertyName("selector")]
+ public SelectorControlConfig? Selector { get; set; }
+
+ ///
+ /// 获取或设置 Contact 控件配置信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("contact")]
+ [System.Text.Json.Serialization.JsonPropertyName("contact")]
+ public ContactControlConfig? Contact { get; set; }
+
+ ///
+ /// 获取或设置 Table 控件配置信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("table")]
+ [System.Text.Json.Serialization.JsonPropertyName("table")]
+ public TableControlConfig? Table { get; set; }
+
+ ///
+ /// 获取或设置 Attendance 控件配置信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("attendance")]
+ [System.Text.Json.Serialization.JsonPropertyName("attendance")]
+ public AttendanceControlConfig? Attendance { get; set; }
+
+ ///
+ /// 获取或设置 Vacation 控件配置信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("vacation_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("vacation_list")]
+ public VacationControlConfig? Vacation { get; set; }
+ }
+
+ public class DateControlConfig
+ {
+ ///
+ /// 获取或设置时间展示类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("type")]
+ [System.Text.Json.Serialization.JsonPropertyName("type")]
+ public string Type { get; set; } = string.Empty;
+ }
+
+ public class SelectorControlConfig
+ {
+ public static class Types
+ {
+ public class Option
+ {
+ ///
+ /// 获取或设置选项 Key。
+ ///
+ [Newtonsoft.Json.JsonProperty("key")]
+ [System.Text.Json.Serialization.JsonPropertyName("key")]
+ public string Key { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置选项值。
+ ///
+ [Newtonsoft.Json.JsonProperty("value")]
+ [System.Text.Json.Serialization.JsonPropertyName("value")]
+ public IList Value { get; set; } = new List();
+ }
+ }
+
+ ///
+ /// 获取或设置选择类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("type")]
+ [System.Text.Json.Serialization.JsonPropertyName("type")]
+ public string Type { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置选择列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("options")]
+ [System.Text.Json.Serialization.JsonPropertyName("options")]
+ public IList OptionList { get; set; } = new List();
+ }
+
+ public class ContactControlConfig
+ {
+ ///
+ /// 获取或设置选择方式。
+ ///
+ [Newtonsoft.Json.JsonProperty("type")]
+ [System.Text.Json.Serialization.JsonPropertyName("type")]
+ public string Type { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置选择对象。
+ ///
+ [Newtonsoft.Json.JsonProperty("mode")]
+ [System.Text.Json.Serialization.JsonPropertyName("mode")]
+ public string Mode { get; set; } = string.Empty;
+ }
+
+ public class TableControlConfig
+ {
+ ///
+ /// 获取或设置子控件。
+ ///
+ [Newtonsoft.Json.JsonProperty("children")]
+ [System.Text.Json.Serialization.JsonPropertyName("children")]
+ public IList Children { get; set; } = new List();
+ }
+
+ public class AttendanceControlConfig
+ {
+ public static class Types
+ {
+ public class DateRange
+ {
+ ///
+ /// 获取或设置时间刻度。
+ ///
+ [Newtonsoft.Json.JsonProperty("type")]
+ [System.Text.Json.Serialization.JsonPropertyName("type")]
+ public string Type { get; set; } = string.Empty;
+ }
+ }
+
+ ///
+ /// 获取或设置假勤类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("type")]
+ [System.Text.Json.Serialization.JsonPropertyName("type")]
+ public int Type { get; set; }
+
+ ///
+ /// 获取或设置时间选择范围。
+ ///
+ [Newtonsoft.Json.JsonProperty("date_range")]
+ [System.Text.Json.Serialization.JsonPropertyName("date_range")]
+ public Types.DateRange DateRange { get; set; } = new Types.DateRange();
+ }
+
+ public class VacationControlConfig
+ {
+ public static class Types
+ {
+ public class Vacation
+ {
+ ///
+ /// 获取或设置假期类型标识。
+ ///
+ [Newtonsoft.Json.JsonProperty("id")]
+ [System.Text.Json.Serialization.JsonPropertyName("id")]
+ public int VacationId { get; set; }
+
+ ///
+ /// 获取或设置假期类型名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("name")]
+ [System.Text.Json.Serialization.JsonPropertyName("name")]
+ public IList Name { get; set; } = new List();
+ }
+ }
+
+ ///
+ /// 获取或设置假期列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("item")]
+ [System.Text.Json.Serialization.JsonPropertyName("item")]
+ public IList VacationList { get; set; } = new List();
+ }
+ }
+
+ ///
+ /// 获取或设置模板控件属性。
+ ///
+ [Newtonsoft.Json.JsonProperty("property")]
+ [System.Text.Json.Serialization.JsonPropertyName("property")]
+ public Types.Property Property { get; set; } = new Types.Property();
+
+ ///
+ /// 获取或设置模板控件配置。
+ ///
+ [Newtonsoft.Json.JsonProperty("config")]
+ [System.Text.Json.Serialization.JsonPropertyName("config")]
+ public Types.Config? Config { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置模板控件列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("controls")]
+ [System.Text.Json.Serialization.JsonPropertyName("controls")]
+ public IList ControlList { get; set; } = new List();
+ }
+ }
+
+ ///
+ /// 获取或设置模板名称列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("template_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("template_name")]
+ public IList TemplateName { get; set; } = new List();
+
+ ///
+ /// 获取或设置模板内容信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("template_content")]
+ [System.Text.Json.Serialization.JsonPropertyName("template_content")]
+ public Types.TemplateContent TemplateContent { get; set; } = new Types.TemplateContent();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalCreateTemplateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalCreateTemplateResponse.cs
new file mode 100644
index 00000000..fad964ad
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalCreateTemplateResponse.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/oa/approval/create_template 接口的响应。
+ ///
+ public class CgibinOAApprovalCreateTemplateResponse : WechatWorkResponse
+ {
+ ///
+ /// 获取或设置模版 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("template_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("template_id")]
+ public string TemplateId { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalUpdateTemplateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalUpdateTemplateRequest.cs
new file mode 100644
index 00000000..14d8264d
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalUpdateTemplateRequest.cs
@@ -0,0 +1,42 @@
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/oa/approval/update_template 接口的请求。
+ ///
+ public class CgibinOAApprovalUpdateTemplateRequest : WechatWorkRequest
+ {
+ public static class Types
+ {
+ public class MultiLangText : CgibinOAApprovalCreateTemplateRequest.Types.MultiLangText
+ {
+ }
+
+ public class TemplateContent : CgibinOAApprovalCreateTemplateRequest.Types.TemplateContent
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置模版 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("template_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("template_id")]
+ public string TemplateId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置模板名称列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("template_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("template_name")]
+ public IList TemplateName { get; set; } = new List();
+
+ ///
+ /// 获取或设置模板内容信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("template_content")]
+ [System.Text.Json.Serialization.JsonPropertyName("template_content")]
+ public Types.TemplateContent TemplateContent { get; set; } = new Types.TemplateContent();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalUpdateTemplateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalUpdateTemplateResponse.cs
new file mode 100644
index 00000000..6f832c67
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAApprovalUpdateTemplateResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/oa/approval/update_template 接口的响应。
+ ///
+ public class CgibinOAApprovalUpdateTemplateResponse : WechatWorkResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAGetTemplateDetailRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAGetTemplateDetailRequest.cs
similarity index 100%
rename from src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAGetTemplateDetailRequest.cs
rename to src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAGetTemplateDetailRequest.cs
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAGetTemplateDetailResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAGetTemplateDetailResponse.cs
similarity index 99%
rename from src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAGetTemplateDetailResponse.cs
rename to src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAGetTemplateDetailResponse.cs
index be13f756..c772305d 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAGetTemplateDetailResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAGetTemplateDetailResponse.cs
@@ -72,13 +72,13 @@
public bool IsRequired { get; set; }
///
- /// 获取或设置是否参与打印。
+ /// 获取或设置是否不可打印。
///
[Newtonsoft.Json.JsonProperty("un_print")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))]
[System.Text.Json.Serialization.JsonPropertyName("un_print")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
- public bool IsPrintable { get; set; }
+ public bool IsUnprintable { get; set; }
}
public class Config
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAApprovalCopyTemplateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAApprovalCopyTemplateRequest.json
similarity index 100%
rename from test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAApprovalCopyTemplateRequest.json
rename to test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAApprovalCopyTemplateRequest.json
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAApprovalCopyTemplateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAApprovalCopyTemplateResponse.json
similarity index 100%
rename from test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAApprovalCopyTemplateResponse.json
rename to test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAApprovalCopyTemplateResponse.json
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAApprovalCreateTemplateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAApprovalCreateTemplateRequest.json
new file mode 100644
index 00000000..5a9ba9ec
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAApprovalCreateTemplateRequest.json
@@ -0,0 +1,33 @@
+{
+ "template_name": [
+ {
+ "text": "我的api测试模版",
+ "lang": "zh_CN"
+ }
+ ],
+ "template_content": {
+ "controls": [
+ {
+ "property": {
+ "control": "Text",
+ "id": "Text-01",
+ "title": [
+ {
+ "text": "控件名称",
+ "lang": "zh_CN"
+ }
+ ],
+ "placeholder": [
+ {
+ "text": "控件说明",
+ "lang": "zh_CN"
+ }
+ ],
+ "require": 0,
+ "un_print": 1
+ },
+ "config": {}
+ }
+ ]
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAApprovalCreateTemplateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAApprovalCreateTemplateResponse.json
new file mode 100644
index 00000000..1469dd01
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAApprovalCreateTemplateResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "template_id": "C4RbNKm731MCFVgk6XLq1Rs9W4aNXPJV2mmXT4qGy"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAApprovalUpdateTemplateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAApprovalUpdateTemplateRequest.json
new file mode 100644
index 00000000..e077c9d9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAApprovalUpdateTemplateRequest.json
@@ -0,0 +1,34 @@
+{
+ "template_id": "C4RbNKm731MCFVgk6XLq1Rs9W4aNXPJV2mmXT4qGy",
+ "template_name": [
+ {
+ "text": "我的api测试模版",
+ "lang": "zh_CN"
+ }
+ ],
+ "template_content": {
+ "controls": [
+ {
+ "property": {
+ "control": "Text",
+ "id": "Text-01",
+ "title": [
+ {
+ "text": "控件名称",
+ "lang": "zh_CN"
+ }
+ ],
+ "placeholder": [
+ {
+ "text": "控件说明",
+ "lang": "zh_CN"
+ }
+ ],
+ "require": 0,
+ "un_print": 1
+ },
+ "config": {}
+ }
+ ]
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAGetTemplateDetailRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAGetTemplateDetailRequest.json
similarity index 100%
rename from test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAGetTemplateDetailRequest.json
rename to test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAGetTemplateDetailRequest.json
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAGetTemplateDetailResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAGetTemplateDetailResponse.json
similarity index 100%
rename from test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAGetTemplateDetailResponse.json
rename to test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/Template/CgibinOAGetTemplateDetailResponse.json