package others_request

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

type CrossborderContractPresignurlV2Request struct {
	// <ext>core:true</ext> 【是否允许对文件进行操作】是否允许对文件进行操作 【作用】 1、允许：允许操作页面，具体可操作项由下方参数控制 2、不允许：页面仅允许查看，不允许执行任何操作 【传参】 取值范围：true（允许），false（不允许）；不传值默认为：true（允许）。
	Operable string `json:"operable,omitempty"`
	// 【链接访问次数】链接访问次数 【作用】 1、限制链接访问次数，若超过次数则链接失效 2、若不传值，则访问次数无限制；若传入具体数值，则链接在访问所传具体值次数后失效，无法继续访问 【传参】 最小值：1。单位：次。
	VisitNum *int64 `json:"visitNum,omitempty"`
	// 【操作完成自动关闭页面】操作完成自动关闭页面 【作用】 用户在链接页面完成发起操作时，系统是否自动关闭链接页面 【传参】 取值范围：true（自动关闭），false（不自动关闭）；不传值默认为：false（不自动关闭）。
	CanReturn string `json:"canReturn,omitempty"`
	// 【页面语言】页面语言 【作用】 1、用于指定链接页面使用的语言 2、选择的语言需要在管理后台-设置-系统语言配置对应语言 3、除中文 - 简体中文以外其他语言页面为付费功能，请确认开通对应语言后使用 【传参】 取值范围：ZH_CN(中文 - 简体中文), EN_US(英语 - English)，JP(日语 - 日本語),ZH_TW(中文 - 繁體中文), AZ(阿塞拜疆语 - azərbaycan),GA(爱尔兰语 - Gaeilge), ET(爱沙尼亚语 - eesti),BE(白俄罗斯语 - беларуская),BG(保加利亚语 - български),IS(冰岛语 - íslenska),PL(波兰语 - polski),DA(丹麦语 - dansk),DE(德语 - Deutsch),RU(俄语-русский),FR(法语 - français),FIL(菲律宾语 - Filipino),FI(芬兰语 - suomi),KO(韩语 -한국어),NL(荷兰语 - Nederlands),CS(捷克语 - čeština),HR(克罗地亚语 - hrvatski),LO(老挝语 - ລາວ),RO(罗马尼亚语-română),MN(蒙古语 - монгол),BN(孟加拉语 - বাংলা),PT(葡萄牙语 - português),SV(瑞典语 - svenska),TH(泰语 - ไทย),TR(土耳其语 - Türkçe),ES(西班牙语 - español),EL(希腊语 - Ελληνικά),IT(意大利语 - italiano),ID(印度尼西亚语 - Indonesia),不传值默认为：ZH_CN（中文）。
	Language string `json:"language,omitempty"`
	// 【操作人登录账号】操作人登录账号 【作用】 通过操作人登录账号查询对应的用户，记录为业务系统中指定位置或填参的操作人，方便后期追溯 【传参】 1、若登录账号对应的用户不存在时，将会报错。 2、若用户id、联系方式、成员编号、证件号、第三方业务系统用户id、登录账号，只按参数中最高优先级查询，优先级为用户id＞联系方式＞成员编号＞证件号＞第三方业务系统用户id＞登录账号。均未传入，日志记录调用此接口的应用名称。
	OperatorAccountNo string `json:"operatorAccountNo,omitempty"`
	// 【链接失效后跳转地址】链接失效后跳转地址 【作用】 当链接页面失效后页面自动跳转至指定地址（如：超过访问次数、链接已超过有效期）
	InvalidToPage string `json:"invalidToPage,omitempty"`
	// <ext>core:true</ext> 【操作人联系方式】操作人联系方式 【作用】 通过操作人联系方式查询对应的用户，记录为业务系统中指定位置或填参的操作人，方便后期追溯 【传参】 1、可传入用户手机号或者邮箱。 2、手机号允许使用大陆、港澳台、国际手机号，手机号格式为：区号+空格+手机号，例：852 9xxxxxxx ，大陆手机号可以不传区号。 3、邮箱需传入符合格式的字符串，例：xxxxxxxx@163.com。 4、若联系方式对应的用户不存在时，将会报错。 5、若用户id、联系方式、成员编号、证件号、第三方业务系统用户id、登录账号，只按参数中最高优先级查询，优先级为用户id＞联系方式＞成员编号＞证件号＞第三方业务系统用户id＞登录账号。均未传入，日志记录调用此接口的应用名称。
	OperatorContact string `json:"operatorContact,omitempty"`
	// 【操作完成自动关闭页面】操作完成自动关闭页面 【作用】 用户在链接页面完成发起操作时，系统是否自动关闭链接页面 【传参】 取值范围：true（自动关闭），false（不自动关闭）；不传值默认为：false（不自动关闭）。
	AutoCloseAfterSign string `json:"autoCloseAfterSign,omitempty"`
	// <ext>core:true;format:string</ext> 【第三方业务系统文件id】第三方业务系统文件id 【作用】 查询需指定签署位置或填参的跨境电子签约文件 【传参】 电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准。
	BizId string `json:"bizId,omitempty"`
	// 【页面显示内容】页面显示内容 【传参】 取值范围：CONTRACT（全文），POINT（要点），PARAMS（参数对比）；可选多项；不传值默认为：全部 【特殊说明】 要点和参数对比仅在当前文件存在要点和参数信息时可控制是否显示
	Panel string `json:"panel,omitempty"`
	// 【是否显示保存并草稿按钮】是否显示保存并草稿按钮 【传参】 取值范围：true（显示），false（不显示）；不传值默认为：true（显示）。
	CanSaveDraft string                                                  `json:"canSaveDraft,omitempty"`
	PageStyle    *common.CrossborderContractPresignurlV2PageStyleRequest `json:"pageStyle,omitempty"`
	// 【关闭页面时校验必填参数是否填写】关闭页面时校验必填参数是否填写 【作用】 针对文件存在必填参数要填写的情况，通过该参数控制在页面关闭时是否校验存在必填参数未填写，避免因必填参数未填写导致文件发起失败 【传参】 取值范围：true（校验），false（不校验）；不传值默认为：false（不校验）。
	CheckRequiredParameters string `json:"checkRequiredParameters,omitempty"`
	// <ext>core:true</ext> 【是否允许指定签署位置】是否允许指定签署位置 【作用】 控制页面是否允许对文件指定签署位置 【传参】 取值范围：true（允许），false（不允许）；不传值默认为：true（允许）。
	CanSetStamper string `json:"canSetStamper,omitempty"`
	// 【操作人成员编号】操作人成员编号 【作用】 通过操作人成员编号查询对应的用户，记录为业务系统中指定位置或填参的操作人，方便后期追溯 【传参】 1、若成员编号对应的用户不存在时，将会报错。 2、若用户id、联系方式、成员编号、证件号、第三方业务系统用户id、登录账号，只按参数中最高优先级查询，优先级为用户id＞联系方式＞成员编号＞证件号＞第三方业务系统用户id＞登录账号。均未传入，日志记录调用此接口的应用名称。
	OperatorNumber string `json:"operatorNumber,omitempty"`
	// 【操作人用户id】操作人用户id 【作用】 通过操作人用户id查询对应的用户，记录为业务系统中指定位置或填参的操作人，方便后期追溯 【传参】 1、若用户id对应的用户不存在时，将会报错。 2、若用户id、联系方式、成员编号、证件号、第三方业务系统用户id、登录账号，只按参数中最高优先级查询，优先级为用户id＞联系方式＞成员编号＞证件号＞第三方业务系统用户id＞登录账号。均未传入，日志记录调用此接口的应用名称
	OperatorUserId *int64 `json:"operatorUserId,omitempty"`
	// <ext>core:true</ext> 【存在待填参数时是否允许填参】存在待填参数时是否允许填参 【作用】 控制文件中存在待填写参数时，页面是否允许进行填参操作 【传参】 取值范围：true（允许），false（不允许）；不传值默认为：true（允许）。
	CanSetParam string `json:"canSetParam,omitempty"`
	// 【链接有效期】链接有效期 【作用】 1、用于设置获取到的链接在多长时间后过期 2、参数不传值时，链接有效期取电子签章管理后台设置的“接口页面默认有效期  3、参数传入时长超过电子签章管理后台设置的“接口页面最大有效期天数”时，将以后台设置的有效期为准 【传参】 最小值：1。单位：秒。
	ExpireTime *int64 `json:"expireTime,omitempty"`
	// 【业务系统标识】业务系统标识 【作用】 1：根据第三方业务系统用户id查询系统成员/用户信息时使用 2：涉及到多套业务系统集成且不同系统间第三方业务系统用户id可能重复时需要传入该参数
	SystemCode string `json:"systemCode,omitempty"`
	// <ext>core:true;format:string</ext> 【跨境电子签约文件id】跨境电子签约文件id 【作用】 查询需指定签署位置或填参的跨境电子签约文件 【传参】 电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准。
	ContractId *int64 `json:"contractId,omitempty"`
	// 【前端通信的目标域名】前端通信的目标域名 【作用】 点击页面操作按钮，会向该域名发送postmessage消息事件，第三方业务系统可通过消息事件触发相应功能，无需再另外配置回调事件
	PostMessageUrl string `json:"postMessageUrl,omitempty"`
	// 【是否显示保存并关闭按钮】是否显示保存并关闭按钮 【传参】 取值范围：true（显示），false（不显示）；不传值默认为：true（显示）。
	CanSaveOrClose string `json:"canSaveOrClose,omitempty"`
	// <ext>format:string</ext> 【页面默认展示的文档ID】页面默认展示的文档ID 【作用】 电子签约中包含多个签署文档时，可指定页面默认展示的文档 【特殊说明】 仅控制默认展示哪份文档，但是用户仍然可以手动切换查看其他文档
	DocumentId *int64 `json:"documentId,omitempty"`
	// 【是否允许发起文件】是否允许发起文件 【作用】 控制页面是否允许发起电子签约，即是否展示发起按钮 【传参】 取值范围：true（允许），false（不允许）；不传值默认为：true（允许）。
	CanSend string `json:"canSend,omitempty"`
	// 【操作人第三方业务系统用户id】操作人第三方业务系统用户id 【作用】 通过操作人第三方业务系统用户id查询对应的用户，记录为业务系统中指定位置或填参的操作人，方便后期追溯 【传参】 1、若第三方业务系统用户id对应的用户不存在时，将会报错。 2、若用户id、联系方式、成员编号、证件号、第三方业务系统用户id、登录账号，只按参数中最高优先级查询，优先级为用户id＞联系方式＞成员编号＞证件号＞第三方业务系统用户id＞登录账号。均未传入，日志记录调用此接口的应用名称。
	OperatorOpenUserId string `json:"operatorOpenUserId,omitempty"`
	// 【操作人证件号】操作人证件号 【作用】 通过操作人证件号查询对应的用户，记录为业务系统中指定位置或填参的操作人，方便后期追溯 【传参】 1、若证件号对应的用户不存在时，将会报错。 2、若用户id、联系方式、成员编号、证件号、第三方业务系统用户id、登录账号，只按参数中最高优先级查询，优先级为用户id＞联系方式＞成员编号＞证件号＞第三方业务系统用户id＞登录账号。均未传入，日志记录调用此接口的应用名称。
	OperatorCardNo string `json:"operatorCardNo,omitempty"`
}

