package company_request

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

type CompanyauthPcpageRequest struct {
	// <ext>core:true</ext> 【认证模式】认证模式 【作用】 可控制法人单位是初次认证还是重复认证 1、false：即法人单位为初次认证，之前未在系统中进行过认证 2、true：即法人单位为重复认证，法人单位已经在系统中成功认证过，可能因为变名称或者变更法定代表人等原因需要重新认证 【传参】 取值范围：false（初次认证），true（重新认证）；不传值默认为：false（初次认证）
	Repeat string `json:"repeat,omitempty"`
	// <ext>core:true;format:string</ext> 【法人单位id】法人单位id 【作用】 1、认证模式为初次认证时，可定位认证审核失败的法人单位，匹配成功后将以本次提交的认证信息继续进行认证。如果不是以上情况，初次认证时传入的法人单位id不生效。在这种场景下法人单位查询优先级为法人单位名称>统一社会信用代码/工商注册号>法人单位id>第三方业务系统法人单位id。 2、认证模式为重复认证时，用于定位需要重复认证的法人单位 【传参】 repeat（认证模式）为true（重复认证）时必传。
	CompanyId *int64 `json:"companyId,omitempty"`
	// <ext>core:true</ext> 【单位类型】单位类型 【作用】 可控制页面默认选中的单位类型 1、企业：有限责任公司、股份有限公司、个人独资企业等请选择此类型 2、个体工商户 ：个体工商户请选择此类型 3、政府 :国务院或地方政府组成部门以及直属机构，例如外交部、海关、税务、民政局等请选择此类型 4、其他大陆组织：社会团体、民办非企业单位例如工会、妇联、工商联等请选择此类型 5、事业单位：教育、科技、文化、卫生、社会福利等请选择此类型 6、港澳台及海外组织 7、项目部 【传参】 取值范围：1（企业），2（个体工商户），3（政府），4（其他大陆组织），5（事业单位），6（港澳台及海外组织），7（项目部）；不传值默认为：根据可用的认证方式选中第一个可选组织类型。
	CompanyType string `json:"companyType,omitempty"`
	// <ext>core:true</ext> 【认证方式】认证方式 【作用】 1、可控制认证页面可用的认证方式，支持指定法定代表人认证 、对公打款认证 、Ukey认证、项目部材料认证；用户仅可在指定的方式中切换选择认证方式 2、支持指定多个可用认证方式，多个认证方式之间使用英文逗号隔开 【传参】 1、取值范围：AUTHFILE（法定代表人认证），BANKPAY（对公打款认证），RECEIPT_REFUND（对公打款-正向打款），PAY（对公打款-反向打款），UKEY（Ukey认证），PROJECT（项目部材料认证）；可选多项；不传值默认为：电子签厂商后台配置。 2、传入BANKPAY（对公打款认证）即代表同时允许使用RECEIPT_REFUND（对公打款-正向打款）和PAY（对公打款-正向打款），均传入时取并集。
	Modes string `json:"modes,omitempty"`
	// <ext>core:true</ext> 【法人单位名称】法人单位名称 【作用】 请传入营业执照上的真实单位名称
	Name string `json:"name"`
	// <ext>core:true</ext> 【统一社会信用代码/工商注册号】统一社会信用代码/工商注册号 【作用】 请传入营业执照上的统一社会信用代码/工商注册号
	RegisterNo string `json:"registerNo,omitempty"`
	// <ext>core:true</ext> 【法定代表人姓名】法定代表人姓名 【作用】 请传入营业执照上的法定代表人姓名，若单位类型是个体工商户，请传入经营者姓名
	LegalPerson string `json:"legalPerson,omitempty"`
	// <ext>core:true</ext> 【营业执照】营业执照 【作用】 请传入彩色原件或加盖公司公章的复印件 【传参】 支持的文件格式：jpg，jpeg，png，pdf。文件大小不超过10M。
	License *os.File `json:"license,omitempty"`
	// <ext>deprecated:true</ext> 【认证信息是否允许修改】接口传入的认证基本信息是否允许修改 【作用】 可控制接口传入的认证信息（除联系方式）默认是否允许修改 1、true：即接口传入的所有基本信息默认均允许修改，忽略modifyFields。但是当modifyFields包含NONE时，都不允许修改 2、false：即接口传入的所有基本信息默认不允许修改，具体可修改的字段读取modifyFields（认证可修改字段）传参，如果modifyFields不传时，都不允许修改 3、为空：具体可修改的字段读取modifyFields（认证可修改字段）传参 4、若repeat（认证模式）为true（重复认证）时，统一社会信用代码/工商注册号始终不允许修改 取值范围：true（默认允许修改），false（默认不允许修改）；不传值默认为true（默认允许修改）
	Edit string `json:"edit,omitempty"`
	// <ext>core:true</ext> 【认证页面可修改值】认证页面可修改值  【作用】 1、初次认证时，可控制接口传入的认证信息（除认证企业负责人联系方式）默认是否允许修改 2、重新提交认证时，统一社会信用代码/工商注册号不允许修改，其余接口传入的认证信息（除联系方式）都根据当前参数控制是否可修改 【传参】 1、取值范围：NONE（都不允许修改），CORP_NAME（认证企业名称），REGISTER_NO（工商注册号），LEGAL_PERSON（法人姓名），LICENSE（营业执照），CHARGER（认证企业负责人姓名），LEGAL_CONTACT（法定代表人手机号），LEGAL_CARDNO（法定代表认证件号）；不传值默认都允许修改。 2、传值可传入多个，当包含NONE（都不允许修改）时，则忽略其他取值，都不允许修改。
	ModifyFields string `json:"modifyFields,omitempty"`
	// <ext>core:true</ext> 【是否为创建外部法人单位】是否创建外部法人单位 【作用】 若单位不存在时会创建单位，可通过该参数指定创建的单位为内部单位还是外部单位 1、true：即创建外部法人单位 2、false：即创建内部法人单位，为集团统一管理的内部单位 3、若单位已经存在，则该参数传值不生效 【传参】 取值范围：true（创建外部法人单位），false（创建内部法人单位）；不传值默认为：true（创建外部法人单位）
	External string `json:"external,omitempty"`
	// <ext>core:true</ext> 【第三方业务系统法人单位id】第三方业务系统法人单位id 【作用】 1、可传入第三方业务系统法人单位id，不传值时会随机生成一个id，认证成功后该值会返回第三方业务系统； 2、若单位当前已有第三方业务系统法人单位id，则此参数传参不生效，也不会再生成一个新的id； 3、认证模式为初次认证时，可定位认证审核失败的法人单位，匹配成功后将以本次提交的认证信息继续进行认证。在这种场景下法人单位查询优先级为法人单位名称>统一社会信用代码/工商注册号>法人单位id>第三方业务系统法人单位id。
	OpenCompanyId string `json:"openCompanyId,omitempty"`
	// 【是否计费】是否计费 【作用】 电子签章管理后台可对所有内部外部单位以及个人设置计费规则，收取相应的签署、证书、认证等费用，可标记单位是否计费 【传参】 取值范围：true（是），false（否）；不传值默认为：false（否）
	Customer string `json:"customer,omitempty"`
	// <ext>core:true</ext> 【印章管理员姓名】印章管理员姓名 【作用】 若单位认证申请人无权限管理印章，可在此处输入实际的印章管理员姓名，认证通过后由印章管理员负责管理单位内的印章。不传值时默认取申请人作为印章管理员 【传参】 若authorizer（印章管理员姓名）与authorizerCardNo（印章管理员证件号）传入其一，则另一个字段也必传
	Authorizer string `json:"authorizer,omitempty"`
	// <ext>core:true</ext> 【印章管理员证件号】印章管理员证件号 【作用】 若单位认证申请人无权限管理印章，可在此处输入实际的印章管理员证件号，认证通过后由印章管理员负责管理单位内的印章。不传值时默认取申请人作为印章管理员 【传参】 若authorizer（印章管理员姓名）与authorizerCardNo（印章管理员证件号）传入其一，则另一个字段也必传
	AuthorizerCardNo string `json:"authorizerCardNo,omitempty"`
	// <ext>core:true</ext> 【申请人姓名】申请人姓名 【作用】 即认证申请人姓名，用于记录申请认证的用户。若不单独传入印章管理员，则默认赋予申请人印章管理员的角色
	Charger string `json:"charger"`
	// <ext>core:true;format:phone</ext> 【申请人手机号】申请人手机号 【作用】 即认证申请人手机号，用于记录申请认证的用户。若不单独传入印章管理员，则默认赋予申请人印章管理员的角色 【传参】 1、手机号允许使用大陆、港澳台、国际手机号，手机号格式为：区号+空格+手机号，例：852 9xxxxxxx ，大陆手机号可以不传区号。 2、同时传入手机号及邮箱时，按手机号>邮箱的优先级进行查询，若手机号查询到用户，则对应用户认证完成后更新姓名、证件号，此时邮箱会忽略；若手机号未查询到用户，此时会根据邮箱查询，若邮箱查询到用户，则对应用户认证完成后更新姓名、证件号，此时手机号会忽略；若手机号与邮箱均未查询到用户，则会将手机号、邮箱创建新用户并在用户认证完成后更新姓名、证件号。
	Mobile string `json:"mobile,omitempty"`
	// <ext>core:true;format:email</ext> 【申请人邮箱】申请人邮箱 【作用】 即认证申请人邮箱，用于记录申请认证的用户。若不单独传入印章管理员，则默认赋予申请人印章管理员的角色 【传参】 1、邮箱需传入符合格式的字符串，例：xxxxxxxx@163.com。 2、同时传入手机号及邮箱时，按手机号>邮箱的优先级进行查询，若手机号查询到用户，则对应用户认证完成后更新姓名、证件号，此时邮箱会忽略；若手机号未查询到用户，此时会根据邮箱查询，若邮箱查询到用户，则对应用户认证完成后更新姓名、证件号，此时手机号会忽略；若手机号与邮箱均未查询到用户，则会将手机号、邮箱创建新用户并在用户认证完成后更新姓名、证件号。
	Email string `json:"email,omitempty"`
	// <ext>core:true</ext> 【申请人证件号】申请人证件号 【作用】 用于指定认证申请人实名认证时的证件号
	ChargerNo string `json:"chargerNo,omitempty"`
	// <ext>core:true</ext> 【法定代表人手机号】法定代表人手机号 【作用】 1、若使用法定代表人在线授权完成认证，可传入法定代表人手机号，传入后自动填充在页面上。若使用其他认证方式，则该传参不生效 2、法定代表人手机号，用于给法人发送认证授权短信，法人收到短信后需要完善个人证件信息，系统将进行工商信息核验，核验成功后由法人进行单位认证授权 【传参】 手机号允许使用大陆、港澳台、国际手机号，手机号格式为：区号+空格+手机号，例：852 9xxxxxx，大陆手机号可以不传区号。
	LegalPersonContact string `json:"legalPersonContact,omitempty"`
	// <ext>core:true</ext> 【法定代表人证件号】法定代表人证件号 【作用】 若使用法定代表人在线授权完成认证，可传入法定代表人证件号，后续法人进行统一授权和身份核验时，将自动填充在页面上。若使用其他认证方式，则该传参不生效
	LegalPersonCardNo string `json:"legalPersonCardNo,omitempty"`
	// 【链接有效期】链接有效期 【作用】 1、用于设置获取到的链接在多长时间后过期 2、当该参数不传值时，其有效期将被设置为 “管理控制台-设置-开放平台-接口页面有效期配置-接口页面默认有效期“对应的时长 3、传入时长超过 “管理控制台-设置-开放平台-接口页面有效期配置-接口页面最大有效期天数“时，以控制台配置的最大天数为准 【传参】 最小值：1。单位：秒。
	ExpireTime *int64 `json:"expireTime,omitempty"`
	// 【认证成功后跳转地址】认证成功后跳转地址 【作用】 当认证成功后页面自动跳转至指定地址，不传值默认为：尝试返回上一页面
	SuccessPage string `json:"successPage,omitempty"`
	// 【页面语言】页面语言 【作用】 1、用于指定链接页面使用的语言 2、英文和日文页面为付费功能，请确认开通英文版系统和日文版系统后使用 【传参】 取值范围：ZH_CN(中文)，EN_US(英文)，JP(日文)；不传值默认为：ZH_CN（中文）。
	Language string `json:"language,omitempty"`
	// <ext>format:color</ext> 【页面主题色】自定义页面主题色 【作用】 可根据组织的品牌风格，自定义页面的主题颜色，如红色、蓝色 【传参】 RGB颜色(16进制)，例如：#A67A7A。
	ThemeColor string `json:"themeColor,omitempty"`
	// 【是否发送认证通知】是否发送认证通知 【作用】 控制是否向接口传入的申请人联系方式发送短信或邮件通知申请人进行实名认证，优先发送短信通知 【传参】 取值范围：false（不发送），true（发送）；不传值默认为：false（不发送）。
	Remind string `json:"remind,omitempty"`
}

