// Package hire code generated by oapi sdk gen
/*
 * MIT License
 *
 * Copyright (c) 2022 Lark Technologies Pte. Ltd.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

package larkhire

import (
	"fmt"

	"context"
	"errors"

	"github.com/larksuite/oapi-sdk-go/v3/core"
)

const (
	GetInterviewRecordUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	GetInterviewRecordUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	GetInterviewRecordUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	ListInterviewRecordUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	ListInterviewRecordUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	ListInterviewRecordUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	GetTalentUserIDTypeUserId        = "user_id"         // 以 user_id 来识别用户
	GetTalentUserIDTypeUnionId       = "union_id"        // 以 union_id 来识别用户
	GetTalentUserIDTypeOpenId        = "open_id"         // 以 open_id 来识别用户
	GetTalentUserIDTypePeopleAdminId = "people_admin_id" // 以 people_admin_id 来识别用户
)

type Ability struct {
	Name *I18n `json:"name,omitempty"` // 能力项名称

	Description *I18n `json:"description,omitempty"` // 能力项描述
}

type AbilityBuilder struct {
	name     *I18n // 能力项名称
	nameFlag bool

	description     *I18n // 能力项描述
	descriptionFlag bool
}

func NewAbilityBuilder() *AbilityBuilder {
	builder := &AbilityBuilder{}
	return builder
}

// 能力项名称
//
// 示例值：
func (builder *AbilityBuilder) Name(name *I18n) *AbilityBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 能力项描述
//
// 示例值：
func (builder *AbilityBuilder) Description(description *I18n) *AbilityBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

func (builder *AbilityBuilder) Build() *Ability {
	req := &Ability{}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	return req
}

type AbilityAssessment struct {
	Id *string `json:"id,omitempty"` // 能力项评价id

	AbilityId *string `json:"ability_id,omitempty"` // 能力项id

	Content *string `json:"content,omitempty"` // 能力项评价内容
}

type AbilityAssessmentBuilder struct {
	id     string // 能力项评价id
	idFlag bool

	abilityId     string // 能力项id
	abilityIdFlag bool

	content     string // 能力项评价内容
	contentFlag bool
}

func NewAbilityAssessmentBuilder() *AbilityAssessmentBuilder {
	builder := &AbilityAssessmentBuilder{}
	return builder
}

// 能力项评价id
//
// 示例值：6949805467799537964
func (builder *AbilityAssessmentBuilder) Id(id string) *AbilityAssessmentBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 能力项id
//
// 示例值：7270798542321666366
func (builder *AbilityAssessmentBuilder) AbilityId(abilityId string) *AbilityAssessmentBuilder {
	builder.abilityId = abilityId
	builder.abilityIdFlag = true
	return builder
}

// 能力项评价内容
//
// 示例值：能力项评价
func (builder *AbilityAssessmentBuilder) Content(content string) *AbilityAssessmentBuilder {
	builder.content = content
	builder.contentFlag = true
	return builder
}

func (builder *AbilityAssessmentBuilder) Build() *AbilityAssessment {
	req := &AbilityAssessment{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.abilityIdFlag {
		req.AbilityId = &builder.abilityId

	}
	if builder.contentFlag {
		req.Content = &builder.content

	}
	return req
}

type Attachment struct {
	FileId *string `json:"file_id,omitempty"` // 附件 ID

	FileName *string `json:"file_name,omitempty"` // 附件名称

	ContentType *string `json:"content_type,omitempty"` // 附件类型

	FileSize *int64 `json:"file_size,omitempty"` // 附件大小

	CreateTime *string `json:"create_time,omitempty"` // 附件创建时间(ms)
}

type AttachmentBuilder struct {
	fileId     string // 附件 ID
	fileIdFlag bool

	fileName     string // 附件名称
	fileNameFlag bool

	contentType     string // 附件类型
	contentTypeFlag bool

	fileSize     int64 // 附件大小
	fileSizeFlag bool

	createTime     string // 附件创建时间(ms)
	createTimeFlag bool
}

func NewAttachmentBuilder() *AttachmentBuilder {
	builder := &AttachmentBuilder{}
	return builder
}

// 附件 ID
//
// 示例值：7140517838785481004
func (builder *AttachmentBuilder) FileId(fileId string) *AttachmentBuilder {
	builder.fileId = fileId
	builder.fileIdFlag = true
	return builder
}

// 附件名称
//
// 示例值：1.13测试1的面试记录.pdf
func (builder *AttachmentBuilder) FileName(fileName string) *AttachmentBuilder {
	builder.fileName = fileName
	builder.fileNameFlag = true
	return builder
}

// 附件类型
//
// 示例值：application/pdf
func (builder *AttachmentBuilder) ContentType(contentType string) *AttachmentBuilder {
	builder.contentType = contentType
	builder.contentTypeFlag = true
	return builder
}

// 附件大小
//
// 示例值：16615
func (builder *AttachmentBuilder) FileSize(fileSize int64) *AttachmentBuilder {
	builder.fileSize = fileSize
	builder.fileSizeFlag = true
	return builder
}

// 附件创建时间(ms)
//
// 示例值：1710399930151
func (builder *AttachmentBuilder) CreateTime(createTime string) *AttachmentBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

func (builder *AttachmentBuilder) Build() *Attachment {
	req := &Attachment{}
	if builder.fileIdFlag {
		req.FileId = &builder.fileId

	}
	if builder.fileNameFlag {
		req.FileName = &builder.fileName

	}
	if builder.contentTypeFlag {
		req.ContentType = &builder.contentType

	}
	if builder.fileSizeFlag {
		req.FileSize = &builder.fileSize

	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	return req
}

type CompositeTalent struct {
	TalentId *string `json:"talent_id,omitempty"` // ID

	BasicInfo *CompositeTalentBasicInfo `json:"basic_info,omitempty"` // 基础信息

	EducationList []*CompositeTalentEducationInfo `json:"education_list,omitempty"` // 教育经历

	CareerList []*CompositeTalentCareerInfo `json:"career_list,omitempty"` // 工作经历

	ProjectList []*CompositeTalentProjectInfo `json:"project_list,omitempty"` // 项目经历

	WorksList []*CompositeTalentWorksInfo `json:"works_list,omitempty"` // 作品集

	AwardList []*CompositeTalentAwardInfo `json:"award_list,omitempty"` // 获奖列表

	LanguageList []*CompositeTalentLanguageInfo `json:"language_list,omitempty"` // 语言列表

	SnsList []*CompositeTalentSnsInfo `json:"sns_list,omitempty"` // SNS列表

	ResumeSourceList []*TalentResumeSource `json:"resume_source_list,omitempty"` // 简历来源

	InternshipList []*CompositeTalentInternshipInfo `json:"internship_list,omitempty"` // 实习经历

	CustomizedDataList []*CompositeTalentCustomizedData `json:"customized_data_list,omitempty"` // 自定义字段

	ResumeAttachmentIdList []string `json:"resume_attachment_id_list,omitempty"` // 简历附件id列表（按照简历创建时间降序）

	ResumeAttachmentList []*TalentResumeAttachment `json:"resume_attachment_list,omitempty"` // 简历附件列表（按照简历创建时间降序）

	InterviewRegistrationList []*TalentInterviewRegistrationSimple `json:"interview_registration_list,omitempty"` // 面试登记表

	RegistrationList []*RegistrationBasicInfo `json:"registration_list,omitempty"` // 登记表列表

	IsOnboarded *bool `json:"is_onboarded,omitempty"` // 是否已入职

	IsInAgencyPeriod *bool `json:"is_in_agency_period,omitempty"` // 是否在猎头保护期

	TopDegree *int `json:"top_degree,omitempty"` // 最高学历 参考 DegreeType 枚举

	TalentPoolIdList []string `json:"talent_pool_id_list,omitempty"` // 人才已加入的人才库列表

	TalentFolderRefListV2 []*TalentFolder `json:"talent_folder_ref_list_v2,omitempty"` // 文件夹列表

	TagList []*TalentTag `json:"tag_list,omitempty"` // 标签列表

	SimilarInfoV2 *TalentSimilar `json:"similar_info_v2,omitempty"` // 相似人才信息

	BlockInfo *TalentBlock `json:"block_info,omitempty"` // 人才黑名单详情

	TalentPoolRefListV2 []*TalentPool `json:"talent_pool_ref_list_v2,omitempty"` // 人才已经加入的人才库列表

	NoteListV2 []*TalentNote `json:"note_list_v2,omitempty"` // 备注列表
}

type CompositeTalentBuilder struct {
	talentId     string // ID
	talentIdFlag bool

	basicInfo     *CompositeTalentBasicInfo // 基础信息
	basicInfoFlag bool

	educationList     []*CompositeTalentEducationInfo // 教育经历
	educationListFlag bool

	careerList     []*CompositeTalentCareerInfo // 工作经历
	careerListFlag bool

	projectList     []*CompositeTalentProjectInfo // 项目经历
	projectListFlag bool

	worksList     []*CompositeTalentWorksInfo // 作品集
	worksListFlag bool

	awardList     []*CompositeTalentAwardInfo // 获奖列表
	awardListFlag bool

	languageList     []*CompositeTalentLanguageInfo // 语言列表
	languageListFlag bool

	snsList     []*CompositeTalentSnsInfo // SNS列表
	snsListFlag bool

	resumeSourceList     []*TalentResumeSource // 简历来源
	resumeSourceListFlag bool

	internshipList     []*CompositeTalentInternshipInfo // 实习经历
	internshipListFlag bool

	customizedDataList     []*CompositeTalentCustomizedData // 自定义字段
	customizedDataListFlag bool

	resumeAttachmentIdList     []string // 简历附件id列表（按照简历创建时间降序）
	resumeAttachmentIdListFlag bool

	resumeAttachmentList     []*TalentResumeAttachment // 简历附件列表（按照简历创建时间降序）
	resumeAttachmentListFlag bool

	interviewRegistrationList     []*TalentInterviewRegistrationSimple // 面试登记表
	interviewRegistrationListFlag bool

	registrationList     []*RegistrationBasicInfo // 登记表列表
	registrationListFlag bool

	isOnboarded     bool // 是否已入职
	isOnboardedFlag bool

	isInAgencyPeriod     bool // 是否在猎头保护期
	isInAgencyPeriodFlag bool

	topDegree     int // 最高学历 参考 DegreeType 枚举
	topDegreeFlag bool

	talentPoolIdList     []string // 人才已加入的人才库列表
	talentPoolIdListFlag bool

	talentFolderRefListV2     []*TalentFolder // 文件夹列表
	talentFolderRefListV2Flag bool

	tagList     []*TalentTag // 标签列表
	tagListFlag bool

	similarInfoV2     *TalentSimilar // 相似人才信息
	similarInfoV2Flag bool

	blockInfo     *TalentBlock // 人才黑名单详情
	blockInfoFlag bool

	talentPoolRefListV2     []*TalentPool // 人才已经加入的人才库列表
	talentPoolRefListV2Flag bool

	noteListV2     []*TalentNote // 备注列表
	noteListV2Flag bool
}

func NewCompositeTalentBuilder() *CompositeTalentBuilder {
	builder := &CompositeTalentBuilder{}
	return builder
}

// ID
//
// 示例值：6761694410053798151
func (builder *CompositeTalentBuilder) TalentId(talentId string) *CompositeTalentBuilder {
	builder.talentId = talentId
	builder.talentIdFlag = true
	return builder
}

// 基础信息
//
// 示例值：
func (builder *CompositeTalentBuilder) BasicInfo(basicInfo *CompositeTalentBasicInfo) *CompositeTalentBuilder {
	builder.basicInfo = basicInfo
	builder.basicInfoFlag = true
	return builder
}

// 教育经历
//
// 示例值：
func (builder *CompositeTalentBuilder) EducationList(educationList []*CompositeTalentEducationInfo) *CompositeTalentBuilder {
	builder.educationList = educationList
	builder.educationListFlag = true
	return builder
}

// 工作经历
//
// 示例值：
func (builder *CompositeTalentBuilder) CareerList(careerList []*CompositeTalentCareerInfo) *CompositeTalentBuilder {
	builder.careerList = careerList
	builder.careerListFlag = true
	return builder
}

// 项目经历
//
// 示例值：
func (builder *CompositeTalentBuilder) ProjectList(projectList []*CompositeTalentProjectInfo) *CompositeTalentBuilder {
	builder.projectList = projectList
	builder.projectListFlag = true
	return builder
}

// 作品集
//
// 示例值：
func (builder *CompositeTalentBuilder) WorksList(worksList []*CompositeTalentWorksInfo) *CompositeTalentBuilder {
	builder.worksList = worksList
	builder.worksListFlag = true
	return builder
}

// 获奖列表
//
// 示例值：
func (builder *CompositeTalentBuilder) AwardList(awardList []*CompositeTalentAwardInfo) *CompositeTalentBuilder {
	builder.awardList = awardList
	builder.awardListFlag = true
	return builder
}

// 语言列表
//
// 示例值：
func (builder *CompositeTalentBuilder) LanguageList(languageList []*CompositeTalentLanguageInfo) *CompositeTalentBuilder {
	builder.languageList = languageList
	builder.languageListFlag = true
	return builder
}

// SNS列表
//
// 示例值：
func (builder *CompositeTalentBuilder) SnsList(snsList []*CompositeTalentSnsInfo) *CompositeTalentBuilder {
	builder.snsList = snsList
	builder.snsListFlag = true
	return builder
}

// 简历来源
//
// 示例值：
func (builder *CompositeTalentBuilder) ResumeSourceList(resumeSourceList []*TalentResumeSource) *CompositeTalentBuilder {
	builder.resumeSourceList = resumeSourceList
	builder.resumeSourceListFlag = true
	return builder
}

// 实习经历
//
// 示例值：
func (builder *CompositeTalentBuilder) InternshipList(internshipList []*CompositeTalentInternshipInfo) *CompositeTalentBuilder {
	builder.internshipList = internshipList
	builder.internshipListFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CompositeTalentBuilder) CustomizedDataList(customizedDataList []*CompositeTalentCustomizedData) *CompositeTalentBuilder {
	builder.customizedDataList = customizedDataList
	builder.customizedDataListFlag = true
	return builder
}

// 简历附件id列表（按照简历创建时间降序）
//
// 示例值：
func (builder *CompositeTalentBuilder) ResumeAttachmentIdList(resumeAttachmentIdList []string) *CompositeTalentBuilder {
	builder.resumeAttachmentIdList = resumeAttachmentIdList
	builder.resumeAttachmentIdListFlag = true
	return builder
}

// 简历附件列表（按照简历创建时间降序）
//
// 示例值：
func (builder *CompositeTalentBuilder) ResumeAttachmentList(resumeAttachmentList []*TalentResumeAttachment) *CompositeTalentBuilder {
	builder.resumeAttachmentList = resumeAttachmentList
	builder.resumeAttachmentListFlag = true
	return builder
}

// 面试登记表
//
// 示例值：
func (builder *CompositeTalentBuilder) InterviewRegistrationList(interviewRegistrationList []*TalentInterviewRegistrationSimple) *CompositeTalentBuilder {
	builder.interviewRegistrationList = interviewRegistrationList
	builder.interviewRegistrationListFlag = true
	return builder
}

// 登记表列表
//
// 示例值：
func (builder *CompositeTalentBuilder) RegistrationList(registrationList []*RegistrationBasicInfo) *CompositeTalentBuilder {
	builder.registrationList = registrationList
	builder.registrationListFlag = true
	return builder
}

// 是否已入职
//
// 示例值：true
func (builder *CompositeTalentBuilder) IsOnboarded(isOnboarded bool) *CompositeTalentBuilder {
	builder.isOnboarded = isOnboarded
	builder.isOnboardedFlag = true
	return builder
}

// 是否在猎头保护期
//
// 示例值：true
func (builder *CompositeTalentBuilder) IsInAgencyPeriod(isInAgencyPeriod bool) *CompositeTalentBuilder {
	builder.isInAgencyPeriod = isInAgencyPeriod
	builder.isInAgencyPeriodFlag = true
	return builder
}

// 最高学历 参考 DegreeType 枚举
//
// 示例值：1
func (builder *CompositeTalentBuilder) TopDegree(topDegree int) *CompositeTalentBuilder {
	builder.topDegree = topDegree
	builder.topDegreeFlag = true
	return builder
}

// 人才已加入的人才库列表
//
// 示例值：
func (builder *CompositeTalentBuilder) TalentPoolIdList(talentPoolIdList []string) *CompositeTalentBuilder {
	builder.talentPoolIdList = talentPoolIdList
	builder.talentPoolIdListFlag = true
	return builder
}

// 文件夹列表
//
// 示例值：
func (builder *CompositeTalentBuilder) TalentFolderRefListV2(talentFolderRefListV2 []*TalentFolder) *CompositeTalentBuilder {
	builder.talentFolderRefListV2 = talentFolderRefListV2
	builder.talentFolderRefListV2Flag = true
	return builder
}

// 标签列表
//
// 示例值：
func (builder *CompositeTalentBuilder) TagList(tagList []*TalentTag) *CompositeTalentBuilder {
	builder.tagList = tagList
	builder.tagListFlag = true
	return builder
}

// 相似人才信息
//
// 示例值：
func (builder *CompositeTalentBuilder) SimilarInfoV2(similarInfoV2 *TalentSimilar) *CompositeTalentBuilder {
	builder.similarInfoV2 = similarInfoV2
	builder.similarInfoV2Flag = true
	return builder
}

// 人才黑名单详情
//
// 示例值：
func (builder *CompositeTalentBuilder) BlockInfo(blockInfo *TalentBlock) *CompositeTalentBuilder {
	builder.blockInfo = blockInfo
	builder.blockInfoFlag = true
	return builder
}

// 人才已经加入的人才库列表
//
// 示例值：
func (builder *CompositeTalentBuilder) TalentPoolRefListV2(talentPoolRefListV2 []*TalentPool) *CompositeTalentBuilder {
	builder.talentPoolRefListV2 = talentPoolRefListV2
	builder.talentPoolRefListV2Flag = true
	return builder
}

// 备注列表
//
// 示例值：
func (builder *CompositeTalentBuilder) NoteListV2(noteListV2 []*TalentNote) *CompositeTalentBuilder {
	builder.noteListV2 = noteListV2
	builder.noteListV2Flag = true
	return builder
}

func (builder *CompositeTalentBuilder) Build() *CompositeTalent {
	req := &CompositeTalent{}
	if builder.talentIdFlag {
		req.TalentId = &builder.talentId

	}
	if builder.basicInfoFlag {
		req.BasicInfo = builder.basicInfo
	}
	if builder.educationListFlag {
		req.EducationList = builder.educationList
	}
	if builder.careerListFlag {
		req.CareerList = builder.careerList
	}
	if builder.projectListFlag {
		req.ProjectList = builder.projectList
	}
	if builder.worksListFlag {
		req.WorksList = builder.worksList
	}
	if builder.awardListFlag {
		req.AwardList = builder.awardList
	}
	if builder.languageListFlag {
		req.LanguageList = builder.languageList
	}
	if builder.snsListFlag {
		req.SnsList = builder.snsList
	}
	if builder.resumeSourceListFlag {
		req.ResumeSourceList = builder.resumeSourceList
	}
	if builder.internshipListFlag {
		req.InternshipList = builder.internshipList
	}
	if builder.customizedDataListFlag {
		req.CustomizedDataList = builder.customizedDataList
	}
	if builder.resumeAttachmentIdListFlag {
		req.ResumeAttachmentIdList = builder.resumeAttachmentIdList
	}
	if builder.resumeAttachmentListFlag {
		req.ResumeAttachmentList = builder.resumeAttachmentList
	}
	if builder.interviewRegistrationListFlag {
		req.InterviewRegistrationList = builder.interviewRegistrationList
	}
	if builder.registrationListFlag {
		req.RegistrationList = builder.registrationList
	}
	if builder.isOnboardedFlag {
		req.IsOnboarded = &builder.isOnboarded

	}
	if builder.isInAgencyPeriodFlag {
		req.IsInAgencyPeriod = &builder.isInAgencyPeriod

	}
	if builder.topDegreeFlag {
		req.TopDegree = &builder.topDegree

	}
	if builder.talentPoolIdListFlag {
		req.TalentPoolIdList = builder.talentPoolIdList
	}
	if builder.talentFolderRefListV2Flag {
		req.TalentFolderRefListV2 = builder.talentFolderRefListV2
	}
	if builder.tagListFlag {
		req.TagList = builder.tagList
	}
	if builder.similarInfoV2Flag {
		req.SimilarInfoV2 = builder.similarInfoV2
	}
	if builder.blockInfoFlag {
		req.BlockInfo = builder.blockInfo
	}
	if builder.talentPoolRefListV2Flag {
		req.TalentPoolRefListV2 = builder.talentPoolRefListV2
	}
	if builder.noteListV2Flag {
		req.NoteListV2 = builder.noteListV2
	}
	return req
}

type CompositeTalentAwardInfo struct {
	AwardName *string `json:"award_name,omitempty"` // 名称

	AwardTime *string `json:"award_time,omitempty"` // 获奖时间

	Description *string `json:"description,omitempty"` // 描述

	CustomizedDataList []*TalentCustomizedDataChild `json:"customized_data_list,omitempty"` // 自定义字段
}

type CompositeTalentAwardInfoBuilder struct {
	awardName     string // 名称
	awardNameFlag bool

	awardTime     string // 获奖时间
	awardTimeFlag bool

	description     string // 描述
	descriptionFlag bool

	customizedDataList     []*TalentCustomizedDataChild // 自定义字段
	customizedDataListFlag bool
}

func NewCompositeTalentAwardInfoBuilder() *CompositeTalentAwardInfoBuilder {
	builder := &CompositeTalentAwardInfoBuilder{}
	return builder
}

// 名称
//
// 示例值：最佳新人奖
func (builder *CompositeTalentAwardInfoBuilder) AwardName(awardName string) *CompositeTalentAwardInfoBuilder {
	builder.awardName = awardName
	builder.awardNameFlag = true
	return builder
}

// 获奖时间
//
// 示例值：1991
func (builder *CompositeTalentAwardInfoBuilder) AwardTime(awardTime string) *CompositeTalentAwardInfoBuilder {
	builder.awardTime = awardTime
	builder.awardTimeFlag = true
	return builder
}

// 描述
//
// 示例值：最优秀的新人奖
func (builder *CompositeTalentAwardInfoBuilder) Description(description string) *CompositeTalentAwardInfoBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CompositeTalentAwardInfoBuilder) CustomizedDataList(customizedDataList []*TalentCustomizedDataChild) *CompositeTalentAwardInfoBuilder {
	builder.customizedDataList = customizedDataList
	builder.customizedDataListFlag = true
	return builder
}

func (builder *CompositeTalentAwardInfoBuilder) Build() *CompositeTalentAwardInfo {
	req := &CompositeTalentAwardInfo{}
	if builder.awardNameFlag {
		req.AwardName = &builder.awardName

	}
	if builder.awardTimeFlag {
		req.AwardTime = &builder.awardTime

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	if builder.customizedDataListFlag {
		req.CustomizedDataList = builder.customizedDataList
	}
	return req
}

type CompositeTalentBasicInfo struct {
	Name *string `json:"name,omitempty"` // 名字

	MobileNumber *string `json:"mobile_number,omitempty"` // 手机

	MobileCode *string `json:"mobile_code,omitempty"` // 手机国家区号

	Email *string `json:"email,omitempty"` // 邮箱

	ExperienceYears *int64 `json:"experience_years,omitempty"` // 工作年限

	Age *int64 `json:"age,omitempty"` // 年龄

	NationalityCode *string `json:"nationality_code,omitempty"` // 国籍

	Gender *int `json:"gender,omitempty"` // 性别

	CurrentLocationCode *string `json:"current_location_code,omitempty"` // 所在地点

	HometownLocationCode *string `json:"hometown_location_code,omitempty"` // 家乡

	PreferredLocationCodeList []string `json:"preferred_location_code_list,omitempty"` // 意向地点

	HomeAddress *string `json:"home_address,omitempty"` // 家庭住址

	IdentificationType *int `json:"identification_type,omitempty"` // 证件类型

	IdentificationNumber *string `json:"identification_number,omitempty"` // 证件号

	Birthday *int64 `json:"birthday,omitempty"` // 生日

	MaritalStatus *int `json:"marital_status,omitempty"` // 婚姻状况

	CustomizedDataList []*TalentCustomizedDataChild `json:"customized_data_list,omitempty"` // 自定义字段

	HukouLocationCode *string `json:"hukou_location_code,omitempty"` // 户口所在地

	UpdateTime *string `json:"update_time,omitempty"` // 人才更新时间

	CreateTime *string `json:"create_time,omitempty"` // 人才创建时间

	Confidential *int `json:"confidential,omitempty"` // 人才隐藏状态
}

type CompositeTalentBasicInfoBuilder struct {
	name     string // 名字
	nameFlag bool

	mobileNumber     string // 手机
	mobileNumberFlag bool

	mobileCode     string // 手机国家区号
	mobileCodeFlag bool

	email     string // 邮箱
	emailFlag bool

	experienceYears     int64 // 工作年限
	experienceYearsFlag bool

	age     int64 // 年龄
	ageFlag bool

	nationalityCode     string // 国籍
	nationalityCodeFlag bool

	gender     int // 性别
	genderFlag bool

	currentLocationCode     string // 所在地点
	currentLocationCodeFlag bool

	hometownLocationCode     string // 家乡
	hometownLocationCodeFlag bool

	preferredLocationCodeList     []string // 意向地点
	preferredLocationCodeListFlag bool

	homeAddress     string // 家庭住址
	homeAddressFlag bool

	identificationType     int // 证件类型
	identificationTypeFlag bool

	identificationNumber     string // 证件号
	identificationNumberFlag bool

	birthday     int64 // 生日
	birthdayFlag bool

	maritalStatus     int // 婚姻状况
	maritalStatusFlag bool

	customizedDataList     []*TalentCustomizedDataChild // 自定义字段
	customizedDataListFlag bool

	hukouLocationCode     string // 户口所在地
	hukouLocationCodeFlag bool

	updateTime     string // 人才更新时间
	updateTimeFlag bool

	createTime     string // 人才创建时间
	createTimeFlag bool

	confidential     int // 人才隐藏状态
	confidentialFlag bool
}

func NewCompositeTalentBasicInfoBuilder() *CompositeTalentBasicInfoBuilder {
	builder := &CompositeTalentBasicInfoBuilder{}
	return builder
}

// 名字
//
// 示例值：测试
func (builder *CompositeTalentBasicInfoBuilder) Name(name string) *CompositeTalentBasicInfoBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 手机
//
// 示例值：18312341234
func (builder *CompositeTalentBasicInfoBuilder) MobileNumber(mobileNumber string) *CompositeTalentBasicInfoBuilder {
	builder.mobileNumber = mobileNumber
	builder.mobileNumberFlag = true
	return builder
}

// 手机国家区号
//
// 示例值：86
func (builder *CompositeTalentBasicInfoBuilder) MobileCode(mobileCode string) *CompositeTalentBasicInfoBuilder {
	builder.mobileCode = mobileCode
	builder.mobileCodeFlag = true
	return builder
}

// 邮箱
//
// 示例值：16xx1@126.com
func (builder *CompositeTalentBasicInfoBuilder) Email(email string) *CompositeTalentBasicInfoBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 工作年限
//
// 示例值：5
func (builder *CompositeTalentBasicInfoBuilder) ExperienceYears(experienceYears int64) *CompositeTalentBasicInfoBuilder {
	builder.experienceYears = experienceYears
	builder.experienceYearsFlag = true
	return builder
}

// 年龄
//
// 示例值：22
func (builder *CompositeTalentBasicInfoBuilder) Age(age int64) *CompositeTalentBasicInfoBuilder {
	builder.age = age
	builder.ageFlag = true
	return builder
}

// 国籍
//
// 示例值：CN_1
func (builder *CompositeTalentBasicInfoBuilder) NationalityCode(nationalityCode string) *CompositeTalentBasicInfoBuilder {
	builder.nationalityCode = nationalityCode
	builder.nationalityCodeFlag = true
	return builder
}

// 性别
//
// 示例值：1
func (builder *CompositeTalentBasicInfoBuilder) Gender(gender int) *CompositeTalentBasicInfoBuilder {
	builder.gender = gender
	builder.genderFlag = true
	return builder
}

// 所在地点
//
// 示例值：CN_2
func (builder *CompositeTalentBasicInfoBuilder) CurrentLocationCode(currentLocationCode string) *CompositeTalentBasicInfoBuilder {
	builder.currentLocationCode = currentLocationCode
	builder.currentLocationCodeFlag = true
	return builder
}

// 家乡
//
// 示例值：CN_3
func (builder *CompositeTalentBasicInfoBuilder) HometownLocationCode(hometownLocationCode string) *CompositeTalentBasicInfoBuilder {
	builder.hometownLocationCode = hometownLocationCode
	builder.hometownLocationCodeFlag = true
	return builder
}

// 意向地点
//
// 示例值：
func (builder *CompositeTalentBasicInfoBuilder) PreferredLocationCodeList(preferredLocationCodeList []string) *CompositeTalentBasicInfoBuilder {
	builder.preferredLocationCodeList = preferredLocationCodeList
	builder.preferredLocationCodeListFlag = true
	return builder
}

// 家庭住址
//
// 示例值：北京市朝阳区
func (builder *CompositeTalentBasicInfoBuilder) HomeAddress(homeAddress string) *CompositeTalentBasicInfoBuilder {
	builder.homeAddress = homeAddress
	builder.homeAddressFlag = true
	return builder
}

// 证件类型
//
// 示例值：1
func (builder *CompositeTalentBasicInfoBuilder) IdentificationType(identificationType int) *CompositeTalentBasicInfoBuilder {
	builder.identificationType = identificationType
	builder.identificationTypeFlag = true
	return builder
}

// 证件号
//
// 示例值：511699199x1x111234
func (builder *CompositeTalentBasicInfoBuilder) IdentificationNumber(identificationNumber string) *CompositeTalentBasicInfoBuilder {
	builder.identificationNumber = identificationNumber
	builder.identificationNumberFlag = true
	return builder
}

// 生日
//
// 示例值：293016767159
func (builder *CompositeTalentBasicInfoBuilder) Birthday(birthday int64) *CompositeTalentBasicInfoBuilder {
	builder.birthday = birthday
	builder.birthdayFlag = true
	return builder
}

// 婚姻状况
//
// 示例值：1
func (builder *CompositeTalentBasicInfoBuilder) MaritalStatus(maritalStatus int) *CompositeTalentBasicInfoBuilder {
	builder.maritalStatus = maritalStatus
	builder.maritalStatusFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CompositeTalentBasicInfoBuilder) CustomizedDataList(customizedDataList []*TalentCustomizedDataChild) *CompositeTalentBasicInfoBuilder {
	builder.customizedDataList = customizedDataList
	builder.customizedDataListFlag = true
	return builder
}

// 户口所在地
//
// 示例值：CN_1
func (builder *CompositeTalentBasicInfoBuilder) HukouLocationCode(hukouLocationCode string) *CompositeTalentBasicInfoBuilder {
	builder.hukouLocationCode = hukouLocationCode
	builder.hukouLocationCodeFlag = true
	return builder
}

// 人才更新时间
//
// 示例值：1634801678103
func (builder *CompositeTalentBasicInfoBuilder) UpdateTime(updateTime string) *CompositeTalentBasicInfoBuilder {
	builder.updateTime = updateTime
	builder.updateTimeFlag = true
	return builder
}

// 人才创建时间
//
// 示例值：1634801678103
func (builder *CompositeTalentBasicInfoBuilder) CreateTime(createTime string) *CompositeTalentBasicInfoBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 人才隐藏状态
//
// 示例值：1
func (builder *CompositeTalentBasicInfoBuilder) Confidential(confidential int) *CompositeTalentBasicInfoBuilder {
	builder.confidential = confidential
	builder.confidentialFlag = true
	return builder
}

func (builder *CompositeTalentBasicInfoBuilder) Build() *CompositeTalentBasicInfo {
	req := &CompositeTalentBasicInfo{}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.mobileNumberFlag {
		req.MobileNumber = &builder.mobileNumber

	}
	if builder.mobileCodeFlag {
		req.MobileCode = &builder.mobileCode

	}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.experienceYearsFlag {
		req.ExperienceYears = &builder.experienceYears

	}
	if builder.ageFlag {
		req.Age = &builder.age

	}
	if builder.nationalityCodeFlag {
		req.NationalityCode = &builder.nationalityCode

	}
	if builder.genderFlag {
		req.Gender = &builder.gender

	}
	if builder.currentLocationCodeFlag {
		req.CurrentLocationCode = &builder.currentLocationCode

	}
	if builder.hometownLocationCodeFlag {
		req.HometownLocationCode = &builder.hometownLocationCode

	}
	if builder.preferredLocationCodeListFlag {
		req.PreferredLocationCodeList = builder.preferredLocationCodeList
	}
	if builder.homeAddressFlag {
		req.HomeAddress = &builder.homeAddress

	}
	if builder.identificationTypeFlag {
		req.IdentificationType = &builder.identificationType

	}
	if builder.identificationNumberFlag {
		req.IdentificationNumber = &builder.identificationNumber

	}
	if builder.birthdayFlag {
		req.Birthday = &builder.birthday

	}
	if builder.maritalStatusFlag {
		req.MaritalStatus = &builder.maritalStatus

	}
	if builder.customizedDataListFlag {
		req.CustomizedDataList = builder.customizedDataList
	}
	if builder.hukouLocationCodeFlag {
		req.HukouLocationCode = &builder.hukouLocationCode

	}
	if builder.updateTimeFlag {
		req.UpdateTime = &builder.updateTime

	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.confidentialFlag {
		req.Confidential = &builder.confidential

	}
	return req
}

type CompositeTalentCareerInfo struct {
	CompanyName *string `json:"company_name,omitempty"` // 公司

	Description *string `json:"description,omitempty"` // 描述

	EndTime *string `json:"end_time,omitempty"` // 结束时间

	StartTime *string `json:"start_time,omitempty"` // 开始时间

	Title *string `json:"title,omitempty"` // 职称

	CustomizedDataList []*TalentCustomizedDataChild `json:"customized_data_list,omitempty"` // 自定义字段
}

type CompositeTalentCareerInfoBuilder struct {
	companyName     string // 公司
	companyNameFlag bool

	description     string // 描述
	descriptionFlag bool

	endTime     string // 结束时间
	endTimeFlag bool

	startTime     string // 开始时间
	startTimeFlag bool

	title     string // 职称
	titleFlag bool

	customizedDataList     []*TalentCustomizedDataChild // 自定义字段
	customizedDataListFlag bool
}

func NewCompositeTalentCareerInfoBuilder() *CompositeTalentCareerInfoBuilder {
	builder := &CompositeTalentCareerInfoBuilder{}
	return builder
}

// 公司
//
// 示例值：xx网络科技有限公司
func (builder *CompositeTalentCareerInfoBuilder) CompanyName(companyName string) *CompositeTalentCareerInfoBuilder {
	builder.companyName = companyName
	builder.companyNameFlag = true
	return builder
}

// 描述
//
// 示例值：主营短视频
func (builder *CompositeTalentCareerInfoBuilder) Description(description string) *CompositeTalentCareerInfoBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 结束时间
//
// 示例值：1687854583
func (builder *CompositeTalentCareerInfoBuilder) EndTime(endTime string) *CompositeTalentCareerInfoBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 开始时间
//
// 示例值：1687854583
func (builder *CompositeTalentCareerInfoBuilder) StartTime(startTime string) *CompositeTalentCareerInfoBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 职称
//
// 示例值：高级工程师
func (builder *CompositeTalentCareerInfoBuilder) Title(title string) *CompositeTalentCareerInfoBuilder {
	builder.title = title
	builder.titleFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CompositeTalentCareerInfoBuilder) CustomizedDataList(customizedDataList []*TalentCustomizedDataChild) *CompositeTalentCareerInfoBuilder {
	builder.customizedDataList = customizedDataList
	builder.customizedDataListFlag = true
	return builder
}

func (builder *CompositeTalentCareerInfoBuilder) Build() *CompositeTalentCareerInfo {
	req := &CompositeTalentCareerInfo{}
	if builder.companyNameFlag {
		req.CompanyName = &builder.companyName

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.titleFlag {
		req.Title = &builder.title

	}
	if builder.customizedDataListFlag {
		req.CustomizedDataList = builder.customizedDataList
	}
	return req
}

type CompositeTalentCustomizedData struct {
	ModuleId *string `json:"module_id,omitempty"` // 模块 ID

	Name *I18n `json:"name,omitempty"` // 模块名称

	ObjectType *int `json:"object_type,omitempty"` // 类型

	Children []*TalentCustomizedDataChild `json:"children,omitempty"` // 模块下的字段
}

type CompositeTalentCustomizedDataBuilder struct {
	moduleId     string // 模块 ID
	moduleIdFlag bool

	name     *I18n // 模块名称
	nameFlag bool

	objectType     int // 类型
	objectTypeFlag bool

	children     []*TalentCustomizedDataChild // 模块下的字段
	childrenFlag bool
}

func NewCompositeTalentCustomizedDataBuilder() *CompositeTalentCustomizedDataBuilder {
	builder := &CompositeTalentCustomizedDataBuilder{}
	return builder
}

// 模块 ID
//
// 示例值：7106698109352479020
func (builder *CompositeTalentCustomizedDataBuilder) ModuleId(moduleId string) *CompositeTalentCustomizedDataBuilder {
	builder.moduleId = moduleId
	builder.moduleIdFlag = true
	return builder
}

// 模块名称
//
// 示例值：
func (builder *CompositeTalentCustomizedDataBuilder) Name(name *I18n) *CompositeTalentCustomizedDataBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 类型
//
// 示例值：1
func (builder *CompositeTalentCustomizedDataBuilder) ObjectType(objectType int) *CompositeTalentCustomizedDataBuilder {
	builder.objectType = objectType
	builder.objectTypeFlag = true
	return builder
}

// 模块下的字段
//
// 示例值：
func (builder *CompositeTalentCustomizedDataBuilder) Children(children []*TalentCustomizedDataChild) *CompositeTalentCustomizedDataBuilder {
	builder.children = children
	builder.childrenFlag = true
	return builder
}

func (builder *CompositeTalentCustomizedDataBuilder) Build() *CompositeTalentCustomizedData {
	req := &CompositeTalentCustomizedData{}
	if builder.moduleIdFlag {
		req.ModuleId = &builder.moduleId

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.objectTypeFlag {
		req.ObjectType = &builder.objectType

	}
	if builder.childrenFlag {
		req.Children = builder.children
	}
	return req
}

type CompositeTalentEducationInfo struct {
	Degree *int `json:"degree,omitempty"` // 学位

	SchoolName *string `json:"school_name,omitempty"` // 学校

	Major *string `json:"major,omitempty"` // 专业

	StartTime *string `json:"start_time,omitempty"` // 开始时间

	EndTime *string `json:"end_time,omitempty"` // 结束时间

	EducationType *int `json:"education_type,omitempty"` // 学历类型

	AcademicRanking *int `json:"academic_ranking,omitempty"` // 成绩排名

	TagList []int `json:"tag_list,omitempty"` // 教育经历标签

	CustomizedDataList []*TalentCustomizedDataChild `json:"customized_data_list,omitempty"` // 自定义字段
}

type CompositeTalentEducationInfoBuilder struct {
	degree     int // 学位
	degreeFlag bool

	schoolName     string // 学校
	schoolNameFlag bool

	major     string // 专业
	majorFlag bool

	startTime     string // 开始时间
	startTimeFlag bool

	endTime     string // 结束时间
	endTimeFlag bool

	educationType     int // 学历类型
	educationTypeFlag bool

	academicRanking     int // 成绩排名
	academicRankingFlag bool

	tagList     []int // 教育经历标签
	tagListFlag bool

	customizedDataList     []*TalentCustomizedDataChild // 自定义字段
	customizedDataListFlag bool
}

func NewCompositeTalentEducationInfoBuilder() *CompositeTalentEducationInfoBuilder {
	builder := &CompositeTalentEducationInfoBuilder{}
	return builder
}

// 学位
//
// 示例值：1
func (builder *CompositeTalentEducationInfoBuilder) Degree(degree int) *CompositeTalentEducationInfoBuilder {
	builder.degree = degree
	builder.degreeFlag = true
	return builder
}

// 学校
//
// 示例值：湘港大学
func (builder *CompositeTalentEducationInfoBuilder) SchoolName(schoolName string) *CompositeTalentEducationInfoBuilder {
	builder.schoolName = schoolName
	builder.schoolNameFlag = true
	return builder
}

// 专业
//
// 示例值：考古
func (builder *CompositeTalentEducationInfoBuilder) Major(major string) *CompositeTalentEducationInfoBuilder {
	builder.major = major
	builder.majorFlag = true
	return builder
}

// 开始时间
//
// 示例值：1992-01
func (builder *CompositeTalentEducationInfoBuilder) StartTime(startTime string) *CompositeTalentEducationInfoBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 结束时间
//
// 示例值：1994-01
func (builder *CompositeTalentEducationInfoBuilder) EndTime(endTime string) *CompositeTalentEducationInfoBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 学历类型
//
// 示例值：1
func (builder *CompositeTalentEducationInfoBuilder) EducationType(educationType int) *CompositeTalentEducationInfoBuilder {
	builder.educationType = educationType
	builder.educationTypeFlag = true
	return builder
}

// 成绩排名
//
// 示例值：5
func (builder *CompositeTalentEducationInfoBuilder) AcademicRanking(academicRanking int) *CompositeTalentEducationInfoBuilder {
	builder.academicRanking = academicRanking
	builder.academicRankingFlag = true
	return builder
}

// 教育经历标签
//
// 示例值：
func (builder *CompositeTalentEducationInfoBuilder) TagList(tagList []int) *CompositeTalentEducationInfoBuilder {
	builder.tagList = tagList
	builder.tagListFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CompositeTalentEducationInfoBuilder) CustomizedDataList(customizedDataList []*TalentCustomizedDataChild) *CompositeTalentEducationInfoBuilder {
	builder.customizedDataList = customizedDataList
	builder.customizedDataListFlag = true
	return builder
}

func (builder *CompositeTalentEducationInfoBuilder) Build() *CompositeTalentEducationInfo {
	req := &CompositeTalentEducationInfo{}
	if builder.degreeFlag {
		req.Degree = &builder.degree

	}
	if builder.schoolNameFlag {
		req.SchoolName = &builder.schoolName

	}
	if builder.majorFlag {
		req.Major = &builder.major

	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.educationTypeFlag {
		req.EducationType = &builder.educationType

	}
	if builder.academicRankingFlag {
		req.AcademicRanking = &builder.academicRanking

	}
	if builder.tagListFlag {
		req.TagList = builder.tagList
	}
	if builder.customizedDataListFlag {
		req.CustomizedDataList = builder.customizedDataList
	}
	return req
}

type CompositeTalentInternshipInfo struct {
	CompanyName *string `json:"company_name,omitempty"` // 公司

	Description *string `json:"description,omitempty"` // 描述

	EndTime *string `json:"end_time,omitempty"` // 结束时间

	StartTime *string `json:"start_time,omitempty"` // 开始时间

	Title *string `json:"title,omitempty"` // 职称

	CustomizedDataList []*TalentCustomizedDataChild `json:"customized_data_list,omitempty"` // 自定义字段
}

type CompositeTalentInternshipInfoBuilder struct {
	companyName     string // 公司
	companyNameFlag bool

	description     string // 描述
	descriptionFlag bool

	endTime     string // 结束时间
	endTimeFlag bool

	startTime     string // 开始时间
	startTimeFlag bool

	title     string // 职称
	titleFlag bool

	customizedDataList     []*TalentCustomizedDataChild // 自定义字段
	customizedDataListFlag bool
}

func NewCompositeTalentInternshipInfoBuilder() *CompositeTalentInternshipInfoBuilder {
	builder := &CompositeTalentInternshipInfoBuilder{}
	return builder
}

// 公司
//
// 示例值：xx网络科技有限公司
func (builder *CompositeTalentInternshipInfoBuilder) CompanyName(companyName string) *CompositeTalentInternshipInfoBuilder {
	builder.companyName = companyName
	builder.companyNameFlag = true
	return builder
}

// 描述
//
// 示例值：作为测试实习生参与公司xx项目的测试工作
func (builder *CompositeTalentInternshipInfoBuilder) Description(description string) *CompositeTalentInternshipInfoBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 结束时间
//
// 示例值：2020-09
func (builder *CompositeTalentInternshipInfoBuilder) EndTime(endTime string) *CompositeTalentInternshipInfoBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 开始时间
//
// 示例值：2020-01
func (builder *CompositeTalentInternshipInfoBuilder) StartTime(startTime string) *CompositeTalentInternshipInfoBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 职称
//
// 示例值：测试工程师
func (builder *CompositeTalentInternshipInfoBuilder) Title(title string) *CompositeTalentInternshipInfoBuilder {
	builder.title = title
	builder.titleFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CompositeTalentInternshipInfoBuilder) CustomizedDataList(customizedDataList []*TalentCustomizedDataChild) *CompositeTalentInternshipInfoBuilder {
	builder.customizedDataList = customizedDataList
	builder.customizedDataListFlag = true
	return builder
}

func (builder *CompositeTalentInternshipInfoBuilder) Build() *CompositeTalentInternshipInfo {
	req := &CompositeTalentInternshipInfo{}
	if builder.companyNameFlag {
		req.CompanyName = &builder.companyName

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.titleFlag {
		req.Title = &builder.title

	}
	if builder.customizedDataListFlag {
		req.CustomizedDataList = builder.customizedDataList
	}
	return req
}

type CompositeTalentLanguageInfo struct {
	Language *int `json:"language,omitempty"` // 语言

	Proficiency *int `json:"proficiency,omitempty"` // 熟练程度

	CustomizedDataList []*TalentCustomizedDataChild `json:"customized_data_list,omitempty"` // 自定义字段
}

type CompositeTalentLanguageInfoBuilder struct {
	language     int // 语言
	languageFlag bool

	proficiency     int // 熟练程度
	proficiencyFlag bool

	customizedDataList     []*TalentCustomizedDataChild // 自定义字段
	customizedDataListFlag bool
}

func NewCompositeTalentLanguageInfoBuilder() *CompositeTalentLanguageInfoBuilder {
	builder := &CompositeTalentLanguageInfoBuilder{}
	return builder
}

// 语言
//
// 示例值：1
func (builder *CompositeTalentLanguageInfoBuilder) Language(language int) *CompositeTalentLanguageInfoBuilder {
	builder.language = language
	builder.languageFlag = true
	return builder
}

// 熟练程度
//
// 示例值：1
func (builder *CompositeTalentLanguageInfoBuilder) Proficiency(proficiency int) *CompositeTalentLanguageInfoBuilder {
	builder.proficiency = proficiency
	builder.proficiencyFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CompositeTalentLanguageInfoBuilder) CustomizedDataList(customizedDataList []*TalentCustomizedDataChild) *CompositeTalentLanguageInfoBuilder {
	builder.customizedDataList = customizedDataList
	builder.customizedDataListFlag = true
	return builder
}

func (builder *CompositeTalentLanguageInfoBuilder) Build() *CompositeTalentLanguageInfo {
	req := &CompositeTalentLanguageInfo{}
	if builder.languageFlag {
		req.Language = &builder.language

	}
	if builder.proficiencyFlag {
		req.Proficiency = &builder.proficiency

	}
	if builder.customizedDataListFlag {
		req.CustomizedDataList = builder.customizedDataList
	}
	return req
}

type CompositeTalentProjectInfo struct {
	ProjectName *string `json:"project_name,omitempty"` // 项目名称

	Role *string `json:"role,omitempty"` // 项目角色

	Link *string `json:"link,omitempty"` // 项目链接

	Description *string `json:"description,omitempty"` // 描述

	StartTime *string `json:"start_time,omitempty"` // 开始时间

	EndTime *string `json:"end_time,omitempty"` // 结束时间

	CustomizedDataList []*TalentCustomizedDataChild `json:"customized_data_list,omitempty"` // 自定义字段
}

type CompositeTalentProjectInfoBuilder struct {
	projectName     string // 项目名称
	projectNameFlag bool

	role     string // 项目角色
	roleFlag bool

	link     string // 项目链接
	linkFlag bool

	description     string // 描述
	descriptionFlag bool

	startTime     string // 开始时间
	startTimeFlag bool

	endTime     string // 结束时间
	endTimeFlag bool

	customizedDataList     []*TalentCustomizedDataChild // 自定义字段
	customizedDataListFlag bool
}

func NewCompositeTalentProjectInfoBuilder() *CompositeTalentProjectInfoBuilder {
	builder := &CompositeTalentProjectInfoBuilder{}
	return builder
}

// 项目名称
//
// 示例值：测试
func (builder *CompositeTalentProjectInfoBuilder) ProjectName(projectName string) *CompositeTalentProjectInfoBuilder {
	builder.projectName = projectName
	builder.projectNameFlag = true
	return builder
}

// 项目角色
//
// 示例值：test
func (builder *CompositeTalentProjectInfoBuilder) Role(role string) *CompositeTalentProjectInfoBuilder {
	builder.role = role
	builder.roleFlag = true
	return builder
}

// 项目链接
//
// 示例值：项目链接
func (builder *CompositeTalentProjectInfoBuilder) Link(link string) *CompositeTalentProjectInfoBuilder {
	builder.link = link
	builder.linkFlag = true
	return builder
}

// 描述
//
// 示例值：直播项目
func (builder *CompositeTalentProjectInfoBuilder) Description(description string) *CompositeTalentProjectInfoBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 开始时间
//
// 示例值：1990-01
func (builder *CompositeTalentProjectInfoBuilder) StartTime(startTime string) *CompositeTalentProjectInfoBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 结束时间
//
// 示例值：1991-01
func (builder *CompositeTalentProjectInfoBuilder) EndTime(endTime string) *CompositeTalentProjectInfoBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CompositeTalentProjectInfoBuilder) CustomizedDataList(customizedDataList []*TalentCustomizedDataChild) *CompositeTalentProjectInfoBuilder {
	builder.customizedDataList = customizedDataList
	builder.customizedDataListFlag = true
	return builder
}

func (builder *CompositeTalentProjectInfoBuilder) Build() *CompositeTalentProjectInfo {
	req := &CompositeTalentProjectInfo{}
	if builder.projectNameFlag {
		req.ProjectName = &builder.projectName

	}
	if builder.roleFlag {
		req.Role = &builder.role

	}
	if builder.linkFlag {
		req.Link = &builder.link

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.customizedDataListFlag {
		req.CustomizedDataList = builder.customizedDataList
	}
	return req
}

type CompositeTalentSelfIntroduction struct {
	SelfIntroduction *string `json:"self_introduction,omitempty"` // 自我评价

	CustomizedDataList []*TalentCustomizedDataChild `json:"customized_data_list,omitempty"` // 自定义字段
}

type CompositeTalentSelfIntroductionBuilder struct {
	selfIntroduction     string // 自我评价
	selfIntroductionFlag bool

	customizedDataList     []*TalentCustomizedDataChild // 自定义字段
	customizedDataListFlag bool
}

func NewCompositeTalentSelfIntroductionBuilder() *CompositeTalentSelfIntroductionBuilder {
	builder := &CompositeTalentSelfIntroductionBuilder{}
	return builder
}

// 自我评价
//
// 示例值：
func (builder *CompositeTalentSelfIntroductionBuilder) SelfIntroduction(selfIntroduction string) *CompositeTalentSelfIntroductionBuilder {
	builder.selfIntroduction = selfIntroduction
	builder.selfIntroductionFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CompositeTalentSelfIntroductionBuilder) CustomizedDataList(customizedDataList []*TalentCustomizedDataChild) *CompositeTalentSelfIntroductionBuilder {
	builder.customizedDataList = customizedDataList
	builder.customizedDataListFlag = true
	return builder
}

func (builder *CompositeTalentSelfIntroductionBuilder) Build() *CompositeTalentSelfIntroduction {
	req := &CompositeTalentSelfIntroduction{}
	if builder.selfIntroductionFlag {
		req.SelfIntroduction = &builder.selfIntroduction

	}
	if builder.customizedDataListFlag {
		req.CustomizedDataList = builder.customizedDataList
	}
	return req
}

type CompositeTalentSnsInfo struct {
	SnsType *int `json:"sns_type,omitempty"` // SNS类型

	Link *string `json:"link,omitempty"` // SNS链接

	CustomizedDataList []*TalentCustomizedDataChild `json:"customized_data_list,omitempty"` // 自定义字段
}

type CompositeTalentSnsInfoBuilder struct {
	snsType     int // SNS类型
	snsTypeFlag bool

	link     string // SNS链接
	linkFlag bool

	customizedDataList     []*TalentCustomizedDataChild // 自定义字段
	customizedDataListFlag bool
}

func NewCompositeTalentSnsInfoBuilder() *CompositeTalentSnsInfoBuilder {
	builder := &CompositeTalentSnsInfoBuilder{}
	return builder
}

// SNS类型
//
// 示例值：1
func (builder *CompositeTalentSnsInfoBuilder) SnsType(snsType int) *CompositeTalentSnsInfoBuilder {
	builder.snsType = snsType
	builder.snsTypeFlag = true
	return builder
}

// SNS链接
//
// 示例值：www.test.com
func (builder *CompositeTalentSnsInfoBuilder) Link(link string) *CompositeTalentSnsInfoBuilder {
	builder.link = link
	builder.linkFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CompositeTalentSnsInfoBuilder) CustomizedDataList(customizedDataList []*TalentCustomizedDataChild) *CompositeTalentSnsInfoBuilder {
	builder.customizedDataList = customizedDataList
	builder.customizedDataListFlag = true
	return builder
}

func (builder *CompositeTalentSnsInfoBuilder) Build() *CompositeTalentSnsInfo {
	req := &CompositeTalentSnsInfo{}
	if builder.snsTypeFlag {
		req.SnsType = &builder.snsType

	}
	if builder.linkFlag {
		req.Link = &builder.link

	}
	if builder.customizedDataListFlag {
		req.CustomizedDataList = builder.customizedDataList
	}
	return req
}

type CompositeTalentWorksInfo struct {
	Id *string `json:"id,omitempty"` // ID

	Link *string `json:"link,omitempty"` // 链接

	Description *string `json:"description,omitempty"` // 描述

	CustomizedDataList []*TalentCustomizedDataChild `json:"customized_data_list,omitempty"` // 自定义字段
}

type CompositeTalentWorksInfoBuilder struct {
	id     string // ID
	idFlag bool

	link     string // 链接
	linkFlag bool

	description     string // 描述
	descriptionFlag bool

	customizedDataList     []*TalentCustomizedDataChild // 自定义字段
	customizedDataListFlag bool
}

func NewCompositeTalentWorksInfoBuilder() *CompositeTalentWorksInfoBuilder {
	builder := &CompositeTalentWorksInfoBuilder{}
	return builder
}

// ID
//
// 示例值：6891560630172518670
func (builder *CompositeTalentWorksInfoBuilder) Id(id string) *CompositeTalentWorksInfoBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 链接
//
// 示例值：作品链接
func (builder *CompositeTalentWorksInfoBuilder) Link(link string) *CompositeTalentWorksInfoBuilder {
	builder.link = link
	builder.linkFlag = true
	return builder
}

// 描述
//
// 示例值：毕设作品
func (builder *CompositeTalentWorksInfoBuilder) Description(description string) *CompositeTalentWorksInfoBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CompositeTalentWorksInfoBuilder) CustomizedDataList(customizedDataList []*TalentCustomizedDataChild) *CompositeTalentWorksInfoBuilder {
	builder.customizedDataList = customizedDataList
	builder.customizedDataListFlag = true
	return builder
}

func (builder *CompositeTalentWorksInfoBuilder) Build() *CompositeTalentWorksInfo {
	req := &CompositeTalentWorksInfo{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.linkFlag {
		req.Link = &builder.link

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	if builder.customizedDataListFlag {
		req.CustomizedDataList = builder.customizedDataList
	}
	return req
}

type DepartmentId struct {
	DepartmentId *string `json:"department_id,omitempty"` //

	OpenDepartmentId *string `json:"open_department_id,omitempty"` //
}

type DepartmentIdBuilder struct {
	departmentId     string //
	departmentIdFlag bool

	openDepartmentId     string //
	openDepartmentIdFlag bool
}

func NewDepartmentIdBuilder() *DepartmentIdBuilder {
	builder := &DepartmentIdBuilder{}
	return builder
}

//
//
// 示例值：
func (builder *DepartmentIdBuilder) DepartmentId(departmentId string) *DepartmentIdBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

//
//
// 示例值：
func (builder *DepartmentIdBuilder) OpenDepartmentId(openDepartmentId string) *DepartmentIdBuilder {
	builder.openDepartmentId = openDepartmentId
	builder.openDepartmentIdFlag = true
	return builder
}

func (builder *DepartmentIdBuilder) Build() *DepartmentId {
	req := &DepartmentId{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.openDepartmentIdFlag {
		req.OpenDepartmentId = &builder.openDepartmentId

	}
	return req
}

type DimensionAssessment struct {
	InterviewFeedbackFormDimensionId *string `json:"interview_feedback_form_dimension_id,omitempty"` // 对应模版中维度ID

	DimensionName *I18n `json:"dimension_name,omitempty"` // 维度名称

	DimensionType *int `json:"dimension_type,omitempty"` // 维度类型

	Weight *float64 `json:"weight,omitempty"` // 维度权重

	DimensionContent *string `json:"dimension_content,omitempty"` // 当维度类型为描述题时，从此取值

	DimensionOption *DimensionOption `json:"dimension_option,omitempty"` // 当维度类型为单选题时，从此取值

	DimensionOptions []*DimensionOption `json:"dimension_options,omitempty"` // 当维度类型为多选题时，从此取值

	DimensionScore *int64 `json:"dimension_score,omitempty"` // 当维度评价方式为「打分题(填空)时」，从此取值

	RecommendedJobLevel *RecommendedJobLevel `json:"recommended_job_level,omitempty"` // 当维度为「职级建议」时，从此取值

	QuestionAssessments []*QuestionAssessment `json:"question_assessments,omitempty"` // 维度关联面试题

	AbilityAssessments []*AbilityAssessment `json:"ability_assessments,omitempty"` // 能力项评价
}

type DimensionAssessmentBuilder struct {
	interviewFeedbackFormDimensionId     string // 对应模版中维度ID
	interviewFeedbackFormDimensionIdFlag bool

	dimensionName     *I18n // 维度名称
	dimensionNameFlag bool

	dimensionType     int // 维度类型
	dimensionTypeFlag bool

	weight     float64 // 维度权重
	weightFlag bool

	dimensionContent     string // 当维度类型为描述题时，从此取值
	dimensionContentFlag bool

	dimensionOption     *DimensionOption // 当维度类型为单选题时，从此取值
	dimensionOptionFlag bool

	dimensionOptions     []*DimensionOption // 当维度类型为多选题时，从此取值
	dimensionOptionsFlag bool

	dimensionScore     int64 // 当维度评价方式为「打分题(填空)时」，从此取值
	dimensionScoreFlag bool

	recommendedJobLevel     *RecommendedJobLevel // 当维度为「职级建议」时，从此取值
	recommendedJobLevelFlag bool

	questionAssessments     []*QuestionAssessment // 维度关联面试题
	questionAssessmentsFlag bool

	abilityAssessments     []*AbilityAssessment // 能力项评价
	abilityAssessmentsFlag bool
}

func NewDimensionAssessmentBuilder() *DimensionAssessmentBuilder {
	builder := &DimensionAssessmentBuilder{}
	return builder
}

// 对应模版中维度ID
//
// 示例值：7171693733661327361
func (builder *DimensionAssessmentBuilder) InterviewFeedbackFormDimensionId(interviewFeedbackFormDimensionId string) *DimensionAssessmentBuilder {
	builder.interviewFeedbackFormDimensionId = interviewFeedbackFormDimensionId
	builder.interviewFeedbackFormDimensionIdFlag = true
	return builder
}

// 维度名称
//
// 示例值：
func (builder *DimensionAssessmentBuilder) DimensionName(dimensionName *I18n) *DimensionAssessmentBuilder {
	builder.dimensionName = dimensionName
	builder.dimensionNameFlag = true
	return builder
}

// 维度类型
//
// 示例值：1
func (builder *DimensionAssessmentBuilder) DimensionType(dimensionType int) *DimensionAssessmentBuilder {
	builder.dimensionType = dimensionType
	builder.dimensionTypeFlag = true
	return builder
}

// 维度权重
//
// 示例值：1
func (builder *DimensionAssessmentBuilder) Weight(weight float64) *DimensionAssessmentBuilder {
	builder.weight = weight
	builder.weightFlag = true
	return builder
}

// 当维度类型为描述题时，从此取值
//
// 示例值：描述题作答
func (builder *DimensionAssessmentBuilder) DimensionContent(dimensionContent string) *DimensionAssessmentBuilder {
	builder.dimensionContent = dimensionContent
	builder.dimensionContentFlag = true
	return builder
}

// 当维度类型为单选题时，从此取值
//
// 示例值：
func (builder *DimensionAssessmentBuilder) DimensionOption(dimensionOption *DimensionOption) *DimensionAssessmentBuilder {
	builder.dimensionOption = dimensionOption
	builder.dimensionOptionFlag = true
	return builder
}

// 当维度类型为多选题时，从此取值
//
// 示例值：
func (builder *DimensionAssessmentBuilder) DimensionOptions(dimensionOptions []*DimensionOption) *DimensionAssessmentBuilder {
	builder.dimensionOptions = dimensionOptions
	builder.dimensionOptionsFlag = true
	return builder
}

// 当维度评价方式为「打分题(填空)时」，从此取值
//
// 示例值：10
func (builder *DimensionAssessmentBuilder) DimensionScore(dimensionScore int64) *DimensionAssessmentBuilder {
	builder.dimensionScore = dimensionScore
	builder.dimensionScoreFlag = true
	return builder
}

// 当维度为「职级建议」时，从此取值
//
// 示例值：
func (builder *DimensionAssessmentBuilder) RecommendedJobLevel(recommendedJobLevel *RecommendedJobLevel) *DimensionAssessmentBuilder {
	builder.recommendedJobLevel = recommendedJobLevel
	builder.recommendedJobLevelFlag = true
	return builder
}

// 维度关联面试题
//
// 示例值：
func (builder *DimensionAssessmentBuilder) QuestionAssessments(questionAssessments []*QuestionAssessment) *DimensionAssessmentBuilder {
	builder.questionAssessments = questionAssessments
	builder.questionAssessmentsFlag = true
	return builder
}

// 能力项评价
//
// 示例值：
func (builder *DimensionAssessmentBuilder) AbilityAssessments(abilityAssessments []*AbilityAssessment) *DimensionAssessmentBuilder {
	builder.abilityAssessments = abilityAssessments
	builder.abilityAssessmentsFlag = true
	return builder
}

func (builder *DimensionAssessmentBuilder) Build() *DimensionAssessment {
	req := &DimensionAssessment{}
	if builder.interviewFeedbackFormDimensionIdFlag {
		req.InterviewFeedbackFormDimensionId = &builder.interviewFeedbackFormDimensionId

	}
	if builder.dimensionNameFlag {
		req.DimensionName = builder.dimensionName
	}
	if builder.dimensionTypeFlag {
		req.DimensionType = &builder.dimensionType

	}
	if builder.weightFlag {
		req.Weight = &builder.weight

	}
	if builder.dimensionContentFlag {
		req.DimensionContent = &builder.dimensionContent

	}
	if builder.dimensionOptionFlag {
		req.DimensionOption = builder.dimensionOption
	}
	if builder.dimensionOptionsFlag {
		req.DimensionOptions = builder.dimensionOptions
	}
	if builder.dimensionScoreFlag {
		req.DimensionScore = &builder.dimensionScore

	}
	if builder.recommendedJobLevelFlag {
		req.RecommendedJobLevel = builder.recommendedJobLevel
	}
	if builder.questionAssessmentsFlag {
		req.QuestionAssessments = builder.questionAssessments
	}
	if builder.abilityAssessmentsFlag {
		req.AbilityAssessments = builder.abilityAssessments
	}
	return req
}

type DimensionOption struct {
	Id *string `json:"id,omitempty"` // 选项ID

	Name *I18n `json:"name,omitempty"` // 选项名称

	ScoreVal *int64 `json:"score_val,omitempty"` // 选项对应的分数

	AliasName *I18n `json:"alias_name,omitempty"` // 选项全称
}

type DimensionOptionBuilder struct {
	id     string // 选项ID
	idFlag bool

	name     *I18n // 选项名称
	nameFlag bool

	scoreVal     int64 // 选项对应的分数
	scoreValFlag bool

	aliasName     *I18n // 选项全称
	aliasNameFlag bool
}

func NewDimensionOptionBuilder() *DimensionOptionBuilder {
	builder := &DimensionOptionBuilder{}
	return builder
}

// 选项ID
//
// 示例值：7171693733661327361
func (builder *DimensionOptionBuilder) Id(id string) *DimensionOptionBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 选项名称
//
// 示例值：7171693733661327361
func (builder *DimensionOptionBuilder) Name(name *I18n) *DimensionOptionBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 选项对应的分数
//
// 示例值：10
func (builder *DimensionOptionBuilder) ScoreVal(scoreVal int64) *DimensionOptionBuilder {
	builder.scoreVal = scoreVal
	builder.scoreValFlag = true
	return builder
}

// 选项全称
//
// 示例值：
func (builder *DimensionOptionBuilder) AliasName(aliasName *I18n) *DimensionOptionBuilder {
	builder.aliasName = aliasName
	builder.aliasNameFlag = true
	return builder
}

func (builder *DimensionOptionBuilder) Build() *DimensionOption {
	req := &DimensionOption{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.scoreValFlag {
		req.ScoreVal = &builder.scoreVal

	}
	if builder.aliasNameFlag {
		req.AliasName = builder.aliasName
	}
	return req
}

type I18n struct {
	ZhCn *string `json:"zh_cn,omitempty"` // 中文

	EnUs *string `json:"en_us,omitempty"` // 英文
}

type I18nBuilder struct {
	zhCn     string // 中文
	zhCnFlag bool

	enUs     string // 英文
	enUsFlag bool
}

func NewI18nBuilder() *I18nBuilder {
	builder := &I18nBuilder{}
	return builder
}

// 中文
//
// 示例值：测试
func (builder *I18nBuilder) ZhCn(zhCn string) *I18nBuilder {
	builder.zhCn = zhCn
	builder.zhCnFlag = true
	return builder
}

// 英文
//
// 示例值：test
func (builder *I18nBuilder) EnUs(enUs string) *I18nBuilder {
	builder.enUs = enUs
	builder.enUsFlag = true
	return builder
}

func (builder *I18nBuilder) Build() *I18n {
	req := &I18n{}
	if builder.zhCnFlag {
		req.ZhCn = &builder.zhCn

	}
	if builder.enUsFlag {
		req.EnUs = &builder.enUs

	}
	return req
}

type IdNameObject struct {
	Id *string `json:"id,omitempty"` // 用户 ID

	Name *I18n `json:"name,omitempty"` //  用户姓名
}

type IdNameObjectBuilder struct {
	id     string // 用户 ID
	idFlag bool

	name     *I18n //  用户姓名
	nameFlag bool
}

func NewIdNameObjectBuilder() *IdNameObjectBuilder {
	builder := &IdNameObjectBuilder{}
	return builder
}

// 用户 ID
//
// 示例值：7171693733661327364
func (builder *IdNameObjectBuilder) Id(id string) *IdNameObjectBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

//  用户姓名
//
// 示例值：
func (builder *IdNameObjectBuilder) Name(name *I18n) *IdNameObjectBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

func (builder *IdNameObjectBuilder) Build() *IdNameObject {
	req := &IdNameObject{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	return req
}

type InterviewRecord struct {
	Id *string `json:"id,omitempty"` // 面试评价ID

	FeedbackFormId *string `json:"feedback_form_id,omitempty"` // 面试评价表ID

	CommitStatus *int `json:"commit_status,omitempty"` // 提交状态

	SubmitTime *string `json:"submit_time,omitempty"` // 面试评价提交时间

	RecordScore *RecordScore `json:"record_score,omitempty"` // 面试评价分数

	Interviewer *IdNameObject `json:"interviewer,omitempty"` // 面试官信息

	Attachments []*Attachment `json:"attachments,omitempty"` // 面试评价附件列表

	ModuleAssessments []*ModuleAssessment `json:"module_assessments,omitempty"` // 模块评价列表
}

type InterviewRecordBuilder struct {
	id     string // 面试评价ID
	idFlag bool

	feedbackFormId     string // 面试评价表ID
	feedbackFormIdFlag bool

	commitStatus     int // 提交状态
	commitStatusFlag bool

	submitTime     string // 面试评价提交时间
	submitTimeFlag bool

	recordScore     *RecordScore // 面试评价分数
	recordScoreFlag bool

	interviewer     *IdNameObject // 面试官信息
	interviewerFlag bool

	attachments     []*Attachment // 面试评价附件列表
	attachmentsFlag bool

	moduleAssessments     []*ModuleAssessment // 模块评价列表
	moduleAssessmentsFlag bool
}

func NewInterviewRecordBuilder() *InterviewRecordBuilder {
	builder := &InterviewRecordBuilder{}
	return builder
}

// 面试评价ID
//
// 示例值：7171693733661327361
func (builder *InterviewRecordBuilder) Id(id string) *InterviewRecordBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 面试评价表ID
//
// 示例值：71716937336613273612
func (builder *InterviewRecordBuilder) FeedbackFormId(feedbackFormId string) *InterviewRecordBuilder {
	builder.feedbackFormId = feedbackFormId
	builder.feedbackFormIdFlag = true
	return builder
}

// 提交状态
//
// 示例值：1
func (builder *InterviewRecordBuilder) CommitStatus(commitStatus int) *InterviewRecordBuilder {
	builder.commitStatus = commitStatus
	builder.commitStatusFlag = true
	return builder
}

// 面试评价提交时间
//
// 示例值：1710405457390
func (builder *InterviewRecordBuilder) SubmitTime(submitTime string) *InterviewRecordBuilder {
	builder.submitTime = submitTime
	builder.submitTimeFlag = true
	return builder
}

// 面试评价分数
//
// 示例值：
func (builder *InterviewRecordBuilder) RecordScore(recordScore *RecordScore) *InterviewRecordBuilder {
	builder.recordScore = recordScore
	builder.recordScoreFlag = true
	return builder
}

// 面试官信息
//
// 示例值：
func (builder *InterviewRecordBuilder) Interviewer(interviewer *IdNameObject) *InterviewRecordBuilder {
	builder.interviewer = interviewer
	builder.interviewerFlag = true
	return builder
}

// 面试评价附件列表
//
// 示例值：
func (builder *InterviewRecordBuilder) Attachments(attachments []*Attachment) *InterviewRecordBuilder {
	builder.attachments = attachments
	builder.attachmentsFlag = true
	return builder
}

// 模块评价列表
//
// 示例值：
func (builder *InterviewRecordBuilder) ModuleAssessments(moduleAssessments []*ModuleAssessment) *InterviewRecordBuilder {
	builder.moduleAssessments = moduleAssessments
	builder.moduleAssessmentsFlag = true
	return builder
}

func (builder *InterviewRecordBuilder) Build() *InterviewRecord {
	req := &InterviewRecord{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.feedbackFormIdFlag {
		req.FeedbackFormId = &builder.feedbackFormId

	}
	if builder.commitStatusFlag {
		req.CommitStatus = &builder.commitStatus

	}
	if builder.submitTimeFlag {
		req.SubmitTime = &builder.submitTime

	}
	if builder.recordScoreFlag {
		req.RecordScore = builder.recordScore
	}
	if builder.interviewerFlag {
		req.Interviewer = builder.interviewer
	}
	if builder.attachmentsFlag {
		req.Attachments = builder.attachments
	}
	if builder.moduleAssessmentsFlag {
		req.ModuleAssessments = builder.moduleAssessments
	}
	return req
}

type ModuleAssessment struct {
	InterviewFeedbackFormModuleId *string `json:"interview_feedback_form_module_id,omitempty"` // 对应面试评价表中模块 ID

	ModuleName *I18n `json:"module_name,omitempty"` // 模块名称

	ModuleType *int `json:"module_type,omitempty"` // 模块类型

	ModuleWeight *float64 `json:"module_weight,omitempty"` // 模块权重

	ModuleScore *float64 `json:"module_score,omitempty"` // 模块打分

	DimensionAssessments []*DimensionAssessment `json:"dimension_assessments,omitempty"` // 模块评价
}

type ModuleAssessmentBuilder struct {
	interviewFeedbackFormModuleId     string // 对应面试评价表中模块 ID
	interviewFeedbackFormModuleIdFlag bool

	moduleName     *I18n // 模块名称
	moduleNameFlag bool

	moduleType     int // 模块类型
	moduleTypeFlag bool

	moduleWeight     float64 // 模块权重
	moduleWeightFlag bool

	moduleScore     float64 // 模块打分
	moduleScoreFlag bool

	dimensionAssessments     []*DimensionAssessment // 模块评价
	dimensionAssessmentsFlag bool
}

func NewModuleAssessmentBuilder() *ModuleAssessmentBuilder {
	builder := &ModuleAssessmentBuilder{}
	return builder
}

// 对应面试评价表中模块 ID
//
// 示例值：7171693733661327361
func (builder *ModuleAssessmentBuilder) InterviewFeedbackFormModuleId(interviewFeedbackFormModuleId string) *ModuleAssessmentBuilder {
	builder.interviewFeedbackFormModuleId = interviewFeedbackFormModuleId
	builder.interviewFeedbackFormModuleIdFlag = true
	return builder
}

// 模块名称
//
// 示例值：
func (builder *ModuleAssessmentBuilder) ModuleName(moduleName *I18n) *ModuleAssessmentBuilder {
	builder.moduleName = moduleName
	builder.moduleNameFlag = true
	return builder
}

// 模块类型
//
// 示例值：
func (builder *ModuleAssessmentBuilder) ModuleType(moduleType int) *ModuleAssessmentBuilder {
	builder.moduleType = moduleType
	builder.moduleTypeFlag = true
	return builder
}

// 模块权重
//
// 示例值：10
func (builder *ModuleAssessmentBuilder) ModuleWeight(moduleWeight float64) *ModuleAssessmentBuilder {
	builder.moduleWeight = moduleWeight
	builder.moduleWeightFlag = true
	return builder
}

// 模块打分
//
// 示例值：10
func (builder *ModuleAssessmentBuilder) ModuleScore(moduleScore float64) *ModuleAssessmentBuilder {
	builder.moduleScore = moduleScore
	builder.moduleScoreFlag = true
	return builder
}

// 模块评价
//
// 示例值：
func (builder *ModuleAssessmentBuilder) DimensionAssessments(dimensionAssessments []*DimensionAssessment) *ModuleAssessmentBuilder {
	builder.dimensionAssessments = dimensionAssessments
	builder.dimensionAssessmentsFlag = true
	return builder
}

func (builder *ModuleAssessmentBuilder) Build() *ModuleAssessment {
	req := &ModuleAssessment{}
	if builder.interviewFeedbackFormModuleIdFlag {
		req.InterviewFeedbackFormModuleId = &builder.interviewFeedbackFormModuleId

	}
	if builder.moduleNameFlag {
		req.ModuleName = builder.moduleName
	}
	if builder.moduleTypeFlag {
		req.ModuleType = &builder.moduleType

	}
	if builder.moduleWeightFlag {
		req.ModuleWeight = &builder.moduleWeight

	}
	if builder.moduleScoreFlag {
		req.ModuleScore = &builder.moduleScore

	}
	if builder.dimensionAssessmentsFlag {
		req.DimensionAssessments = builder.dimensionAssessments
	}
	return req
}

type QuestionAssessment struct {
	QuestionType *int `json:"question_type,omitempty"` // 所关联面试题的类型

	Title *I18n `json:"title,omitempty"` // 关联面试题的名称

	Description *I18n `json:"description,omitempty"` // 关联面试题的描述

	Content *string `json:"content,omitempty"` // 面试者作答内容

	Abilities []*Ability `json:"abilities,omitempty"` // 能力项列表
}

type QuestionAssessmentBuilder struct {
	questionType     int // 所关联面试题的类型
	questionTypeFlag bool

	title     *I18n // 关联面试题的名称
	titleFlag bool

	description     *I18n // 关联面试题的描述
	descriptionFlag bool

	content     string // 面试者作答内容
	contentFlag bool

	abilities     []*Ability // 能力项列表
	abilitiesFlag bool
}

func NewQuestionAssessmentBuilder() *QuestionAssessmentBuilder {
	builder := &QuestionAssessmentBuilder{}
	return builder
}

// 所关联面试题的类型
//
// 示例值：1
func (builder *QuestionAssessmentBuilder) QuestionType(questionType int) *QuestionAssessmentBuilder {
	builder.questionType = questionType
	builder.questionTypeFlag = true
	return builder
}

// 关联面试题的名称
//
// 示例值：
func (builder *QuestionAssessmentBuilder) Title(title *I18n) *QuestionAssessmentBuilder {
	builder.title = title
	builder.titleFlag = true
	return builder
}

// 关联面试题的描述
//
// 示例值：
func (builder *QuestionAssessmentBuilder) Description(description *I18n) *QuestionAssessmentBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 面试者作答内容
//
// 示例值：test
func (builder *QuestionAssessmentBuilder) Content(content string) *QuestionAssessmentBuilder {
	builder.content = content
	builder.contentFlag = true
	return builder
}

// 能力项列表
//
// 示例值：
func (builder *QuestionAssessmentBuilder) Abilities(abilities []*Ability) *QuestionAssessmentBuilder {
	builder.abilities = abilities
	builder.abilitiesFlag = true
	return builder
}

func (builder *QuestionAssessmentBuilder) Build() *QuestionAssessment {
	req := &QuestionAssessment{}
	if builder.questionTypeFlag {
		req.QuestionType = &builder.questionType

	}
	if builder.titleFlag {
		req.Title = builder.title
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.contentFlag {
		req.Content = &builder.content

	}
	if builder.abilitiesFlag {
		req.Abilities = builder.abilities
	}
	return req
}

type RecommendedJobLevel struct {
	LowerLimitJobLevelName *I18n `json:"lower_limit_job_level_name,omitempty"` // 最低职级建议

	HigherLimitJobLevelName *I18n `json:"higher_limit_job_level_name,omitempty"` // 最低职级建议
}

type RecommendedJobLevelBuilder struct {
	lowerLimitJobLevelName     *I18n // 最低职级建议
	lowerLimitJobLevelNameFlag bool

	higherLimitJobLevelName     *I18n // 最低职级建议
	higherLimitJobLevelNameFlag bool
}

func NewRecommendedJobLevelBuilder() *RecommendedJobLevelBuilder {
	builder := &RecommendedJobLevelBuilder{}
	return builder
}

// 最低职级建议
//
// 示例值：
func (builder *RecommendedJobLevelBuilder) LowerLimitJobLevelName(lowerLimitJobLevelName *I18n) *RecommendedJobLevelBuilder {
	builder.lowerLimitJobLevelName = lowerLimitJobLevelName
	builder.lowerLimitJobLevelNameFlag = true
	return builder
}

// 最低职级建议
//
// 示例值：
func (builder *RecommendedJobLevelBuilder) HigherLimitJobLevelName(higherLimitJobLevelName *I18n) *RecommendedJobLevelBuilder {
	builder.higherLimitJobLevelName = higherLimitJobLevelName
	builder.higherLimitJobLevelNameFlag = true
	return builder
}

func (builder *RecommendedJobLevelBuilder) Build() *RecommendedJobLevel {
	req := &RecommendedJobLevel{}
	if builder.lowerLimitJobLevelNameFlag {
		req.LowerLimitJobLevelName = builder.lowerLimitJobLevelName
	}
	if builder.higherLimitJobLevelNameFlag {
		req.HigherLimitJobLevelName = builder.higherLimitJobLevelName
	}
	return req
}

type RecordScore struct {
	Score *float64 `json:"score,omitempty"` // 分数，即面试评价得分，精确到小数点后两位

	TotalScore *float64 `json:"total_score,omitempty"` // 满分，即面试评价的总分
}

type RecordScoreBuilder struct {
	score     float64 // 分数，即面试评价得分，精确到小数点后两位
	scoreFlag bool

	totalScore     float64 // 满分，即面试评价的总分
	totalScoreFlag bool
}

func NewRecordScoreBuilder() *RecordScoreBuilder {
	builder := &RecordScoreBuilder{}
	return builder
}

// 分数，即面试评价得分，精确到小数点后两位
//
// 示例值：100
func (builder *RecordScoreBuilder) Score(score float64) *RecordScoreBuilder {
	builder.score = score
	builder.scoreFlag = true
	return builder
}

// 满分，即面试评价的总分
//
// 示例值：100
func (builder *RecordScoreBuilder) TotalScore(totalScore float64) *RecordScoreBuilder {
	builder.totalScore = totalScore
	builder.totalScoreFlag = true
	return builder
}

func (builder *RecordScoreBuilder) Build() *RecordScore {
	req := &RecordScore{}
	if builder.scoreFlag {
		req.Score = &builder.score

	}
	if builder.totalScoreFlag {
		req.TotalScore = &builder.totalScore

	}
	return req
}

type RegistrationBasicInfo struct {
	Id *string `json:"id,omitempty"` // ID

	RegistrationTime *int64 `json:"registration_time,omitempty"` // 创建时间

	DownloadUrl *string `json:"download_url,omitempty"` // 下载链接

	Scenario *int `json:"scenario,omitempty"` // 登记表场景
}

type RegistrationBasicInfoBuilder struct {
	id     string // ID
	idFlag bool

	registrationTime     int64 // 创建时间
	registrationTimeFlag bool

	downloadUrl     string // 下载链接
	downloadUrlFlag bool

	scenario     int // 登记表场景
	scenarioFlag bool
}

func NewRegistrationBasicInfoBuilder() *RegistrationBasicInfoBuilder {
	builder := &RegistrationBasicInfoBuilder{}
	return builder
}

// ID
//
// 示例值：6833685612520950030
func (builder *RegistrationBasicInfoBuilder) Id(id string) *RegistrationBasicInfoBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 创建时间
//
// 示例值：1618494330932
func (builder *RegistrationBasicInfoBuilder) RegistrationTime(registrationTime int64) *RegistrationBasicInfoBuilder {
	builder.registrationTime = registrationTime
	builder.registrationTimeFlag = true
	return builder
}

// 下载链接
//
// 示例值：https://hire.feishu.cn/hire/file/blob/...token.../
func (builder *RegistrationBasicInfoBuilder) DownloadUrl(downloadUrl string) *RegistrationBasicInfoBuilder {
	builder.downloadUrl = downloadUrl
	builder.downloadUrlFlag = true
	return builder
}

// 登记表场景
//
// 示例值：5
func (builder *RegistrationBasicInfoBuilder) Scenario(scenario int) *RegistrationBasicInfoBuilder {
	builder.scenario = scenario
	builder.scenarioFlag = true
	return builder
}

func (builder *RegistrationBasicInfoBuilder) Build() *RegistrationBasicInfo {
	req := &RegistrationBasicInfo{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.registrationTimeFlag {
		req.RegistrationTime = &builder.registrationTime

	}
	if builder.downloadUrlFlag {
		req.DownloadUrl = &builder.downloadUrl

	}
	if builder.scenarioFlag {
		req.Scenario = &builder.scenario

	}
	return req
}

type TalentBlock struct {
	BlockedTime *string `json:"blocked_time,omitempty"` // 加入黑名单时间，毫秒级时间戳

	CreatorId *string `json:"creator_id,omitempty"` // 黑名单创建者 ID

	Reason *string `json:"reason,omitempty"` // 加入黑名单原因
}

type TalentBlockBuilder struct {
	blockedTime     string // 加入黑名单时间，毫秒级时间戳
	blockedTimeFlag bool

	creatorId     string // 黑名单创建者 ID
	creatorIdFlag bool

	reason     string // 加入黑名单原因
	reasonFlag bool
}

func NewTalentBlockBuilder() *TalentBlockBuilder {
	builder := &TalentBlockBuilder{}
	return builder
}

// 加入黑名单时间，毫秒级时间戳
//
// 示例值：1625656721
func (builder *TalentBlockBuilder) BlockedTime(blockedTime string) *TalentBlockBuilder {
	builder.blockedTime = blockedTime
	builder.blockedTimeFlag = true
	return builder
}

// 黑名单创建者 ID
//
// 示例值：6891560630172518670
func (builder *TalentBlockBuilder) CreatorId(creatorId string) *TalentBlockBuilder {
	builder.creatorId = creatorId
	builder.creatorIdFlag = true
	return builder
}

// 加入黑名单原因
//
// 示例值：人才作弊
func (builder *TalentBlockBuilder) Reason(reason string) *TalentBlockBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

func (builder *TalentBlockBuilder) Build() *TalentBlock {
	req := &TalentBlock{}
	if builder.blockedTimeFlag {
		req.BlockedTime = &builder.blockedTime

	}
	if builder.creatorIdFlag {
		req.CreatorId = &builder.creatorId

	}
	if builder.reasonFlag {
		req.Reason = &builder.reason

	}
	return req
}

type TalentCustomizedAttachment struct {
	FileId *string `json:"file_id,omitempty"` // 附件 ID

	FileName *string `json:"file_name,omitempty"` // 附件名称

	ContentType *string `json:"content_type,omitempty"` // 附件类型

	FileSize *int64 `json:"file_size,omitempty"` // 附件大小
}

type TalentCustomizedAttachmentBuilder struct {
	fileId     string // 附件 ID
	fileIdFlag bool

	fileName     string // 附件名称
	fileNameFlag bool

	contentType     string // 附件类型
	contentTypeFlag bool

	fileSize     int64 // 附件大小
	fileSizeFlag bool
}

func NewTalentCustomizedAttachmentBuilder() *TalentCustomizedAttachmentBuilder {
	builder := &TalentCustomizedAttachmentBuilder{}
	return builder
}

// 附件 ID
//
// 示例值：7140517838785481004
func (builder *TalentCustomizedAttachmentBuilder) FileId(fileId string) *TalentCustomizedAttachmentBuilder {
	builder.fileId = fileId
	builder.fileIdFlag = true
	return builder
}

// 附件名称
//
// 示例值：1.13测试1的面试记录.pdf
func (builder *TalentCustomizedAttachmentBuilder) FileName(fileName string) *TalentCustomizedAttachmentBuilder {
	builder.fileName = fileName
	builder.fileNameFlag = true
	return builder
}

// 附件类型
//
// 示例值：application/pdf
func (builder *TalentCustomizedAttachmentBuilder) ContentType(contentType string) *TalentCustomizedAttachmentBuilder {
	builder.contentType = contentType
	builder.contentTypeFlag = true
	return builder
}

// 附件大小
//
// 示例值：16615
func (builder *TalentCustomizedAttachmentBuilder) FileSize(fileSize int64) *TalentCustomizedAttachmentBuilder {
	builder.fileSize = fileSize
	builder.fileSizeFlag = true
	return builder
}

func (builder *TalentCustomizedAttachmentBuilder) Build() *TalentCustomizedAttachment {
	req := &TalentCustomizedAttachment{}
	if builder.fileIdFlag {
		req.FileId = &builder.fileId

	}
	if builder.fileNameFlag {
		req.FileName = &builder.fileName

	}
	if builder.contentTypeFlag {
		req.ContentType = &builder.contentType

	}
	if builder.fileSizeFlag {
		req.FileSize = &builder.fileSize

	}
	return req
}

type TalentCustomizedDataChild struct {
	ObjectId *string `json:"object_id,omitempty"` // 自定义字段 ID

	Name *I18n `json:"name,omitempty"` // 字段名称

	ObjectType *int `json:"object_type,omitempty"` // 字段类型

	Value *TalentCustomizedValue `json:"value,omitempty"` // 自定义字段值
}

type TalentCustomizedDataChildBuilder struct {
	objectId     string // 自定义字段 ID
	objectIdFlag bool

	name     *I18n // 字段名称
	nameFlag bool

	objectType     int // 字段类型
	objectTypeFlag bool

	value     *TalentCustomizedValue // 自定义字段值
	valueFlag bool
}

func NewTalentCustomizedDataChildBuilder() *TalentCustomizedDataChildBuilder {
	builder := &TalentCustomizedDataChildBuilder{}
	return builder
}

// 自定义字段 ID
//
// 示例值：xxxx
func (builder *TalentCustomizedDataChildBuilder) ObjectId(objectId string) *TalentCustomizedDataChildBuilder {
	builder.objectId = objectId
	builder.objectIdFlag = true
	return builder
}

// 字段名称
//
// 示例值：
func (builder *TalentCustomizedDataChildBuilder) Name(name *I18n) *TalentCustomizedDataChildBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 字段类型
//
// 示例值：1
func (builder *TalentCustomizedDataChildBuilder) ObjectType(objectType int) *TalentCustomizedDataChildBuilder {
	builder.objectType = objectType
	builder.objectTypeFlag = true
	return builder
}

// 自定义字段值
//
// 示例值：
func (builder *TalentCustomizedDataChildBuilder) Value(value *TalentCustomizedValue) *TalentCustomizedDataChildBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *TalentCustomizedDataChildBuilder) Build() *TalentCustomizedDataChild {
	req := &TalentCustomizedDataChild{}
	if builder.objectIdFlag {
		req.ObjectId = &builder.objectId

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.objectTypeFlag {
		req.ObjectType = &builder.objectType

	}
	if builder.valueFlag {
		req.Value = builder.value
	}
	return req
}

type TalentCustomizedOption struct {
	Key *string `json:"key,omitempty"` // 选项 ID

	Name *I18n `json:"name,omitempty"` // 选项名称
}

type TalentCustomizedOptionBuilder struct {
	key     string // 选项 ID
	keyFlag bool

	name     *I18n // 选项名称
	nameFlag bool
}

func NewTalentCustomizedOptionBuilder() *TalentCustomizedOptionBuilder {
	builder := &TalentCustomizedOptionBuilder{}
	return builder
}

// 选项 ID
//
// 示例值：AA
func (builder *TalentCustomizedOptionBuilder) Key(key string) *TalentCustomizedOptionBuilder {
	builder.key = key
	builder.keyFlag = true
	return builder
}

// 选项名称
//
// 示例值：
func (builder *TalentCustomizedOptionBuilder) Name(name *I18n) *TalentCustomizedOptionBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

func (builder *TalentCustomizedOptionBuilder) Build() *TalentCustomizedOption {
	req := &TalentCustomizedOption{}
	if builder.keyFlag {
		req.Key = &builder.key

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	return req
}

type TalentCustomizedTimeRange struct {
	StartTime *string `json:"start_time,omitempty"` // 开始时间

	EndTime *string `json:"end_time,omitempty"` // 结束时间，当值为至今时，返回「-」
}

type TalentCustomizedTimeRangeBuilder struct {
	startTime     string // 开始时间
	startTimeFlag bool

	endTime     string // 结束时间，当值为至今时，返回「-」
	endTimeFlag bool
}

func NewTalentCustomizedTimeRangeBuilder() *TalentCustomizedTimeRangeBuilder {
	builder := &TalentCustomizedTimeRangeBuilder{}
	return builder
}

// 开始时间
//
// 示例值：1625456721
func (builder *TalentCustomizedTimeRangeBuilder) StartTime(startTime string) *TalentCustomizedTimeRangeBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 结束时间，当值为至今时，返回「-」
//
// 示例值：1625656721
func (builder *TalentCustomizedTimeRangeBuilder) EndTime(endTime string) *TalentCustomizedTimeRangeBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

func (builder *TalentCustomizedTimeRangeBuilder) Build() *TalentCustomizedTimeRange {
	req := &TalentCustomizedTimeRange{}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	return req
}

type TalentCustomizedValue struct {
	Content *string `json:"content,omitempty"` // 当字段类型为单行文本、多行文本、模块、默认字段时，从此字段取值

	Option *TalentCustomizedOption `json:"option,omitempty"` // 当字段类型为单选时，从此字段取值

	OptionList []*TalentCustomizedOption `json:"option_list,omitempty"` // 当字段类型为多选时，从此字段取值

	TimeRange *TalentCustomizedTimeRange `json:"time_range,omitempty"` // 当字段类型为时间段时，从此字段取值

	Time *string `json:"time,omitempty"` // 当字段类型为日期选择、月份选择、年份选择时，从此字段取值，该字段是秒级时间戳

	Number *string `json:"number,omitempty"` // 当字段类型为数字时，从此字段取值

	CustomizedAttachment []*TalentCustomizedAttachment `json:"customized_attachment,omitempty"` // 当字段类型为附件时，从此字段取值
}

type TalentCustomizedValueBuilder struct {
	content     string // 当字段类型为单行文本、多行文本、模块、默认字段时，从此字段取值
	contentFlag bool

	option     *TalentCustomizedOption // 当字段类型为单选时，从此字段取值
	optionFlag bool

	optionList     []*TalentCustomizedOption // 当字段类型为多选时，从此字段取值
	optionListFlag bool

	timeRange     *TalentCustomizedTimeRange // 当字段类型为时间段时，从此字段取值
	timeRangeFlag bool

	time     string // 当字段类型为日期选择、月份选择、年份选择时，从此字段取值，该字段是秒级时间戳
	timeFlag bool

	number     string // 当字段类型为数字时，从此字段取值
	numberFlag bool

	customizedAttachment     []*TalentCustomizedAttachment // 当字段类型为附件时，从此字段取值
	customizedAttachmentFlag bool
}

func NewTalentCustomizedValueBuilder() *TalentCustomizedValueBuilder {
	builder := &TalentCustomizedValueBuilder{}
	return builder
}

// 当字段类型为单行文本、多行文本、模块、默认字段时，从此字段取值
//
// 示例值：text
func (builder *TalentCustomizedValueBuilder) Content(content string) *TalentCustomizedValueBuilder {
	builder.content = content
	builder.contentFlag = true
	return builder
}

// 当字段类型为单选时，从此字段取值
//
// 示例值：
func (builder *TalentCustomizedValueBuilder) Option(option *TalentCustomizedOption) *TalentCustomizedValueBuilder {
	builder.option = option
	builder.optionFlag = true
	return builder
}

// 当字段类型为多选时，从此字段取值
//
// 示例值：
func (builder *TalentCustomizedValueBuilder) OptionList(optionList []*TalentCustomizedOption) *TalentCustomizedValueBuilder {
	builder.optionList = optionList
	builder.optionListFlag = true
	return builder
}

// 当字段类型为时间段时，从此字段取值
//
// 示例值：
func (builder *TalentCustomizedValueBuilder) TimeRange(timeRange *TalentCustomizedTimeRange) *TalentCustomizedValueBuilder {
	builder.timeRange = timeRange
	builder.timeRangeFlag = true
	return builder
}

// 当字段类型为日期选择、月份选择、年份选择时，从此字段取值，该字段是秒级时间戳
//
// 示例值：1625456721
func (builder *TalentCustomizedValueBuilder) Time(time string) *TalentCustomizedValueBuilder {
	builder.time = time
	builder.timeFlag = true
	return builder
}

// 当字段类型为数字时，从此字段取值
//
// 示例值：111
func (builder *TalentCustomizedValueBuilder) Number(number string) *TalentCustomizedValueBuilder {
	builder.number = number
	builder.numberFlag = true
	return builder
}

// 当字段类型为附件时，从此字段取值
//
// 示例值：
func (builder *TalentCustomizedValueBuilder) CustomizedAttachment(customizedAttachment []*TalentCustomizedAttachment) *TalentCustomizedValueBuilder {
	builder.customizedAttachment = customizedAttachment
	builder.customizedAttachmentFlag = true
	return builder
}

func (builder *TalentCustomizedValueBuilder) Build() *TalentCustomizedValue {
	req := &TalentCustomizedValue{}
	if builder.contentFlag {
		req.Content = &builder.content

	}
	if builder.optionFlag {
		req.Option = builder.option
	}
	if builder.optionListFlag {
		req.OptionList = builder.optionList
	}
	if builder.timeRangeFlag {
		req.TimeRange = builder.timeRange
	}
	if builder.timeFlag {
		req.Time = &builder.time

	}
	if builder.numberFlag {
		req.Number = &builder.number

	}
	if builder.customizedAttachmentFlag {
		req.CustomizedAttachment = builder.customizedAttachment
	}
	return req
}

type TalentFolder struct {
	Name *string `json:"name,omitempty"` // 名称

	FolderId *string `json:"folder_id,omitempty"` // 文件夹 ID

	OwnerId *string `json:"owner_id,omitempty"` // 所有者 ID

	AddTime *string `json:"add_time,omitempty"` // 文件夹加入时间,毫秒级时间戳
}

type TalentFolderBuilder struct {
	name     string // 名称
	nameFlag bool

	folderId     string // 文件夹 ID
	folderIdFlag bool

	ownerId     string // 所有者 ID
	ownerIdFlag bool

	addTime     string // 文件夹加入时间,毫秒级时间戳
	addTimeFlag bool
}

func NewTalentFolderBuilder() *TalentFolderBuilder {
	builder := &TalentFolderBuilder{}
	return builder
}

// 名称
//
// 示例值：人才文件夹A1
func (builder *TalentFolderBuilder) Name(name string) *TalentFolderBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 文件夹 ID
//
// 示例值：7041806543797995820
func (builder *TalentFolderBuilder) FolderId(folderId string) *TalentFolderBuilder {
	builder.folderId = folderId
	builder.folderIdFlag = true
	return builder
}

// 所有者 ID
//
// 示例值：ou_85bb308c57f597471cd2bb5b4f580245
func (builder *TalentFolderBuilder) OwnerId(ownerId string) *TalentFolderBuilder {
	builder.ownerId = ownerId
	builder.ownerIdFlag = true
	return builder
}

// 文件夹加入时间,毫秒级时间戳
//
// 示例值：1634801678103
func (builder *TalentFolderBuilder) AddTime(addTime string) *TalentFolderBuilder {
	builder.addTime = addTime
	builder.addTimeFlag = true
	return builder
}

func (builder *TalentFolderBuilder) Build() *TalentFolder {
	req := &TalentFolder{}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.folderIdFlag {
		req.FolderId = &builder.folderId

	}
	if builder.ownerIdFlag {
		req.OwnerId = &builder.ownerId

	}
	if builder.addTimeFlag {
		req.AddTime = &builder.addTime

	}
	return req
}

type TalentInterviewRegistrationSimple struct {
	Id *string `json:"id,omitempty"` // ID

	RegistrationTime *int64 `json:"registration_time,omitempty"` // 创建时间

	DownloadUrl *string `json:"download_url,omitempty"` // 下载链接
}

type TalentInterviewRegistrationSimpleBuilder struct {
	id     string // ID
	idFlag bool

	registrationTime     int64 // 创建时间
	registrationTimeFlag bool

	downloadUrl     string // 下载链接
	downloadUrlFlag bool
}

func NewTalentInterviewRegistrationSimpleBuilder() *TalentInterviewRegistrationSimpleBuilder {
	builder := &TalentInterviewRegistrationSimpleBuilder{}
	return builder
}

// ID
//
// 示例值：6833685612520950030
func (builder *TalentInterviewRegistrationSimpleBuilder) Id(id string) *TalentInterviewRegistrationSimpleBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 创建时间
//
// 示例值：1618494330932
func (builder *TalentInterviewRegistrationSimpleBuilder) RegistrationTime(registrationTime int64) *TalentInterviewRegistrationSimpleBuilder {
	builder.registrationTime = registrationTime
	builder.registrationTimeFlag = true
	return builder
}

// 下载链接
//
// 示例值：https://hire.feishu.cn/hire/file/blob/...token.../
func (builder *TalentInterviewRegistrationSimpleBuilder) DownloadUrl(downloadUrl string) *TalentInterviewRegistrationSimpleBuilder {
	builder.downloadUrl = downloadUrl
	builder.downloadUrlFlag = true
	return builder
}

func (builder *TalentInterviewRegistrationSimpleBuilder) Build() *TalentInterviewRegistrationSimple {
	req := &TalentInterviewRegistrationSimple{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.registrationTimeFlag {
		req.RegistrationTime = &builder.registrationTime

	}
	if builder.downloadUrlFlag {
		req.DownloadUrl = &builder.downloadUrl

	}
	return req
}

type TalentNote struct {
	Id *string `json:"id,omitempty"` // 备注 ID

	TalentId *string `json:"talent_id,omitempty"` // 人才 ID

	ApplicationId *string `json:"application_id,omitempty"` // 投递 ID

	CreateTime *string `json:"create_time,omitempty"` // 人才备注创建时间,毫秒级时间戳

	UpdateTime *string `json:"update_time,omitempty"` // 人才备注更新时间,毫秒级时间戳

	CreatorId *string `json:"creator_id,omitempty"` // 创建人ID

	Content *string `json:"content,omitempty"` // 备注内容

	Privacy *int `json:"privacy,omitempty"` // 备注私密属性
}

type TalentNoteBuilder struct {
	id     string // 备注 ID
	idFlag bool

	talentId     string // 人才 ID
	talentIdFlag bool

	applicationId     string // 投递 ID
	applicationIdFlag bool

	createTime     string // 人才备注创建时间,毫秒级时间戳
	createTimeFlag bool

	updateTime     string // 人才备注更新时间,毫秒级时间戳
	updateTimeFlag bool

	creatorId     string // 创建人ID
	creatorIdFlag bool

	content     string // 备注内容
	contentFlag bool

	privacy     int // 备注私密属性
	privacyFlag bool
}

func NewTalentNoteBuilder() *TalentNoteBuilder {
	builder := &TalentNoteBuilder{}
	return builder
}

// 备注 ID
//
// 示例值：6949805467799537964
func (builder *TalentNoteBuilder) Id(id string) *TalentNoteBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 人才 ID
//
// 示例值：6916472453069883661
func (builder *TalentNoteBuilder) TalentId(talentId string) *TalentNoteBuilder {
	builder.talentId = talentId
	builder.talentIdFlag = true
	return builder
}

// 投递 ID
//
// 示例值：6891565253964859661
func (builder *TalentNoteBuilder) ApplicationId(applicationId string) *TalentNoteBuilder {
	builder.applicationId = applicationId
	builder.applicationIdFlag = true
	return builder
}

// 人才备注创建时间,毫秒级时间戳
//
// 示例值：1618209327096
func (builder *TalentNoteBuilder) CreateTime(createTime string) *TalentNoteBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 人才备注更新时间,毫秒级时间戳
//
// 示例值：1618209327096
func (builder *TalentNoteBuilder) UpdateTime(updateTime string) *TalentNoteBuilder {
	builder.updateTime = updateTime
	builder.updateTimeFlag = true
	return builder
}

// 创建人ID
//
// 示例值：ou_f476cb099ac9227c9bae09ce46112579
func (builder *TalentNoteBuilder) CreatorId(creatorId string) *TalentNoteBuilder {
	builder.creatorId = creatorId
	builder.creatorIdFlag = true
	return builder
}

// 备注内容
//
// 示例值：测试备注内容
func (builder *TalentNoteBuilder) Content(content string) *TalentNoteBuilder {
	builder.content = content
	builder.contentFlag = true
	return builder
}

// 备注私密属性
//
// 示例值：1
func (builder *TalentNoteBuilder) Privacy(privacy int) *TalentNoteBuilder {
	builder.privacy = privacy
	builder.privacyFlag = true
	return builder
}

func (builder *TalentNoteBuilder) Build() *TalentNote {
	req := &TalentNote{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.talentIdFlag {
		req.TalentId = &builder.talentId

	}
	if builder.applicationIdFlag {
		req.ApplicationId = &builder.applicationId

	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.updateTimeFlag {
		req.UpdateTime = &builder.updateTime

	}
	if builder.creatorIdFlag {
		req.CreatorId = &builder.creatorId

	}
	if builder.contentFlag {
		req.Content = &builder.content

	}
	if builder.privacyFlag {
		req.Privacy = &builder.privacy

	}
	return req
}

type TalentPool struct {
	Id *string `json:"id,omitempty"` // 人才库 ID

	Name *I18n `json:"name,omitempty"` // 人才库名称

	Description *I18n `json:"description,omitempty"` // 人才库描述

	AddTime *string `json:"add_time,omitempty"` // 人才库加入时间,毫秒级时间戳
}

type TalentPoolBuilder struct {
	id     string // 人才库 ID
	idFlag bool

	name     *I18n // 人才库名称
	nameFlag bool

	description     *I18n // 人才库描述
	descriptionFlag bool

	addTime     string // 人才库加入时间,毫秒级时间戳
	addTimeFlag bool
}

func NewTalentPoolBuilder() *TalentPoolBuilder {
	builder := &TalentPoolBuilder{}
	return builder
}

// 人才库 ID
//
// 示例值：6891560630172518670
func (builder *TalentPoolBuilder) Id(id string) *TalentPoolBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 人才库名称
//
// 示例值：
func (builder *TalentPoolBuilder) Name(name *I18n) *TalentPoolBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 人才库描述
//
// 示例值：
func (builder *TalentPoolBuilder) Description(description *I18n) *TalentPoolBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 人才库加入时间,毫秒级时间戳
//
// 示例值：1634801678103
func (builder *TalentPoolBuilder) AddTime(addTime string) *TalentPoolBuilder {
	builder.addTime = addTime
	builder.addTimeFlag = true
	return builder
}

func (builder *TalentPoolBuilder) Build() *TalentPool {
	req := &TalentPool{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.addTimeFlag {
		req.AddTime = &builder.addTime

	}
	return req
}

type TalentResumeAttachment struct {
	Id *string `json:"id,omitempty"` // ID

	Name *string `json:"name,omitempty"` // 附件名

	Mime *string `json:"mime,omitempty"` // 附件MIME类型

	CreateTime *string `json:"create_time,omitempty"` // 创建时间戳
}

type TalentResumeAttachmentBuilder struct {
	id     string // ID
	idFlag bool

	name     string // 附件名
	nameFlag bool

	mime     string // 附件MIME类型
	mimeFlag bool

	createTime     string // 创建时间戳
	createTimeFlag bool
}

func NewTalentResumeAttachmentBuilder() *TalentResumeAttachmentBuilder {
	builder := &TalentResumeAttachmentBuilder{}
	return builder
}

// ID
//
// 示例值：6891560630172518670
func (builder *TalentResumeAttachmentBuilder) Id(id string) *TalentResumeAttachmentBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 附件名
//
// 示例值：1.pdf
func (builder *TalentResumeAttachmentBuilder) Name(name string) *TalentResumeAttachmentBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 附件MIME类型
//
// 示例值：application/pdf
func (builder *TalentResumeAttachmentBuilder) Mime(mime string) *TalentResumeAttachmentBuilder {
	builder.mime = mime
	builder.mimeFlag = true
	return builder
}

// 创建时间戳
//
// 示例值：1734348840749
func (builder *TalentResumeAttachmentBuilder) CreateTime(createTime string) *TalentResumeAttachmentBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

func (builder *TalentResumeAttachmentBuilder) Build() *TalentResumeAttachment {
	req := &TalentResumeAttachment{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.mimeFlag {
		req.Mime = &builder.mime

	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	return req
}

type TalentResumeSource struct {
	Id *string `json:"id,omitempty"` // ID

	ZhName *string `json:"zh_name,omitempty"` // 中文名

	EnName *string `json:"en_name,omitempty"` // 英文名
}

type TalentResumeSourceBuilder struct {
	id     string // ID
	idFlag bool

	zhName     string // 中文名
	zhNameFlag bool

	enName     string // 英文名
	enNameFlag bool
}

func NewTalentResumeSourceBuilder() *TalentResumeSourceBuilder {
	builder := &TalentResumeSourceBuilder{}
	return builder
}

// ID
//
// 示例值：6891560630172518670
func (builder *TalentResumeSourceBuilder) Id(id string) *TalentResumeSourceBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 中文名
//
// 示例值：猎头
func (builder *TalentResumeSourceBuilder) ZhName(zhName string) *TalentResumeSourceBuilder {
	builder.zhName = zhName
	builder.zhNameFlag = true
	return builder
}

// 英文名
//
// 示例值：Hunter
func (builder *TalentResumeSourceBuilder) EnName(enName string) *TalentResumeSourceBuilder {
	builder.enName = enName
	builder.enNameFlag = true
	return builder
}

func (builder *TalentResumeSourceBuilder) Build() *TalentResumeSource {
	req := &TalentResumeSource{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.zhNameFlag {
		req.ZhName = &builder.zhName

	}
	if builder.enNameFlag {
		req.EnName = &builder.enName

	}
	return req
}

type TalentSimilar struct {
	IsSimilarTalent *bool `json:"is_similar_talent,omitempty"` // 是否相似人才

	SimilarTalentIdList []string `json:"similar_talent_id_list,omitempty"` // 相似人才 ID 列表
}

type TalentSimilarBuilder struct {
	isSimilarTalent     bool // 是否相似人才
	isSimilarTalentFlag bool

	similarTalentIdList     []string // 相似人才 ID 列表
	similarTalentIdListFlag bool
}

func NewTalentSimilarBuilder() *TalentSimilarBuilder {
	builder := &TalentSimilarBuilder{}
	return builder
}

// 是否相似人才
//
// 示例值：true
func (builder *TalentSimilarBuilder) IsSimilarTalent(isSimilarTalent bool) *TalentSimilarBuilder {
	builder.isSimilarTalent = isSimilarTalent
	builder.isSimilarTalentFlag = true
	return builder
}

// 相似人才 ID 列表
//
// 示例值：
func (builder *TalentSimilarBuilder) SimilarTalentIdList(similarTalentIdList []string) *TalentSimilarBuilder {
	builder.similarTalentIdList = similarTalentIdList
	builder.similarTalentIdListFlag = true
	return builder
}

func (builder *TalentSimilarBuilder) Build() *TalentSimilar {
	req := &TalentSimilar{}
	if builder.isSimilarTalentFlag {
		req.IsSimilarTalent = &builder.isSimilarTalent

	}
	if builder.similarTalentIdListFlag {
		req.SimilarTalentIdList = builder.similarTalentIdList
	}
	return req
}

type TalentTag struct {
	Id *string `json:"id,omitempty"` // 标签 ID

	Name *I18n `json:"name,omitempty"` // 标签名称

	Description *I18n `json:"description,omitempty"` // 描述名称

	Type *int `json:"type,omitempty"` // 标签类型
}

type TalentTagBuilder struct {
	id     string // 标签 ID
	idFlag bool

	name     *I18n // 标签名称
	nameFlag bool

	description     *I18n // 描述名称
	descriptionFlag bool

	type_    int // 标签类型
	typeFlag bool
}

func NewTalentTagBuilder() *TalentTagBuilder {
	builder := &TalentTagBuilder{}
	return builder
}

// 标签 ID
//
// 示例值：7140517838785481004
func (builder *TalentTagBuilder) Id(id string) *TalentTagBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 标签名称
//
// 示例值：
func (builder *TalentTagBuilder) Name(name *I18n) *TalentTagBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 描述名称
//
// 示例值：
func (builder *TalentTagBuilder) Description(description *I18n) *TalentTagBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 标签类型
//
// 示例值：1
func (builder *TalentTagBuilder) Type(type_ int) *TalentTagBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

func (builder *TalentTagBuilder) Build() *TalentTag {
	req := &TalentTag{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	return req
}

type GetInterviewRecordReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetInterviewRecordReqBuilder() *GetInterviewRecordReqBuilder {
	builder := &GetInterviewRecordReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 面试记录ID
//
// 示例值：7171693733661327361
func (builder *GetInterviewRecordReqBuilder) InterviewRecordId(interviewRecordId string) *GetInterviewRecordReqBuilder {
	builder.apiReq.PathParams.Set("interview_record_id", fmt.Sprint(interviewRecordId))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *GetInterviewRecordReqBuilder) UserIdType(userIdType string) *GetInterviewRecordReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetInterviewRecordReqBuilder) Build() *GetInterviewRecordReq {
	req := &GetInterviewRecordReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetInterviewRecordReq struct {
	apiReq *larkcore.ApiReq
}

type GetInterviewRecordRespData struct {
	InterviewRecord *InterviewRecord `json:"interview_record,omitempty"` //
}

type GetInterviewRecordResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetInterviewRecordRespData `json:"data"` // 业务数据
}

func (resp *GetInterviewRecordResp) Success() bool {
	return resp.Code == 0
}

type ListInterviewRecordReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListInterviewRecordReqBuilder() *ListInterviewRecordReqBuilder {
	builder := &ListInterviewRecordReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListInterviewRecordReqBuilder) Limit(limit int) *ListInterviewRecordReqBuilder {
	builder.limit = limit
	return builder
}

// 面试评价ID列表，使用该筛选项时不会分页
//
// 示例值：
func (builder *ListInterviewRecordReqBuilder) Ids(ids []string) *ListInterviewRecordReqBuilder {
	for _, v := range ids {
		builder.apiReq.QueryParams.Add("ids", fmt.Sprint(v))
	}
	return builder
}

// 分页大小
//
// 示例值：
func (builder *ListInterviewRecordReqBuilder) PageSize(pageSize int) *ListInterviewRecordReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：
func (builder *ListInterviewRecordReqBuilder) PageToken(pageToken string) *ListInterviewRecordReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *ListInterviewRecordReqBuilder) UserIdType(userIdType string) *ListInterviewRecordReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *ListInterviewRecordReqBuilder) Build() *ListInterviewRecordReq {
	req := &ListInterviewRecordReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListInterviewRecordReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListInterviewRecordRespData struct {
	Items []*InterviewRecord `json:"items,omitempty"` // 面试评价详细信息列表

	PageToken *string `json:"page_token,omitempty"` //

	HasMore *bool `json:"has_more,omitempty"` //
}

type ListInterviewRecordResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListInterviewRecordRespData `json:"data"` // 业务数据
}

func (resp *ListInterviewRecordResp) Success() bool {
	return resp.Code == 0
}

type GetTalentReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetTalentReqBuilder() *GetTalentReqBuilder {
	builder := &GetTalentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 人才 ID
//
// 示例值：6960663240925956555
func (builder *GetTalentReqBuilder) TalentId(talentId string) *GetTalentReqBuilder {
	builder.apiReq.PathParams.Set("talent_id", fmt.Sprint(talentId))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *GetTalentReqBuilder) UserIdType(userIdType string) *GetTalentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetTalentReqBuilder) Build() *GetTalentReq {
	req := &GetTalentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetTalentReq struct {
	apiReq *larkcore.ApiReq
}

type GetTalentRespData struct {
	TalentId *string `json:"talent_id,omitempty"` // ID

	BasicInfo *CompositeTalentBasicInfo `json:"basic_info,omitempty"` // 基础信息

	EducationList []*CompositeTalentEducationInfo `json:"education_list,omitempty"` // 教育经历

	CareerList []*CompositeTalentCareerInfo `json:"career_list,omitempty"` // 工作经历

	ProjectList []*CompositeTalentProjectInfo `json:"project_list,omitempty"` // 项目经历

	WorksList []*CompositeTalentWorksInfo `json:"works_list,omitempty"` // 作品集

	AwardList []*CompositeTalentAwardInfo `json:"award_list,omitempty"` // 获奖列表

	LanguageList []*CompositeTalentLanguageInfo `json:"language_list,omitempty"` // 语言列表

	SnsList []*CompositeTalentSnsInfo `json:"sns_list,omitempty"` // SNS列表

	ResumeSourceList []*TalentResumeSource `json:"resume_source_list,omitempty"` // 简历来源

	InternshipList []*CompositeTalentInternshipInfo `json:"internship_list,omitempty"` // 实习经历

	CustomizedDataList []*CompositeTalentCustomizedData `json:"customized_data_list,omitempty"` // 自定义字段

	ResumeAttachmentIdList []string `json:"resume_attachment_id_list,omitempty"` // 简历附件id列表（按照简历创建时间降序）（废弃，请使用resume_attachment_list代替）

	ResumeAttachmentList []*TalentResumeAttachment `json:"resume_attachment_list,omitempty"` // 简历附件列表（按照简历创建时间降序）

	InterviewRegistrationList []*TalentInterviewRegistrationSimple `json:"interview_registration_list,omitempty"` // 面试登记表

	RegistrationList []*RegistrationBasicInfo `json:"registration_list,omitempty"` // 登记表列表

	IsOnboarded *bool `json:"is_onboarded,omitempty"` // 是否已入职

	IsInAgencyPeriod *bool `json:"is_in_agency_period,omitempty"` // 是否在猎头保护期

	TopDegree *int `json:"top_degree,omitempty"` // 最高学历 参考 DegreeType 枚举

	TalentPoolIdList []string `json:"talent_pool_id_list,omitempty"` // 人才已加入的人才库列表

	TalentFolderRefListV2 []*TalentFolder `json:"talent_folder_ref_list_v2,omitempty"` // 文件夹列表

	TagList []*TalentTag `json:"tag_list,omitempty"` // 标签列表

	SimilarInfoV2 *TalentSimilar `json:"similar_info_v2,omitempty"` // 相似人才信息

	BlockInfo *TalentBlock `json:"block_info,omitempty"` // 人才黑名单详情

	TalentPoolRefListV2 []*TalentPool `json:"talent_pool_ref_list_v2,omitempty"` // 人才已经加入的人才库列表

	NoteListV2 []*TalentNote `json:"note_list_v2,omitempty"` // 备注列表
}

type GetTalentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetTalentRespData `json:"data"` // 业务数据
}

func (resp *GetTalentResp) Success() bool {
	return resp.Code == 0
}

type ListInterviewRecordIterator struct {
	nextPageToken *string
	items         []*InterviewRecord
	index         int
	limit         int
	ctx           context.Context
	req           *ListInterviewRecordReq
	listFunc      func(ctx context.Context, req *ListInterviewRecordReq, options ...larkcore.RequestOptionFunc) (*ListInterviewRecordResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListInterviewRecordIterator) Next() (bool, *InterviewRecord, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *ListInterviewRecordIterator) NextPageToken() *string {
	return iterator.nextPageToken
}
