From 823308349f49bcadcf9c2aa610f1876cb8846a3f Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Tue, 9 Apr 2024 16:17:29 +0800 Subject: [PATCH] =?UTF-8?q?feat(work):=20=E9=9A=8F=E5=AE=98=E6=96=B9?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AE=A1=E6=89=B9=E7=9B=B8=E5=85=B3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Approval/SystemApprovalChangeEvent.cs | 116 ++++++++++- .../Approval/CgibinOAApplyEventRequest.cs | 191 ++++++++++++++++++ .../CgibinOAGetApprovalDetailResponse.cs | 109 +++++++++- .../CgibinOAGetTemplateDetailResponse.cs | 2 +- .../Approval/SystemApprovalChangeEvent.xml | 33 ++- .../Approval/CgibinOAApplyEventRequest.json | 44 +++- .../CgibinOAGetApprovalDetailResponse.json | 16 ++ 7 files changed, 503 insertions(+), 8 deletions(-) diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Approval/SystemApprovalChangeEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Approval/SystemApprovalChangeEvent.cs index f5feb193..75e79fdd 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Approval/SystemApprovalChangeEvent.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Approval/SystemApprovalChangeEvent.cs @@ -104,7 +104,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Events [Newtonsoft.Json.JsonProperty("Attach")] [System.Text.Json.Serialization.JsonPropertyName("Attach")] [System.Xml.Serialization.XmlElement("Attach", Type = typeof(string), IsNullable = true)] - public string[]? SpeechMediaIdList { get; set; } + public string[]? AttachmentMediaIdList { get; set; } } } @@ -189,6 +189,112 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Events [System.Xml.Serialization.XmlElement("CommentTime")] public long CreateTimestamp { get; set; } } + + public class Process + { + public static class Types + { + public class Node + { + /// + /// 获取或设置节点类型。 + /// + [Newtonsoft.Json.JsonProperty("NodeType")] + [System.Text.Json.Serialization.JsonPropertyName("NodeType")] + [System.Xml.Serialization.XmlElement("NodeType")] + public int NodeType { get; set; } + + /// + /// 获取或设置节点状态。 + /// + [Newtonsoft.Json.JsonProperty("SpStatus")] + [System.Text.Json.Serialization.JsonPropertyName("SpStatus")] + [System.Xml.Serialization.XmlElement("SpStatus", IsNullable = true)] + public int? Status { get; set; } + + /// + /// 获取或设置多人办理方式。 + /// + [Newtonsoft.Json.JsonProperty("ApvRel")] + [System.Text.Json.Serialization.JsonPropertyName("ApvRel")] + [System.Xml.Serialization.XmlElement("ApvRel", IsNullable = true)] + public int? ApproversRelation { get; set; } + + /// + /// 获取或设置子节点列表。 + /// + [Newtonsoft.Json.JsonProperty("SubNodeList")] + [System.Text.Json.Serialization.JsonPropertyName("SubNodeList")] + [System.Xml.Serialization.XmlElement("SubNodeList", Type = typeof(Types.SubNode))] + public Types.SubNode[] SubNodeList { get; set; } = default!; + } + + public class SubNode + { + public static class Types + { + public class User + { + /// + /// 获取或设置处理人成员账号。 + /// + [Newtonsoft.Json.JsonProperty("UserId")] + [System.Text.Json.Serialization.JsonPropertyName("UserId")] + [System.Xml.Serialization.XmlElement("UserId")] + public string UserId { get; set; } = default!; + } + } + + /// + /// 获取或设置处理人信息。 + /// + [Newtonsoft.Json.JsonProperty("UserInfo")] + [System.Text.Json.Serialization.JsonPropertyName("UserInfo")] + [System.Xml.Serialization.XmlElement("UserInfo")] + public Types.User User { get; set; } = default!; + + /// + /// 获取或设置审批状态。 + /// + [Newtonsoft.Json.JsonProperty("SpYj")] + [System.Text.Json.Serialization.JsonPropertyName("SpYj")] + [System.Xml.Serialization.XmlElement("SpYj", IsNullable = true)] + public int? ApproveStatus { get; set; } + + /// + /// 获取或设置操作时间。 + /// + [Newtonsoft.Json.JsonProperty("Sptime")] + [System.Text.Json.Serialization.JsonPropertyName("Sptime")] + [System.Xml.Serialization.XmlElement("Sptime", IsNullable = true)] + public long? ApproveTimestamp { get; set; } + + /// + /// 获取或设置审批意见。 + /// + [Newtonsoft.Json.JsonProperty("Speech")] + [System.Text.Json.Serialization.JsonPropertyName("Speech")] + [System.Xml.Serialization.XmlElement("Speech", IsNullable = true)] + public string? Speech { get; set; } + + /// + /// 获取或设置审批意见附件 MediaId 列表。 + /// + [Newtonsoft.Json.JsonProperty("MediaIds")] + [System.Text.Json.Serialization.JsonPropertyName("MediaIds")] + [System.Xml.Serialization.XmlElement("MediaIds", Type = typeof(string), IsNullable = true)] + public string[]? AttachmentMediaIdList { get; set; } + } + } + + /// + /// 获取或设置节点列表。 + /// + [Newtonsoft.Json.JsonProperty("NodeList")] + [System.Text.Json.Serialization.JsonPropertyName("NodeList")] + [System.Xml.Serialization.XmlElement("NodeList", Type = typeof(Types.Node))] + public Types.Node[] NodeList { get; set; } = default!; + } } /// @@ -270,6 +376,14 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Events [System.Text.Json.Serialization.JsonPropertyName("Comments")] [System.Xml.Serialization.XmlElement("Comments", Type = typeof(Types.Comment))] public Types.Comment[] CommentList { get; set; } = default!; + + /// + /// 获取或设置审批流程信息。 + /// + [Newtonsoft.Json.JsonProperty("ProcessList")] + [System.Text.Json.Serialization.JsonPropertyName("ProcessList")] + [System.Xml.Serialization.XmlElement("ProcessList", IsNullable = true)] + public Types.Process? Process { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAApplyEventRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAApplyEventRequest.cs index 4bf1a441..b9239fb9 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAApplyEventRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAApplyEventRequest.cs @@ -43,6 +43,45 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models public string Text { get; set; } = string.Empty; } + public class Process + { + public static class Types + { + public class Node + { + /// + /// 获取或设置节点类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + [System.Xml.Serialization.XmlElement("type")] + public int NodeType { get; set; } + + /// + /// 获取或设置多人办理方式。 + /// + [Newtonsoft.Json.JsonProperty("apv_rel")] + [System.Text.Json.Serialization.JsonPropertyName("apv_rel")] + [System.Xml.Serialization.XmlElement("apv_rel", IsNullable = true)] + public int? ApproversRelation { get; set; } + + /// + /// 获取或设置处理人成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public IList? UserIdList { get; set; } + } + } + + /// + /// 获取或设置节点列表。 + /// + [Newtonsoft.Json.JsonProperty("node_list")] + [System.Text.Json.Serialization.JsonPropertyName("node_list")] + public IList NodeList { get; set; } = new List(); + } + public class ApplyData { public static class Types @@ -157,6 +196,20 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models [Newtonsoft.Json.JsonProperty("date_range")] [System.Text.Json.Serialization.JsonPropertyName("date_range")] public DateRangeControlValue? DateRange { get; set; } + + /// + /// 获取或设置 PunchCorrection 控件值。 + /// + [Newtonsoft.Json.JsonProperty("punch_correction")] + [System.Text.Json.Serialization.JsonPropertyName("punch_correction")] + public CheckinControlValue? Checkin { get; set; } + + /// + /// 获取或设置 BankAccount 控件值。 + /// + [Newtonsoft.Json.JsonProperty("bank_account")] + [System.Text.Json.Serialization.JsonPropertyName("bank_account")] + public BankAccountControlValue? BankAccount { get; set; } } public class DateControlValue @@ -420,6 +473,137 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models [System.Text.Json.Serialization.JsonPropertyName("new_duration")] public int Duration { get; set; } } + + public class CheckinControlValue + { + /// + /// 获取或设置异常状态说明。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string State { get; set; } = string.Empty; + + /// + /// 获取或设置版本标识。 + /// + [Newtonsoft.Json.JsonProperty("version")] + [System.Text.Json.Serialization.JsonPropertyName("version")] + public int? Version { get; set; } + + /// + /// 获取或设置补卡时间戳。 + /// + [Newtonsoft.Json.JsonProperty("time")] + [System.Text.Json.Serialization.JsonPropertyName("time")] + public long? Timestamp { get; set; } + + /// + /// 获取或设置补卡日期时间戳。 + /// + [Newtonsoft.Json.JsonProperty("daymonthyear")] + [System.Text.Json.Serialization.JsonPropertyName("daymonthyear")] + public long? DateTimestamp { get; set; } + } + + public class BankAccountControlValue + { + public static class Types + { + public class Bank + { + /// + /// 获取或设置银行名称。 + /// + [Newtonsoft.Json.JsonProperty("bank_alias")] + [System.Text.Json.Serialization.JsonPropertyName("bank_alias")] + public string? BankAlias { get; set; } + + /// + /// 获取或设置银行代码。 + /// + [Newtonsoft.Json.JsonProperty("bank_alias_code")] + [System.Text.Json.Serialization.JsonPropertyName("bank_alias_code")] + public string? BankAliasCode { get; set; } + + /// + /// 获取或设置银行支行联行号。 + /// + [Newtonsoft.Json.JsonProperty("bank_branch_id")] + [System.Text.Json.Serialization.JsonPropertyName("bank_branch_id")] + public string? BankBranchId { get; set; } + + /// + /// 获取或设置银行支行。 + /// + [Newtonsoft.Json.JsonProperty("bank_branch_name")] + [System.Text.Json.Serialization.JsonPropertyName("bank_branch_name")] + public string? BankBranchName { get; set; } + + /// + /// 获取或设置省份。 + /// + [Newtonsoft.Json.JsonProperty("province")] + [System.Text.Json.Serialization.JsonPropertyName("province")] + public string? Province { get; set; } + + /// + /// 获取或设置省份代码。 + /// + [Newtonsoft.Json.JsonProperty("province_code")] + [System.Text.Json.Serialization.JsonPropertyName("province_code")] + public int? ProvinceCode { get; set; } + + /// + /// 获取或设置城市。 + /// + [Newtonsoft.Json.JsonProperty("city")] + [System.Text.Json.Serialization.JsonPropertyName("city")] + public string? City { get; set; } + + /// + /// 获取或设置城市代码。 + /// + [Newtonsoft.Json.JsonProperty("city_code")] + [System.Text.Json.Serialization.JsonPropertyName("city_code")] + public int? CityCode { get; set; } + } + } + + /// + /// 获取或设置账户类型。 + /// + [Newtonsoft.Json.JsonProperty("account_type")] + [System.Text.Json.Serialization.JsonPropertyName("account_type")] + public int AccountType { get; set; } + + /// + /// 获取或设置账户名。 + /// + [Newtonsoft.Json.JsonProperty("account_name")] + [System.Text.Json.Serialization.JsonPropertyName("account_name")] + public string AccountName { get; set; } = string.Empty; + + /// + /// 获取或设置账号。 + /// + [Newtonsoft.Json.JsonProperty("account_number")] + [System.Text.Json.Serialization.JsonPropertyName("account_number")] + public string AccountNumber { get; set; } = string.Empty; + + /// + /// 获取或设置备注。 + /// + [Newtonsoft.Json.JsonProperty("remark")] + [System.Text.Json.Serialization.JsonPropertyName("remark")] + public string Remark { get; set; } = string.Empty; + + /// + /// 获取或设置银行信息。 + /// + [Newtonsoft.Json.JsonProperty("bank")] + [System.Text.Json.Serialization.JsonPropertyName("bank")] + public Types.Bank Bank { get; set; } = new Types.Bank(); + } } /// @@ -501,6 +685,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models [System.Text.Json.Serialization.JsonPropertyName("approver")] public IList ApproverList { get; set; } = new List(); + /// + /// 获取或设置审批流程信息。 + /// + [Newtonsoft.Json.JsonProperty("process")] + [System.Text.Json.Serialization.JsonPropertyName("process")] + public Types.Process? Process { get; set; } + /// /// 获取或设置抄送方式。 /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAGetApprovalDetailResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAGetApprovalDetailResponse.cs index 49c84b2d..2ca525b5 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAGetApprovalDetailResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/CgibinOAGetApprovalDetailResponse.cs @@ -92,7 +92,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models /// [Newtonsoft.Json.JsonProperty("media_id")] [System.Text.Json.Serialization.JsonPropertyName("media_id")] - public string[]? SpeechMediaIdList { get; set; } + public string[]? AttachmentMediaIdList { get; set; } } } @@ -243,6 +243,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models [Newtonsoft.Json.JsonProperty("punch_correction")] [System.Text.Json.Serialization.JsonPropertyName("punch_correction")] public CheckinControlValue? Checkin { get; set; } + + /// + /// 获取或设置 BankAccount 控件值。 + /// + [Newtonsoft.Json.JsonProperty("bank_account")] + [System.Text.Json.Serialization.JsonPropertyName("bank_account")] + public BankAccountControlValue? BankAccount { get; set; } } public class DateControlValue @@ -656,6 +663,106 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.TextualNumberConverter))] public long? DateTimestamp { get; set; } } + + public class BankAccountControlValue + { + public static class Types + { + public class Bank + { + /// + /// 获取或设置银行名称。 + /// + [Newtonsoft.Json.JsonProperty("bank_alias")] + [System.Text.Json.Serialization.JsonPropertyName("bank_alias")] + public string? BankAlias { get; set; } + + /// + /// 获取或设置银行代码。 + /// + [Newtonsoft.Json.JsonProperty("bank_alias_code")] + [System.Text.Json.Serialization.JsonPropertyName("bank_alias_code")] + public string? BankAliasCode { get; set; } + + /// + /// 获取或设置银行支行联行号。 + /// + [Newtonsoft.Json.JsonProperty("bank_branch_id")] + [System.Text.Json.Serialization.JsonPropertyName("bank_branch_id")] + public string? BankBranchId { get; set; } + + /// + /// 获取或设置银行支行。 + /// + [Newtonsoft.Json.JsonProperty("bank_branch_name")] + [System.Text.Json.Serialization.JsonPropertyName("bank_branch_name")] + public string? BankBranchName { get; set; } + + /// + /// 获取或设置省份。 + /// + [Newtonsoft.Json.JsonProperty("province")] + [System.Text.Json.Serialization.JsonPropertyName("province")] + public string? Province { get; set; } + + /// + /// 获取或设置省份代码。 + /// + [Newtonsoft.Json.JsonProperty("province_code")] + [System.Text.Json.Serialization.JsonPropertyName("province_code")] + public int? ProvinceCode { get; set; } + + /// + /// 获取或设置城市。 + /// + [Newtonsoft.Json.JsonProperty("city")] + [System.Text.Json.Serialization.JsonPropertyName("city")] + public string? City { get; set; } + + /// + /// 获取或设置城市代码。 + /// + [Newtonsoft.Json.JsonProperty("city_code")] + [System.Text.Json.Serialization.JsonPropertyName("city_code")] + public int? CityCode { get; set; } + } + } + + /// + /// 获取或设置账户类型。 + /// + [Newtonsoft.Json.JsonProperty("account_type")] + [System.Text.Json.Serialization.JsonPropertyName("account_type")] + public int AccountType { get; set; } + + /// + /// 获取或设置账户名。 + /// + [Newtonsoft.Json.JsonProperty("account_name")] + [System.Text.Json.Serialization.JsonPropertyName("account_name")] + public string AccountName { get; set; } = default!; + + /// + /// 获取或设置账号。 + /// + [Newtonsoft.Json.JsonProperty("account_number")] + [System.Text.Json.Serialization.JsonPropertyName("account_number")] + public string AccountNumber { get; set; } = default!; + + /// + /// 获取或设置备注。 + /// + [Newtonsoft.Json.JsonProperty("remark")] + [System.Text.Json.Serialization.JsonPropertyName("remark")] + public string Remark { get; set; } = default!; + + /// + /// 获取或设置银行信息。 + /// + [Newtonsoft.Json.JsonProperty("bank")] + [System.Text.Json.Serialization.JsonPropertyName("bank")] + public Types.Bank Bank { get; set; } = default!; + } } /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAGetTemplateDetailResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAGetTemplateDetailResponse.cs index 5dc5050a..7ffda961 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAGetTemplateDetailResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinOA/Approval/Template/CgibinOAGetTemplateDetailResponse.cs @@ -1,4 +1,4 @@ -namespace SKIT.FlurlHttpClient.Wechat.Work.Models +namespace SKIT.FlurlHttpClient.Wechat.Work.Models { /// /// 表示 [POST] /cgi-bin/oa/gettemplatedetail 接口的响应。 diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Approval/SystemApprovalChangeEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Approval/SystemApprovalChangeEvent.xml index bcb033aa..30ad8584 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Approval/SystemApprovalChangeEvent.xml +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Approval/SystemApprovalChangeEvent.xml @@ -1,4 +1,4 @@ - + 1571732272 @@ -50,6 +50,37 @@ + + + 1 + 1 + 2 + + + + + + 1 + 0 + + + + + + + 1 + 0 + + + + 2 + + + + + + + diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAApplyEventRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAApplyEventRequest.json index 28f7f0eb..02ecadc5 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAApplyEventRequest.json +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAApplyEventRequest.json @@ -1,19 +1,39 @@ -{ +{ "creator_userid": "WangXiaoMing", "template_id": "3Tka1eD6v6JfzhDMqPd3aMkFdxqtJMc2ZRioeFXkaaa", "use_template_approver": 0, "choose_department": 2, + "process": { + "node_list": [ + { + "type": 1, + "apv_rel": 1, + "userid": [ + "abc", + "bcd" + ] + }, + { + "type": 1, + "apv_rel": 1, + "userid": [ + "abc" + ] + } + + ] + }, "approver": [ { "attr": 2, - "userid": ["WuJunJie", "WangXiaoMing"] + "userid": [ "WuJunJie", "WangXiaoMing" ] }, { "attr": 1, - "userid": ["LiuXiaoGang"] + "userid": [ "LiuXiaoGang" ] } ], - "notifyer": ["WuJunJie", "WangXiaoMing"], + "notifyer": [ "WuJunJie", "WangXiaoMing" ], "notify_type": 1, "apply_data": { "contents": [ @@ -136,6 +156,22 @@ "new_begin": 1570550400, "new_end": 1570593600, "new_duration": 86400 + }, + "bank_account": { + "account_type": 1, + "account_name": "账户名", + "account_number": "621200000000000111", + "remark": "备注", + "bank": { + "bank_alias": "工商银行", + "bank_alias_code": "1000009547", + "province": "上海市", + "province_code": 2, + "city": "上海市", + "city_code": 21, + "bank_branch_name": "中国工商银行股份有限公司上海市新江湾城支行", + "bank_branch_id": "102290000121" + } } } } diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAGetApprovalDetailResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAGetApprovalDetailResponse.json index fd87c536..786bc33a 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAGetApprovalDetailResponse.json +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinOA/Approval/CgibinOAGetApprovalDetailResponse.json @@ -224,6 +224,22 @@ ], "formula": { "value": "5.0" + }, + "bank_account": { + "account_type": 1, + "account_name": "账户名", + "account_number": "621200000000000111", + "remark": "备注", + "bank": { + "bank_alias": "工商银行", + "bank_alias_code": "1000009547", + "province": "上海市", + "province_code": 2, + "city": "上海市", + "city_code": 21, + "bank_branch_name": "中国工商银行股份有限公司上海市新江湾城支行", + "bank_branch_id": "102290000121" + } } } }