package seal_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 SealWarningRuleUpdateRequest struct {
	// <ext>core:true</ext> 【预警规则名称】预警规则名称 【作用】 指定要修改的预警规则 【传参】 预警规则名称和预警规则ID至少传一个，均传入时以预警规则ID为准
	RuleName string `json:"ruleName,omitempty"`
	// <ext>core:true</ext> 【预警规则ID】预警规则ID 【作用】 指定要修改的预警规则 【传参】 预警规则名称和预警规则ID至少传一个，均传入时以预警规则ID为准
	Id string `json:"id,omitempty"`
	// <ext>core:true</ext> 【集团id】集团id 【作用】 指定当前印章预警规则所属集团 【传参】 集团id、单位信息、组织信息都可用于指定印章预警规则的所属集团；均传入时只按最高优先级查询，优先级为集团id>法人单位信息>组织信息；都不传时，默认创建在平台方集团内。
	OrgId      string                    `json:"orgId,omitempty"`
	Company    *common.CompanyRequest    `json:"company,omitempty"`
	Department *common.DepartmentRequest `json:"department,omitempty"`
	// <ext>core:true</ext> 【预警规则名称】预警规则名称 【传参】 最大长度：50（包含）
	Name string `json:"name"`
	// <ext>core:true</ext> 【风险程度】风险程度 【传参】 取值范围：HIGH（高危），CRITICAL（严重），IMPORTANT（重要），NORMAL（普通）；不传值默认为：NORMAL（普通）。
	Level string `json:"level,omitempty"`
	// <ext>core:true</ext> 【预警规则描述】预警规则描述 【传参】 最大长度：1000（包含）
	Desc string `json:"desc,omitempty"`
	// <ext>core:true</ext> 【预警范围】预警范围 【作用】 设置需要预警的印章范围： 1、支持直接指定具体印章，例如某某单位公章； 2、若不确定具体印章，也可以设置多个条件筛选印章范围。例如指定所有合同专用章类型的印章都需预警。 【传参】 1、范围至少传入一组 2、支持传入多组范围，当添加了多个范围时，将根据多个范围取并集
	Scopes []*common.SealWarningRuleScopeRequest `json:"scopes"`
	// <ext>core:true</ext> 【风险项】风险项 【作用】 指定触发风险预警的时机 【传参】 取值范围：SEAL_ROLE_MUTUALLY_EXCLUSIVE（印章角色人员互斥），SEAL_ROLE_VACANCY（印章角色人员空缺），SEAL_CERT_EXPIRED（印章关联的长期证书即将到期），SEAL_OVER_THE_FENCE（物理用印超过围栏），SEAL_PRESS_TIMEOUT（物理用印按压超时），SEAL_CARTRIDGE_SIGNING_MOVE（物理用印盖章时移动章筒），ACROSS_SEAL_OVER_THE_FENCE（物理用印盖骑缝章时章筒超出电子围栏），SEAL_CONTROL_5_OVER_THE_INFRARED（物理用印“印控台5.0”红外区域外盖章），IMAGES_UPLOADED_NOT_MATCH_USED_COUNT（物理用印上传的用印图片数量与用印次数不符合），IMAGE_NOT_SENT_BACK（物理用印图片未及时回传）。
	Rule string `json:"rule"`
	// <ext>core:true</ext> 【互斥角色项】互斥角色项 【作用】 在预警风险项为“印章角色人员互斥”时，用于设置需要在哪些角色下的人员相同时预警 【传参】 1、传入互斥的印章角色名称，至少传入两个角色，格式：[“管理员”,“签章人”]。 2、仅在风险项为SEAL_ROLE_MUTUALLY_EXCLUSIVE（印章角色人员互斥）时生效，此时为必传。
	RuleForExclusiveRole string `json:"ruleForExclusiveRole,omitempty"`
	// <ext>core:true</ext> 【空缺角色项】空缺角色项 【作用】 在预警风险项为“印章角色人员空缺”时，用于设置需要在哪些角色下的人员空缺时预警 【传参】 1、传入空缺的印章角色名称，至少传入一个角色，格式：[“管理员”,“签章人”]。 2、仅在风险项为SEAL_ROLE_VACANCY（印章角色人员空缺）时生效，此时为必传。
	RuleForVacantRole string `json:"ruleForVacantRole,omitempty"`
	// <ext>core:true</ext> 【证书到期预警时间】证书到期预警时间 【作用】 用于设置印章关联的长期证书到期前多少天预警 【传参】 1、最小值：1（包含），最大值：60（包含）；不传值默认为：1。 2、单位：天。 3、仅在风险项为SEAL_CERT_EXPIRED（印章关联的长期证书即将到期）时生效。
	RuleForCertExpiringTime *int64 `json:"ruleForCertExpiringTime,omitempty"`
	// <ext>core:true</ext> 【用印图片数量异常预警时间】用印图片数量异常预警时间 【作用】 用于设置物理用印上传的图片数量与用印次数不符合的情况下，在用印后多少小时预警 【传参】 1、最小值：0（包含），最大值：72（包含）；不传值默认为：1。 2、单位：小时。 3、仅在风险项为IMAGES_UPLOADED_NOT_MATCH_USED_COUNT（物理用印上传的用印图片数量与用印次数不符合）时生效。
	RuleForPhysicalUploadImageCountTime *int64 `json:"ruleForPhysicalUploadImageCountTime,omitempty"`
	// <ext>core:true</ext> 【用印图片未回传预警时间】用印图片未回传预警时间 【作用】 用于设置物理用印未回传用印图片的情况下，在用印后多少天预警 【传参】 1、最小值：1（包含），最大值：10（包含）；不传值默认为：1。 2、单位：天。 3、仅在风险项为IMAGE_NOT_SENT_BACK（物理用印图片未及时回传）时生效。
	RuleForPhysicalNotUploadImageTime *int64                           `json:"ruleForPhysicalNotUploadImageTime,omitempty"`
	Processor                         *common.SealWarningRuleProcessor `json:"processor"`
	// <ext>core:true</ext> 【预警通知渠道】预警通知渠道 【作用】 设置触发风险预警时，需要通过哪些渠道给风险处理人发送通知 【传参】 1、取值范围：SMS（短信），EMAIL（邮件），WXCORP（企业微信），DINGTALK（钉钉），FEISHU（飞书），YONBIP（用友YonBIP）,CLOUDHUB（金蝶云之家），WELINK（华为WeLink）；可选多项；不传值默认不发送消息。 2、若传入的是系统未对接的第三方消息通道，则不会生效。
	Channels string `json:"channels,omitempty"`
}

func (obj SealWarningRuleUpdateRequest) GetUrl() string {
	return "/seal/warning/rule/update"
}

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