func (obj CrossborderContractPresignurlV2Request) GetUrl() string {
	return "/cross-border/contract/presignurl/v2"
}

func (obj CrossborderContractPresignurlV2Request) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewGetHttpParameter()
	parameter.AddParam("operable", obj.Operable)
	parameter.AddParam("visitNum", obj.VisitNum)
	parameter.AddParam("canReturn", obj.CanReturn)
	parameter.AddParam("language", obj.Language)
	parameter.AddParam("operatorAccountNo", obj.OperatorAccountNo)
	parameter.AddParam("invalidToPage", obj.InvalidToPage)
	parameter.AddParam("operatorContact", obj.OperatorContact)
	parameter.AddParam("autoCloseAfterSign", obj.AutoCloseAfterSign)
	parameter.AddParam("bizId", obj.BizId)
	parameter.AddParam("panel", obj.Panel)
	parameter.AddParam("canSaveDraft", obj.CanSaveDraft)
	parameter.AddParam("checkRequiredParameters", obj.CheckRequiredParameters)
	parameter.AddParam("canSetStamper", obj.CanSetStamper)
	parameter.AddParam("operatorNumber", obj.OperatorNumber)
	parameter.AddParam("operatorUserId", obj.OperatorUserId)
	parameter.AddParam("canSetParam", obj.CanSetParam)
	parameter.AddParam("expireTime", obj.ExpireTime)
	parameter.AddParam("systemCode", obj.SystemCode)
	parameter.AddParam("contractId", obj.ContractId)
	parameter.AddParam("postMessageUrl", obj.PostMessageUrl)
	parameter.AddParam("canSaveOrClose", obj.CanSaveOrClose)
	parameter.AddParam("documentId", obj.DocumentId)
	parameter.AddParam("canSend", obj.CanSend)
	parameter.AddParam("operatorOpenUserId", obj.OperatorOpenUserId)
	parameter.AddParam("operatorCardNo", obj.OperatorCardNo)
	if obj.PageStyle != nil {
		parameter.AddParam("pageStyle.themeColor", obj.PageStyle.ThemeColor)
	}
	return parameter
}
