package others_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 V2CertOrderApplyurlRequest struct {
	// <ext>core:true</ext> 【证书服务】证书服务  【传参】 取值范围：CLOUD_CERT（云证书-新购），UKEY_CERT（Ukey证书-新购），MOBILE_CERT（移动证书-新购），UKEY_CHANGE（Ukey证书-变更）。
	OrderType string `json:"orderType"`
	// <ext>core:true</ext> 【要变更的Ukey设备】要变更的Ukey设备 【传参】 可传入要变更的Ukey设备号，不传时由用户在页面上选择或插key录入，仅证书服务传入Ukey变更生效
	ChangeDevice   string                 `json:"changeDevice,omitempty"`
	CompanyRequest *common.CompanyRequest `json:"companyRequest,omitempty"`
	UserRequest    *common.UserRequest    `json:"userRequest,omitempty"`
	// <ext>deprecated:true;core:true</ext>【证书通道】证书通道【作用】指定要申请证书的证书通道  【传参】 取值范围：QIYUESUO（默认证书通道），SHECA_V1（上海CA）；不传值默认为：QIYUESUO（默认证书通道）。
	CertChannel string `json:"certChannel,omitempty"`
	// <ext>core:true</ext> 【证书算法】证书算法  【传参】 取值范围：RSA（国际算法），SM2（国密算法）；不传值默认为：RSA（国际算法）。
	SigAlgType string `json:"sigAlgType,omitempty"`
	// <ext>core:true</ext> 【证书颁发机构】证书颁发机构 【传参】 1、取值范围：cwca（西部CA），sheca（上海CA），cfca（CFCA），gdca（广东CA），selfca（防篡改证书）。 2、可选管理后台-【证书管理】配置的对应证书服务的可选颁发机构，不传默认西部ca。 3、若对应证书未配置则无需传该参数，默认由公有云的证书策略进行分发。 4、防篡改证书仅在UKEY_CERT（Ukey证书-新购）、UKEY_CHANGE（Ukey证书-变更）中生效，申请防篡改证书为付费功能，请在功能开启时申请。
	CaType string `json:"caType,omitempty"`
	// <ext>core:true</ext> 【证书年限】证书年限  【传参】 取值范围：1（1年期），2（2年期）；不传值默认为：1（1年期）。
	Years *int64 `json:"years,omitempty"`
	// <ext>core:true</ext> 【页面是否可修改传参值】页面是否可修改传参值 【作用】  控制接口传入的信息，用户访问页面后是否可以修改提交的信息 【传参】  取值范围：true（允许），false（不允许）；不传值默认为：true（允许）。
	Modifiable      *bool               `json:"modifiable,omitempty"`
	OperatorRequest *common.UserRequest `json:"operatorRequest"`
	// <ext>core:false</ext> 【集团id】集团id 【作用】 用于确定操作人在当前集团的权限
	OrgId *int64 `json:"orgId,omitempty"`
	// <ext>core:false</ext> 【链接访问次数】链接访问次数 【作用】 1、限制链接访问次数，若超过次数则链接失效 2、若不传值，则访问次数无限制；若传入具体数值，则链接在访问所传具体值次数后失效，无法继续访问
	VisitNum *int64 `json:"visitNum,omitempty"`
	// <ext>core:false</ext> 【链接过期时间】链接过期时间  【作用】 1、用于设置获取到的链接在多长时间后过期，单位：秒 2、当该参数不传值时，其有效期将被设置为 “管理控制台-设置-开放平台-接口页面有效期配置-接口页面默认有效期“对应的时长 3、传入时长超过 “管理控制台-设置-开放平台-接口页面有效期配置-接口页面最大有效期天数“时，以控制台配置的最大天数为准
	ExpireTime *int64 `json:"expireTime,omitempty"`
	// <ext>core:false</ext> 【证书申请成功后跳转页面地址】证书申请成功后跳转页面地址 【作用】 1、完成证书申请时会跳转至传入地址，未传值时会停留在当前页面。 2、仅当autoClosePage（操作完成自动关闭页面）传值为false（不自动关闭）时生效
	CallbackUrl string `json:"callbackUrl,omitempty"`
	// <ext>core:false</ext> 【链接失效后跳转地址】链接失效后跳转地址 【作用】 当链接页面失败后页面自动跳转至指定地址（如：超过访问次数、链接已超过有效期）
	InvalidToPage string `json:"invalidToPage,omitempty"`
	// <ext>core:false</ext> 【页面语言】页面语言 【传值】 取值范围：ZH_CN(中文)，EN_US(英文)，JP(日文)；不传值默认为：ZH_CN(中文)。
	Language  string                                      `json:"language,omitempty"`
	PageStyle *common.V2CertOrderApplyurlPageStyleRequest `json:"pageStyle,omitempty"`
	// 【移动端页面导航头部】移动端页面导航头部 【作用】 1、移动端内嵌页面默认带有头部导航区域，且区域内提供返回按钮，嵌入其他app时会与app自带的导航头部区域航重复 2、可通过本参数控制签入移动端页面时是否提供头部导航区域 【传参】 取值范围：true（隐藏导航头部），false（显示导航头部）；不传值默认为：false（显示导航头部）。
	HideHeader *bool `json:"hideHeader,omitempty"`
}

func (obj V2CertOrderApplyurlRequest) GetUrl() string {
	return "/v2/cert/order/apply-url"
}

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