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 ContractBatchSignurlRequest struct {
	// <ext>core:true;format:string</ext> 【电子签约文件id集合】电子签约文件id集合 【作用】 查询需要批量签署的电子签约文件 【传参】 1、批量签章时可不传入文件id，不传时将返回签署人的所有待签文件。 2、批量签字时，电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准。 3、传参格式：\"contractids\":[11111111111,222222,3333333]。
	ContractIds []int64 `json:"contractIds,omitempty"`
	// <ext>core:true</ext> 【第三方业务系统文件id集合】第三方业务系统文件id集合 【作用】 查询需要批量签署的电子签约文件 【传参】 1、批量签章时可不传入文件id，不传时将返回签署人的所有待签文件。 2、批量签字时，电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准。 3、传参格式：\"bizids\":[11111111111,222222,3333333]。
	BizIds   []string                                    `json:"bizIds,omitempty"`
	Operator *common.ContractBatchSignurlOperatorRequest `json:"operator"`
	// <ext>core:true</ext> 【批量签署类型】批量签署类型 【作用】 支持批量签字或签章： 1、批量签字：包括个人签署方签字、组织签署方下的个人签字、经办人签字、法定代表人签字 2、批量签章：包括组织签章，法人章签章，执业章签章 【传参】 取值范围：SEAL_PERSONAL（批量签字），SEAL_CORPORATE（批量签章）；不传值默认为：SEAL_PERSONAL（批量签字）。
	OperateType string `json:"operateType,omitempty"`
	// <ext>core:true</ext> 【批量签署视图】批量签署视图 【作用】 提供两种视图进行批量签署： 1、文件签署视图：链接页面将展示签署页面，签署人可以直接进行签署，目前仅支持批量签字。 2、文件列表视图：链接页面将展示传入的文件列表，可选择列表中的部分文件进行批量签署，目前仅支持批量签章。 【传参】 取值范围：DOCUMENT_VIEWING（文件签署视图），LIST（文件列表视图）；默认为：DOCUMENT_VIEWING（文件签署视图）。
	BatchView string `json:"batchView,omitempty"`
	// <ext>core:true</ext> 【回调地址】回调地址 【作用】 开始批量签署后，通过此地址回调成功、失败的电子签约文件的contractid和节点actionid
	CallbackUrl string `json:"callbackUrl,omitempty"`
	// 【链接访问次数】链接访问次数 【作用】 1、限制链接访问次数，若超过次数则链接失效 2、若不传值，则访问次数无限制；若传入具体数值，则链接在访问所传具体值次数后失效，无法继续访问 【传参】 最小值：1。单位：次。
	VisitNum *int64 `json:"visitNum,omitempty"`
	// 【链接过期时间】链接过期时间 【作用】 1、用于设置获取到的链接在多长时间后过期 2、参数不传值时，链接有效期取电子签章管理后台设置的“接口页面默认有效期 ” 3、参数传入时长超过电子签章管理后台设置的“接口页面最大有效期天数”时，将以后台设置的有效期为准 【传参】 最小值：1。单位：分钟。
	ExpireTime *int64 `json:"expireTime,omitempty"`
	// 【身份校验】身份校验 【作用】 1、用户通过当前接口返回的链接访问文件时，是否需要验证身份 2、当前仅支持通过手机号/邮箱验证码方式进行身份校验 【传参】 取值范围：true（需校验身份），false（无需校验身份）；不传值默认为：false（无需校验身份）。
	NeedPersonalReAuth *bool `json:"needPersonalReAuth,omitempty"`
	// 【客户端类型】客户端类型 【作用】 1、当请求的UserAgent无法自动判断返回的页面类型时，可通过此参数返回指定客户端的页面 2、例如在微信小程序集成场景中，PC端小程序的UserAgent只能识别为PC端，但是需要使用H5端的页面 【传参】 取值范围：PC（返回PC页面），H5（返回H5页面）；不传值默认为：根据请求的UserAgent自动判断返回的页面类型。
	DeviceType string `json:"deviceType,omitempty"`
	// 【链接失效后跳转地址】链接失效后跳转地址 【作用】 当链接页面失效后页面自动跳转至指定地址（如：超过访问次数、链接已超过有效期）
	InvalidToPage string `json:"invalidToPage,omitempty"`
	// 【点击返回后跳转地址】点击返回后跳转地址 【作用】 用户点击返回按钮后跳转至传入地址
	CallbackPage string `json:"callbackPage,omitempty"`
	// 【是否展示返回按钮】是否展示返回按钮 【传参】 取值范围：true（展示），false（不展示）；不传值默认为：true（展示）。
	CanReturn *bool `json:"canReturn,omitempty"`
	// 【页面语言】页面语言 【作用】 1、用于指定链接页面使用的语言 2、英文和日文页面为付费功能，请确认开通英文版系统和日文版系统后使用 【传参】 取值范围：ZH_CN(中文)，EN_US(英文)，JP(日文)；不传值默认为：ZH_CN（中文）。
	Language  string            `json:"language,omitempty"`
	PageStyle *common.PageStyle `json:"pageStyle,omitempty"`
	// 【移动端页面导航头部】移动端页面导航头部 【作用】 1、移动端内嵌页面默认带有头部导航区域，且区域内提供返回按钮，嵌入其他app时会与app自带的导航头部区域航重复 2、可通过本参数控制签入移动端页面时是否提供头部导航区域 【传参】 取值范围：true（隐藏导航头部），false（显示导航头部）；不传值默认为：false（显示导航头部）。
	HideHeader *bool `json:"hideHeader,omitempty"`
}

func (obj ContractBatchSignurlRequest) GetUrl() string {
	return "/contract/batch/signurl"
}

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