package datasign_request

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

type DatasignVerifierRequest struct {
	// <ext>core:true;format:string</ext> 【数据签名id】数据签名id 【传参】 数据签名id和第三方业务系统数据签名id必传其一，均传入以数据签名id为准。
	DataSignId *int64 `json:"dataSignId,omitempty"`
	// <ext>core:true</ext> 【第三方业务系统数据签名id】第三方业务系统数据签名id 【传参】 数据签名id和第三方业务系统数据签名id必传其一，均传入以数据签名id为准。
	BusinessId string `json:"businessId,omitempty"`
	// 【签署原文件】签署原文件 【作用】 若通过上传文件的方式签署数据签名，可再次传入签署时上传的文件判断数据签名是否被篡改 【传参】 1、支持的文件格式：pdf， xlsx，pptx， docx， doc， wps， xls， ppt， png， webp， tiff，xml，xht，xhtml，htm，html，txt，jpg，jpeg，gif，avi，zip，rtf。 2、签署原文件（sourceData）、签署原文数据（sourceDataString）、签署后业务数据（signData）必传其一，传入多个时只按最高优先级查询，优先级为签署原文件>签署原文数据>签署后业务数据。
	SourceData *os.File `json:"sourceData,omitempty"`
	// 【签署原文数据】签署原文数据 【作用】 若通过上传字符串的方式签署数据签名，可再次传入签署时上传的字符串数据判断数据签名是否被篡改 【传参】 签署原文件（sourceData）、签署原文数据（sourceDataString）、签署后业务数据（signData）必传其一，传入多个时只按最高优先级查询，优先级为签署原文件>签署原文数据>签署后业务数据。
	SourceDataString string `json:"sourceDataString,omitempty"`
	// 【签署后业务数据】签署后业务数据 【作用】 1、签署数据签名时可上传字符串数据或文件（系统会计算文件hash值），系统会使用数字证书对数据字符串或hash进行签署，得到签署后数据（一串字符串数据） 2、可通过上传签署后的字符串数据判断数据签名是否被篡改 【传参】 1、以16进制字符串形式传入。 2、签署原文件（sourceData）、签署原文数据（sourceDataString）、签署后业务数据（signData）必传其一，传入多个时只按最高优先级查询，优先级为签署原文件>签署原文数据>签署后业务数据。
	SignData string `json:"signData,omitempty"`
}

func (obj DatasignVerifierRequest) GetUrl() string {
	return "/datasign/verifier"
}

func (obj DatasignVerifierRequest) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewPostHttpParameter()
	parameter.AddParam("dataSignId", obj.DataSignId)
	parameter.AddParam("businessId", obj.BusinessId)
	parameter.AddParam("sourceDataString", obj.SourceDataString)
	parameter.AddParam("signData", obj.SignData)
	parameter.AddFiles("sourceData", obj.SourceData)
	return parameter
}
