package contract_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 ContractAddsignatoriesRequest struct {
	// <ext>format:string;core:true</ext>  【电子签约文件id】电子签约文件id 【作用】 查询需添加签署方的电子签约文件 【传参】 电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准
	ContractId *int64 `json:"contractId,omitempty"`
	// <ext>core:true</ext>  【第三方业务系统文件id】第三方业务系统文件id 【作用】 查询需添加签署方的电子签约文件 【传参】 电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准
	BizId string `json:"bizId,omitempty"`
	// <ext>core:true</ext>  【签署方】签署方 【作用】 即需签署的组织和个人，组织签署方下可设置签署节点（签字、审批、签章、执业章签署等），个人签署方仅支持个人签字。
	Signatories []*common.ContractAddsignatoriesSignatoriesRequest `json:"signatories,omitempty"`
	// 【是否生成电子签约页面链接】是否生成电子签约页面链接 【传参】 取值范围：true（生成），false（不生成）；不传值默认为：false（不生成）。
	GenerateUrl *bool `json:"generateUrl,omitempty"`
	// 【是否允许添加相同个人签署方】是否允许添加相同个人签署方 【作用】 控制电子签约中是否允许添加重复的个人签署方 【传参】 取值范围：true（允许），false（不允许）；不传值默认为：false（不允许）。 【特殊说明】 已存在的个人签署方签署完成后，才可以新增重复个人签署方
	PersonalRepeatAllow *bool                      `json:"personalRepeatAllow,omitempty"`
	Operator            *common.ActionOperatorInfo `json:"operator,omitempty"`
	OperatorInfo        *common.UserInfoRequest    `json:"operatorInfo,omitempty"`
	// 【回调页面】回调页面 【作用】 用户在签署（或审批）后，如果不需要继续签署（或审批），则会跳转到回调页面
	CallbackPage string `json:"callbackPage,omitempty"`
	// 【链接有效期】链接有效期 【作用】 1、用于设置获取到的链接在多长时间后过期 2、参数不传值时，链接有效期取电子签章管理后台设置的“接口页面默认有效期  3、参数传入时长超过电子签章管理后台设置的“接口页面最大有效期天数”时，将以后台设置的有效期为准 【传参】 最小值：1。单位：秒。
	ExpireTime *int64 `json:"expireTime,omitempty"`
	// 【链接访问次数】链接访问次数 【作用】 1、限制链接访问次数，若超过次数则链接失效 2、若不传值，则访问次数无限制；若传入具体数值，则链接在访问所传具体值次数后失效，无法继续访问 【传参】 最小值：1。单位：次。
	VisitNum *int64 `json:"visitNum,omitempty"`
	// 【链接失效后跳转地址】链接失效后跳转地址 【作用】 当链接页面失效后页面自动跳转至指定地址（如：超过访问次数、链接已超过有效期）
	InvalidToPage string `json:"invalidToPage,omitempty"`
	// 【操作完成自动关闭页面】操作完成自动关闭页面 【作用】 用户在链接页面完成审批或签署操作时，系统是否自动关闭链接页面 【传参】 取值范围：true（自动关闭），false（不自动关闭）；不传值默认为：false（不自动关闭）。
	AutoClosePage *bool `json:"autoClosePage,omitempty"`
	// 【页面语言】页面语言 【作用】 1、用于指定链接页面使用的语言 2、英文和日文页面为付费功能，请确认开通英文版系统和日文版系统后使用 【传参】 取值范围：ZH_CN（中文），EN_US（英文），JP（日文）；不传值默认为：ZH_CN（中文）。
	Language  string            `json:"language,omitempty"`
	PageStyle *common.PageStyle `json:"pageStyle,omitempty"`
	// <ext>deprecated:true</ext> 【是否展示拒签按钮】是否展示拒签按钮 【传参】 取值范围：true（展示），false（不展示）；不传值默认为：false（不展示）。
	Rejectable *bool `json:"rejectable,omitempty"`
	// 【退回理由是否需要填写】退回理由是否需要填写 【作用】 1、退回理由是否需要填写，仅在rejectable参数为true的情况下才生效 2、NEED_MUST（需要且必须填写）：即文件退回时必须填写理由 3、NEED_NOT_MUST（需要但不必填）：即文件退回时不强制要求填写退回理由 4、NONEED（不需要填写）：即文件退回时隐藏退回理由输入框，点击确认即可退回 【传参】 取值范围：NEED_MUST（需要且必须填写），NEED_NOT_MUST（需要但不必填），NONEED（不需要填写）；不传值默认为：NEED_MUST（需要且必须填写）。
	NeedRejectCause string `json:"needRejectCause,omitempty"`
	// 【是否允许签署人制作新签名/名章】是否允许签署人制作新签名/名章 【作用】 1、可配置个人签字节点的签署人是否允许制作新的签名/名章，如不允许制作则签署人只允许使用已有的签名/名章完成签署 2、该参数仅在电子签章管理后台开启了允许制作签名、允许制作名章时生效 【传参】 取值范围：true（允许制作），false（不允许制作）；不传值默认为：true（允许制作）
	MakePersonalSeal *bool `json:"makePersonalSeal,omitempty"`
	// 【身份校验】身份校验 【作用】 用户通过当前接口返回的链接访问文件时，是否需要验证身份 【传参】 取值范围：true（身份校验），false（不身份校验）；不传值默认为：false（不身份校验）。 【特殊说明】 当前仅支持通过手机号/邮箱验证码方式进行身份校验。
	NeedPersonalReAuth *bool `json:"needPersonalReAuth,omitempty"`
	// 【客户端类型】客户端类型 【作用】 1、当请求的UserAgent无法自动判断返回的页面类型时，可通过此参数返回指定客户端的页面；方参数不传值时，将根据请求的UserAgent自动判断返回的页面类型 2、例如在微信小程序集成场景中，PC端小程序的UserAgent只能识别为PC端，但是需要使用H5端的页面 【传参】 取值范围：PC（返回PC页面），H5（返回H5页面）；不传值默认为：根据请求的UserAgent自动判断返回的页面类型。
	DeviceType string `json:"deviceType,omitempty"`
	// 【需隐藏的页面按钮】需隐藏的页面按钮 【传参】 取值范围：RETURN（返回），ROLLBACK（撤回/回退/拒签），DETAIL（签署详情），CANCEL（作废文件），MORE_OPERATE（更多操作），APPOINT_RECT（指定签署位置），SET_END_TIME（设置到期日期），END_SIGN（结束签署），NEXT_TODO（下一代办），DOWNLOAD（下载），PRINT（打印），EXPORT_EML（导出EML），ENTRUST_SIGN（委托他人签字），INVITE_SIGN（邀请他人签字），ADD_NODE（添加审批/签字/法定代表人签字），MODIFY_FILE（修改文件），POINT（敏感词/要点(H5)），SMART_ADJUST（智能调整(H5)），TRANSFER（转办），TRANSMIT（文件抄送），REMARK（备注），STOP_SIGN（恢复/暂停签署），DISCARD_CANCEL（取消作废），FILE_VERIFIER（文件验签），DELAY（延期），DELETE（删除），SIGNATURE_DETAIL（签名详情）；可选多项。
	NeedHideButtons []string `json:"needHideButtons,omitempty"`
	// 【是否自动生成会签节点】是否自动生成会签节点 【作用】 签署动作（action）中传入多个印章且未指定签署人时，是否将多个印章自动生成会签节点，即每个印章均需签署 【传参】 取值范围：true（自动生成会签节点），false（不生成会签节点）；不传值默认为：false（不生成会签节点）。
	AutoCreateCounterSign *bool `json:"autoCreateCounterSign,omitempty"`
}

func (obj ContractAddsignatoriesRequest) GetUrl() string {
	return "/contract/addsignatories"
}

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