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 CertOrderQueryRequest struct {
	// <ext>core:true</ext> 【订单编号】订单编号 【传参】 1、订单编号、单位、个人不传时，查询所有证书订单
	OrderId        string                               `json:"orderId,omitempty"`
	CompanyRequest *common.CertOrderQueryCompanyRequest `json:"companyRequest,omitempty"`
	UserRequest    *common.CertOrderQueryUserRequest    `json:"userRequest,omitempty"`
	// <ext>core:true</ext> 【订单类型】订单类型 【传参】 取值范围：CLOUD_CERT（云证书-新购），UKEY_CERT（Ukey证书-新购），MOBILE_CERT（移动证书-新购），UKEY_CHANGE（Ukey证书-变更），UKEY_ONLY_CERT（Ukey证书-续期）；不传值默认为：全部。
	OrderType string `json:"orderType,omitempty"`
	// <ext>core:true</ext> 【订单状态】订单状态 【传参】 取值范围：UN_AUTHORIZE（待授权），AUTHORIZE_FAIL（授权失败），UN_PAY（待支付），UNMAKE（待制证），UN_SEND（待寄送），SENDING（寄送中），FINISHED（已完成），INVOICING（开票中），INVOICED（已开票），INVALID（已失效）；不传值默认为：全部。
	OrderStatus string `json:"orderStatus,omitempty"`
	// <ext>core:true</ext> 【证书类型】证书类型 【传参】 取值范围：COMPANY（单位证书），PERSONAL（个人证书）；不传值默认为：全部。
	CertType string `json:"certType,omitempty"`
	// <ext>core:true</ext> 【证书状态】证书状态 【传参】 取值范围：UNAPPLY（待制作），WAIT_WRITE（待写入），NORMAL（生效中），REVOKED（已吊销），EXPIRED（已过期）；不传值默认为：全部。
	CertStatus string `json:"certStatus,omitempty"`
	// <ext>core:true;format:date</ext> 【证书过期时间】证书过期时间 【传参】 日期格式：yyyy-MM-dd HH:mm:ss。
	CertExpireTime string `json:"certExpireTime,omitempty"`
	// <ext>core:true</ext> 【每页数量】每页数量 【传参】 传入正整数；不传值默认为：10。 单位：条。
	PageSize *float64 `json:"pageSize,omitempty"`
	// <ext>core:true</ext> 【指定页码】指定页码 【传参】 传入正整数；不传值默认为：1。 单位：页。
	PageNo *float64 `json:"pageNo,omitempty"`
}

func (obj CertOrderQueryRequest) GetUrl() string {
	return "/cert/order/query"
}

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