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 SealApplyMultipleRequest struct {
	// 【用印申请所属单位id】用印申请所属单位id 【作用】 根据用印申请的所属单位，查询单位所属的平台方或独立管理组织。将该用印申请记录为对应的平台方或独立管理组织发起 【传参】 1、所属单位id、所属单位名称、所属单位的统一社会信用代码/工商注册号必传其一，传入多个时只按最高优先级查询，优先级为所属单位id>所属单位名称>所属单位的统一社会信用代码/工商注册号。 2、均不传值时，默认为平台方。
	TenantId *int64 `json:"tenantId,omitempty"`
	// 【用印申请所属单位名称】用印申请所属单位名称 【作用】 根据用印申请的所属单位，查询单位所属的平台方或独立管理组织。将该用印申请记录为对应的平台方或独立管理组织发起 【传参】 1、所属单位id、所属单位名称、所属单位的统一社会信用代码/工商注册号必传其一，传入多个时只按最高优先级查询，优先级为所属单位id>所属单位名称>所属单位的统一社会信用代码/工商注册号。 2、均不传值时，默认为平台方。
	TenantName string `json:"tenantName,omitempty"`
	// 【用印申请所属单位的统一社会信用代码/工商注册号】用印申请所属单位的统一社会信用代码/工商注册号 【作用】 根据用印申请的所属单位，查询单位所属的平台方或独立管理组织。将该用印申请记录为对应的平台方或独立管理组织发起 【传参】 1、所属单位id、所属单位名称、所属单位的统一社会信用代码/工商注册号必传其一，传入多个时只按最高优先级查询，优先级为所属单位id>所属单位名称>所属单位的统一社会信用代码/工商注册号。 2、均不传值时，默认为平台方。
	TenantRegisterNo  string                        `json:"tenantRegisterNo,omitempty"`
	ApplyerUser       *common.UserInfoRequest       `json:"applyerUser,omitempty"`
	ApplyerUserConfig *common.UserInfoRequestConfig `json:"applyerUserConfig,omitempty"`
	// <ext>deprecated:true</ext> 【申请人姓名】申请人姓名
	ApplyerName string `json:"applyerName,omitempty"`
	// <ext>deprecated:true</ext> 【申请人联系方式】申请人联系方式 【传参方式】 联系方式允许使用：手机号、电子邮箱 【特殊说明】 建议使用applyerUser字段 【传参说明】 手机号允许使用国际手机号手机号，手机号格式为：区号+空格+手机号，例：852 9xxxxxxx ，大陆手机号可以不传区号
	ApplyerContact string `json:"applyerContact,omitempty"`
	// <ext>deprecated:true</ext> 【申请人员工编号】申请人员工编号 【特殊说明】 建议使用applyerUser字段
	ApplyerNumber string `json:"applyerNumber,omitempty"`
	// <ext>core:true</ext> 【事项标题】事项标题 【作用】 传入用印申请的标题，以区分申请的主要内容，方便查看或管理 【传参】 最大长度500字符。
	Subject string `json:"subject"`
	// <ext>format:string</ext> 【用印流程id】用印流程id 【作用】 用印申请在状态变更时，可回调第三方业务系统。如果需要本接口创建的用印申请进行回调，可指定用印流程，按流程中配置的回调事件生效 【特殊说明】 注意，除回调事件外，用印流程中其他设置均不生效
	CategoryId *int64 `json:"categoryId,omitempty"`
	// <ext>core:true</ext> 【编号】编号 【作用】 用印申请的编号，方便对申请进行查询、管理
	SerialNo string `json:"serialNo,omitempty"`
	// <ext>core:true</ext> 【用印文档id集合】用印文档id集合 【作用】 作为用印申请中的用印文档 【传参】 传入多个文档id用“,”隔开。
	Documents []int64 `json:"documents,omitempty"`
	// <ext>core:true</ext> 【用印信息】用印信息 【作用】 可传入需申请用印的印章，及印章用印次数、签章人、用印时间
	Auths []*common.SealAuthBean `json:"auths,omitempty"`
	// <ext>core:true</ext>  【用印信息-惠朗一体机模式】用印信息-惠朗一体机模式  【作用】  1、可传入需申请用印的印章，及印章用印次数、签章人、用印时间  2、仅限于使用惠朗打印盖章一体的模式下使用。 【特殊说明】 本参数为接入惠朗一体机时使用，为付费功能，请在惠朗打印盖章一体机功能开启时使用
	PatternAuths []*common.PatternAuths `json:"patternAuths,omitempty"`
	// <ext>core:true</ext> 【使用事由】使用事由 【作用】 使用事由用于备注申请原因、用印要求等内容 【传参】 最大长度3000字符。
	Description string `json:"description,omitempty"`
	// <ext>core:true</ext> 【第三方表单】第三方表单 【作用】 将第三方系统中的用印相关字段展示在用印申请中，方便参与人查看。例如合同金额、客户联系方式等字段 【传参】 key为字段名，value为字段值。支持传入多组字段的key/value。
	Forms []*common.Form `json:"forms,omitempty"`
	// <ext>core:true</ext> 【自定义字段】自定义字段 【作用】 1、除事项标题、编号等基础信息，不同场景的用印申请需要填写的字段信息可能不同。例如发起采购合同可能需要填写金额，发起人事合同可能需要填写员工岗位。可通过自定义字段，在申请中增加业务相关的字段 2、自定义字段可在电子签章后台统一定义，定义好后通过该参数传入字段值
	CustomizeFields []*common.CustomizeFiled `json:"customizeFields,omitempty"`
	// <ext>core:true</ext> 【发送待用印短信通知】发送待用印短信通知 【作用】 用于控制是否向签章人发送待用印短信，默认发送。 【传参】 取值范围：true（发送），false（不发送）；不传值默认为：true（发送）
	NeedSms *bool `json:"needSms,omitempty"`
	// 【允许移动端用印】允许移动端用印 【作用】 通过此参数控制，是否允许在当前系统电子签章app或第三方app使用蓝牙连接智能章筒解锁用印 【传参】 取值范围：true（允许），false（不允许）；不传值默认为：true（允许）。 【特殊说明】 仅当电子签署管理后台 - 物理用印设置中【允许移动端用印】开启时，此参数才生效。否则此参数不生效，总是不允许移动端用印
	AllowAppUseSeal *bool `json:"allowAppUseSeal,omitempty"`
}

func (obj SealApplyMultipleRequest) GetUrl() string {
	return "/seal/apply/multiple"
}

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