package seal_request

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

type SealApplyOweAuthsRequest struct {
	// 【成员编号】成员编号 【传参】 1、所有参数必传其一，传入多个时只按最高优先级查询，优先级为用户id>联系方式>手机号>邮箱>成员编号>身份证号>第三方业务系统用户id>用户登录账号。 2、若用户不存在时，将会报错。
	Number string `json:"number,omitempty"`
	// 【联系方式】联系方式 【传参】 1、可传入用户手机号或者邮箱。 2、手机号允许使用大陆、港澳台、国际手机号，手机号格式为：区号+空格+手机号，例：852 9xxxxxxx ，大陆手机号可以不传区号。 3、邮箱需传入符合格式的字符串，例：xxxxxxxx@163.com。 4、所有参数必传其一，传入多个时只按最高优先级查询，优先级为用户id>联系方式>手机号>邮箱>成员编号>身份证号>第三方业务系统用户id>用户登录账号。 5、若用户不存在时，将会报错。
	Contact string `json:"contact,omitempty"`
	// 【登录账号】登录账号 【传参】 1、所有参数必传其一，传入多个时只按最高优先级查询，优先级为用户id>联系方式>手机号>邮箱>成员编号>身份证号>第三方业务系统用户id>用户登录账号。 2、若用户不存在时，将会报错。
	AccountNo string `json:"accountNo,omitempty"`
	// 【手机号】手机号 【传参】 1、手机号允许使用大陆、港澳台、国际手机号，手机号格式为：区号+空格+手机号，例：852 9xxxxxxx ，大陆手机号可以不传区号。 2、所有参数必传其一，传入多个时只按最高优先级查询，优先级为用户id>联系方式>手机号>邮箱>成员编号>身份证号>第三方业务系统用户id>用户登录账号。 3、若用户不存在时，将会报错。
	Mobile string `json:"mobile,omitempty"`
	// 【第三方业务系统用户id】第三方业务系统用户id 【传参】 1、所有参数必传其一，传入多个时只按最高优先级查询，优先级为用户id>联系方式>手机号>邮箱>成员编号>身份证号>第三方业务系统用户id>用户登录账号。 2、若用户不存在时，将会报错。
	OpenUserId string `json:"openUserId,omitempty"`
	// <ext>core:true</ext> 【用户id】用户id 【传参】 1、所有参数必传其一，传入多个时只按最高优先级查询，优先级为用户id>联系方式>手机号>邮箱>成员编号>身份证号>第三方业务系统用户id>用户登录账号。 2、若用户不存在时，将会报错。
	UserId *int64 `json:"userId,omitempty"`
	// 【证件号】证件号 【传参】 1、支持传入用户关联的证件号，包括居民身份证、护照号、港澳居民来往内地通行证等。 2、系统中若存在多个同证件号用户，则优先匹配已认证中最早认证的用户；若无已认证用户，则关联最早创建的用户。 3、所有参数必传其一，传入多个时只按最高优先级查询，优先级为用户id>联系方式>手机号>邮箱>成员编号>身份证号>第三方业务系统用户id>用户登录账号。 4、若用户不存在时，将会报错。
	CardNo string `json:"cardNo,omitempty"`
	// 【邮箱】邮箱 【传参】 1、邮箱需传入符合格式的字符串，例：xxxxxxxx@163.com。 2、所有参数必传其一，传入多个时只按最高优先级查询，优先级为用户id>联系方式>手机号>邮箱>成员编号>身份证号>第三方业务系统用户id>用户登录账号。 3、若用户不存在时，将会报错。
	Email string `json:"email,omitempty"`
}

func (obj SealApplyOweAuthsRequest) GetUrl() string {
	return "/seal/apply/owe/auths"
}

func (obj SealApplyOweAuthsRequest) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewGetHttpParameter()
	parameter.AddParam("number", obj.Number)
	parameter.AddParam("contact", obj.Contact)
	parameter.AddParam("accountNo", obj.AccountNo)
	parameter.AddParam("mobile", obj.Mobile)
	parameter.AddParam("openUserId", obj.OpenUserId)
	parameter.AddParam("userId", obj.UserId)
	parameter.AddParam("cardNo", obj.CardNo)
	parameter.AddParam("email", obj.Email)
	return parameter
}
