diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Wedoc/DocumentChangeEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Wedoc/DocumentChangeEvent.cs new file mode 100644 index 00000000..1c3f995b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Wedoc/DocumentChangeEvent.cs @@ -0,0 +1,23 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Events +{ + /// + /// 表示 EVENT.doc_change 事件的数据。 + /// REF: https://developer.work.weixin.qq.com/document/path/97833 + /// REF: https://developer.work.weixin.qq.com/document/path/97834 + /// REF: https://developer.work.weixin.qq.com/document/path/97835 + /// + public class DocumentChangeEvent : WechatWorkEvent, WechatWorkEvent.Serialization.IXmlSerializable + { + /// + /// 获取或设置变更类型。 + /// + [System.Xml.Serialization.XmlElement("ChangeType")] + public string ChangeType { get; set; } = default!; + + /// + /// 获取或设置文档 ID 列表。 + /// + [System.Xml.Serialization.XmlElement("DocId", Type = typeof(string))] + public string[] DocumentIdList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinWedocExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinWedocExtensions.cs new file mode 100644 index 00000000..9cfbc14d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinWedocExtensions.cs @@ -0,0 +1,296 @@ +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 WechatWorkClientExecuteCgibinWedocExtensions + { + #region Document + /// + /// 异步调用 [POST] /cgi-bin/wedoc/create_doc 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97460 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocCreateDocumentAsync(this WechatWorkClient client, Models.CgibinWedocCreateDocumentRequest 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", "wedoc", "create_doc") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/wedoc/rename_doc 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97736 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocRenameDocumentAsync(this WechatWorkClient client, Models.CgibinWedocRenameDocumentRequest 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", "wedoc", "rename_doc") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/wedoc/del_doc 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97735 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocDeleteDocumentAsync(this WechatWorkClient client, Models.CgibinWedocDeleteDocumentRequest 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", "wedoc", "del_doc") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/wedoc/get_doc_base_info 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97734 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocGetDocumentBaseInfoAsync(this WechatWorkClient client, Models.CgibinWedocGetDocumentBaseInfoRequest 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", "wedoc", "get_doc_base_info") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/wedoc/doc_share 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97733 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocDocumentShareAsync(this WechatWorkClient client, Models.CgibinWedocDocumentShareRequest 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", "wedoc", "doc_share") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/wedoc/doc_get_auth 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97733 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocDocumentGetAuthAsync(this WechatWorkClient client, Models.CgibinWedocDocumentGetAuthRequest 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", "wedoc", "doc_get_auth") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/wedoc/mod_doc_join_rule 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97733 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocModifyDocumentJoinRuleAsync(this WechatWorkClient client, Models.CgibinWedocModifyDocumentJoinRuleRequest 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", "wedoc", "mod_doc_join_rule") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/wedoc/mod_doc_member 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97733 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocModifyDocumentMemberAsync(this WechatWorkClient client, Models.CgibinWedocModifyDocumentMemberRequest 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", "wedoc", "mod_doc_member") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/wedoc/mod_doc_safty_setting 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97782 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocModifyDocumentSafeSettingAsync(this WechatWorkClient client, Models.CgibinWedocModifyDocumentSafeSettingRequest 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", "wedoc", "mod_doc_safty_setting") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + + #region Collect + /// + /// 异步调用 [POST] /cgi-bin/wedoc/create_collect 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97462 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocCreateCollectAsync(this WechatWorkClient client, Models.CgibinWedocCreateCollectRequest 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", "wedoc", "create_collect") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/wedoc/modify_collect 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97462 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocModifyCollectAsync(this WechatWorkClient client, Models.CgibinWedocModifyCollectRequest 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", "wedoc", "modify_collect") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/wedoc/get_form_info 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97817 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocGetFormInfoAsync(this WechatWorkClient client, Models.CgibinWedocGetFormInfoRequest 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", "wedoc", "get_form_info") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/wedoc/get_form_statistic 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97818 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocGetFormStatisticAsync(this WechatWorkClient client, Models.CgibinWedocGetFormStatisticRequest 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", "wedoc", "get_form_statistic") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/wedoc/get_form_answer 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97818 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWedocGetFormAnswerAsync(this WechatWorkClient client, Models.CgibinWedocGetFormAnswerRequest 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", "wedoc", "get_form_answer") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocCreateCollectRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocCreateCollectRequest.cs new file mode 100644 index 00000000..b762f69b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocCreateCollectRequest.cs @@ -0,0 +1,319 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/create_collect 接口的请求。 + /// + public class CgibinWedocCreateCollectRequest : WechatWorkRequest + { + public static class Types + { + public class Form + { + public static class Types + { + public class QuestionList + { + /// + /// 获取或设置问题列表。 + /// + [Newtonsoft.Json.JsonProperty("items")] + [System.Text.Json.Serialization.JsonPropertyName("items")] + public IList Items { get; set; } = new List(); + } + + public class QuestionItem + { + public static class Types + { + public class Option + { + /// + /// 获取或设置选项键 + /// + [Newtonsoft.Json.JsonProperty("key")] + [System.Text.Json.Serialization.JsonPropertyName("key")] + public int Key { get; set; } + + /// + /// 获取或设置选项值。 + /// + [Newtonsoft.Json.JsonProperty("value")] + [System.Text.Json.Serialization.JsonPropertyName("value")] + public string Value { get; set; } = string.Empty; + + /// + /// 获取或设置选项状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + } + } + + /// + /// 获取或设置问题 ID。 + /// + [Newtonsoft.Json.JsonProperty("question_id")] + [System.Text.Json.Serialization.JsonPropertyName("question_id")] + public int QuestionId { get; set; } + + /// + /// 获取或设置问题序号。 + /// + [Newtonsoft.Json.JsonProperty("pos")] + [System.Text.Json.Serialization.JsonPropertyName("pos")] + public int Sequence { get; set; } + + /// + /// 获取或设置问题描述。 + /// + [Newtonsoft.Json.JsonProperty("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] + public string Title { get; set; } = string.Empty; + + /// + /// 获取或设置问题状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + + /// + /// 获取或设置回答类型。 + /// + [Newtonsoft.Json.JsonProperty("reply_type")] + [System.Text.Json.Serialization.JsonPropertyName("reply_type")] + public int ReplyType { get; set; } + + /// + /// 获取或设置是否必答。 + /// + [Newtonsoft.Json.JsonProperty("must_reply")] + [System.Text.Json.Serialization.JsonPropertyName("must_reply")] + public bool IsMustReply { get; set; } + + /// + /// 获取或设置选项列表。 + /// + [Newtonsoft.Json.JsonProperty("option_item")] + [System.Text.Json.Serialization.JsonPropertyName("option_item")] + public IList? OptionList { get; set; } + + /// + /// 获取或设置问题备注。 + /// + [Newtonsoft.Json.JsonProperty("note")] + [System.Text.Json.Serialization.JsonPropertyName("note")] + public string? Note { get; set; } + + /// + /// 获取或设置编辑提示。 + /// + [Newtonsoft.Json.JsonProperty("placeholder")] + [System.Text.Json.Serialization.JsonPropertyName("placeholder")] + public string? Placeholder { get; set; } + } + + public class Settings + { + public static class Types + { + public class FillInRange + { + /// + /// 获取或设置 UserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("userids")] + [System.Text.Json.Serialization.JsonPropertyName("userids")] + public IList? UserIdList { get; set; } + + /// + /// 获取或设置部门 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("departmentids")] + [System.Text.Json.Serialization.JsonPropertyName("departmentids")] + public IList? DepartmentIdList { get; set; } + } + + public class ManagerRange + { + /// + /// 获取或设置 UserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("userids")] + [System.Text.Json.Serialization.JsonPropertyName("userids")] + public IList UserIdList { get; set; } = new List(); + } + + public class Repetition + { + /// + /// 获取或设置是否开启定时重复。 + /// + [Newtonsoft.Json.JsonProperty("enable")] + [System.Text.Json.Serialization.JsonPropertyName("enable")] + public bool? IsEnabled { get; set; } + + /// + /// 获取或设置提醒时间戳。 + /// + [Newtonsoft.Json.JsonProperty("remind_time")] + [System.Text.Json.Serialization.JsonPropertyName("remind_time")] + public long? RemindTimestamp { get; set; } + + /// + /// 获取或设置重复类型。 + /// + [Newtonsoft.Json.JsonProperty("repeat_type")] + [System.Text.Json.Serialization.JsonPropertyName("repeat_type")] + public int? RepeatType { get; set; } + + /// + /// 获取或设置每周周几重复。 + /// + [Newtonsoft.Json.JsonProperty("week_flag")] + [System.Text.Json.Serialization.JsonPropertyName("week_flag")] + public int? RepeatDayOfWeek { get; set; } + + /// + /// 获取或设置每月第几天重复。 + /// + [Newtonsoft.Json.JsonProperty("day_of_month")] + [System.Text.Json.Serialization.JsonPropertyName("day_of_month")] + public int? RepeatDayOfMonth { get; set; } + + /// + /// 获取或设置是否跳过节假日。 + /// + [Newtonsoft.Json.JsonProperty("skip_holiday")] + [System.Text.Json.Serialization.JsonPropertyName("skip_holiday")] + public bool? IsSkipHoliday { get; set; } + + /// + /// 获取或设置补填类型。 + /// + [Newtonsoft.Json.JsonProperty("fork_finish_type")] + [System.Text.Json.Serialization.JsonPropertyName("fork_finish_type")] + public int? ForkFinishType { get; set; } + } + } + + /// + /// 获取或设置填写权限类型。 + /// + [Newtonsoft.Json.JsonProperty("fill_out_auth")] + [System.Text.Json.Serialization.JsonPropertyName("fill_out_auth")] + public int? FillOutAuthType { get; set; } + + /// + /// 获取或设置填写范围信息。 + /// + [Newtonsoft.Json.JsonProperty("fill_in_range")] + [System.Text.Json.Serialization.JsonPropertyName("fill_in_range")] + public Types.FillInRange? FillInRange { get; set; } + + /// + /// 获取或设置管理员范围信息。 + /// + [Newtonsoft.Json.JsonProperty("setting_manager_range")] + [System.Text.Json.Serialization.JsonPropertyName("setting_manager_range")] + public Types.ManagerRange? ManagerRange { get; set; } + + /// + /// 获取或设置定时重复设置信息。 + /// + [Newtonsoft.Json.JsonProperty("timed_repeat_info")] + [System.Text.Json.Serialization.JsonPropertyName("timed_repeat_info")] + public Types.Repetition? Repetition { get; set; } + + /// + /// 获取或设置最多填写数量。 + /// + [Newtonsoft.Json.JsonProperty("max_fill_cnt")] + [System.Text.Json.Serialization.JsonPropertyName("max_fill_cnt")] + public int? MaxFillCount { get; set; } + + /// + /// 获取或设置定时关闭时间戳。 + /// + [Newtonsoft.Json.JsonProperty("timed_finish")] + [System.Text.Json.Serialization.JsonPropertyName("timed_finish")] + public long? FinishTimestamp { get; set; } + + /// + /// 获取或设置是否支持匿名填写。 + /// + [Newtonsoft.Json.JsonProperty("can_anonymous")] + [System.Text.Json.Serialization.JsonPropertyName("can_anonymous")] + public bool? EnableAnonymous { get; set; } + + /// + /// 获取或设置是否有回复时提醒。 + /// + [Newtonsoft.Json.JsonProperty("can_notify_submit")] + [System.Text.Json.Serialization.JsonPropertyName("can_notify_submit")] + public bool? EnableNotifySubmit { get; set; } + } + } + + /// + /// 获取或设置收集表标题。 + /// + [Newtonsoft.Json.JsonProperty("form_title")] + [System.Text.Json.Serialization.JsonPropertyName("form_title")] + public string Title { get; set; } = string.Empty; + + /// + /// 获取或设置收集表描述。 + /// + [Newtonsoft.Json.JsonProperty("form_desc")] + [System.Text.Json.Serialization.JsonPropertyName("form_desc")] + public string? Description { get; set; } = string.Empty; + + /// + /// 获取或设置收集表表头背景图 URL。 + /// + [Newtonsoft.Json.JsonProperty("form_header")] + [System.Text.Json.Serialization.JsonPropertyName("form_header")] + public string? HeaderImageUrl { get; set; } = string.Empty; + + /// + /// 获取或设置收集表问题列表。 + /// + [Newtonsoft.Json.JsonProperty("form_question")] + [System.Text.Json.Serialization.JsonPropertyName("form_question")] + public Types.QuestionList QuestionList { get; set; } = new Types.QuestionList(); + + /// + /// 获取或设置收集表设置信息。 + /// + [Newtonsoft.Json.JsonProperty("form_setting")] + [System.Text.Json.Serialization.JsonPropertyName("form_setting")] + public Types.Settings? Settings { get; set; } + } + } + + /// + /// 获取或设置空间 ID。 + /// + [Newtonsoft.Json.JsonProperty("spaceid")] + [System.Text.Json.Serialization.JsonPropertyName("spaceid")] + public string? SpaceId { get; set; } + + /// + /// 获取或设置上级文件 ID 或空间 ID。 + /// + [Newtonsoft.Json.JsonProperty("fatherid")] + [System.Text.Json.Serialization.JsonPropertyName("fatherid")] + public string? ParentFileOrSpaceId { get; set; } + + /// + /// 获取或设置收集表信息。 + /// + [Newtonsoft.Json.JsonProperty("form_info")] + [System.Text.Json.Serialization.JsonPropertyName("form_info")] + public Types.Form Form { get; set; } = new Types.Form(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocCreateCollectResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocCreateCollectResponse.cs new file mode 100644 index 00000000..cfdf94b5 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocCreateCollectResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/create_collect 接口的响应。 + /// + public class CgibinWedocCreateCollectResponse : WechatWorkResponse + { + /// + /// 获取或设置收集表 ID。 + /// + [Newtonsoft.Json.JsonProperty("formid")] + [System.Text.Json.Serialization.JsonPropertyName("formid")] + public string FormId { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormAnswerRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormAnswerRequest.cs new file mode 100644 index 00000000..58793b62 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormAnswerRequest.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/get_form_answer 接口的请求。 + /// + public class CgibinWedocGetFormAnswerRequest : WechatWorkRequest + { + /// + /// 获取或设置收集表周期 ID。 + /// + [Newtonsoft.Json.JsonProperty("repeated_id")] + [System.Text.Json.Serialization.JsonPropertyName("repeated_id")] + public string RepeatedId { get; set; } = string.Empty; + + /// + /// 获取或设置答案 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("answer_ids")] + [System.Text.Json.Serialization.JsonPropertyName("answer_ids")] + public IList? AnswerIdList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormAnswerResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormAnswerResponse.cs new file mode 100644 index 00000000..fcb1d54e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormAnswerResponse.cs @@ -0,0 +1,168 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/get_form_answer 接口的响应。 + /// + public class CgibinWedocGetFormAnswerResponse : WechatWorkResponse + { + public static class Types + { + public class AnswerList + { + /// + /// 获取或设置答案列表。 + /// + [Newtonsoft.Json.JsonProperty("answer_list")] + [System.Text.Json.Serialization.JsonPropertyName("answer_list")] + public AnswerItem[] Items { get; set; } = default!; + } + + public class AnswerItem + { + public static class Types + { + public class ReplyList + { + /// + /// 获取或设置回答列表。 + /// + [Newtonsoft.Json.JsonProperty("items")] + [System.Text.Json.Serialization.JsonPropertyName("items")] + public ReplyItem[] Items { get; set; } = default!; + } + + public class ReplyItem + { + public static class Types + { + public class ExtendedFileReply + { + /// + /// 获取或设置文件 ID。 + /// + [Newtonsoft.Json.JsonProperty("fileid")] + [System.Text.Json.Serialization.JsonPropertyName("fileid")] + public string FileId { get; set; } = default!; + + /// + /// 获取或设置文件名。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + } + + public class ExtendedOptionReply + { + /// + /// 获取或设置额外回答选项键。 + /// + [Newtonsoft.Json.JsonProperty("option_reply")] + [System.Text.Json.Serialization.JsonPropertyName("option_reply")] + public int OptionKey { get; set; } + + /// + /// 获取或设置文本。 + /// + [Newtonsoft.Json.JsonProperty("extend_text")] + [System.Text.Json.Serialization.JsonPropertyName("extend_text")] + public string Text { get; set; } = default!; + } + } + + /// + /// 获取或设置问题 ID。 + /// + [Newtonsoft.Json.JsonProperty("question_id")] + [System.Text.Json.Serialization.JsonPropertyName("question_id")] + public int QuestionId { get; set; } + + /// + /// 获取或设置回答文本内容。 + /// + [Newtonsoft.Json.JsonProperty("text_reply")] + [System.Text.Json.Serialization.JsonPropertyName("text_reply")] + public string? ReplyText { get; set; } + + /// + /// 获取或设置回答选项键列表。 + /// + [Newtonsoft.Json.JsonProperty("option_reply")] + [System.Text.Json.Serialization.JsonPropertyName("option_reply")] + public int[]? ReplyOptionKeyList { get; set; } + + /// + /// 获取或设置回答文件列表。 + /// + [Newtonsoft.Json.JsonProperty("file_extend_reply")] + [System.Text.Json.Serialization.JsonPropertyName("file_extend_reply")] + public Types.ExtendedFileReply[]? ReplyExtendedFileReply { get; set; } + + /// + /// 获取或设置回答额外选项列表。 + /// + [Newtonsoft.Json.JsonProperty("option_extend_reply")] + [System.Text.Json.Serialization.JsonPropertyName("option_extend_reply")] + public Types.ExtendedOptionReply[]? ReplyExtendedOptionList { get; set; } + } + } + + /// + /// 获取或设置答案 ID。 + /// + [Newtonsoft.Json.JsonProperty("answer_id")] + [System.Text.Json.Serialization.JsonPropertyName("answer_id")] + public long AnswerId { get; set; } + + /// + /// 获取或设置用户名。 + /// + [Newtonsoft.Json.JsonProperty("user_name")] + [System.Text.Json.Serialization.JsonPropertyName("user_name")] + public string UserName { get; set; } = default!; + + /// + /// 获取或设置外部联系人临时 ID。 + /// + [Newtonsoft.Json.JsonProperty("tmp_external_userid")] + [System.Text.Json.Serialization.JsonPropertyName("tmp_external_userid")] + public string? TempExternalUserId { get; set; } + + /// + /// 获取或设置回答列表。 + /// + [Newtonsoft.Json.JsonProperty("reply")] + [System.Text.Json.Serialization.JsonPropertyName("reply")] + public Types.ReplyList ReplyList { get; set; } = default!; + + /// + /// 获取或设置答案状态。 + /// + [Newtonsoft.Json.JsonProperty("answer_status")] + [System.Text.Json.Serialization.JsonPropertyName("answer_status")] + public int AnswerStatus { get; set; } + + /// + /// 获取或设置创建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("ctime")] + [System.Text.Json.Serialization.JsonPropertyName("ctime")] + public long CreateTimestamp { get; set; } + + /// + /// 获取或设置修改时间戳。 + /// + [Newtonsoft.Json.JsonProperty("mtime")] + [System.Text.Json.Serialization.JsonPropertyName("mtime")] + public long ModifyTimestamp { get; set; } + } + } + + /// + /// 获取或设置收集表答案列表。 + /// + [Newtonsoft.Json.JsonProperty("answer")] + [System.Text.Json.Serialization.JsonPropertyName("answer")] + public Types.AnswerList AnswerList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormInfoRequest.cs new file mode 100644 index 00000000..c03ff5f0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormInfoRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/get_form_info 接口的请求。 + /// + public class CgibinWedocGetFormInfoRequest : WechatWorkRequest + { + /// + /// 获取或设置收集表 ID。 + /// + [Newtonsoft.Json.JsonProperty("formid")] + [System.Text.Json.Serialization.JsonPropertyName("formid")] + public string FormId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormInfoResponse.cs new file mode 100644 index 00000000..d62fec48 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormInfoResponse.cs @@ -0,0 +1,331 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/get_form_info 接口的响应。 + /// + public class CgibinWedocGetFormInfoResponse : WechatWorkResponse + { + public static class Types + { + public class Form + { + public static class Types + { + public class QuestionList + { + /// + /// 获取或设置问题列表。 + /// + [Newtonsoft.Json.JsonProperty("items")] + [System.Text.Json.Serialization.JsonPropertyName("items")] + public QuestionItem[] Items { get; set; } = default!; + } + + public class QuestionItem + { + public static class Types + { + public class Option + { + /// + /// 获取或设置选项键 + /// + [Newtonsoft.Json.JsonProperty("key")] + [System.Text.Json.Serialization.JsonPropertyName("key")] + public int Key { get; set; } + + /// + /// 获取或设置选项值。 + /// + [Newtonsoft.Json.JsonProperty("value")] + [System.Text.Json.Serialization.JsonPropertyName("value")] + public string Value { get; set; } = default!; + + /// + /// 获取或设置选项状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + } + } + + /// + /// 获取或设置问题 ID。 + /// + [Newtonsoft.Json.JsonProperty("question_id")] + [System.Text.Json.Serialization.JsonPropertyName("question_id")] + public int QuestionId { get; set; } + + /// + /// 获取或设置问题序号。 + /// + [Newtonsoft.Json.JsonProperty("pos")] + [System.Text.Json.Serialization.JsonPropertyName("pos")] + public int Sequence { get; set; } + + /// + /// 获取或设置问题描述。 + /// + [Newtonsoft.Json.JsonProperty("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] + public string Title { get; set; } = default!; + + /// + /// 获取或设置问题状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + + /// + /// 获取或设置回答类型。 + /// + [Newtonsoft.Json.JsonProperty("reply_type")] + [System.Text.Json.Serialization.JsonPropertyName("reply_type")] + public int ReplyType { get; set; } + + /// + /// 获取或设置是否必答。 + /// + [Newtonsoft.Json.JsonProperty("must_reply")] + [System.Text.Json.Serialization.JsonPropertyName("must_reply")] + public bool IsMustReply { get; set; } + + /// + /// 获取或设置选项列表。 + /// + [Newtonsoft.Json.JsonProperty("option_item")] + [System.Text.Json.Serialization.JsonPropertyName("option_item")] + public Types.Option[]? OptionList { get; set; } + + /// + /// 获取或设置问题备注。 + /// + [Newtonsoft.Json.JsonProperty("note")] + [System.Text.Json.Serialization.JsonPropertyName("note")] + public string? Note { get; set; } + + /// + /// 获取或设置编辑提示。 + /// + [Newtonsoft.Json.JsonProperty("placeholder")] + [System.Text.Json.Serialization.JsonPropertyName("placeholder")] + public string? Placeholder { get; set; } + } + + public class Settings + { + public static class Types + { + public class FillInRange + { + /// + /// 获取或设置 UserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("userids")] + [System.Text.Json.Serialization.JsonPropertyName("userids")] + public string[]? UserIdList { get; set; } + + /// + /// 获取或设置部门 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("departmentids")] + [System.Text.Json.Serialization.JsonPropertyName("departmentids")] + public long[]? DepartmentIdList { get; set; } + } + + public class ManagerRange + { + /// + /// 获取或设置 UserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("userids")] + [System.Text.Json.Serialization.JsonPropertyName("userids")] + public string[] UserIdList { get; set; } = default!; + } + + public class Repetition + { + /// + /// 获取或设置是否开启定时重复。 + /// + [Newtonsoft.Json.JsonProperty("enable")] + [System.Text.Json.Serialization.JsonPropertyName("enable")] + public bool IsEnabled { get; set; } + + /// + /// 获取或设置提醒时间戳。 + /// + [Newtonsoft.Json.JsonProperty("remind_time")] + [System.Text.Json.Serialization.JsonPropertyName("remind_time")] + public long? RemindTimestamp { get; set; } + + /// + /// 获取或设置重复类型。 + /// + [Newtonsoft.Json.JsonProperty("repeat_type")] + [System.Text.Json.Serialization.JsonPropertyName("repeat_type")] + public int? RepeatType { get; set; } + + /// + /// 获取或设置每周周几重复。 + /// + [Newtonsoft.Json.JsonProperty("week_flag")] + [System.Text.Json.Serialization.JsonPropertyName("week_flag")] + public int? RepeatDayOfWeek { get; set; } + + /// + /// 获取或设置每月第几天重复。 + /// + [Newtonsoft.Json.JsonProperty("day_of_month")] + [System.Text.Json.Serialization.JsonPropertyName("day_of_month")] + public int? RepeatDayOfMonth { get; set; } + + /// + /// 获取或设置是否跳过节假日。 + /// + [Newtonsoft.Json.JsonProperty("skip_holiday")] + [System.Text.Json.Serialization.JsonPropertyName("skip_holiday")] + public bool? IsSkipHoliday { get; set; } + + /// + /// 获取或设置补填类型。 + /// + [Newtonsoft.Json.JsonProperty("fork_finish_type")] + [System.Text.Json.Serialization.JsonPropertyName("fork_finish_type")] + public int? ForkFinishType { get; set; } + + /// + /// 获取或设置规则创建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("rule_ctime")] + [System.Text.Json.Serialization.JsonPropertyName("rule_ctime")] + public long? RuleCreateTimestamp { get; set; } + + /// + /// 获取或设置规则修改时间戳。 + /// + [Newtonsoft.Json.JsonProperty("rule_mtime")] + [System.Text.Json.Serialization.JsonPropertyName("rule_mtime")] + public long? RuleModifyTimestamp { get; set; } + } + } + + /// + /// 获取或设置填写权限类型。 + /// + [Newtonsoft.Json.JsonProperty("fill_out_auth")] + [System.Text.Json.Serialization.JsonPropertyName("fill_out_auth")] + public int FillOutAuthType { get; set; } + + /// + /// 获取或设置填写范围信息。 + /// + [Newtonsoft.Json.JsonProperty("fill_in_range")] + [System.Text.Json.Serialization.JsonPropertyName("fill_in_range")] + public Types.FillInRange? FillInRange { get; set; } + + /// + /// 获取或设置管理员范围信息。 + /// + [Newtonsoft.Json.JsonProperty("setting_manager_range")] + [System.Text.Json.Serialization.JsonPropertyName("setting_manager_range")] + public Types.ManagerRange? ManagerRange { get; set; } + + /// + /// 获取或设置定时重复设置信息。 + /// + [Newtonsoft.Json.JsonProperty("timed_repeat_info")] + [System.Text.Json.Serialization.JsonPropertyName("timed_repeat_info")] + public Types.Repetition? Repetition { get; set; } + + /// + /// 获取或设置最多填写数量。 + /// + [Newtonsoft.Json.JsonProperty("max_fill_cnt")] + [System.Text.Json.Serialization.JsonPropertyName("max_fill_cnt")] + public int MaxFillCount { get; set; } + + /// + /// 获取或设置定时关闭时间戳。 + /// + [Newtonsoft.Json.JsonProperty("timed_finish")] + [System.Text.Json.Serialization.JsonPropertyName("timed_finish")] + public long? FinishTimestamp { get; set; } + + /// + /// 获取或设置是否支持匿名填写。 + /// + [Newtonsoft.Json.JsonProperty("can_anonymous")] + [System.Text.Json.Serialization.JsonPropertyName("can_anonymous")] + public bool EnableAnonymous { get; set; } + + /// + /// 获取或设置是否有回复时提醒。 + /// + [Newtonsoft.Json.JsonProperty("can_notify_submit")] + [System.Text.Json.Serialization.JsonPropertyName("can_notify_submit")] + public bool EnableNotifySubmit { get; set; } + } + } + + /// + /// 获取或设置收集表 ID。 + /// + [Newtonsoft.Json.JsonProperty("formid")] + [System.Text.Json.Serialization.JsonPropertyName("formid")] + public string FormId { get; set; } = default!; + + /// + /// 获取或设置收集表标题。 + /// + [Newtonsoft.Json.JsonProperty("form_title")] + [System.Text.Json.Serialization.JsonPropertyName("form_title")] + public string Title { get; set; } = default!; + + /// + /// 获取或设置收集表描述。 + /// + [Newtonsoft.Json.JsonProperty("form_desc")] + [System.Text.Json.Serialization.JsonPropertyName("form_desc")] + public string Description { get; set; } = default!; + + /// + /// 获取或设置收集表表头背景图 URL。 + /// + [Newtonsoft.Json.JsonProperty("form_header")] + [System.Text.Json.Serialization.JsonPropertyName("form_header")] + public string HeaderImageUrl { get; set; } = default!; + + /// + /// 获取或设置收集表问题列表。 + /// + [Newtonsoft.Json.JsonProperty("form_question")] + [System.Text.Json.Serialization.JsonPropertyName("form_question")] + public Types.QuestionList QuestionList { get; set; } = default!; + + /// + /// 获取或设置收集表设置信息。 + /// + [Newtonsoft.Json.JsonProperty("form_setting")] + [System.Text.Json.Serialization.JsonPropertyName("form_setting")] + public Types.Settings Settings { get; set; } = default!; + + /// + /// 获取或设置收集表周期 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("repeated_id")] + [System.Text.Json.Serialization.JsonPropertyName("repeated_id")] + public string[]? RepeatedId { get; set; } + } + } + + /// + /// 获取或设置收集表信息。 + /// + [Newtonsoft.Json.JsonProperty("form_info")] + [System.Text.Json.Serialization.JsonPropertyName("form_info")] + public Types.Form Form { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormStatisticRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormStatisticRequest.cs new file mode 100644 index 00000000..74ca14b0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormStatisticRequest.cs @@ -0,0 +1,50 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/get_form_statistic 接口的请求。 + /// + public class CgibinWedocGetFormStatisticRequest : WechatWorkRequest + { + /// + /// 获取或设置收集表周期 ID。 + /// + [Newtonsoft.Json.JsonProperty("repeated_id")] + [System.Text.Json.Serialization.JsonPropertyName("repeated_id")] + public string RepeatedId { get; set; } = string.Empty; + + /// + /// 获取或设置请求类型。 + /// + [Newtonsoft.Json.JsonProperty("req_type")] + [System.Text.Json.Serialization.JsonPropertyName("req_type")] + public int RequestType { get; set; } + + /// + /// 获取或设置开始时间戳。 + /// + [Newtonsoft.Json.JsonProperty("start_time")] + [System.Text.Json.Serialization.JsonPropertyName("start_time")] + public int? StartTimestamp { get; set; } + + /// + /// 获取或设置结束时间戳。 + /// + [Newtonsoft.Json.JsonProperty("end_time")] + [System.Text.Json.Serialization.JsonPropertyName("end_time")] + public int? Endimestamp { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int? Limit { get; set; } + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("cursor")] + [System.Text.Json.Serialization.JsonPropertyName("cursor")] + public int? Cursor { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormStatisticResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormStatisticResponse.cs new file mode 100644 index 00000000..cc682ab5 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocGetFormStatisticResponse.cs @@ -0,0 +1,115 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/get_form_statistic 接口的响应。 + /// + public class CgibinWedocGetFormStatisticResponse : WechatWorkResponse + { + public static class Types + { + public class FillUser + { + /// + /// 获取或设置用户成员账号。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string? UserId { get; set; } + + /// + /// 获取或设置外部联系人临时 ID。 + /// + [Newtonsoft.Json.JsonProperty("tmp_external_userid")] + [System.Text.Json.Serialization.JsonPropertyName("tmp_external_userid")] + public string? TempExternalUserId { get; set; } + + /// + /// 获取或设置用户名。 + /// + [Newtonsoft.Json.JsonProperty("user_name")] + [System.Text.Json.Serialization.JsonPropertyName("user_name")] + public string UserName { get; set; } = default!; + + /// + /// 获取或设置答案 ID。 + /// + [Newtonsoft.Json.JsonProperty("answer_id")] + [System.Text.Json.Serialization.JsonPropertyName("answer_id")] + public long AnswerId { get; set; } + + /// + /// 获取或设置提交时间戳。 + /// + [Newtonsoft.Json.JsonProperty("submit_time")] + [System.Text.Json.Serialization.JsonPropertyName("submit_time")] + public long SubmitTimestamp { get; set; } + } + + public class UnfillUser + { + /// + /// 获取或设置用户成员账号。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string UserId { get; set; } = default!; + + /// + /// 获取或设置用户名。 + /// + [Newtonsoft.Json.JsonProperty("user_name")] + [System.Text.Json.Serialization.JsonPropertyName("user_name")] + public string UserName { get; set; } = default!; + } + } + + /// + /// 获取或设置已填写次数。 + /// + [Newtonsoft.Json.JsonProperty("fill_cnt")] + [System.Text.Json.Serialization.JsonPropertyName("fill_cnt")] + public int FillCount { get; set; } + + /// + /// 获取或设置已填写人数。 + /// + [Newtonsoft.Json.JsonProperty("fill_user_cnt")] + [System.Text.Json.Serialization.JsonPropertyName("fill_user_cnt")] + public int FillUserCount { get; set; } + + /// + /// 获取或设置未填写人数。 + /// + [Newtonsoft.Json.JsonProperty("unfill_user_cnt")] + [System.Text.Json.Serialization.JsonPropertyName("unfill_user_cnt")] + public int UnfillUserCount { get; set; } + + /// + /// 获取或设置已填写人列表。 + /// + [Newtonsoft.Json.JsonProperty("submit_users")] + [System.Text.Json.Serialization.JsonPropertyName("submit_users")] + public Types.FillUser[]? FillUserList { get; set; } + + /// + /// 获取或设置未填写人列表。 + /// + [Newtonsoft.Json.JsonProperty("unfill_users")] + [System.Text.Json.Serialization.JsonPropertyName("unfill_users")] + public Types.UnfillUser[]? UnfillUserList { get; set; } + + /// + /// 获取或设置是否还有更多数据。 + /// + [Newtonsoft.Json.JsonProperty("has_more")] + [System.Text.Json.Serialization.JsonPropertyName("has_more")] + public bool? HasMore { get; set; } + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("cursor")] + [System.Text.Json.Serialization.JsonPropertyName("cursor")] + public int? NextCursor { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocModifyCollectRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocModifyCollectRequest.cs new file mode 100644 index 00000000..2bf943c5 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocModifyCollectRequest.cs @@ -0,0 +1,141 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/modify_collect 接口的请求。 + /// + public class CgibinWedocModifyCollectRequest : WechatWorkRequest + { + public static class Types + { + public class Form + { + + public static class Types + { + public class QuestionList : CgibinWedocCreateCollectRequest.Types.Form.Types.QuestionList + { + /// + /// 获取或设置问题列表。 + /// + [Newtonsoft.Json.JsonProperty("items")] + [System.Text.Json.Serialization.JsonPropertyName("items")] + public new IList Items { get; set; } = new List(); + } + + public class QuestionItem : CgibinWedocCreateCollectRequest.Types.Form.Types.QuestionItem + { + public static new class Types + { + public class Option : CgibinWedocCreateCollectRequest.Types.Form.Types.QuestionItem.Types.Option + { + } + } + + /// + /// 获取或设置选项列表。 + /// + [Newtonsoft.Json.JsonProperty("option_item")] + [System.Text.Json.Serialization.JsonPropertyName("option_item")] + public new IList? OptionList { get; set; } + } + + public class Settings : CgibinWedocCreateCollectRequest.Types.Form.Types.Settings + { + public static new class Types + { + public class FillInRange : CgibinWedocCreateCollectRequest.Types.Form.Types.Settings.Types.FillInRange + { + } + + public class ManagerRange : CgibinWedocCreateCollectRequest.Types.Form.Types.Settings.Types.ManagerRange + { + } + + public class Repetition : CgibinWedocCreateCollectRequest.Types.Form.Types.Settings.Types.Repetition + { + } + } + /// + /// 获取或设置填写范围信息。 + /// + [Newtonsoft.Json.JsonProperty("fill_in_range")] + [System.Text.Json.Serialization.JsonPropertyName("fill_in_range")] + public new Types.FillInRange? FillInRange { get; set; } + + /// + /// 获取或设置管理员范围信息。 + /// + [Newtonsoft.Json.JsonProperty("setting_manager_range")] + [System.Text.Json.Serialization.JsonPropertyName("setting_manager_range")] + public new Types.ManagerRange? ManagerRange { get; set; } + + /// + /// 获取或设置定时重复设置信息。 + /// + [Newtonsoft.Json.JsonProperty("timed_repeat_info")] + [System.Text.Json.Serialization.JsonPropertyName("timed_repeat_info")] + public new Types.Repetition? Repetition { get; set; } + } + } + + /// + /// 获取或设置收集表标题。 + /// + [Newtonsoft.Json.JsonProperty("form_title")] + [System.Text.Json.Serialization.JsonPropertyName("form_title")] + public string? Title { get; set; } + + /// + /// 获取或设置收集表描述。 + /// + [Newtonsoft.Json.JsonProperty("form_desc")] + [System.Text.Json.Serialization.JsonPropertyName("form_desc")] + public string? Description { get; set; } + + /// + /// 获取或设置收集表表头背景图 URL。 + /// + [Newtonsoft.Json.JsonProperty("form_header")] + [System.Text.Json.Serialization.JsonPropertyName("form_header")] + public string? HeaderImageUrl { get; set; } + + /// + /// 获取或设置收集表问题列表。 + /// + [Newtonsoft.Json.JsonProperty("form_question")] + [System.Text.Json.Serialization.JsonPropertyName("form_question")] + public Types.QuestionList? QuestionList { get; set; } + + /// + /// 获取或设置收集表设置信息。 + /// + [Newtonsoft.Json.JsonProperty("form_setting")] + [System.Text.Json.Serialization.JsonPropertyName("form_setting")] + public Types.Settings? Settings { get; set; } + } + } + + /// + /// 获取或设置操作模式。 + /// + [Newtonsoft.Json.JsonProperty("oper")] + [System.Text.Json.Serialization.JsonPropertyName("oper")] + public int OperateMode { get; set; } + + /// + /// 获取或设置收集表 ID。 + /// + [Newtonsoft.Json.JsonProperty("formid")] + [System.Text.Json.Serialization.JsonPropertyName("formid")] + public string FormId { get; set; } = string.Empty; + + /// + /// 获取或设置收集表信息。 + /// + [Newtonsoft.Json.JsonProperty("form_info")] + [System.Text.Json.Serialization.JsonPropertyName("form_info")] + public Types.Form Form { get; set; } = new Types.Form(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocModifyCollectResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocModifyCollectResponse.cs new file mode 100644 index 00000000..0a32d634 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Collect/CgibinWedocModifyCollectResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/modify_collect 接口的响应。 + /// + public class CgibinWedocModifyCollectResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocCreateDocumentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocCreateDocumentRequest.cs new file mode 100644 index 00000000..16694c6e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocCreateDocumentRequest.cs @@ -0,0 +1,45 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/create_doc 接口的请求。 + /// + public class CgibinWedocCreateDocumentRequest : WechatWorkRequest + { + /// + /// 获取或设置空间 ID。 + /// + [Newtonsoft.Json.JsonProperty("spaceid")] + [System.Text.Json.Serialization.JsonPropertyName("spaceid")] + public string? SpaceId { get; set; } + + /// + /// 获取或设置上级文件 ID 或空间 ID。 + /// + [Newtonsoft.Json.JsonProperty("fatherid")] + [System.Text.Json.Serialization.JsonPropertyName("fatherid")] + public string? ParentFileOrSpaceId { get; set; } + + /// + /// 获取或设置文档类型。 + /// + [Newtonsoft.Json.JsonProperty("doc_type")] + [System.Text.Json.Serialization.JsonPropertyName("doc_type")] + public int DocumentType { get; set; } + + /// + /// 获取或设置文档名称。 + /// + [Newtonsoft.Json.JsonProperty("doc_name")] + [System.Text.Json.Serialization.JsonPropertyName("doc_name")] + public string DocumentName { get; set; } = string.Empty; + + /// + /// 获取或设置管理员成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("admin_users")] + [System.Text.Json.Serialization.JsonPropertyName("admin_users")] + public IList? AdminUserIdList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocCreateDocumentResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocCreateDocumentResponse.cs new file mode 100644 index 00000000..fff1d784 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocCreateDocumentResponse.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/create_doc 接口的响应。 + /// + public class CgibinWedocCreateDocumentResponse : WechatWorkResponse + { + /// + /// 获取或设置文档 ID。 + /// + [Newtonsoft.Json.JsonProperty("docid")] + [System.Text.Json.Serialization.JsonPropertyName("docid")] + public string DocumentId { get; set; } = default!; + + /// + /// 获取或设置访问链接。 + /// + [Newtonsoft.Json.JsonProperty("url")] + [System.Text.Json.Serialization.JsonPropertyName("url")] + public string Url { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDeleteDocumentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDeleteDocumentRequest.cs new file mode 100644 index 00000000..76f2c505 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDeleteDocumentRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/del_doc 接口的请求。 + /// + public class CgibinWedocDeleteDocumentRequest : WechatWorkRequest + { + /// + /// 获取或设置文档 ID。 + /// + [Newtonsoft.Json.JsonProperty("docid")] + [System.Text.Json.Serialization.JsonPropertyName("docid")] + public string? DocumentId { get; set; } + + /// + /// 获取或设置收集表 ID。 + /// + [Newtonsoft.Json.JsonProperty("formid")] + [System.Text.Json.Serialization.JsonPropertyName("formid")] + public string? FormId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDeleteDocumentResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDeleteDocumentResponse.cs new file mode 100644 index 00000000..b87872d3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDeleteDocumentResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/del_doc 接口的响应。 + /// + public class CgibinWedocDeleteDocumentResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDocumentGetAuthRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDocumentGetAuthRequest.cs new file mode 100644 index 00000000..1e015b85 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDocumentGetAuthRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/doc_get_auth 接口的请求。 + /// + public class CgibinWedocDocumentGetAuthRequest : WechatWorkRequest + { + /// + /// 获取或设置文档 ID。 + /// + [Newtonsoft.Json.JsonProperty("docid")] + [System.Text.Json.Serialization.JsonPropertyName("docid")] + public string DocumentId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDocumentGetAuthResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDocumentGetAuthResponse.cs new file mode 100644 index 00000000..37d003ea --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDocumentGetAuthResponse.cs @@ -0,0 +1,187 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/doc_get_auth 接口的响应。 + /// + public class CgibinWedocDocumentGetAuthResponse : WechatWorkResponse + { + public static class Types + { + public class AccessRule + { + /// + /// 获取或设置是否为企业内可访问。 + /// + [Newtonsoft.Json.JsonProperty("enable_corp_internal")] + [System.Text.Json.Serialization.JsonPropertyName("enable_corp_internal")] + public bool EnableCorpInternal { get; set; } + + /// + /// 获取或设置企业内权限类型。 + /// + [Newtonsoft.Json.JsonProperty("corp_internal_auth")] + [System.Text.Json.Serialization.JsonPropertyName("corp_internal_auth")] + public int CorpInternalAuthType { get; set; } + + /// + /// 获取或设置是否开启企业内管理员审批。 + /// + [Newtonsoft.Json.JsonProperty("corp_internal_approve_only_by_admin")] + [System.Text.Json.Serialization.JsonPropertyName("corp_internal_approve_only_by_admin")] + public bool? IsCorpInternalApproveOnlyByAdmin { get; set; } + + /// + /// 获取或设置是否为企业外可访问。 + /// + [Newtonsoft.Json.JsonProperty("enable_corp_external")] + [System.Text.Json.Serialization.JsonPropertyName("enable_corp_external")] + public bool EnableCorpExternal { get; set; } + + /// + /// 获取或设置企业外权限类型。 + /// + [Newtonsoft.Json.JsonProperty("corp_external_auth")] + [System.Text.Json.Serialization.JsonPropertyName("corp_external_auth")] + public int CorpExternalAuthType { get; set; } + + /// + /// 获取或设置是否开启企业外管理员审批。 + /// + [Newtonsoft.Json.JsonProperty("corp_external_approve_only_by_admin")] + [System.Text.Json.Serialization.JsonPropertyName("corp_external_approve_only_by_admin")] + public bool? IsCorpExternalApproveOnlyByAdmin { get; set; } + + /// + /// 获取或设置是否禁止分享到企业外部。 + /// + [Newtonsoft.Json.JsonProperty("ban_share_external")] + [System.Text.Json.Serialization.JsonPropertyName("ban_share_external")] + public bool IsBanShareExternal { get; set; } + } + + public class SecureSettings + { + public static class Types + { + public class Watermark + { + /// + /// 获取或设置水印文字。 + /// + [Newtonsoft.Json.JsonProperty("text")] + [System.Text.Json.Serialization.JsonPropertyName("text")] + public string Text { get; set; } = default!; + + /// + /// 获取或设置水印类型。 + /// + [Newtonsoft.Json.JsonProperty("margin_type")] + [System.Text.Json.Serialization.JsonPropertyName("margin_type")] + public int MarginType { get; set; } + + /// + /// 获取或设置是否开启水印文本。 + /// + [Newtonsoft.Json.JsonProperty("show_text")] + [System.Text.Json.Serialization.JsonPropertyName("show_text")] + public bool EnableShowText { get; set; } + + /// + /// 获取或设置是否开启水印访问人名称。 + /// + [Newtonsoft.Json.JsonProperty("show_visitor_name")] + [System.Text.Json.Serialization.JsonPropertyName("show_visitor_name")] + public bool EnableShowVisitorName { get; set; } + } + } + + /// + /// 获取或设置是否开启只读备份。 + /// + [Newtonsoft.Json.JsonProperty("enable_readonly_copy")] + [System.Text.Json.Serialization.JsonPropertyName("enable_readonly_copy")] + public bool EnableReadonlyCopy { get; set; } + + /// + /// 获取或设置是否开启只读评论。 + /// + [Newtonsoft.Json.JsonProperty("enable_readonly_comment")] + [System.Text.Json.Serialization.JsonPropertyName("enable_readonly_comment")] + public bool EnableReadonlyComment { get; set; } + + /// + /// 获取或设置水印信息。 + /// + [Newtonsoft.Json.JsonProperty("watermark")] + [System.Text.Json.Serialization.JsonPropertyName("watermark")] + public Types.Watermark? Watermark { get; set; } + } + + public class Authority + { + /// + /// 获取或设置类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public int Type { get; set; } + + /// + /// 获取或设置成员账号。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string? UserId { get; set; } + + /// + /// 获取或设置外部联系人临时 ID。 + /// + [Newtonsoft.Json.JsonProperty("tmp_external_userid")] + [System.Text.Json.Serialization.JsonPropertyName("tmp_external_userid")] + public string? TempExternalUserId { get; set; } + + /// + /// 获取或设置部门 ID。 + /// + [Newtonsoft.Json.JsonProperty("departmentid")] + [System.Text.Json.Serialization.JsonPropertyName("departmentid")] + public long? DepartmentId { get; set; } + + /// + /// 获取或设置权限类型。 + /// + [Newtonsoft.Json.JsonProperty("auth")] + [System.Text.Json.Serialization.JsonPropertyName("auth")] + public int AuthType { get; set; } + } + } + + /// + /// 获取或设置文档访问规则。 + /// + [Newtonsoft.Json.JsonProperty("access_rule")] + [System.Text.Json.Serialization.JsonPropertyName("access_rule")] + public Types.AccessRule AccessRule { get; set; } = default!; + + /// + /// 获取或设置安全配置信息。 + /// + [Newtonsoft.Json.JsonProperty("secure_setting")] + [System.Text.Json.Serialization.JsonPropertyName("secure_setting")] + public Types.SecureSettings SecureSettings { get; set; } = default!; + + /// + /// 获取或设置文档成员授权信息列表。 + /// + [Newtonsoft.Json.JsonProperty("doc_member_list")] + [System.Text.Json.Serialization.JsonPropertyName("doc_member_list")] + public Types.Authority[]? DocumentMemberAuthorityList { get; set; } + + /// + /// 获取或设置文档查看者授权信息列表。 + /// + [Newtonsoft.Json.JsonProperty("co_auth_list")] + [System.Text.Json.Serialization.JsonPropertyName("co_auth_list")] + public Types.Authority[]? DocumentCollaboratorAuthorityList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDocumentShareRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDocumentShareRequest.cs new file mode 100644 index 00000000..c33fda6c --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDocumentShareRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/doc_share 接口的请求。 + /// + public class CgibinWedocDocumentShareRequest : WechatWorkRequest + { + /// + /// 获取或设置文档 ID。 + /// + [Newtonsoft.Json.JsonProperty("docid")] + [System.Text.Json.Serialization.JsonPropertyName("docid")] + public string? DocumentId { get; set; } + + /// + /// 获取或设置收集表 ID。 + /// + [Newtonsoft.Json.JsonProperty("formid")] + [System.Text.Json.Serialization.JsonPropertyName("formid")] + public string? FormId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDocumentShareResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDocumentShareResponse.cs new file mode 100644 index 00000000..d4f22da9 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocDocumentShareResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/doc_share 接口的响应。 + /// + public class CgibinWedocDocumentShareResponse : WechatWorkResponse + { + /// + /// 获取或设置分享链接。 + /// + [Newtonsoft.Json.JsonProperty("share_url")] + [System.Text.Json.Serialization.JsonPropertyName("share_url")] + public string ShareUrl { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocGetDocumentBaseInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocGetDocumentBaseInfoRequest.cs new file mode 100644 index 00000000..6205e266 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocGetDocumentBaseInfoRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/get_doc_base_info 接口的请求。 + /// + public class CgibinWedocGetDocumentBaseInfoRequest : WechatWorkRequest + { + /// + /// 获取或设置文档 ID。 + /// + [Newtonsoft.Json.JsonProperty("docid")] + [System.Text.Json.Serialization.JsonPropertyName("docid")] + public string DocumentId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocGetDocumentBaseInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocGetDocumentBaseInfoResponse.cs new file mode 100644 index 00000000..31d7054e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocGetDocumentBaseInfoResponse.cs @@ -0,0 +1,56 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/get_doc_base_info 接口的响应。 + /// + public class CgibinWedocGetDocumentBaseInfoResponse : WechatWorkResponse + { + public static class Types + { + public class Document + { + /// + /// 获取或设置文档 ID。 + /// + [Newtonsoft.Json.JsonProperty("docid")] + [System.Text.Json.Serialization.JsonPropertyName("docid")] + public string DocumentId { get; set; } = default!; + + /// + /// 获取或设置文档类型。 + /// + [Newtonsoft.Json.JsonProperty("doc_type")] + [System.Text.Json.Serialization.JsonPropertyName("doc_type")] + public int DocumentType { get; set; } + + /// + /// 获取或设置文档名称。 + /// + [Newtonsoft.Json.JsonProperty("doc_name")] + [System.Text.Json.Serialization.JsonPropertyName("doc_name")] + public string DocumentName { get; set; } = default!; + + /// + /// 获取或设置文档创建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + public long CreateTimestamp { get; set; } + + /// + /// 获取或设置文档最后修改的时间戳。 + /// + [Newtonsoft.Json.JsonProperty("modify_time")] + [System.Text.Json.Serialization.JsonPropertyName("modify_time")] + public long ModifyTimestamp { get; set; } + } + } + + /// + /// 获取或设置文档信息。 + /// + [Newtonsoft.Json.JsonProperty("doc_base_info")] + [System.Text.Json.Serialization.JsonPropertyName("doc_base_info")] + public Types.Document Document { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentJoinRuleRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentJoinRuleRequest.cs new file mode 100644 index 00000000..fce9f2bb --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentJoinRuleRequest.cs @@ -0,0 +1,121 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/mod_doc_join_rule 接口的请求。 + /// + public class CgibinWedocModifyDocumentJoinRuleRequest : WechatWorkRequest + { + public static class Types + { + public class Authority + { + /// + /// 获取或设置类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public int Type { get; set; } + + /// + /// 获取或设置成员账号。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string? UserId { get; set; } + + /// + /// 获取或设置外部联系人临时 ID。 + /// + [Newtonsoft.Json.JsonProperty("tmp_external_userid")] + [System.Text.Json.Serialization.JsonPropertyName("tmp_external_userid")] + public string? TempExternalUserId { get; set; } + + /// + /// 获取或设置部门 ID。 + /// + [Newtonsoft.Json.JsonProperty("departmentid")] + [System.Text.Json.Serialization.JsonPropertyName("departmentid")] + public long? DepartmentId { get; set; } + + /// + /// 获取或设置权限类型。 + /// + [Newtonsoft.Json.JsonProperty("auth")] + [System.Text.Json.Serialization.JsonPropertyName("auth")] + public int AuthType { get; set; } + } + } + + /// + /// 获取或设置文档 ID。 + /// + [Newtonsoft.Json.JsonProperty("docid")] + [System.Text.Json.Serialization.JsonPropertyName("docid")] + public string DocumentId { get; set; } = string.Empty; + + /// + /// 获取或设置是否为企业内可访问。 + /// + [Newtonsoft.Json.JsonProperty("enable_corp_internal")] + [System.Text.Json.Serialization.JsonPropertyName("enable_corp_internal")] + public bool? EnableCorpInternal { get; set; } + + /// + /// 获取或设置企业内权限类型。 + /// + [Newtonsoft.Json.JsonProperty("corp_internal_auth")] + [System.Text.Json.Serialization.JsonPropertyName("corp_internal_auth")] + public int? CorpInternalAuthType { get; set; } + + /// + /// 获取或设置是否开启企业内管理员审批。 + /// + [Newtonsoft.Json.JsonProperty("corp_internal_approve_only_by_admin")] + [System.Text.Json.Serialization.JsonPropertyName("corp_internal_approve_only_by_admin")] + public bool? IsCorpInternalApproveOnlyByAdmin { get; set; } + + /// + /// 获取或设置是否为企业外可访问。 + /// + [Newtonsoft.Json.JsonProperty("enable_corp_external")] + [System.Text.Json.Serialization.JsonPropertyName("enable_corp_external")] + public bool? EnableCorpExternal { get; set; } + + /// + /// 获取或设置企业外权限类型。 + /// + [Newtonsoft.Json.JsonProperty("corp_external_auth")] + [System.Text.Json.Serialization.JsonPropertyName("corp_external_auth")] + public int? CorpExternalAuthType { get; set; } + + /// + /// 获取或设置是否开启企业外管理员审批。 + /// + [Newtonsoft.Json.JsonProperty("corp_external_approve_only_by_admin")] + [System.Text.Json.Serialization.JsonPropertyName("corp_external_approve_only_by_admin")] + public bool? IsCorpExternalApproveOnlyByAdmin { get; set; } + + /// + /// 获取或设置是否禁止分享到企业外部。 + /// + [Newtonsoft.Json.JsonProperty("ban_share_external")] + [System.Text.Json.Serialization.JsonPropertyName("ban_share_external")] + public bool? IsBanShareExternal { get; set; } + + /// + /// 获取或设置是否更新文档查看者授权信息列表。 + /// + [Newtonsoft.Json.JsonProperty("update_co_auth_list")] + [System.Text.Json.Serialization.JsonPropertyName("update_co_auth_list")] + public bool? RequireUpdateCollaboratorAuthorityList { get; set; } + + /// + /// 获取或设置新的文档查看者授权信息列表。 + /// + [Newtonsoft.Json.JsonProperty("co_auth_list")] + [System.Text.Json.Serialization.JsonPropertyName("co_auth_list")] + public IList? DocumentCollaboratorAuthorityList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentJoinRuleResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentJoinRuleResponse.cs new file mode 100644 index 00000000..d25190d2 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentJoinRuleResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/mod_doc_join_rule 接口的响应。 + /// + public class CgibinWedocModifyDocumentJoinRuleResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentMemberRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentMemberRequest.cs new file mode 100644 index 00000000..0b28fdd4 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentMemberRequest.cs @@ -0,0 +1,38 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/mod_doc_member 接口的请求。 + /// + public class CgibinWedocModifyDocumentMemberRequest : WechatWorkRequest + { + public static class Types + { + public class Authority : CgibinWedocModifyDocumentJoinRuleRequest.Types.Authority + { + } + } + + /// + /// 获取或设置文档 ID。 + /// + [Newtonsoft.Json.JsonProperty("docid")] + [System.Text.Json.Serialization.JsonPropertyName("docid")] + public string DocumentId { get; set; } = string.Empty; + + /// + /// 获取或设置新增的文档成员授权信息列表。 + /// + [Newtonsoft.Json.JsonProperty("update_file_member_list")] + [System.Text.Json.Serialization.JsonPropertyName("update_file_member_list")] + public IList? AddedMemberAuthorityList { get; set; } + + /// + /// 获取或设置删除的文档成员授权信息列表。 + /// + [Newtonsoft.Json.JsonProperty("del_file_member_list")] + [System.Text.Json.Serialization.JsonPropertyName("del_file_member_list")] + public IList? DeletedMemberAuthorityList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentMemberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentMemberResponse.cs new file mode 100644 index 00000000..c09447ab --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentMemberResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/mod_doc_member 接口的响应。 + /// + public class CgibinWedocModifyDocumentMemberResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentSafeSettingRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentSafeSettingRequest.cs new file mode 100644 index 00000000..ed1a442f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentSafeSettingRequest.cs @@ -0,0 +1,70 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/mod_doc_safty_setting 接口的请求。 + /// + public class CgibinWedocModifyDocumentSafeSettingRequest : WechatWorkRequest + { + public static class Types + { + public class Watermark + { + /// + /// 获取或设置水印文字。 + /// + [Newtonsoft.Json.JsonProperty("text")] + [System.Text.Json.Serialization.JsonPropertyName("text")] + public string? Text { get; set; } + + /// + /// 获取或设置水印类型。 + /// + [Newtonsoft.Json.JsonProperty("margin_type")] + [System.Text.Json.Serialization.JsonPropertyName("margin_type")] + public int? MarginType { get; set; } + + /// + /// 获取或设置是否开启水印文本。 + /// + [Newtonsoft.Json.JsonProperty("show_text")] + [System.Text.Json.Serialization.JsonPropertyName("show_text")] + public bool? EnableShowText { get; set; } + + /// + /// 获取或设置是否开启水印访问人名称。 + /// + [Newtonsoft.Json.JsonProperty("show_visitor_name")] + [System.Text.Json.Serialization.JsonPropertyName("show_visitor_name")] + public bool? EnableShowVisitorName { get; set; } + } + } + + /// + /// 获取或设置文档 ID。 + /// + [Newtonsoft.Json.JsonProperty("docid")] + [System.Text.Json.Serialization.JsonPropertyName("docid")] + public string DocumentId { get; set; } = string.Empty; + + /// + /// 获取或设置是否开启只读备份。 + /// + [Newtonsoft.Json.JsonProperty("enable_readonly_copy")] + [System.Text.Json.Serialization.JsonPropertyName("enable_readonly_copy")] + public bool? EnableReadonlyCopy { get; set; } + + /// + /// 获取或设置是否开启只读评论。 + /// + [Newtonsoft.Json.JsonProperty("enable_readonly_comment")] + [System.Text.Json.Serialization.JsonPropertyName("enable_readonly_comment")] + public bool? EnableReadonlyComment { get; set; } + + /// + /// 获取或设置水印信息。 + /// + [Newtonsoft.Json.JsonProperty("watermark")] + [System.Text.Json.Serialization.JsonPropertyName("watermark")] + public Types.Watermark? Watermark { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentSafeSettingResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentSafeSettingResponse.cs new file mode 100644 index 00000000..69bc7fb8 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocModifyDocumentSafeSettingResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/mod_doc_safty_setting 接口的响应。 + /// + public class CgibinWedocModifyDocumentSafeSettingResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocRenameDocumentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocRenameDocumentRequest.cs new file mode 100644 index 00000000..5f79e00c --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocRenameDocumentRequest.cs @@ -0,0 +1,29 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/rename_doc 接口的请求。 + /// + public class CgibinWedocRenameDocumentRequest : WechatWorkRequest + { + /// + /// 获取或设置文档 ID。 + /// + [Newtonsoft.Json.JsonProperty("docid")] + [System.Text.Json.Serialization.JsonPropertyName("docid")] + public string? DocumentId { get; set; } + + /// + /// 获取或设置收集表 ID。 + /// + [Newtonsoft.Json.JsonProperty("formid")] + [System.Text.Json.Serialization.JsonPropertyName("formid")] + public string? FormId { get; set; } + + /// + /// 获取或设置新名称。 + /// + [Newtonsoft.Json.JsonProperty("new_name")] + [System.Text.Json.Serialization.JsonPropertyName("new_name")] + public string NewName { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocRenameDocumentResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocRenameDocumentResponse.cs new file mode 100644 index 00000000..a798137e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedoc/Document/CgibinWedocRenameDocumentResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedoc/rename_doc 接口的响应。 + /// + public class CgibinWedocRenameDocumentResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedrive/File/CgibinWedriveGetFilePermissionResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedrive/File/CgibinWedriveGetFilePermissionResponse.cs index 8c7cedc7..0d562381 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedrive/File/CgibinWedriveGetFilePermissionResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWedrive/File/CgibinWedriveGetFilePermissionResponse.cs @@ -179,7 +179,7 @@ public Types.Authority[]? FileMemberAuthorityList { get; set; } /// - /// 获取或设置文件协作者授权信息列表。 + /// 获取或设置文件查看者授权信息列表。 /// [Newtonsoft.Json.JsonProperty("co_auth_list")] [System.Text.Json.Serialization.JsonPropertyName("co_auth_list")] diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Wedoc/DocumentChangeEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Wedoc/DocumentChangeEvent.xml new file mode 100644 index 00000000..4abbd1ed --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Wedoc/DocumentChangeEvent.xml @@ -0,0 +1,10 @@ + + + + 1348831860 + + + + + + diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocCreateCollectRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocCreateCollectRequest.json new file mode 100644 index 00000000..66508f9f --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocCreateCollectRequest.json @@ -0,0 +1,53 @@ +{ + "spaceid": "SPACEID", + "fatherid": "FATHERID", + "form_info": { + "form_title": "FORM_TITLE", + "form_desc": "FORM_DESC", + "form_header": "FORM_HEADER", + "form_question": { + "items": [ + { + "question_id": 1, + "title": "TITLE", + "pos": 0, + "status": 1, + "reply_type": 1, + "must_reply": true, + "note": "NOTE", + "option_item": [ + { + "key": 1, + "value": "VALUE", + "status": 1 + } + ], + "placeholder": "PLACEHOLDER" + } + ] + }, + "form_setting": { + "fill_out_auth": 0, + "fill_in_range": { + "userids": ["USER_1", "USER_2", "USER_3"], + "departmentids": [10001, 10002, 10003] + }, + "setting_manager_range": { + "userids": ["USER_4", "USER_5", "USER_6"] + }, + "timed_repeat_info": { + "enable": true, + "week_flag": 1, + "remind_time": 1, + "repeat_type": 1, + "skip_holiday": true, + "day_of_month": 1, + "fork_finish_type": 1 + }, + "max_fill_cnt": 0, + "timed_finish": 0, + "can_anonymous": false, + "can_notify_submit": false + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocCreateCollectResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocCreateCollectResponse.json new file mode 100644 index 00000000..6d179544 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocCreateCollectResponse.json @@ -0,0 +1,5 @@ +{ + "errcode": 0, + "errmsg": "ok", + "formid": "FORMID" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormAnswerRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormAnswerRequest.json new file mode 100644 index 00000000..5cf7a212 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormAnswerRequest.json @@ -0,0 +1,4 @@ +{ + "repeated_id": "REPEATED_ID1", + "answer_ids": [1] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormAnswerResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormAnswerResponse.json new file mode 100644 index 00000000..3f3d98d4 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormAnswerResponse.json @@ -0,0 +1,75 @@ +{ + "errcode": 0, + "errmsg": "ok", + "answer": { + "answer_list": [ + { + "answer_id": 15, + "user_name": "USER_NAME1", + "ctime": 1668430580, + "mtime": 1668430580, + "reply": { + "items": [ + { + "question_id": 1, + "text_reply": "Ndjnd" + }, + { + "question_id": 2, + "option_reply": [2] + }, + { + "question_id": 3, + "text_reply": "20:53" + }, + { + "question_id": 4, + "text_reply": "73℃" + }, + { + "question_id": 5, + "file_extend_reply": [ + { + "name": "FILE_NAME1", + "fileid": "FILEID1" + } + ] + }, + { + "question_id": 6, + "text_reply": "四川省/成都市/武侯区/天府三街(峰汇中心)" + }, + { + "question_id": 7, + "text_reply": "test" + }, + { + "question_id": 8, + "option_reply": [1] + }, + { + "question_id": 9, + "text_reply": "2022年11月" + }, + { + "question_id": 10, + "option_reply": [5] + }, + { + "question_id": 11, + "option_reply": [3], + "option_extend_reply": [ + { + "option_reply": 3, + "extend_text": "test" + } + ] + } + ] + }, + "answer_status": 1, + "tmp_external_userid": "TMP_EXTERNAL_USERID1" + } + ] + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormInfoRequest.json new file mode 100644 index 00000000..454274c5 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormInfoRequest.json @@ -0,0 +1,3 @@ +{ + "formid": "FORMID" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormInfoResponse.json new file mode 100644 index 00000000..e0cdc356 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormInfoResponse.json @@ -0,0 +1,74 @@ +{ + "errcode": 0, + "errmsg": "ok", + "form_info": { + "formid": "FORMID1", + "form_title": "api创建的收集表_周期", + "form_desc": "这是描述", + "form_header": "URL", + "form_question": { + "items": [ + { + "question_id": 1, + "title": "问题1", + "pos": 1, + "status": 1, + "reply_type": 1, + "must_reply": true, + "note": "问题备注1", + "placeholder": "提示1" + }, + { + "question_id": 2, + "title": "问题2", + "pos": 2, + "status": 1, + "reply_type": 2, + "must_reply": false, + "note": "问题备注2", + "option_item": [ + { + "key": 1, + "value": "A", + "status": 1 + }, + { + "key": 2, + "value": "B", + "status": 1 + }, + { + "key": 3, + "value": "C", + "status": 1 + } + ], + "placeholder": "提示2" + } + ] + }, + "form_setting": { + "fill_out_auth": 1, + "fill_in_range": { + "departmentids": [1], + "userids": ["USERID1", "USERID2"] + }, + "setting_manager_range": { + "userids": ["USERID1", "USERID2"] + }, + "timed_repeat_info": { + "enable": true, + "remind_time": 1668389400, + "rule_ctime": 1668418140, + "rule_mtime": 1668418140, + "repeat_type": 1, + "skip_holiday": false + }, + "max_fill_cnt": 0, + "timed_finish": 0, + "can_anonymous": false, + "can_notify_submit": true + }, + "repeated_id": ["REPEAT_ID1"] + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormStatisticRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormStatisticRequest.json new file mode 100644 index 00000000..13486f90 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormStatisticRequest.json @@ -0,0 +1,8 @@ +{ + "repeated_id": "REPEATED_ID2", + "req_type": 2, + "start_time": 1667395287, + "end_time": 1668418369, + "limit": 20, + "cursor": 1 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormStatisticResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormStatisticResponse.json new file mode 100644 index 00000000..703af289 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocGetFormStatisticResponse.json @@ -0,0 +1,29 @@ +{ + "errcode": 0, + "errmsg": "ok", + "fill_cnt": 1, + "fill_user_cnt": 1, + "unfill_user_cnt": 90, + "submit_users": [ + { + "userid": "USERID1", + "submit_time": 1668418200, + "answer_id": 1, + "user_name": "USER_NAME1" + }, + { + "tmp_external_userid": "TMP_EXTERNAL_USERID1", + "submit_time": 1668418200, + "answer_id": 2, + "user_name": "USER_NAME2" + } + ], + "unfill_users": [ + { + "userid": "USERID1", + "user_name": "USER_NAME1" + } + ], + "has_more": false, + "cursor": 1 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocModifyCollectRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocModifyCollectRequest.json new file mode 100644 index 00000000..3a3cafa8 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Collect/CgibinWedocModifyCollectRequest.json @@ -0,0 +1,44 @@ +{ + "oper": 1, + "formid": "FORMID", + "form_info": { + "form_title": "FORM_TITLE", + "form_desc": "FORM_DESC", + "form_header": "FORM_HEADER", + "form_question": { + "items": [ + { + "question_id": 1, + "title": "TITLE", + "pos": 0, + "status": 1, + "reply_type": 1, + "must_reply": true, + "note": "NOTE", + "option_item": [ + { + "key": 1, + "value": "VALUE", + "status": 1 + } + ], + "placeholder": "PLACEHOLDER" + } + ] + }, + "form_setting": { + "fill_out_auth": 0, + "fill_in_range": { + "userids": ["USER_1", "USER_2", "USER_3"], + "departmentids": [10001, 10002, 10003] + }, + "setting_manager_range": { + "userids": ["USER_4", "USER_5", "USER_6"] + }, + "max_fill_cnt": 0, + "timed_finish": 0, + "can_anonymous": false, + "can_notify_submit": false + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocCreateDocumentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocCreateDocumentRequest.json new file mode 100644 index 00000000..62f00362 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocCreateDocumentRequest.json @@ -0,0 +1,7 @@ +{ + "spaceid": "SPACEID", + "fatherid": "FATHERID", + "doc_type": 0, + "doc_name": "DOC_NAME", + "admin_users": ["USERID1", "USERID2", "USERID3"] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocCreateDocumentResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocCreateDocumentResponse.json new file mode 100644 index 00000000..fcd482ff --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocCreateDocumentResponse.json @@ -0,0 +1,6 @@ +{ + "errcode": 0, + "errmsg": "ok", + "url": "URL", + "docid": "DOCID" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocDeleteDocumentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocDeleteDocumentRequest.json new file mode 100644 index 00000000..8e64bf2d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocDeleteDocumentRequest.json @@ -0,0 +1,4 @@ +{ + "docid": "DOCID", + "formid": "FORMID" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocDocumentGetAuthRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocDocumentGetAuthRequest.json new file mode 100644 index 00000000..eb0191b5 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocDocumentGetAuthRequest.json @@ -0,0 +1,3 @@ +{ + "docid": "DOCID" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocDocumentGetAuthResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocDocumentGetAuthResponse.json new file mode 100644 index 00000000..eaa0f8f3 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocDocumentGetAuthResponse.json @@ -0,0 +1,42 @@ +{ + "errcode": 0, + "errmsg": "ok", + "access_rule": { + "enable_corp_internal": true, + "corp_internal_auth": 1, + "enable_corp_external": true, + "corp_external_auth": 1, + "corp_internal_approve_only_by_admin": true, + "corp_external_approve_only_by_admin": true, + "ban_share_external": false + }, + "secure_setting": { + "enable_readonly_copy": false, + "watermark": { + "margin_type": 2, + "show_visitor_name": false, + "show_text": false, + "text": "" + }, + "enable_readonly_comment": false + }, + "doc_member_list": [ + { + "type": 1, + "userid": "USERID1", + "auth": 7 + }, + { + "type": 1, + "tmp_external_userid": "TMP_EXTERNAL_USERID2", + "auth": 1 + } + ], + "co_auth_list": [ + { + "type": 2, + "departmentid": 1, + "auth": 1 + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocDocumentShareRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocDocumentShareRequest.json new file mode 100644 index 00000000..8e64bf2d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocDocumentShareRequest.json @@ -0,0 +1,4 @@ +{ + "docid": "DOCID", + "formid": "FORMID" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocDocumentShareResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocDocumentShareResponse.json new file mode 100644 index 00000000..05bd51ce --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocDocumentShareResponse.json @@ -0,0 +1,5 @@ +{ + "errcode": 0, + "errmsg": "ok", + "share_url": "URL1" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocGetDocumentBaseInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocGetDocumentBaseInfoRequest.json new file mode 100644 index 00000000..eb0191b5 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocGetDocumentBaseInfoRequest.json @@ -0,0 +1,3 @@ +{ + "docid": "DOCID" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocGetDocumentBaseInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocGetDocumentBaseInfoResponse.json new file mode 100644 index 00000000..1d7edb0e --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocGetDocumentBaseInfoResponse.json @@ -0,0 +1,11 @@ +{ + "errcode": 0, + "errmsg": "ok", + "doc_base_info": { + "docid": "DOCID", + "doc_name": "DOC_NAME", + "create_time": 0, + "modify_time": 0, + "doc_type": 0 + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocModifyDocumentJoinRuleRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocModifyDocumentJoinRuleRequest.json new file mode 100644 index 00000000..21cded01 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocModifyDocumentJoinRuleRequest.json @@ -0,0 +1,18 @@ +{ + "docid": "DOCID", + "enable_corp_internal": true, + "corp_internal_auth": 1, + "enable_corp_external": true, + "corp_external_auth": 1, + "corp_internal_approve_only_by_admin": true, + "corp_external_approve_only_by_admin": true, + "ban_share_external": false, + "update_co_auth_list": true, + "co_auth_list": [ + { + "departmentid": 1, + "auth": 1, + "type": 2 + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocModifyDocumentMemberRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocModifyDocumentMemberRequest.json new file mode 100644 index 00000000..99c07886 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocModifyDocumentMemberRequest.json @@ -0,0 +1,20 @@ +{ + "docid": "DOCID", + "update_file_member_list": [ + { + "type": 1, + "auth": 7, + "userid": "USERID1" + } + ], + "del_file_member_list": [ + { + "type": 1, + "userid": "USERID2" + }, + { + "type": 1, + "tmp_external_userid": "TMP_EXTERNAL_USERID2" + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocModifyDocumentSafeSettingRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocModifyDocumentSafeSettingRequest.json new file mode 100644 index 00000000..97b71981 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocModifyDocumentSafeSettingRequest.json @@ -0,0 +1,10 @@ +{ + "docid": "DOCID", + "enable_readonly_copy": false, + "watermark": { + "margin_type": 1, + "show_visitor_name": true, + "show_text": true, + "text": "test mark" + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocRenameDocumentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocRenameDocumentRequest.json new file mode 100644 index 00000000..09459b3a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWedoc/Document/CgibinWedocRenameDocumentRequest.json @@ -0,0 +1,5 @@ +{ + "docid": "DOCID", + "formid": "FORMID", + "new_name": "NEW_NAME" +}