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 V2ContractPageurlRequest struct {
	Contract      *common.ContractRequest                       `json:"contract"`
	Operator      *common.UserInfo                              `json:"operator"`
	SignatoryInfo *common.V2ContractPageurlSignatoryInfoRequest `json:"signatoryInfo,omitempty"`
	ActionInfo    *common.ActionInfo                            `json:"actionInfo,omitempty"`
	ButtonConfig  *common.V2ContractPageurlButtonConfigRequest  `json:"buttonConfig,omitempty"`
	// 【链接访问次数】链接访问次数 【作用】 1、限制链接访问次数，若超过次数则链接失效 2、若不传值，则访问次数无限制；若传入具体数值，则链接在访问所传具体值次数后失效，无法继续访问 【传参】 最小值：1。单位：次。
	VisitNum *int64 `json:"visitNum,omitempty"`
	// 【链接有效期】链接有效期 【作用】 1、用于设置获取到的链接在多长时间后过期 2、参数不传值时，链接有效期取电子签章管理后台设置的“接口页面默认有效期  3、参数传入时长超过电子签章管理后台设置的“接口页面最大有效期天数”时，将以后台设置的有效期为准 【传参】 最小值：1。单位：秒。
	ExpireTime *int64 `json:"expireTime,omitempty"`
	// 【操作完成自动关闭页面】操作完成自动关闭页面 【作用】 用户在链接页面完成填参、审批或签署时，系统是否自动关闭链接页面 【传参】： 取值范围：true（自动关闭），false（不自动关闭）；不传值默认为：false（不自动关闭）。
	AutoClosePage *bool `json:"autoClosePage,omitempty"`
	// 【回调页面】回调页面 【作用】 用户在填参、审批或签署完成后，无需继续操作时，会跳转至回调页面
	CallbackPage string `json:"callbackPage,omitempty"`
	// 【链接失效后跳转地址】链接失效后跳转地址 【作用】 用户访问链接时，若链接已失效，可跳转至指定地址
	InvalidToPage string `json:"invalidToPage,omitempty"`
	// 【页面语言】页面语言 【作用】 1、用于指定链接页面使用的语言 2、英文和日文页面为付费功能，请确认开通英文版系统和日文版系统后使用 【传参】 取值范围：ZH_CN（中文），EN_US（英文），JP（日文）；不传值默认为：ZH_CN（中文）。
	Language  string            `json:"language,omitempty"`
	PageStyle *common.PageStyle `json:"pageStyle,omitempty"`
	// 【个人证件类型】个人证件类型 【传参】 取值范围：IDCARD（二代身份证），PASSPORT（护照），HKMP（港澳通行证），MTPS（台胞证） 【特殊说明】  针对个人签署方
	PaperType string `json:"paperType,omitempty"`
	// 【身份校验】身份校验 【作用】 用户通过当前接口返回的链接访问文件时，是否需要验证身份 【传参】 取值范围：  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"`
	// 【移动端页面导航头部】移动端页面导航头部 【作用】 1、移动端内嵌页面默认带有头部导航区域，且区域内提供返回按钮，嵌入其他app时会与app自带的导航头部区域航重复 2、可通过本参数控制签入移动端页面时是否提供头部导航区域 【传参】 取值范围：true（隐藏导航头部），false（显示导航头部）；不传值默认为：false（显示导航头部）。
	HideHeader *bool `json:"hideHeader,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"`
}

func (obj V2ContractPageurlRequest) GetUrl() string {
	return "/v2/contract/pageurl"
}

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