package contract_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 ContractSignbypracticeRequest struct {
	// <ext>core:true;format:string</ext> 【电子签约文件id】电子签约文件id 【作用】 查询需要静默签署的电子签约文件 【传参】 电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准。
	ContractId *int64 `json:"contractId,omitempty"`
	// <ext>core:true;format:string</ext> 【第三方业务系统文件id】第三方业务系统文件id 【作用】 查询需要静默签署的电子签约文件 【传参】 电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准。
	BizId string `json:"bizId,omitempty"`
	// <ext>core:true</ext> 【签署方编号】签署方编号 【作用】 一份签署文件中，签署人存在于多个签署方时，根据签署方编号指定本次签署的签署方
	SignatoryNo string `json:"signatoryNo,omitempty"`
	// <ext>core:true</ext> 【用户姓名】用户姓名
	TenantName string `json:"tenantName,omitempty"`
	// <ext>core:true</ext> 【联系方式】联系方式 【作用】 查询静默签的签署人信息 【传参】 1、可传入用户手机号或者邮箱。 2、手机号允许使用大陆、港澳台、国际手机号，手机号格式为：区号+空格+手机号，例：852 9xxxxxxx ，大陆手机号可以不传区号。 3、邮箱需传入符合格式的字符串，例：xxxxxxxx@163.com。 4、查询签署人的参数至少传一个，传入多个时只按最高优先级查询，优先级为用户id>联系方式>成员编号>证件号>第三方业务系统用户id>登录账号。
	Contact string `json:"contact"`
	// <ext>core:true</ext> 【成员编号】成员编号 【作用】 查询静默签的签署人信息 【传参】 查询签署人的参数至少传一个，传入多个时只按最高优先级查询，优先级为用户id>联系方式>成员编号>证件号>第三方业务系统用户id>登录账号。
	ReceiverNumber string `json:"receiverNumber,omitempty"`
	// <ext>core:true</ext> 【证件号】证件号 【作用】 查询静默签的签署人信息 【传参】 1、支持传入用户关联的证件号，包括居民身份证、护照号、港澳居民来往内地通行证等。 2、系统中若存在多个同证件号用户，则优先匹配已认证中最早认证的用户；若无已认证用户，则关联最早创建的用户。 3、查询签署人的参数至少传一个，传入多个时只按最高优先级查询，优先级为用户id>联系方式>成员编号>证件号>第三方业务系统用户id>登录账号。
	CardNo string `json:"cardNo,omitempty"`
	// <ext>core:true</ext> 【第三方业务系统用户id】第三方业务系统用户id 【作用】 查询静默签的签署人信息 【传参】 查询签署人的参数至少传一个，传入多个时只按最高优先级查询，优先级为用户id>联系方式>成员编号>证件号>第三方业务系统用户id>登录账号。
	OpenUserId string `json:"openUserId,omitempty"`
	// <ext>core:true</ext> 【业务系统标识】业务系统标识 【作用】 1：根据第三方业务系统用户id查询系统成员/用户信息时使用 2：涉及到多套业务系统集成且不同系统间第三方业务系统用户id可能重复时需要传入该参数
	SystemCode string `json:"systemCode,omitempty"`
	// <ext>core:true</ext> 【用户id】用户id 【作用】 查询静默签的签署人信息 【传参】 查询签署人的参数至少传一个，传入多个时只按最高优先级查询，优先级为用户id>联系方式>成员编号>证件号>第三方业务系统用户id>登录账号。
	UserId string `json:"userId"`
	// <ext>core:true</ext> 【登录账号】登录账号 【作用】 查询静默签的签署人信息 【传参】 查询签署人的参数至少传一个，传入多个时只按最高优先级查询，优先级为用户id>联系方式>成员编号>证件号>第三方业务系统用户id>登录账号。
	AccountNo string `json:"accountNo,omitempty"`
	// <ext>core:true</ext> 【签署位置】签署位置 【作用】 用于指定签署位置 【特殊说明】 1、若用印流程中无预设签署位置，则此处必传签署位置 2、若用印流程中有预设位置，且本参数传入了签署位置，则两个位置都会进行签署
	Stampers []*common.ContractSignbypracticeStampersRequest `json:"stampers,omitempty"`
	Forms    *common.ContractSignbypracticeFormsRequest      `json:"forms,omitempty"`
	// <ext>core:true</ext> 【静默签时是否需授权】静默签时是否需授权 【作用】 若存在特殊业务场景希望可以实现静默签署时无需授权，可通过该参数关闭授权校验 【传参方式】 默认true。true：授权后才可静默签；false：无需授权即可静默签
	NeedEmpower *bool `json:"needEmpower,omitempty"`
}

func (obj ContractSignbypracticeRequest) GetUrl() string {
	return "/contract/signbypractice"
}

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