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