package cert_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 CertStatisticQueryRequest struct {
	// <ext>core:true</ext> 【证书主体类型】证书主体类型 【作用】 查询单位或个人证书 【传参】 1、取值范围：COMPANY（单位类型），PERSONAL（个人类型） 2、证书主体、指定单位、指定个人必传其一
	CertType       string                                   `json:"certType,omitempty"`
	CompanyRequest *common.CertStatisticQueryCompanyRequest `json:"companyRequest,omitempty"`
	UserRequest    *common.CertStatisticQueryUserRequest    `json:"userRequest,omitempty"`
	// <ext>core:true;format:date</ext> 【证书颁发时间-起始】证书颁发时间-起始 【作用】 查询指定时间区间内颁发的证书数量 【传参】 1、日期格式：yyyy-MM-dd HH:mm:ss。 2、仅传入起始时间则查询从起始时间开始的所有证书，同时传入起始和结束时间则可查询该时间区间内的证书。
	IssueTimeStart string `json:"issueTimeStart,omitempty"`
	// <ext>core:true;format:date</ext> 【证书颁发时间-结束】证书颁发时间-结束 【作用】 查询指定时间区间内颁发的证书数量 【传参】 1、日期格式：yyyy-MM-dd HH:mm:ss。 2、仅传入结束时间则查询截止到结束时间的所有证书，同时传入起始和结束时间则可查询该时间区间内的证书。
	IssueTimeEnd string `json:"issueTimeEnd,omitempty"`
	// <ext>core:true</ext> 【每页数量】每页数量 【传参】 传入正整数；不传值默认为：10。 单位：条。
	PageSize *float64 `json:"pageSize,omitempty"`
	// <ext>core:true</ext> 【指定页码】指定页码 【传参】 传入正整数；不传值默认为：1。 单位：页。
	PageNo *float64 `json:"pageNo,omitempty"`
}

func (obj CertStatisticQueryRequest) GetUrl() string {
	return "/cert/statistic/query"
}

func (obj CertStatisticQueryRequest) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewPostHttpParameter()
	jsonBytes, _ := json.Marshal(obj)
	parameter.SetJsonParamer(string(jsonBytes))
	return parameter
}
