package company_request

import (
	"git.sxidc.com/student-physical-examination/contract_lock_sdk/http"
	"os"
)

type CompanyauthSubmitOperauthorizationRequest struct {
	// <ext>core:true</ext> 【认证id】认证id 【传参】 参数必传其一，传入多个时只按最高优先级查询，优先级为认证id>法人单位id>法人单位名称>统一社会信用代码/工商注册号>第三方业务系统法人单位id。
	RequestId string `json:"requestId,omitempty"`
	// <ext>core:true;format:string</ext> 【法人单位id】法人单位id 【传参】 参数必传其一，传入多个时只按最高优先级查询，优先级为认证id>法人单位id>法人单位名称>统一社会信用代码/工商注册号>第三方业务系统法人单位id。
	Id *int64 `json:"id,omitempty"`
	// <ext>core:true</ext> 【法人单位名称】法人单位名称 【传参】 参数必传其一，传入多个时只按最高优先级查询，优先级为认证id>法人单位id>法人单位名称>统一社会信用代码/工商注册号>第三方业务系统法人单位id。
	Name string `json:"name,omitempty"`
	// <ext>core:true</ext> 【统一社会信用代码/工商注册号】统一社会信用代码/工商注册号 【传参】 参数必传其一，传入多个时只按最高优先级查询，优先级为认证id>法人单位id>法人单位名称>统一社会信用代码/工商注册号>第三方业务系统法人单位id。
	RegisterNo string `json:"registerNo,omitempty"`
	// <ext>core:true</ext> 【第三方业务系统法人单位id】第三方业务系统法人单位id 【传参】 参数必传其一，传入多个时只按最高优先级查询，优先级为认证id>法人单位id>法人单位名称>统一社会信用代码/工商注册号>第三方业务系统法人单位id。
	OpenCompanyId string `json:"openCompanyId,omitempty"`
	// <ext>core:true</ext> 【认证授权书】认证授权书 【作用】 若选择对公打款的认证方式，为确保组织真实意愿，需要传入线下加盖公章的授权书，只能加盖法人单位公章，不支持财务章、合同章等。授权书模板可通过（下载认证授权书模板（<docs>/companyauth/authorizationtemplate/download</docs>））获取 【传参】 支持的文件格式：jpg，jpeg，png，pdf。文件大小不超过10M。
	OperAuthorization *os.File `json:"operAuthorization"`
	// 【认证补充协议】认证补充协议 【作用】 如果存在单位认证时需要签署/盖章的补充协议，可联系电子签章平台厂商客服配置补充协议。配置完成后，单位认证时除了认证授权书外还需要签署补充协议进行才能完成认证。 【传参】 支持的文件格式：pdf。文件大小不超过50M
	SupplyAgreement *os.File `json:"supplyAgreement,omitempty"`
}

func (obj CompanyauthSubmitOperauthorizationRequest) GetUrl() string {
	return "/companyauth/submit/operauthorization"
}

func (obj CompanyauthSubmitOperauthorizationRequest) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewPostHttpParameter()
	parameter.AddParam("requestId", obj.RequestId)
	parameter.AddParam("id", obj.Id)
	parameter.AddParam("name", obj.Name)
	parameter.AddParam("registerNo", obj.RegisterNo)
	parameter.AddParam("openCompanyId", obj.OpenCompanyId)
	parameter.AddFiles("operAuthorization", obj.OperAuthorization)
	parameter.AddFiles("supplyAgreement", obj.SupplyAgreement)
	return parameter
}
