package document_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 DocumentCreatebytemplatesRequest struct {
// core:true 【文件模板id集合】文件模板id集合 【传参】 多个文件模板id间使用逗号隔开
TemplateIds string `json:"templateIds,omitempty"`
// core:true;inner-type:Json 【模板分组】模板分组 【作用】 传入模板分组,将使用该分组下的所有模板批量创建签署文档 【传参】 文件模板id集合与模板分组至少传入一个,均传入时取并集。
TemplateGroup string `json:"templateGroup,omitempty"`
// core:true 【签署文档名称】签署文档名称 【作用】 用于传入上传的签署文档的名称 【传参】 1、不传值默认为:模板名称。 2、传入签署文档名称时,传入的数量需要和文件模板的数量一致,使用逗号隔开
Titles string `json:"titles,omitempty"`
// core:true;inner-type:json 【模板参数值】模板参数值 【传参】 1、json格式字符串 2、key是模板id,value是填参json字符串(键值对的key为参数的唯一标识,支持传入参数的name或key;value为参数值) 3、当使用HTML模板时,value的json字符串的value值注意事项如下: 1)单行文本 传入文本内容,例如{\"单行文本\":\"这里是一段文本描述……\"}。 2)日期 格式为:yyyy-MM-dd,如:{\"日期\":\"2019-06-04\"}。 3)身份证号 仅支持15或18位的数字或字母,如:{\"身份证\":\"123456789123456789;\"}; 4)单选 仅支持传入单选的选项,如:{\"性别\":\"女\"}; 若传入其他选项: (1)需要填写补充内容,则传入格式为:其他选项名称{{补充内容}} (2)不需要填写补充内容,则传入:其他选项名称 5)多选 仅支持传入多选的选项,多个value用逗号隔开,如:{\"爱好\":\"乒乓球,篮球\"};若传入其他选项: (1)需要填写补充内容,则传入格式为:其他选项名称{{补充内容}} (2)不需要填写补充内容,则传入:其他选项名称 6)表格 (1)参数名称即表格的Key值,参数值是一维数组且需转成字符串类型,数组的每项对应表格的每行,而每行中每一列的名称和值即对应列的key值和实际填写的值,转成字符串的一维数组示例:[{\\\"column1\\\":\\\"1\\\",\\\"column2\\\":\\\"2\\\",\\\"column3\\\":\\\"3\\\",\\\"column4\\\":\\\"4\\\"},{\\\"column1\\\":\\\"5\\\",\\\"column2\\\":\\\"6\\\",\\\"column3\\\":\\\"7\\\",\\\"column4\\\":\\\"8\\\"}]表示一个2行4列的表格。 (2)如若需要合并单元格,传参示例如下: [{\\\"column1\\\":\\\"1\\\",\\\"column2\\\":\\\"2\\\",\\\"column3\\\":\\\"3\\\",\\\"column4\\\":\\\"4\\\"},{\\\"column1\\\":\\\"5\\\",\\\"column2\\\":\\\"6\\\",\\\"column3\\\":\\\"7\\\",\\\"column4\\\":\\\"#.3\\\"}], #.1表示向左合并单元格,#.2表示向上合并单元格。#.3表示向左上合并单元格。 (3)表格的行数在传参的时候根据实际传入的会动态新增,但表格列不可动态新增,只能设置表格固定列为准 7)图片 需传入json字符串,包含value(base64图片包含base64前缀,必填)、fileName(图片名称,必填)两个参数,如:{\"fileName\":\"1.png\",\"value\":\"data:image/png;base64,/9j/4AAQSk...\"}。 8)富文本 富文本形式的字符串,标签中的双引号需要用\\进行转义,如{\"富文本\": \"红色文字\"}。 9)邮箱 邮箱形式的字符串,如:{\"邮箱\":\"umklch01@163.com\"}。 10)级联 级联参数的字符串,如:{\"参数改名称\":\"[\\\"选项1\\\",\\\"选项A\\\",\\\"选项a\\\"]\"}。
Params string `json:"params,omitempty"`
// inner-type:Json 【文件水印】文件水印 【作用】 1、可在签署文档上添加水印,允许传入多组水印 2、若新增的文件已添加数字签名,因添加文件水印会篡改文件导致数字签名失效,故文件水印不会生效
WaterMarks string `json:"waterMarks,omitempty"`
// inner-type:Json 【印章水印】印章水印 【作用】 1、可在印章外观上添加水印,防止签署文件上的印章被抠章后二次使用,允许传入多组水印 2、印章水印将会与该签署文档绑定,后续在这份文档上进行签章时,发起方下的所有内部签署方使用的印章外观会自动添加水印
StampWaterMarks string `json:"stampWaterMarks,omitempty"`
// inner-type:Json 【表单域】表单域 【作用】 1、进行过数字签名后的PDF文档,任何对内容的修改都会导致签名失效,从而保护数据不被篡改。但是在内部文件审批流程中,有时需要对已签名或盖章的文件添加额外的签署或审批意见。此时可利用PDF的表单域功能,在不破坏原有签名的情况下,对文件添加内容; 2、表单域是PDF文档中允许填写文本或进行选择操作的特定区域,创建文档时添加的表单域,即使文件已经添加了数字签名,用户仍然可以在表单域中添加或修改内容 【风险提示】 1、需注意,表单域不适用于签署合同等文件,接收方签署完成后,发起方对于合同的任何修改都可能会违背接收方的真实意愿,对合同的法律效力产生影响。(例如,劳动合同签署场景中,员工签字完成后,企业如果使用表单域修改“社保缴纳地”等信息,未经过员工的确认,违背了员工的真实意愿,影响了合同的法律效力,容易产生纠纷。) 2、因此,在使用表单域功能之前,请确保使用的场景符合法律法规要求,不会违背签署人的真实意愿,再开启并使用此功能。
Form string `json:"form,omitempty"`
// 【预览页展示下载按钮】预览页展示下载按钮 【传参】 取值范围:true(展示),false(不展示);不传值默认为:false(不展示)。
ViewDownload string `json:"viewDownload,omitempty"`
// 【链接有效期】链接有效期 【作用】 1、用于设置获取到的链接在多长时间后过期 2、参数不传值时,链接有效期取电子签章管理后台设置的“接口页面默认有效期 3、参数传入时长超过电子签章管理后台设置的“接口页面最大有效期天数”时,将以后台设置的有效期为准 【传参】 最小值:1。单位:秒。
ExpireTime *int64 `json:"expireTime,omitempty"`
TemplateGroupObject *common.TemplateGroupQuery `json:"templateGroupObject,omitempty"`
ParamsMap map[string]string `json:"paramsMap,omitempty"`
WaterMarksMap map[string]*[]common.DocumentWaterMarkContent `json:"waterMarksMap,omitempty"`
StampWaterMarksMap map[string]*[]common.DocumentStampWaterMarkContent `json:"stampWaterMarksMap,omitempty"`
FormMap map[string]*common.DocumentFormDto `json:"formMap,omitempty"`
}
func (obj DocumentCreatebytemplatesRequest) GetUrl() string {
return "/document/createbytemplates"
}
func (obj DocumentCreatebytemplatesRequest) GetHttpParameter() *http.HttpParameter {
parameter := http.NewPostHttpParameter()
parameter.AddParam("templateIds", obj.TemplateIds)
parameter.AddParam("titles", obj.Titles)
parameter.AddParam("viewDownload", obj.ViewDownload)
parameter.AddParam("expireTime", obj.ExpireTime)
if obj.TemplateGroupObject != nil {
jsonBytes, _ := json.Marshal(obj.TemplateGroupObject)
parameter.AddParam("templateGroup", string(jsonBytes))
} else {
parameter.AddParam("templateGroup", obj.TemplateGroup)
}
if obj.ParamsMap != nil {
mapParameter := make(map[string]string)
for key, value := range obj.ParamsMap {
jsonStr, _ := json.Marshal(value)
mapParameter[key] = string(jsonStr)
}
mapStr, _ := json.Marshal(mapParameter)
parameter.AddParam("params", string(mapStr))
} else {
parameter.AddParam("params", obj.Params)
}
if obj.WaterMarksMap != nil {
mapParameter := make(map[string]string)
for key, value := range obj.WaterMarksMap {
jsonStr, _ := json.Marshal(value)
mapParameter[key] = string(jsonStr)
}
mapStr, _ := json.Marshal(mapParameter)
parameter.AddParam("waterMarks", string(mapStr))
} else {
parameter.AddParam("waterMarks", obj.Params)
}
if obj.StampWaterMarksMap != nil {
mapParameter := make(map[string]string)
for key, value := range obj.StampWaterMarksMap {
jsonStr, _ := json.Marshal(value)
mapParameter[key] = string(jsonStr)
}
mapStr, _ := json.Marshal(mapParameter)
parameter.AddParam("stampWaterMarks", string(mapStr))
} else {
parameter.AddParam("stampWaterMarks", obj.Params)
}
if obj.FormMap != nil {
mapParameter := make(map[string]string)
for key, value := range obj.FormMap {
jsonStr, _ := json.Marshal(value)
mapParameter[key] = string(jsonStr)
}
mapStr, _ := json.Marshal(mapParameter)
parameter.AddParam("form", string(mapStr))
} else {
parameter.AddParam("form", obj.Params)
}
return parameter
}