package v2document_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 V2DocumentCreatebyurlRequest struct {
	// <ext>core:true</ext> 【本地/网络路径】本地/网络路径 【作用】 通过本地路径或网络路径获取文件进行上传，文件上传后系统将自动将文档转换为PDF格式，方便后续进行签署 【传参】 1、支持的文件格式：pdf，doc，docx，wps，rtf，png，gif，jpg，jpeg，tiff，xls，xlsx，txt，ofd，dwg，ppt，pptx。 2、若上传CAD图纸（dwg格式），请先开启【电子签章管理后台-自定义配置DWG_SWITCH】。 3、当上传的文档为PDF时，PDF的版本需要>1.3；上传签署文档大小限制可在【电子签章管理后台-电子用印设置-文件上传限制】进行配置。 4、本地路径/网络路径和ftp/sftp存储路径必传其一，均传入以本地路径/网络路径为准。 【特殊说明】 若电子签章管理后台配置签署文件仅允许上传指定格式文件，则此参数对应仅允许传入限定格式的本地文件
	Url    string                `json:"url,omitempty"`
	FtpUrl *common.FtpUrlRequest `json:"ftpUrl,omitempty"`
	// <ext>core:true</ext> 【签署文档名称】签署文档名称 【作用】 用于传入上传的签署文档的名称
	Title string `json:"title"`
	// <ext>core:true</ext> 【签署文档格式】签署文档格式 【作用】 不同类型的文件转换方式不一样，需要传入类型进行文件转换，传入的类型需要与上传的文件类型一致 【传参】 1、取值范围：pdf，doc，docx，wps，rtf，png，gif，jpg，jpeg，heic，tiff，xls，xlsx，txt，ofd，dwg，ppt，pptx。 2、heic格式只有windows系统支持，需安装imagemagic插件。
	FileType string `json:"fileType"`
	// 【文件水印】文件水印 【作用】 1、可在签署文档上添加水印，允许传入多组水印 2、若新增的文件已添加数字签名，因添加文件水印会篡改文件导致数字签名失效，故文件水印不会生效
	Watermarks []*common.UrlWaterMarkContent `json:"watermarks,omitempty"`
	// 【印章水印】印章水印 【作用】 1、可在印章外观上添加水印，防止签署文件上的印章被抠章后二次使用，允许传入多组水印 2、印章水印将会与该签署文档绑定，后续在这份文档上进行签章时，发起方下的所有内部签署方使用的印章外观会自动添加水印
	StampWatermarks []*common.UrlStampWaterMarkContent       `json:"stampWatermarks,omitempty"`
	Form            *common.V2DocumentCreatebyurlFormRequest `json:"form,omitempty"`
	// 【对文档加密限制文档编辑】对文档加密限制文档编辑 【作用】 1. 可选择对文档添加编辑口令进行加密，该文档进行签署后，可防止用户进行抠章或编辑操作，下载到本地也不能进行编辑或导出为Word 2. 仅在Office、WPS、福昕、adobe系列软件中才可限制不允许编辑，其余软件因产品自身功能规则不同，可能无法限制编辑 3. 已有数字签名的文件上传时不支持加密（加密将影响签名有效性） 4. 若后续需要获取文档的编辑口令，可调用<docs>/contract/getDocumentPassword</docs> 【传参】 取值范围：true（加密），false（不加密）；不传值默认为：false（不加密）。
	IsPassword *bool `json:"isPassword,omitempty"`
	// 【文件旋转角度】文件旋转角度 【作用】 1、可旋转文档角度，以文档页面中心进行旋转。 2、对于含有电子签名的pdf文件不做处理。 3、正数表示顺时针旋转，负数表示逆时针旋转。 【传参】 取值范围：90 ，180，270，-90，-180，-270。
	Angle *int64 `json:"angle,omitempty"`
	// 【预览页展示下载按钮】预览页展示下载按钮 【传参】 取值范围：true（展示），false（不展示）；不传值默认为：false（不展示）。
	ViewDownload string `json:"viewDownload,omitempty"`
	// 【链接有效期】链接有效期 【作用】 1、用于设置获取到的链接在多长时间后过期 2、参数不传值时，链接有效期取电子签章管理后台设置的“接口页面默认有效期 3、参数传入时长超过电子签章管理后台设置的“接口页面最大有效期天数”时，将以后台设置的有效期为准 【传参】 最小值：1。单位：秒。
	ExpireTime *int64 `json:"expireTime,omitempty"`
}

func (obj V2DocumentCreatebyurlRequest) GetUrl() string {
	return "/v2/document/createbyurl"
}

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