package seal_request

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

type SealUserChargeRequest struct {
	// 【三方业务系统单位id】三方业务系统单位id，创建法人单位不指定由契约锁系统默认生成
	OpenCompanyId string `json:"openCompanyId,omitempty"`
	// 【所在法人单位】所在法人单位（为兼容之前版本 companyName 会覆盖掉 name）
	CompanyName string `json:"companyName,omitempty"`
	// 【用户手机号】用户手机号 【传参说明】 手机号允许使用国际手机号手机号，手机号格式为：区号+空格+手机号，例：852 9xxxxxxx ，大陆手机号可以不传区号。
	Mobile string `json:"mobile,omitempty"`
	// 【成员编号】成员编号（mobile与employeeNo不能同时为空）
	EmployeeNo string `json:"employeeNo,omitempty"`
	// 【三方业务系统id】三方业务系统id，创建用户不指定由契约锁系统默认生成
	OpenUserId string `json:"openUserId,omitempty"`
	// 【契约锁系统用户ID】契约锁系统用户ID，以下参数传入一个即可，查询优先级（contact > mobile > email > number >  cardNo > openUserId > accountNo）
	UserId *int64 `json:"userId,omitempty"`
	// 【用户身份证号】用户身份证号
	CardNo string `json:"cardNo,omitempty"`
	// 【统一社会信用代码】统一社会信用代码
	RegisterNo string `json:"registerNo,omitempty"`
	// 【印章形态】印章形态：PHYSICS(物理印章),ELECTRONIC(电子印章)
	SealAttribute string `json:"sealAttribute,omitempty"`
	// 【成员编号】成员编号，需要搭配组织进行使用
	Number string `json:"number,omitempty"`
	// 【用户联系方式】用户联系方式：包括mobile和email
	Contact string `json:"contact,omitempty"`
	// 【用户登录账号】用户登录账号
	AccountNo string `json:"accountNo,omitempty"`
	// 【单位名称】单位名称
	Name string `json:"name,omitempty"`
	// 【契约锁系统法人单位ID】契约锁系统法人单位ID，下列四个参数传入一个即可，查询优先级（id > name > registerNo > openCompanyId）
	Id *int64 `json:"id,omitempty"`
	// 【印章类型】印章类型 参考电子签约签署平台“印章类型设置”中的类型
	SealCategoryName string `json:"sealCategoryName,omitempty"`
	// 【用户电子邮箱】用户电子邮箱
	Email string `json:"email,omitempty"`
}

func (obj SealUserChargeRequest) GetUrl() string {
	return "/seal/user/charge"
}

func (obj SealUserChargeRequest) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewGetHttpParameter()
	parameter.AddParam("openCompanyId", obj.OpenCompanyId)
	parameter.AddParam("companyName", obj.CompanyName)
	parameter.AddParam("mobile", obj.Mobile)
	parameter.AddParam("employeeNo", obj.EmployeeNo)
	parameter.AddParam("openUserId", obj.OpenUserId)
	parameter.AddParam("userId", obj.UserId)
	parameter.AddParam("cardNo", obj.CardNo)
	parameter.AddParam("registerNo", obj.RegisterNo)
	parameter.AddParam("sealAttribute", obj.SealAttribute)
	parameter.AddParam("number", obj.Number)
	parameter.AddParam("contact", obj.Contact)
	parameter.AddParam("accountNo", obj.AccountNo)
	parameter.AddParam("name", obj.Name)
	parameter.AddParam("id", obj.Id)
	parameter.AddParam("sealCategoryName", obj.SealCategoryName)
	parameter.AddParam("email", obj.Email)
	return parameter
}
