From 2ad4ac9a0b73e0a8dd5abb3888c332ac73107165 Mon Sep 17 00:00:00 2001 From: gaomian Date: Tue, 1 Aug 2023 15:12:34 +0800 Subject: [PATCH] fix approval api --- api_approval_approval_define.go | 42 ++++++++++++++++---------------- api_approval_instance_create.go | 10 ++++---- api_approval_instance_preview.go | 2 +- type_approval_define.go | 4 +-- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/api_approval_approval_define.go b/api_approval_approval_define.go index f6611d1f..210ef15c 100644 --- a/api_approval_approval_define.go +++ b/api_approval_approval_define.go @@ -62,49 +62,49 @@ func (r *Mock) UnMockApprovalCreateApproval() { type CreateApprovalReq struct { DepartmentIDType *DepartmentIDType `query:"department_id_type" json:"-"` // 此次调用中使用的部门ID的类型, 示例值: "open_department_id", 可选值有: department_id: 以自定义department_id来标识部门, open_department_id: 以open_department_id来标识部门 UserIDType *IDType `query:"user_id_type" json:"-"` // 用户 ID 类型, 示例值: "open_id", 可选值有: open_id: 标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。[了解更多: 如何获取 Open ID](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-openid), union_id: 标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的, 在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID, 应用开发商可以把同个用户在多个应用中的身份关联起来。[了解更多: 如何获取 Union ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-union-id), user_id: 标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内, 一个用户的 User ID 在所有应用(包括商店应用)中都保持一致。User ID 主要用于在不同的应用间打通用户数据。[了解更多: 如何获取 User ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-user-id), 默认值: `open_id`, 当值为 `user_id`, 字段权限要求: 获取用户 user ID - ApprovalName string `json:"approval_name,omitempty"` // 审批名称的国际化文案 Key, 以 @i18n@ 开头, 长度不得少于 9 个字符, 示例值: "@i18n@approval_name" + ApprovalName string `json:"approval_name"` // 审批名称的国际化文案 Key, 以 @i18n@ 开头, 长度不得少于 9 个字符, 示例值: "@i18n@approval_name" ApprovalCode *string `json:"approval_code,omitempty"` // 传空表示新建, 示例值: "7C468A54-8745-2245-9675-08B7C63E7A85" Description *string `json:"description,omitempty"` // 审批描述的国际化文案 Key, 以 @i18n@ 开头, 长度不得少于 9 个字符, 示例值: "@i18n@description" - Viewers []*CreateApprovalReqViewer `json:"viewers,omitempty"` // viewers 字段指定了哪些人能从审批应用的前台发起该审批, 1. 当 viewer_type 为 USER, 需要填写viewer_user_id;, 2. 当 viewer_type 为DEPARTMENT, 需要填写viewer_department_id;, 3. 当 viewer_type 为TENANT或NONE时, viewer_user_id和viewer_department_id无需填写 - Form *CreateApprovalReqForm `json:"form,omitempty"` // 审批定义表单 - NodeList []*CreateApprovalReqNode `json:"node_list,omitempty"` // 审批定义节点, 需要将开始节点作为 list 第一个元素, 结束节点作为最后一个元素 + Viewers []*CreateApprovalReqViewer `json:"viewers"` // viewers 字段指定了哪些人能从审批应用的前台发起该审批, 1. 当 viewer_type 为 USER, 需要填写viewer_user_id;, 2. 当 viewer_type 为DEPARTMENT, 需要填写viewer_department_id;, 3. 当 viewer_type 为TENANT或NONE时, viewer_user_id和viewer_department_id无需填写 + Form *CreateApprovalReqForm `json:"form"` // 审批定义表单 + NodeList []*CreateApprovalReqNode `json:"node_list"` // 审批定义节点, 需要将开始节点作为 list 第一个元素, 结束节点作为最后一个元素 Settings *CreateApprovalReqSettings `json:"settings,omitempty"` // 审批定义其他设置 Config *CreateApprovalReqConfig `json:"config,omitempty"` // 审批定义配置项, 用于配置对应审批定义是否可以由用户在审批后台进行修改 Icon *int64 `json:"icon,omitempty"` // 审批图标枚举, 详见下方说明, 默认为 0, 示例值: 0, 默认值: `0` - I18nResources []*CreateApprovalReqI18nResource `json:"i18n_resources,omitempty"` // 国际化文案 + I18nResources []*CreateApprovalReqI18nResource `json:"i18n_resources"` // 国际化文案 ProcessManagerIDs []string `json:"process_manager_ids,omitempty"` // 根据user_id_type填写流程管理员的用户id, 示例值: ["1c5ea995"] } // CreateApprovalReqConfig ... type CreateApprovalReqConfig struct { - CanUpdateViewer bool `json:"can_update_viewer,omitempty"` // 允许用户修改可见范围, 示例值: false - CanUpdateForm bool `json:"can_update_form,omitempty"` // 允许用户更新表单, 示例值: false - CanUpdateProcess bool `json:"can_update_process,omitempty"` // 允许用户更新流程定义, 示例值: false - CanUpdateRevert bool `json:"can_update_revert,omitempty"` // 允许用户更新撤回设置, 示例值: false - HelpURL *string `json:"help_url,omitempty"` // 帮助文档链接, 示例值: "https://www.baidu.com" + CanUpdateViewer bool `json:"can_update_viewer"` // 允许用户修改可见范围, 示例值: false + CanUpdateForm bool `json:"can_update_form"` // 允许用户更新表单, 示例值: false + CanUpdateProcess bool `json:"can_update_process"` // 允许用户更新流程定义, 示例值: false + CanUpdateRevert bool `json:"can_update_revert"` // 允许用户更新撤回设置, 示例值: false + HelpURL *string `json:"help_url,omitempty"` // 帮助文档链接, 示例值: "https://www.baidu.com" } // CreateApprovalReqForm ... type CreateApprovalReqForm struct { - FormContent string `json:"form_content,omitempty"` // 审批定义表单, json 数组, 见下方form_content字段说明, 示例值: "[{\"id\":\"user_name\", \"type\": \"input\", \"required\":true, \"name\":\"@i18n@widget1\"}]" + FormContent string `json:"form_content"` // 审批定义表单, json 数组, 见下方form_content字段说明, 示例值: "[{\"id\":\"user_name\", \"type\": \"input\", \"required\":true, \"name\":\"@i18n@widget1\"}]" } // CreateApprovalReqI18nResource ... type CreateApprovalReqI18nResource struct { - Locale string `json:"locale,omitempty"` // 语言可选值有: zh-CN: 中文 en-US: 英文 ja-JP: 日文, 示例值: "zh-CN", 可选值有: zh-CN: 中文, en-US: 英文, ja-JP: 日文 - Texts []*CreateApprovalReqI18nResourceText `json:"texts,omitempty"` // 文案 key, value, i18n key 以 @i18n@ 开头; 该字段主要用于做国际化, 允许用户同时传多个语言的文案, 审批中心会根据用户当前的语音环境使用对应的文案, 如果没有传用户当前的语音环境文案, 则会使用默认的语言文案。 - IsDefault bool `json:"is_default,omitempty"` // 是否默认语言, 默认语言需要包含所有key, 非默认语言如果key不存在会使用默认语言代替, 示例值: true + Locale string `json:"locale"` // 语言可选值有: zh-CN: 中文 en-US: 英文 ja-JP: 日文, 示例值: "zh-CN", 可选值有: zh-CN: 中文, en-US: 英文, ja-JP: 日文 + Texts []*CreateApprovalReqI18nResourceText `json:"texts"` // 文案 key, value, i18n key 以 @i18n@ 开头; 该字段主要用于做国际化, 允许用户同时传多个语言的文案, 审批中心会根据用户当前的语音环境使用对应的文案, 如果没有传用户当前的语音环境文案, 则会使用默认的语言文案。 + IsDefault bool `json:"is_default"` // 是否默认语言, 默认语言需要包含所有key, 非默认语言如果key不存在会使用默认语言代替, 示例值: true } // CreateApprovalReqI18nResourceText ... type CreateApprovalReqI18nResourceText struct { - Key string `json:"key,omitempty"` // 文案key, 示例值: "@i18n@1" - Value string `json:"value,omitempty"` // 文案, 示例值: "people" + Key string `json:"key"` // 文案key, 示例值: "@i18n@1" + Value string `json:"value"` // 文案, 示例值: "people" } // CreateApprovalReqNode ... type CreateApprovalReqNode struct { - ID string `json:"id,omitempty"` // 节点 ID, 开始节点的 ID 为 START, 结束节点的 ID 为 END, 开始和结束节点不需要指定 name、node_type 以及 approver, 示例值: "START" + ID string `json:"id"` // 节点 ID, 开始节点的 ID 为 START, 结束节点的 ID 为 END, 开始和结束节点不需要指定 name、node_type 以及 approver, 示例值: "START" Name *string `json:"name,omitempty"` // 节点名称的国际化文案 Key, 以 @i18n@ 开头, 长度不得少于 9 个字符, 示例值: "@i18n@node_name" NodeType *string `json:"node_type,omitempty"` // 审批类型枚举, 当 node_type 为依次审批时, 审批人必须为『发起人自选』, 示例值: "AND", 可选值有: AND: 会签, OR: 或签, SEQUENTIAL: 依次审批 Approver []*CreateApprovalReqNodeApprover `json:"approver,omitempty"` // 审批人列表 @@ -117,7 +117,7 @@ type CreateApprovalReqNode struct { // CreateApprovalReqNodeApprover ... type CreateApprovalReqNodeApprover struct { - Type string `json:"type,omitempty"` // 审批/抄送人类型, 1. 当 type 为 Supervisor、SupervisorTopDown、DepartmentManager 、DepartmentManagerTopDown 这 4 种时, 需要在 level 中填写对应的级数, 例如: 由下往上三级主管审批, level = 3;, 2. 当 type 为 Personal 时, 需要填写对应的user_id, 用于指定用户;, 3. 当 approver 为 Free 发起人自选时, 不需要指定 user_id 和level;, 4. ccer不支持 Free 发起人自选, 示例值: "Supervisor", 可选值有: Supervisor: 主管审批(由下往上), SupervisorTopDown: 主管审批(从上往下), DepartmentManager: 部门负责人审批(由下往上), DepartmentManagerTopDown: 部门负责人审批(从上往下), Personal: 指定成员, Free: 发起人自选 + Type string `json:"type"` // 审批/抄送人类型, 1. 当 type 为 Supervisor、SupervisorTopDown、DepartmentManager 、DepartmentManagerTopDown 这 4 种时, 需要在 level 中填写对应的级数, 例如: 由下往上三级主管审批, level = 3;, 2. 当 type 为 Personal 时, 需要填写对应的user_id, 用于指定用户;, 3. 当 approver 为 Free 发起人自选时, 不需要指定 user_id 和level;, 4. ccer不支持 Free 发起人自选, 示例值: "Supervisor", 可选值有: Supervisor: 主管审批(由下往上), SupervisorTopDown: 主管审批(从上往下), DepartmentManager: 部门负责人审批(由下往上), DepartmentManagerTopDown: 部门负责人审批(从上往下), Personal: 指定成员, Free: 发起人自选 UserID *string `json:"user_id,omitempty"` // 用户id, 根据user_id_type填写, 示例值: "f7cb567e" Level *string `json:"level,omitempty"` // 审批级数, 当 type 为 Supervisor、SupervisorTopDown、DepartmentManager 、DepartmentManagerTopDown 这 4 种时, 需要在 level 中填写对应的级数, 例如: 由下往上三级主管审批, level = 3, 示例值: "3" } @@ -130,15 +130,15 @@ type CreateApprovalReqNodeApproverChosenRange struct { // CreateApprovalReqNodeCcer ... type CreateApprovalReqNodeCcer struct { - Type string `json:"type,omitempty"` // 审批/抄送人类型, 1. 当 type 为 Supervisor、SupervisorTopDown、DepartmentManager 、DepartmentManagerTopDown 这 4 种时, 需要在 level 中填写对应的级数, 例如: 由下往上三级主管审批, level = 3;, 2. 当 type 为 Personal 时, 需要填写对应的user_id, 用于指定用户;, 3. 当 approver 为 Free 发起人自选时, 不需要指定 user_id 和level;, 4. ccer不支持 Free 发起人自选, 示例值: "Supervisor", 可选值有: Supervisor: 主管审批(由下往上), SupervisorTopDown: 主管审批(从上往下), DepartmentManager: 部门负责人审批(由下往上), DepartmentManagerTopDown: 部门负责人审批(从上往下), Personal: 指定成员, Free: 发起人自选 + Type string `json:"type"` // 审批/抄送人类型, 1. 当 type 为 Supervisor、SupervisorTopDown、DepartmentManager 、DepartmentManagerTopDown 这 4 种时, 需要在 level 中填写对应的级数, 例如: 由下往上三级主管审批, level = 3;, 2. 当 type 为 Personal 时, 需要填写对应的user_id, 用于指定用户;, 3. 当 approver 为 Free 发起人自选时, 不需要指定 user_id 和level;, 4. ccer不支持 Free 发起人自选, 示例值: "Supervisor", 可选值有: Supervisor: 主管审批(由下往上), SupervisorTopDown: 主管审批(从上往下), DepartmentManager: 部门负责人审批(由下往上), DepartmentManagerTopDown: 部门负责人审批(从上往下), Personal: 指定成员, Free: 发起人自选 UserID *string `json:"user_id,omitempty"` // 用户id, 根据user_id_type填写, 示例值: "f7cb567e" Level *string `json:"level,omitempty"` // 审批级数, 当 type 为 Supervisor、SupervisorTopDown、DepartmentManager 、DepartmentManagerTopDown 这 4 种时, 需要在 level 中填写对应的级数, 例如: 由下往上三级主管审批, level = 3, 示例值: "3" } // CreateApprovalReqNodePrivilegeField ... type CreateApprovalReqNodePrivilegeField struct { - Writable []string `json:"writable,omitempty"` // 可写权限的表单项的 id列表, 示例值: 9293493 - Readable []string `json:"readable,omitempty"` // 可读权限的表单项的 id列表, 示例值: 9293493 + Writable []string `json:"writable"` // 可写权限的表单项的 id列表, 示例值: 9293493 + Readable []string `json:"readable"` // 可读权限的表单项的 id列表, 示例值: 9293493 } // CreateApprovalReqSettings ... diff --git a/api_approval_instance_create.go b/api_approval_instance_create.go index 07c463c6..be6dd761 100644 --- a/api_approval_instance_create.go +++ b/api_approval_instance_create.go @@ -58,11 +58,11 @@ func (r *Mock) UnMockApprovalCreateApprovalInstance() { // CreateApprovalInstanceReq ... type CreateApprovalInstanceReq struct { - ApprovalCode string `json:"approval_code,omitempty"` // 审批定义 code, 示例值: "7C468A54-8745-2245-9675-08B7C63E7A85" + ApprovalCode string `json:"approval_code"` // 审批定义 code, 示例值: "7C468A54-8745-2245-9675-08B7C63E7A85" UserID *string `json:"user_id,omitempty"` // 发起审批用户, 示例值: "f7cb567e" OpenID *string `json:"open_id,omitempty"` // 发起审批用户 open id, 与user_id需二者传一, 如果传了 user_id 则优先使用 user_id, 示例值: "ou_3cda9c969f737aaa05e6915dce306cb9" DepartmentID *string `json:"department_id,omitempty"` // 发起审批用户部门id, 如果用户只属于一个部门, 可以不填。如果属于多个部门, 默认会选择部门列表第一个部门, 示例值: "9293493ccacbdb9a" - Form ApprovalWidgetList `json:"form,omitempty"` // json 数组, 控件值, 示例值: "[{\"id\":\"111\", \"type\": \"input\", \"value\":\"test\"}]" + Form ApprovalWidgetList `json:"form"` // json 数组, 控件值, 示例值: "[{\"id\":\"111\", \"type\": \"input\", \"value\":\"test\"}]" NodeApproverUserIDList []*CreateApprovalInstanceReqNodeApproverUserIDList `json:"node_approver_user_id_list,omitempty"` // 如果有发起人自选节点, 则需要填写对应节点的审批人 NodeApproverOpenIDList []*CreateApprovalInstanceReqNodeApproverOpenIDList `json:"node_approver_open_id_list,omitempty"` // 审批人发起人自选 open id, 与上述node_approver_user_id_list字段取并集 NodeCcUserIDList []*CreateApprovalInstanceReqNodeCcUserIDList `json:"node_cc_user_id_list,omitempty"` // 如果有发起人自选节点, 则可填写对应节点的抄送人, 单个节点最多选择20位抄送人, 最大长度: `20` @@ -77,9 +77,9 @@ type CreateApprovalInstanceReq struct { // CreateApprovalInstanceReqI18nResource ... type CreateApprovalInstanceReqI18nResource struct { - Locale string `json:"locale,omitempty"` // 语言可选值有: zh-CN: 中文 en-US: 英文 ja-JP: 日文, 示例值: "zh-CN", 可选值有: zh-CN: 中文, en-US: 英文, ja-JP: 日文 - Texts []*CreateApprovalInstanceReqI18nResourceText `json:"texts,omitempty"` // 文案 key, value, i18n key 以 @i18n@ 开头; 该字段主要用于做国际化, 允许用户同时传多个语言的文案, 审批中心会根据用户当前的语音环境使用对应的文案, 如果没有传用户当前的语音环境文案, 则会使用默认的语言文案, 示例值: { "@i18n@1": "权限申请", "@i18n@2": "OA审批", "@i18n@3": "Permission" } - IsDefault bool `json:"is_default,omitempty"` // 是否默认语言, 默认语言需要包含所有key, 非默认语言如果key不存在会使用默认语言代替, 示例值: true + Locale string `json:"locale"` // 语言可选值有: zh-CN: 中文 en-US: 英文 ja-JP: 日文, 示例值: "zh-CN", 可选值有: zh-CN: 中文, en-US: 英文, ja-JP: 日文 + Texts []*CreateApprovalInstanceReqI18nResourceText `json:"texts"` // 文案 key, value, i18n key 以 @i18n@ 开头; 该字段主要用于做国际化, 允许用户同时传多个语言的文案, 审批中心会根据用户当前的语音环境使用对应的文案, 如果没有传用户当前的语音环境文案, 则会使用默认的语言文案, 示例值: { "@i18n@1": "权限申请", "@i18n@2": "OA审批", "@i18n@3": "Permission" } + IsDefault bool `json:"is_default"` // 是否默认语言, 默认语言需要包含所有key, 非默认语言如果key不存在会使用默认语言代替, 示例值: true } // CreateApprovalInstanceReqI18nResourceText ... diff --git a/api_approval_instance_preview.go b/api_approval_instance_preview.go index f2dd94ba..a014273f 100644 --- a/api_approval_instance_preview.go +++ b/api_approval_instance_preview.go @@ -60,7 +60,7 @@ func (r *Mock) UnMockApprovalPreviewApprovalInstance() { type PreviewApprovalInstanceReq struct { UserIDType *IDType `query:"user_id_type" json:"-"` // 用户 ID 类型, 示例值: "open_id", 可选值有: `open_id`: 用户的 open id, `union_id`: 用户的 union id, `user_id`: 用户的 user id, 默认值: `open_id`, 当值为 `user_id`, 字段权限要求: 获取用户 user ID ApprovalCode *string `json:"approval_code,omitempty"` // 审批定义 Code - UserID string `json:"user_id,omitempty"` // 发起审批用户, employeid或者openid + UserID string `json:"user_id"` // 发起审批用户, employeid或者openid DepartmentID *string `json:"department_id,omitempty"` // 发起审批用户部门, 如果用户只属于一个部门, 可以不填, 如果属于多个部门, 必须填其中一个部门 Form ApprovalWidgetList `json:"form,omitempty"` // JSON字符串, 控件值。提交审批之前, 查看预览流程时, 该字段必填 InstanceCode *string `json:"instance_code,omitempty"` // 审批实例code diff --git a/type_approval_define.go b/type_approval_define.go index 472fc956..6c449be0 100644 --- a/type_approval_define.go +++ b/type_approval_define.go @@ -61,12 +61,12 @@ type ApprovalWidgetList []*ApprovalWidget // ApprovalWidget 审批挂件 type ApprovalWidget struct { EnableDefaultValue bool `json:"enable_default_value,omitempty"` // 此控件是否启用了默认值 - ID string `json:"id,omitempty"` // 控件 ID + ID string `json:"id"` // 控件 ID WidgetDefaultValue string `json:"widget_default_value,omitempty"` // 控件的默认值 CustomID string `json:"custom_id,omitempty"` // 控件自定义 ID DefaultValueType string `json:"default_value_type,omitempty"` // 控件的默认值类型 Name string `json:"name,omitempty"` // 控件名称 - Type ApprovalWidgetType `json:"type,omitempty"` // 控件类型 + Type ApprovalWidgetType `json:"type"` // 控件类型 Value interface{} `json:"value"` Option *ApprovalWidgetOptions `json:"option,omitempty"` Children []*ApprovalWidget `json:"children,omitempty"`