func (obj CompanyauthPcpageRequest) GetUrl() string {
	return "/companyauth/pcpage"
}

func (obj CompanyauthPcpageRequest) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewPostHttpParameter()
	parameter.AddParam("repeat", obj.Repeat)
	parameter.AddParam("companyId", obj.CompanyId)
	parameter.AddParam("companyType", obj.CompanyType)
	parameter.AddParam("modes", obj.Modes)
	parameter.AddParam("name", obj.Name)
	parameter.AddParam("registerNo", obj.RegisterNo)
	parameter.AddParam("legalPerson", obj.LegalPerson)
	parameter.AddParam("edit", obj.Edit)
	parameter.AddParam("modifyFields", obj.ModifyFields)
	parameter.AddParam("external", obj.External)
	parameter.AddParam("openCompanyId", obj.OpenCompanyId)
	parameter.AddParam("customer", obj.Customer)
	parameter.AddParam("authorizer", obj.Authorizer)
	parameter.AddParam("authorizerCardNo", obj.AuthorizerCardNo)
	parameter.AddParam("charger", obj.Charger)
	parameter.AddParam("mobile", obj.Mobile)
	parameter.AddParam("email", obj.Email)
	parameter.AddParam("chargerNo", obj.ChargerNo)
	parameter.AddParam("legalPersonContact", obj.LegalPersonContact)
	parameter.AddParam("legalPersonCardNo", obj.LegalPersonCardNo)
	parameter.AddParam("expireTime", obj.ExpireTime)
	parameter.AddParam("successPage", obj.SuccessPage)
	parameter.AddParam("language", obj.Language)
	parameter.AddParam("themeColor", obj.ThemeColor)
	parameter.AddParam("remind", obj.Remind)
	if obj.License != nil {
		parameter.AddFiles("license", obj.License)
	}
	return parameter
}
