package common


type ContractCreateBean struct {
	// <ext>core:true</ext> 【用印流程id】用印流程id 【作用】 1、实际签署过程中，存在不同类型的文件签署流程，比如采购（企业与企业进行签署）、人事（企业与个人进行签署） 2、可在电子签章前台中根据实际的签署场景提前搭建不同的用印流程，用印流程中支持提前设置好签署方、签署顺序及流程、签署文件、指定签署位置等等 3、发起文件时，需选择使用的用印流程，此参数可传入用印流程id查询 【传参】 1、内部单位必须传入用印流程发起，外部单位无用印流程功能因此可不传入（如内部单位的用印流程配置为外部单位可发起，可传入用印流程） 2、用印流程id和用印流程名称必传其一，均传入以用印流程id为准
	CategoryId string `json:"categoryId,omitempty"`
	// <ext>core:true</ext> 【用印流程名称】用印流程名称 【作用】 传入用印流程名称查询本次发起的电子签约文件所使用的用印流程 【传参】 用印流程id和用印流程名称必传其一，均传入以用印流程id为准。
	CategoryName string `json:"categoryName,omitempty"`
	// <ext>core:true</ext> 【文件主题】文件主题 【作用】 电子签约文件的标题，如签署劳动合同时，可设置为“劳动合同-XX公司-张三” 【传参】 最大长度：500（包含）。 【特殊说明】 用印流程-高级配置中可设置文件主题生成规则，若设置按规则自动生成，则接口传入无效；若设置为发起人自定义，则接口传入的文件主题生效。
	Subject string `json:"subject"`
	// <ext>core:true</ext> 【是否发起电子签约】是否发起电子签约 【作用】 1、若立即发起，则接口调用成功后电子签约文件直接进入签署状态，签署人将按顺序进行签署（若签署前需要填参，则由对应的用户补全文件后内容后进入签署） 2、若保存为草稿，文件不会发起签署，后续若需继续修改签署信息可调用<docs>/contract/edit</docs> ；后续若需发起时需调用<docs>/contract/send</docs>发起电子签约 【传参】 取值范围：true（立即发起），false（保存为草稿）；不传值默认为：true（立即发起）。
	Send *bool `json:"send,omitempty"`
	ContractControl *OpenContractControlBean `json:"contractControl,omitempty"`
	// <ext>core:true</ext> 【文件编号】文件编号 【作用】 电子签约文件的编号，方便对文件进行查询、归档等管理，如“QYS-20160101-000001” 【传参】 最大长度：400（包含）。 【特殊说明】 用印流程若设置按规则自动生成，则接口传入无效；若设置为发起人自定义，则接口传入的文件编号生效
	Sn string `json:"sn,omitempty"`
	// <ext>core:true;format:date</ext> 【文件定时发起时间】文件定时发起时间 【作用】 可以创建文件后保存草稿，在设定的时间由系统自动发起文件 【传参】 1、仅在send（是否发起电子签约）为false（保存为草稿）时生效。 2、日期格式：yyyy-MM-dd HH:mm
	SendTimeStr string `json:"sendTimeStr,omitempty"`
	// <ext>core:true</ext> 【第三方业务系统文件id】第三方业务系统文件id 【作用】 可传入业务系统中唯一的文件id，方便后续查询、管理电子签约文件 【传参】 最大长度：200（包含）。 【特殊说明】 1、bizid不能与草稿、签署中、已完成、作废中的电子签约文件重复 2、如果电子签约文件已作废、已撤回、已拒签，则允许其bizid被重复使用
	BizId string `json:"bizId,omitempty"`
	// <ext>core:true</ext> 【业务数据】业务数据 【作用】 可传入业务系统中需要记录的数据，比如相关审批意见、电子签约文件的说明，不会在页面展示，但支持回调给业务系统 【传参】 最大长度：4000（包含）。
	BusinessData string `json:"businessData,omitempty"`
	// <ext>deprecated:true</ext> 【文件描述】文件描述 【作用】 用于对文件进行补充描述，不会在页面展示，仅在系统数据库中记录 【传参】 最大长度：1200（包含）。
	Description string `json:"description,omitempty"`
	// <ext>core:true</ext> 【发起主体名称】发起主体名称 【作用】 即电子签约文件的发起单位，仅能传入用印流程设置的发起主体范围 【传参】 最大长度：500（包含）。
	TenantName string `json:"tenantName"`
	// <ext>core:true</ext> 【发起人姓名】发起人姓名 【作用】 当传入的发起人未在系统中时，将使用该姓名作为发起人账号的姓名。如发起人已存在，则传入的姓名无效
	CreatorName string `json:"creatorName,omitempty"`
	CreatorInfo *UserInfoRequest `json:"creatorInfo,omitempty"`
	// <ext>core:true;deprecated:true</ext> 【发起人联系方式】发起人联系方式 【作用】 可传入手机号、邮箱查询并记录该电子签约文件的发起人。 【传参】 1、可传入用户手机号或者邮箱。 2、手机号允许使用大陆、港澳台、国际手机号，手机号格式为：区号+空格+手机号，例：852 9xxxxxxx ，大陆手机号可以不传区号。 3、邮箱需传入符合格式的字符串，例：xxxxxxxx@163.com。 4、当前参数传入时，将会替代creatorInfo参数中的contact参数，按照creatorInfo的参数逻辑进行查询发起人
	CreatorContact string `json:"creatorContact,omitempty"`
	// <ext>core:true</ext> 【自定义字段】自定义字段 【作用】 1、除文件主题、文件编号等基础信息，不同类型的文件发起时需要填写的字段信息是不同的，例如发起采购合同可填写金额，发起人事合同可填写员工岗位。 2、自定义字段可在【电子签章管理后台】统一定义或在用印流程中根据业务定义，定义好后可通过该参数传入字段值。
	CustomizeFields []*CustomizeFiled `json:"customizeFields,omitempty"`
	// <ext>core:true;format:string</ext> 【文件模板id】文件模板id 【作用】 用印流程中绑定多个文件模板时，可以通过此参数指定当前电子签约中需要的部分模板
	Templates []int64 `json:"templates,omitempty"`
	// <ext>core:true;format:string</ext> 【签署文档id】签署文档id 【作用】 可自定义上传本地、图片、文件模板作为本次签署的文件，但因转换文档需要时间，如在本接口发起文件时同步转换文档会导致发起文件耗时较长，所以需提前调用创建文档相关接口转换为签署文档id后再通过此参数填写。创建文档接口如下： 1、<docs>/v2/document/createbyfile</docs> ：选择本地的文件转换为PDF格式的签署文档 2、<docs>/document/createbytemplate</docs> ：传入系统中已维护的文件模板id，将模板转换成PDF格式的签署文档 3、<docs>/document/createbytemplates</docs> ：传入系统中多个已维护的文件模板id，将模板转换为PDF格式的签署文档 4、<docs>/document/createbyfiles</docs> ：选择多个本地的文件，合并并转换为PDF格式的签署文档 5、<docs>/v2/document/createbyurl</docs> ：使用传入的url获取文件转换为PDF格式的签署文档，支持本地路径/网络路径或ftp存储路径的文件 6、<docs>/document/createbyofd</docs> ：选择本地的OFD文件创建签署文档，签署文档格式仍是OFD，主要适用于国产化场景 【特殊说明】 用印流程-文件设置中开启“发起签约时，允许新增文件”，则传入的签署文档与用印流程中配置的文件模板都作为电子签约文档；若未开启配置，则只能使用用印流程中配置的文件模板
	Documents []int64 `json:"documents,omitempty"`
	// <ext>core:true</ext> 【模板参数】模板参数 【作用】 1、签署文件中包含待填写的参数时，支持传入参数的值补全文件内容 2、支持传入所有签署方的待填参数，用户进行拟定时可查看接口传入的默认值，但可改
	DocumentParams []*SimpleDocumentParam `json:"documentParams,omitempty"`
	// <ext>core:true</ext> 【签署方】签署方 【作用】 即需签署的组织和个人，组织签署方下可设置签署节点（签字、审批、签章、执业章签署等），个人签署方仅支持个人签字 【特殊说明】 签署方为空时，需在签署完成后调用<docs>/contract/finish</docs> 完成电子签约，否则文件一直会处于签署状态不会结束
	Signatories []*Signatory `json:"signatories,omitempty"`
	// <ext>core:true</ext> 【签署截止日期】签署截止日期 【作用】 若超过该日期，文件的所有签署方将不能进行文件签署，文件状态变为“已截止签署” 【传参】 1、日期格式：yyyy-MM-dd。 2、若传入2022-03-09，系统将在2022年3月9日的23时59分59秒后将文件标记为“已截止签署”
	ExpireTime string `json:"expireTime,omitempty"`
	// <ext>core:true</ext> 【文件到期日期】文件到期日期 【作用】 文件履行期限的截止日期，若超过此日期后，文件将标记为“已到期” 【传参】 1、日期格式：yyyy-MM-dd。 2、传入日期必须晚于当前日期，，若传入2022-03-09，系统将在2022年3月9日的23时59分59秒将文件标记为“已到期”
	EndTime string `json:"endTime,omitempty"`
	// <ext>core:true</ext> 【抄送人】抄送人 【作用】 用于添加该电子签约文件的抄送人，抄送人将收到文件通知，可查看、下载文件 【传参】 1、参数必传其一（除姓名外），传入多个参数时只按参数中最高优先级查询，优先级为联系方式>成员编号>登录账号。 2、若使用联系方式查询用户，用户不存在时，则使用传入的姓名、联系方式创建用户。
	Transmitters []*ContractTransmitItem `json:"transmitters,omitempty"`
	// 【文件水印】 文件水印 【作用】 可在电子签约文件上添加水印，允许传入多组水印 【特殊说明】 1、当用印流程中已预设文字/图片水印，并勾选通过接口传入内容，则传入水印配置时，将按传入顺序优先匹配已预设的水印，传入的参数中只有文字水印内容（content）/水印图片(imageBase64)传值生效，样式以用印流程预设的为准。其余传入的水印，以接口传入的内容生成新水印 2、当用印流程中未预设文字/图片水印通过接口传入内容，则以接口传入的内容生成新水印 3、若用印流程绑定的文件或发起时新增的文件已添加数字签名，因添加文件水印会篡改文件导致数字签名失效，故文件水印不会生效
	WaterMarkConfigs []*WaterMarkContent `json:"waterMarkConfigs,omitempty"`
	// 【印章水印】印章水印 【作用】 可在印章外观上添加水印，防止签署文件上的印章被抠章后二次使用，允许传入多组水印 【特殊说明】 1、当用印流程中已预设文字水印并勾选通过接口传入内容，则传入的文字水印配置，将按传入顺序优先匹配已预设的水印，传入的参数中只有文字水印内容（content）传值生效，样式以用印流程预设的为准。其余传入的水印，以接口传入的内容生成新水印 2、当用印流程中未预设文字水印通过接口传入内容，或接口传入的印章类型、用印时间类型的水印时，以接口传入的内容生成新水印
	SealWaterMarkContents []*StampWaterMarkContent `json:"sealWaterMarkContents,omitempty"`
	// 【公共标签】公共标签 【作用】 可传入电子签约文件的标签对文件进行分类、筛选等管理，公共标签仅发起方内部成员可见、可编辑 【传参】 支持传入多个，传参方式为:[\"公共标签1\",\"公共标签2\"]。
	ContractPublicTag []string `json:"contractPublicTag,omitempty"`
	// 【指定位置必须签署】指定位置必须签署 【传参】 取值范围：true（必须签署），false（不必须签署）；不传值默认为：用印流程配置。
	MustSign *bool `json:"mustSign,omitempty"`
	// 【指定位置外可签署】指定位置外可签署 【传参】 取值范围：true（可签署），false（不可签署）；不传值默认为：用印流程配置。
	ExtraSign *bool `json:"extraSign,omitempty"`
	// 【是否所有文档均需签署】是否所有文档均需签署 【传参】 取值范围：DEFAULT（无需签署所有文档），ALL（所有签署方每个签署节点必须签署所有文档），SENDER（发起方每个签署节点必须签署所有文档），RECEIVER（接收方每个节点必须签署所有文档）；不传值默认为：DEFAULT（无需签署所有文档）。
	SignAll string `json:"signAll,omitempty"`
	// 【消息通知渠道】消息通知渠道 【传参】 1、取值范围：0（发送全部通知），1（仅发送短信通知），2（仅发送邮件通知）；不传值默认为：0（发送全部通知）。 2、当用印流程配置消息通知渠道时，以用印流程配置为准
	MsgCode *int64 `json:"msgCode,omitempty"`
	// 【是否自动生成会签节点】是否自动生成会签节点 【作用】 签署动作（action）中传入多个印章且未指定签署人时，是否将多个印章自动生成会签节点，即每个印章均需签署 【传参】 取值范围：true（自动生成会签节点），false（不生成会签节点）；不传值默认为：false（不生成会签节点）。
	AutoCreateCounterSign *bool `json:"autoCreateCounterSign,omitempty"`
	// 【单个印章可骑缝加盖文件最大页数】单个印章可骑缝加盖文件最大页数  【作用】 当文件页数很多时加盖骑缝章，单个印章只能骑缝加盖部分页面，所以需要加盖多个章保证文件全部页面均被覆盖，该参数可以设置每个章最大加盖的文件页数 【传参】 最小值：2（包含），最大值：50（包含）；不传值默认为：30。
	SingleAcrossSealLimit *int64 `json:"singleAcrossSealLimit,omitempty"`
	// 【接收方是否允许拒签签约文件 】接收方是否允许拒签签约文件  【传参】 取值范围：ALLOW（允许拒签），PROHIBIT（不允许拒签），CATEGORY（使用用印流程配置）；不传值默认为：CATEGORY（使用用印流程配置）。
	ReceiverRejectRule string `json:"receiverRejectRule,omitempty"`
	// 【是否允许用户作废已签署完成文件】是否允许用户作废已签署完成文件 【传参】 取值范围：true（可发起作废），false（当前文件不可发起作废）；不传值默认为：后台配置。
	AllowCancel *bool `json:"allowCancel,omitempty"`
	// 【自动签失败时是否发起文件】自动签失败时是否创建或发起文件 【作用】 当设置为自动签且发起电子签约时，自动签失败时是否要创建或发起文件 【传参】 取值范围：true（能创建或发起），false（不能创建或发起）；不传值默认为：true（能创建或发起）。
	IgnoreAutoSignConf *bool `json:"ignoreAutoSignConf,omitempty"`
	// 【保存草稿时是否允许无签约文件 】保存草稿时是否允许无签约文件 【作用】  当不发起电子签约（即send=false，文件为“草稿”状态时），是否允许暂无签约文件。  【传参】  默认为false，仅在send=false时生效  1、true：创建文件后不发起，即为草稿状态时，允许暂无签约文件。可通过编辑电子签约信息接口（/contract/edit）、使用模板添加签署文档接口（/document/addbytemplate）等方式添加签约文件后发起。  2、false：文件为草稿状态时，也必须有签约文件。 3、取值范围：true（允许），false（不允许）；不传值默认为：false（不允许）。
	DraftNoDocument *bool `json:"draftNoDocument,omitempty"`
	// 【文档脱敏设置】文档脱敏设置  【作用】  1、常用于公文，需要将红头文件以及加盖的印章转成黑白，可在此处提前设置需转换的格式，文档签署完成后会转换为指定格式，并长期存储，通过<docs>/document/download</docs>下载转化后的文档  2、支持转换的类型包括：  PDF黑白黑章文件：文件为黑白，去除已签署的数字签名，保留已签署的印章/签名/日期/批注但转为黑白图片，转化为PDF格式  OFD黑白黑章文件：文件为黑白，去除已签署的数字签名，保留已签署的印章/签名/日期/批注但转为黑白图片，转化为OFD格式  【传参】 取值范围：PDF_BLACK_SEAL（PDF黑白黑章文件），OFD_BLACK_SEAL（OFD黑白黑章文件）；可选多项；不传值默认为：不进行转换。
	DocumentFormats []string `json:"documentFormats,omitempty"`
	CancelContractInfo *ContractRequest `json:"cancelContractInfo,omitempty"`
	// 【生成草稿时是否校验发起方已填写全部必填参数】生成草稿时是否校验发起方已填写全部必填参数 【作用】  若开启校验，若发起方参数未全部填写，则无法成功创建草稿文件  【传参】 取值范围：true（生成草稿时校验发起方必填参数是否都已填写），false（不校验）；不传值默认为：false（不校验）。
	CheckFillParams *bool `json:"checkFillParams,omitempty"`
}
