package contract_request

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

type ContractDownloadRequest struct {
	// <ext>core:true;format:string;deprecated:false</ext> 【操作人联系方式】操作人联系方式 【作用】 通过操作人联系方式查询对应的用户，记录为业务系统中下载文件的操作人，方便后期追溯 【传参】 1、可传入手机号或邮箱，但必须在电子签章系统存在且具有文件下载权限，否则报错。 2、手机号允许使用大陆、港澳台、国际手机号，手机号格式为：区号+空格+手机号，例：852 9xxxxxxx ，大陆手机号可以不传区号。 3、邮箱需传入符合格式的字符串，例：xxxxxxxx@163.com。 4、传入此参数，name（操作人姓名）无效。若contract（操作人联系方式）、name（操作人姓名）均未传入，日志记录调用此接口的应用名称
	Contact string `json:"contact,omitempty"`
	// <ext>core:true;format:string;deprecated:false</ext> 【电子签约文件id】电子签约文件id 【作用】 查询需下载的电子签约文件。 【传参】 电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准。
	ContractId *int64 `json:"contractId,omitempty"`
	// <ext>core:true;format:string;deprecated:false</ext> 【第三方业务系统文件id】第三方业务系统文件id 【作用】 查询需批量下载的电子签约文件。 【传参】 电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准。
	BizId string `json:"bizId,omitempty"`
	// <ext>core:true;format:string;deprecated:false</ext> 【操作人姓名】操作人姓名 【作用】 若操作人联系方式未传入，可传入业务系统中下载文件的操作人姓名，用于日志记录 【传参】 1、可传入操作人姓名例如张三 2、传入contract（操作人联系方式），则此参数无效。若contract（操作人联系方式）、name（操作人姓名）均未传入，日志记录调用此接口的应用名称
	Name string `json:"name,omitempty"`
	// <ext>core:true;format:string;deprecated:false</ext> 【下载文件类型】下载文件类型 【作用】 指定需下载的文件类型： 1、NORMAL(签署文件)： （1）根据【用印流程-高级配置-文件下载设置-签署文件下载类型默认值】中勾选值返回对应类型： • 若勾选了“签署完成后文件（黑白格式）”且文件签署完成的情况下，返回黑白文件 • 若未勾选“签署完成后文件（黑白格式）”或文件未完成签署，则返回签署后文件（进行过签署的文件） （2）若接口中documentFormat（黑白文件）传参需下载黑白文件，则以接口传参为准，返回黑白文件 2、ORIGIN(签署前原文)：发起时上传的未在当前系统进行过签署的原始文件 3、ATTACHMENT(附件)：发起方上传的内部附件、签署方上传的附件、结束签署时上传的附件 4、OFFLINE(线下签署文件)：一方电子签、一方物理签时，支持在签署详情添加线下签署的文件，统一进行查看、下载、打印管理 5、BRIEF(签署摘要)：记录了该文件的签署日志以及防伪信息，以供审计 6、EVIDENCE(存证报告) ：包含签约过程、签署主体以及存证信息的报告 7、TERMINATION(作废声明)：发起作废时上传或自动生成的作废声明文件 8、PUBLICKEY_CERTIFICATE(公钥证书)：签署时使用的数字证书的公钥证书CER文件，可用于验签 【传参】 取值范围：NORMAL(签署文件)，ORIGIN(签署前原文件)，BRIEF(签署摘要)，ATTACHMENT(附件)，EVIDENCE(存证报告)，TERMINATION(作废声明)，OFFLINE(线下签署文件)，PUBLICKEY_CERTIFICATE(公钥证书)；可选多项；不传值默认为：全部下载。
	DownloadItems string `json:"downloadItems,omitempty"`
	// <ext>core:true;format:string;deprecated:false</ext> 【黑白文件】黑白文件 【作用】 创建签署文档时，若对文档设置了脱敏，可在此处选择是否需下载签署文档脱敏后的格式 【传参】 PDF_BLACK_SEAL（PDF黑白黑章文件），OFD_BLACK_SEAL（OFD黑白黑章文件）；未传值默认为：根据【用印流程-高级配置-文件下载设置-签署文件下载类型默认值】中勾选值返回对应类型，若勾选了“签署完成后文件（黑白格式）”且文件签署完成的情况下，返回黑白文件
	DocumentFormat string `json:"documentFormat,omitempty"`
	// <ext>core:true;format:string;deprecated:false</ext> 【仅一份文件时是否压缩】仅一份文件时是否压缩 【作用】 当下载的文件仅有一份时，是否需要压缩下载 【传参】 true（压缩），false（不压缩）；不传值默认为：true
	NeedCompressForOneFile string `json:"needCompressForOneFile,omitempty"`
}

func (obj ContractDownloadRequest) GetUrl() string {
	return "/contract/download"
}

func (obj ContractDownloadRequest) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewGetHttpParameter()
	parameter.AddParam("contact", obj.Contact)
	parameter.AddParam("contractId", obj.ContractId)
	parameter.AddParam("bizId", obj.BizId)
	parameter.AddParam("name", obj.Name)
	parameter.AddParam("downloadItems", obj.DownloadItems)
	parameter.AddParam("documentFormat", obj.DocumentFormat)
	parameter.AddParam("needCompressForOneFile", obj.NeedCompressForOneFile)
	return parameter
}
