package others_request

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

type MobilesealSignCreateTaskRequest struct {
	// 【签署任务标题】签署任务标题 【作用】 本次签署任务的标题，如签署招投标文件时，可设置为“项目X01标-维森集团有限公司-投标文件”，用于扫码授权时展示 【传参】 最大长度：500（包含）。
	Title string `json:"title,omitempty"`
	// 【第三方业务系统本次签署任务id】第三方业务系统本次签署任务id 【作用】 可传入业务系统中唯一的任务id，方便后续查询与数据传输 【传参】 最大长度：200（包含）。
	BizId string `json:"bizId"`
	// 【授权提示文字】授权提示文字 【作用】 可传入授权时需提示的文字，辅助扫码用户对确认签署内容以及授权范围，例如“本次签署用于项目01标的投标文件签署，请您扫码授权” 【传参】 最大长度：500（包含）。
	AuthorizeInfo string `json:"authorizeInfo,omitempty"`
	// 【预览待签署文件的链接地址】预览待签署文件的链接地址 【作用】 可传入当前授权所需签署文件的预览地址，复制扫码用户确认签署内容，该链接建议可免登录
	PreviewUrl string `json:"previewUrl,omitempty"`
	// 【签署方类型】签署方类型 【作用】 不指定签署主体时，可通过该参数控制使用个人身份还是单位身份进行签署，即是个人签名还是单位签章 【传参】 取值范围：PERSONAL(\"个人\")，ENTERPRISE(\"企业\")，不传值且未指定签署主体时可由扫码用户任意指定。
	SignType string `json:"signType,omitempty"`
	// 【指定签署方名称】指定签署方名称 【作用】 指定要使用的印章所属法人单位或个人信息 【传参】 1、若需指定签署主体，signName与docId必传其一，均传入时，以docId为准。 2、传入指定签署方信息后，签署方类型不生效。
	SignName string `json:"signName,omitempty"`
	// 【统一社会信用代码/工商注册号/个人证件号】统一社会信用代码/工商注册号/个人证件号 【作用】 指定要使用的印章所属法人单位或个人信息 【传参】 1、若需指定签署主体，signName与docId必传其一，均传入时，以docId为准。 2、传入指定签署方信息后，签署方类型不生效。
	DocId string `json:"docId,omitempty"`
	// 【证书算法】证书算法 【作用】 指定本次签署所需使用的证书对应算法 【传参】 取值范围：RSA（国际算法），SM2（国密算法）；不传值默认为均可使用
	Alg string `json:"alg,omitempty"`
	// 【证书颁发机构】证书颁发机构 【作用】 本次仅可使用指定CA机构颁发的数字证书进行签署 【传参】 取值范围：cwca（西部CA），sheca（上海CA），cfca（CFCA），gdca（广东CA）；不传值默认为所有机构颁发的证书均可用
	CaType string `json:"caType,omitempty"`
	// 【可用印章id集合】可用印章id集合 【作用】 可限制本次签署任务的印章使用范围
	SealIds string `json:"sealIds,omitempty"`
	// 【不可用印章id集合】不可用印章id集合 【作用】 可限制本次签署任务的印章不可使用范围
	OutRangeSeals string `json:"outRangeSeals,omitempty"`
	// 【第三方业务系统操作人姓名】第三方业务系统操作人姓名 【作用】 可传入业务系统中进行移动签章的操作人，传入后将在手机app操作日志中进行记录，方便后期追溯 【传参】 若需要记录操作人，则名称必传，第三方业务系统操作人id选传
	UserName string `json:"userName,omitempty"`
	// 【第三方业务系统操作人id】第三方业务系统操作人id 【作用】 可传入业务系统中进行移动签章的操作人，传入后将在手机app操作日志中进行记录，方便后期追溯 【传参】 若需要记录操作人，则名称必传，第三方业务系统操作人id选传
	CustomerId string `json:"customerId,omitempty"`
	// 【操作人签署ip地址】操作人签署ip地址 【作用】 可传入业务系统中进行移动签章的操作人对应签署ip，传入后将在手机app操作日志中进行记录，方便后期追溯
	SignIp string `json:"signIp,omitempty"`
	// 【签署次数记录方式】签署次数记录方式 【作用】 设置产生签署时签署次数记录方式 1、每次签署动作后记录次数：适用于一次签署多份文件时记录签署次数 2、业务系统告知签署完成后统一记录次数：适用于一份文件要分多次签署，最后统一计算该份文件的签署次数 【传参】 1、取值范围：true（业务系统告知签署完成后统一记录次数），false（每次签署动作后记录次数）；不传值默认为false
	Pri string `json:"pri,omitempty"`
	// 【签署成功后记录用量】签署成功后记录用量 【作用】 用于判断记录用量的时机 1、无论签署是否失败任务结束均记录用量 2、业务系统告知签署成功后记录用量 【传参】 1、取值范围：1（无论签署是否失败任务结束均记录用量），2（业务系统告知签署成功后记录用量）；不传值默认为1。 2、若pri传为false时，该参数不生效。
	SignUsageStatisticsMode string `json:"signUsageStatisticsMode,omitempty"`
	// 【回调地址】回调地址 【作用】 用于回调授权后的印章/签名图片以及签名结果，不传则需要业务系统主动调查询接口进行查询
	CallbackUrl string `json:"callbackUrl,omitempty"`
	// 【业务系统app前缀】业务系统app前缀 【作用】 若移动证书存储与业务系统app内，需要传入该参数，否则业务系统无法扫码授权 【传参】 可传入电子签章管理后台-【设置】-【自定义字段】-【H5页面激活/签署移动签章时提示前往APP操作的APP跳转地址】配置的app前缀，不传值默认为qys://。
	IntegrateLinkPre string `json:"integrateLinkPre,omitempty"`
}

func (obj MobilesealSignCreateTaskRequest) GetUrl() string {
	return "/mobileseal/sign/create/task"
}

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