package v2contract_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 V2ContractSignbyemployeeRequest struct {
	Contract *common.SignSilentContract `json:"contract"`
	Company  *common.CompanyRequest     `json:"company"`
	User     *common.User               `json:"user"`
	// <ext>core:true</ext> 【签署方编号】签署方编号 【作用】 一份签署文件中，签署人存在于多个签署方时，根据签署方编号指定本次签署的签署方
	SignatoryNo string `json:"signatoryNo,omitempty"`
	// <ext>core:true</ext> 【签署动作编号】签署动作编号 【作用】 一个签署方下，签署人存在多个签署动作时，指定本次签署的签署动作
	ActionNo string `json:"actionNo,omitempty"`
	// <ext>core:true;inner-type:Json<StamperBean>;deprecated:false</ext>【签署位置】签署位置，若用印流程中无预设位置，则必传
	Stampers []*common.EmployeeStamperBean `json:"stampers,omitempty"`
	// <ext>core:true</ext> 【表单域】表单域 【作用】 1、在签署文档中设置好的表单域中填写内容 2、支持文本域和选择框域
	Forms           []*common.SignSilentFroms     `json:"forms,omitempty"`
	SealInfoRequest *common.PersonSealInfoRequest `json:"sealInfoRequest,omitempty"`
	// <ext>deprecated:true;format:string</ext> 【签名id】签名id 【作用】 1、该参数为旧参数，推荐使用新参数（sealInfoRequest），并请仔细阅读参数描述 2、此参数可指定静默签使用的签名，但仅对本接口stampers中指定的位置生效，对预设或创建电子签约时指定的位置不生效，创建时指定的位置将使用创建时指定的签名，若创建时未指定签名则将使用默认签名 3、仅支持签署文件，不支持作废文件 4、指定签名优先级：签名id>签名类型>签名分类 5、若个人签名签署要求指定使用系统签名或无外观签名，则传入的指定签名信息不生
	SealId *int64 `json:"sealId,omitempty"`
	// <ext>deprecated:true;</ext> 【签名类型】签名类型 【作用】 1、该参数为旧参数，推荐使用新参数（sealInfoRequest），并请仔细阅读参数描述 2、此参数可指定静默签使用的签名，但仅对本接口stampers中指定的位置生效，对预设或创建电子签约时指定的位置不生效，创建时指定的位置将使用创建时指定的签名，若创建时未指定签名则将使用默认签名 3、仅支持签署文件，不支持作废文件 4、指定签名优先级：签名id>签名类型>签名分类 5、若个人签名签署要求指定使用系统签名或无外观签名，则传入的指定签名信息不生
	PersonSealCategoryName string `json:"personSealCategoryName,omitempty"`
	// <ext>deprecated:true;</ext> 【签名分类】签名分类 【作用】 1、该参数为旧参数，推荐使用新参数（sealInfoRequest），并请仔细阅读参数描述 2、此参数可指定静默签使用的签名，但仅对本接口stampers中指定的位置生效，对预设或创建电子签约时指定的位置不生效，创建时指定的位置将使用创建时指定的签名，若创建时未指定签名则将使用默认签名 3、仅支持签署文件，不支持作废文件 4、指定签名优先级：签名id>签名类型>签名分类 5、若个人签名签署要求指定使用系统签名或无外观签名，则传入的指定签名信息不生 【传参】 取值范围：PERSON_SEAL(个人名章)，PERSON_SIGN(个人签名)。
	PersonSealCarrier string `json:"personSealCarrier,omitempty"`
	// <ext>core:true</ext> 【签名不存在，允许使用默认签名/名章】签名不存在，允许使用默认签名/名章 【作用】 控制当接口传入的签名不存在时，是否允许使用默认签名进行签署 允许：传入签名不存在时，使用默认签名签署 不允许：传入签名不存在时，系统报错 【传参】 取值范围：true（允许），false（不允许）；不传值默认为true（允许）。
	AllowUseDefaultPerSeal *bool `json:"allowUseDefaultPerSeal,omitempty"`
	// <ext>core:true</ext>【静默签时是否需授权】静默签时是否需授权【作用】若存在特殊业务场景希望可以实现静默签署时无需授权，可通过该参数关闭授权校验【传参方式】默认true。true：授权后才可静默签；false：无需授权即可静默签
	NeedEmpower *bool `json:"needEmpower,omitempty"`
}

func (obj V2ContractSignbyemployeeRequest) GetUrl() string {
	return "/v2/contract/signbyemployee"
}

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