package others_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 ChainEvidenceElectronicProveApplyRequest struct {
	// <ext>core:true</ext> 【出证来源】出证来源 【作用】 用来区分出证数据的来源 1、电子签约存证：即申请电子签约文件的出证 2、自主数据存证：即申请自主数据存证的出证 【传参】 取值范围：CONTRACT（电子签约存证），CUSTOM_DATA（自主数据存证）。
	ProveSource string `json:"proveSource"`
	// <ext>core:true;format:string</ext> 【存证编号】存证编号 【作用】 电子签约与自主数据存证完成后，会生成一个唯一的编号，即存证编号，可通过存证编号申请出证。存证编号可在存证详情页获取或通过存证接口回调参数中获取 【传参】 1、最大长度：20。 2、存证编号与出证数据id必填一个。
	ChainId *int64 `json:"chainId,omitempty"`
	// <ext>core:true</ext> 【出证数据id】出证数据id 【作用】 1.对电子签约文件出证，可传入 1）电子签约文件id，即对该电子签约文件下的所有签署文件出具电子数据存证证明 2）电子签约文件下具体某一份签署文档id，即对对应的签署文档出具电子数据存证证明 2.对自主数据存证出证，可传入存证数据id，即对该条存证数据出具电子数据存证证明 【传参】 1、最大长度：20。 2、出证数据id与存证编号必填一个。
	ProveDataId string `json:"proveDataId,omitempty"`
	// <ext>inner-type:Json<NotaryOperatorInfo>;core:true</ext> 【操作人】操作人 【作用】 可传入业务系统中进行数据出证的操作人，传入后将在电子签章前台的存证详情与审计中进行记录，方便后期追溯 【传参】 1、参数必传其一（除姓名外），传入多个参数时只按参数中最高优先级查询，优先级为用户id>联系方式>手机号>邮箱>成员编号>证件号>第三方业务系统用户id>登录账号。 2、同时分配给操作人当前出证数据的查看权限，若不创建用户，则不分配查看权限。 3、若用户不存在时或当操作人未传时，审计日志将记录调用此接口的应用名称。
	OperatorInfo       string                     `json:"operatorInfo"`
	OperatorInfoObject *common.NotaryOperatorInfo `json:"operatorInfoObject,omitempty"`
}

func (obj ChainEvidenceElectronicProveApplyRequest) GetUrl() string {
	return "/chain/evidence/electronic/prove/apply"
}

func (obj ChainEvidenceElectronicProveApplyRequest) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewPostHttpParameter()
	parameter.AddParam("proveSource", obj.ProveSource)
	parameter.AddParam("chainId", obj.ChainId)
	parameter.AddParam("proveDataId", obj.ProveDataId)
	if obj.OperatorInfoObject != nil {
		jsonBytes, _ := json.Marshal(obj.OperatorInfoObject)
		parameter.AddParam("operatorInfo", string(jsonBytes))
	} else {
		parameter.AddParam("operatorInfo", obj.OperatorInfo)
	}
	return parameter
}
