package contract_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 ContractPermissionRequest struct {
	// <ext>core:true;inner-type:json<UserInfoRequest></ext> 【个人用户】个人用户 【作用】 指定需查询文件操作权限的个人用户 【传参】 1、若用户不存在时，将会报错。 2、参数必传其一，传入多个参数时只按参数中最高优先级查询，优先级为用户id>联系方式>手机号>邮箱>成员编号>证件号>第三方业务系统用户id>登录账号。
	UserInfo string `json:"userInfo,omitempty"`
	// <ext>core:true;format:string;deprecated:false</ext> 【电子签约文件id】电子签约文件id 【作用】 指定需查询操作权限的电子签约文件 【传参】 电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准。
	ContractId *int64 `json:"contractId,omitempty"`
	// <ext>core:true;format:string;deprecated:false</ext> 【第三方业务系统文件id】第三方业务系统文件id 【作用】 指定需查询操作权限的电子签约文件 【传参】 电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准。
	BizId          string                  `json:"bizId,omitempty"`
	UserInfoObject *common.UserInfoRequest `json:"userInfoObject,omitempty"`
}

func (obj ContractPermissionRequest) GetUrl() string {
	return "/contract/permission"
}

func (obj ContractPermissionRequest) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewGetHttpParameter()
	parameter.AddParam("contractId", obj.ContractId)
	parameter.AddParam("bizId", obj.BizId)
	if obj.UserInfoObject != nil {
		jsonBytes, _ := json.Marshal(obj.UserInfoObject)
		parameter.AddParam("userInfo", string(jsonBytes))
	} else {
		parameter.AddParam("userInfo", obj.UserInfo)
	}
	return parameter
}
