package v2contract_request

import (
	"encoding/json"
	"git.sxidc.com/student-physical-examination/contract_lock_sdk/http"
	"git.sxidc.com/student-physical-examination/contract_lock_sdk/model/common"
)

type V2ContractSignbycompanyRequest struct {
	Contract *common.SignSilentContract `json:"contract"`
	// <ext>core:true</ext> 【多个电子签约文件】多个电子签约文件 【作用】 查询需要静默签署的多个电子签约文件 【传参】 【传参】 1、电子签约文件ids和第三方业务系统文件ids必传其一，均传入时按顺序仅取第1项参数进行查询。 2、contract和contracts必传其一，均传入时以contract为准。
	Contracts []*common.SignSilentContract `json:"contracts,omitempty"`
	Company   *common.CompanyRequest       `json:"company"`
	// <ext>core:true;deprecated:true</ext> 【印章ID】印章ID 【作用】 查询用于静默签的印章，当预设的必签位置未指定印章时，将使用查询到的印章在预设的必签位置上进行签署。 【传参】 1、如果签章节点能定位到唯一印章时，可以不传入此参数，直接使用预设的印章进行静默签。 2、此参数与sealRequest不同时生效，同时传入时，优先级：sealRequest>sealId。 3、建议使用参数sealRequest来查询印章。
	SealId      string                      `json:"sealId,omitempty"`
	Operator    *common.UserInfoRequest     `json:"operator,omitempty"`
	SealRequest *common.SealMultipleRequest `json:"sealRequest,omitempty"`
	// <ext>core:true</ext> 【签署位置】签署位置 【作用】 用于指定签署位置 【特殊说明】 1、若用印流程中无预设签署位置，则此处必传签署位置 2、若用印流程中有预设位置，且本参数传入了签署位置，则两个位置都会进行签署
	Stampers []*common.CompanyStamperBean `json:"stampers,omitempty"`
	// <ext>core:true</ext> 【是否获取签署位置确认链接】是否获取签署位置确认链接 【作用】 1、若需对静默签署的印章的签署位置进行二次确认，可通过此参数获取链接页面； 2、操作人访问链接可对印章的签署位置进行拖动、旋转调整，确认后完成自动签署。 【传参】 取值范围：true（获取链接），false（不获取链接）；不传值默认为：false（不获取链接） 【特殊说明】 在链接页面确认签署时无需进行意愿校验，仅需点击确认则根据调整的签署位置自动完成签署。
	ReturnCheckUrl *bool `json:"returnCheckUrl,omitempty"`
	// <ext>core:true</ext> 【表单域】表单域 【作用】 1、在签署文档中设置好的表单域中填写内容 2、支持文本域和选择框域
	Forms []*common.V2ContractSignbycompanyFormsRequest `json:"forms,omitempty"`
	// <ext>core:true</ext> 【签署方编号】签署方编号 【作用】 一份签署文件中，法人单位存在于多个签署方时，根据签署方编号指定本次签署的签署方
	SignatoryNo string `json:"signatoryNo,omitempty"`
	// <ext>core:true</ext> 【签署动作编号】签署动作编号 【作用】 一个签署方下存在多个签署动作时，指定本次签署的签署动作
	ActionNo string `json:"actionNo,omitempty"`
	// <ext>core:true</ext> 【静默签时是否需授权】静默签时是否需授权 【作用】 若存在特殊业务场景希望可以实现静默签署时无需授权，可通过该参数关闭授权校验 【传参】 默认true。true：授权后才可静默签；false：无需授权即可静默签
	NeedEmpower *bool `json:"needEmpower,omitempty"`
	// 【签署结果回调地址】签署结果回调地址 【作用】 根据回调地址返回批量静默签结果：签署成功的文件Id，签署失败的文件Id
	CallbackUrl string `json:"callbackUrl,omitempty"`
	// <ext>core:true</ext> 【档案章单元格内容】 档案章单元格内容 【作用】 1、通常为档案管理系统在文件材料归档时加盖归档章，用于指示档案在全宗中的位置，便于档案的管理和利用 2、通过此参数可预设档案章中的单元格文字，预设后，签署时添加的档案章将默认使用此参数传入的文字，但允许签署人修改 【特殊说明】 1、若指定的印章范围包含多个档案章，以下参数将对所有档案章都生效；若单元格位置和key值跟定位到的档案章不匹配，则不生效
	ArchivalSealContents []*common.ArchivalSealContent `json:"archivalSealContents,omitempty"`
	// <ext>core:true</ext> 【印章模板参数】印章模板参数 【作用】 1、有些印章的章面比较复杂，章面上的文字需要在签署时设置，比如建筑设计图上的评阅章。这类印章章面支持通过模板编辑器来制作，可以配置印章的章面样式，并指定章面中的动态参数，签署时可以在章面上填写参数内容以生成最后的章面 2、通过此参数可为使用模板制作的印章章面填写内容
	SealParams []*common.SealParam `json:"sealParams,omitempty"`
	// <ext>core:true</ext> 【链接有效期】链接有效期 【作用】 1、用于设置获取到的链接在多长时间后过期 2、参数不传值时，链接有效期取电子签章管理后台设置的“接口页面默认有效期“ 3、参数传入时长超过电子签章管理后台设置的“接口页面最大有效期天数”时，将以后台设置的有效期为准 【传参】 最小值：1。单位：秒。
	ExpireTime *int64 `json:"expireTime,omitempty"`
}

func (obj V2ContractSignbycompanyRequest) GetUrl() string {
	return "/v2/contract/signbycompany"
}

func (obj V2ContractSignbycompanyRequest) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewPostHttpParameter()
	jsonBytes, _ := json.Marshal(obj)
	parameter.SetJsonParamer(string(jsonBytes))
	return parameter
}
