gitee.com/larksuite/oapi-sdk-go/v3@v3.0.3/service/okr/v1/model.go (about)

     1  // Package okr code generated by oapi sdk gen
     2  /*
     3   * MIT License
     4   *
     5   * Copyright (c) 2022 Lark Technologies Pte. Ltd.
     6   *
     7   * 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:
     8   *
     9   * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software.
    10   *
    11   * 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.
    12   */
    13  
    14  package larkokr
    15  
    16  import (
    17  	"io"
    18  
    19  	"bytes"
    20  
    21  	"fmt"
    22  
    23  	"gitee.com/larksuite/oapi-sdk-go/v3/core"
    24  )
    25  
    26  const (
    27  	TargetTypeOkr的O  = 2 // okr的O
    28  	TargetTypeOkr的KR = 3 // okr的KR
    29  
    30  )
    31  
    32  const (
    33  	UserIdTypeUserId        = "user_id"         // 以user_id来识别用户
    34  	UserIdTypeUnionId       = "union_id"        // 以union_id来识别用户
    35  	UserIdTypeOpenId        = "open_id"         // 以open_id来识别用户
    36  	UserIdTypePeopleAdminId = "people_admin_id" // 以people_admin_id来识别用户
    37  )
    38  
    39  const (
    40  	TargetTypeCreateProgressRecordOkr的O  = 2 // okr的O
    41  	TargetTypeCreateProgressRecordOkr的KR = 3 // okr的KR
    42  
    43  )
    44  
    45  const (
    46  	UserIdTypeListUserOkrUserId        = "user_id"         // 以user_id来识别用户
    47  	UserIdTypeListUserOkrUnionId       = "union_id"        // 以union_id来识别用户
    48  	UserIdTypeListUserOkrOpenId        = "open_id"         // 以open_id来识别用户
    49  	UserIdTypeListUserOkrPeopleAdminId = "people_admin_id" // 以people_admin_id来识别用户
    50  )
    51  
    52  type AlignObjective struct {
    53  	Id     *string `json:"id,omitempty"`      // Objective ID
    54  	OkrId  *string `json:"okr_id,omitempty"`  // OKR ID
    55  	UserId *string `json:"user_id,omitempty"` // 用户 UUID
    56  }
    57  
    58  type AlignObjectiveBuilder struct {
    59  	id         string // Objective ID
    60  	idFlag     bool
    61  	okrId      string // OKR ID
    62  	okrIdFlag  bool
    63  	userId     string // 用户 UUID
    64  	userIdFlag bool
    65  }
    66  
    67  func NewAlignObjectiveBuilder() *AlignObjectiveBuilder {
    68  	builder := &AlignObjectiveBuilder{}
    69  	return builder
    70  }
    71  
    72  // Objective ID
    73  //
    74  // 示例值:
    75  func (builder *AlignObjectiveBuilder) Id(id string) *AlignObjectiveBuilder {
    76  	builder.id = id
    77  	builder.idFlag = true
    78  	return builder
    79  }
    80  
    81  // OKR ID
    82  //
    83  // 示例值:
    84  func (builder *AlignObjectiveBuilder) OkrId(okrId string) *AlignObjectiveBuilder {
    85  	builder.okrId = okrId
    86  	builder.okrIdFlag = true
    87  	return builder
    88  }
    89  
    90  // 用户 UUID
    91  //
    92  // 示例值:
    93  func (builder *AlignObjectiveBuilder) UserId(userId string) *AlignObjectiveBuilder {
    94  	builder.userId = userId
    95  	builder.userIdFlag = true
    96  	return builder
    97  }
    98  
    99  func (builder *AlignObjectiveBuilder) Build() *AlignObjective {
   100  	req := &AlignObjective{}
   101  	if builder.idFlag {
   102  		req.Id = &builder.id
   103  
   104  	}
   105  	if builder.okrIdFlag {
   106  		req.OkrId = &builder.okrId
   107  
   108  	}
   109  	if builder.userIdFlag {
   110  		req.UserId = &builder.userId
   111  
   112  	}
   113  	return req
   114  }
   115  
   116  type ContentBlock struct {
   117  	Blocks []*ContentBlockElement `json:"blocks,omitempty"` // 文档结构是按行排列的,每行内容是一个 Block
   118  }
   119  
   120  type ContentBlockBuilder struct {
   121  	blocks     []*ContentBlockElement // 文档结构是按行排列的,每行内容是一个 Block
   122  	blocksFlag bool
   123  }
   124  
   125  func NewContentBlockBuilder() *ContentBlockBuilder {
   126  	builder := &ContentBlockBuilder{}
   127  	return builder
   128  }
   129  
   130  // 文档结构是按行排列的,每行内容是一个 Block
   131  //
   132  // 示例值:
   133  func (builder *ContentBlockBuilder) Blocks(blocks []*ContentBlockElement) *ContentBlockBuilder {
   134  	builder.blocks = blocks
   135  	builder.blocksFlag = true
   136  	return builder
   137  }
   138  
   139  func (builder *ContentBlockBuilder) Build() *ContentBlock {
   140  	req := &ContentBlock{}
   141  	if builder.blocksFlag {
   142  		req.Blocks = builder.blocks
   143  	}
   144  	return req
   145  }
   146  
   147  type ContentBlockElement struct {
   148  	Type      *string           `json:"type,omitempty"`      // 文档元素类型
   149  	Paragraph *ContentParagraph `json:"paragraph,omitempty"` // 文本段落
   150  	Gallery   *ContentGallery   `json:"gallery,omitempty"`   // 图片
   151  }
   152  
   153  type ContentBlockElementBuilder struct {
   154  	type_         string // 文档元素类型
   155  	typeFlag      bool
   156  	paragraph     *ContentParagraph // 文本段落
   157  	paragraphFlag bool
   158  	gallery       *ContentGallery // 图片
   159  	galleryFlag   bool
   160  }
   161  
   162  func NewContentBlockElementBuilder() *ContentBlockElementBuilder {
   163  	builder := &ContentBlockElementBuilder{}
   164  	return builder
   165  }
   166  
   167  // 文档元素类型
   168  //
   169  // 示例值:paragraph
   170  func (builder *ContentBlockElementBuilder) Type(type_ string) *ContentBlockElementBuilder {
   171  	builder.type_ = type_
   172  	builder.typeFlag = true
   173  	return builder
   174  }
   175  
   176  // 文本段落
   177  //
   178  // 示例值:
   179  func (builder *ContentBlockElementBuilder) Paragraph(paragraph *ContentParagraph) *ContentBlockElementBuilder {
   180  	builder.paragraph = paragraph
   181  	builder.paragraphFlag = true
   182  	return builder
   183  }
   184  
   185  // 图片
   186  //
   187  // 示例值:
   188  func (builder *ContentBlockElementBuilder) Gallery(gallery *ContentGallery) *ContentBlockElementBuilder {
   189  	builder.gallery = gallery
   190  	builder.galleryFlag = true
   191  	return builder
   192  }
   193  
   194  func (builder *ContentBlockElementBuilder) Build() *ContentBlockElement {
   195  	req := &ContentBlockElement{}
   196  	if builder.typeFlag {
   197  		req.Type = &builder.type_
   198  
   199  	}
   200  	if builder.paragraphFlag {
   201  		req.Paragraph = builder.paragraph
   202  	}
   203  	if builder.galleryFlag {
   204  		req.Gallery = builder.gallery
   205  	}
   206  	return req
   207  }
   208  
   209  type ContentColor struct {
   210  	Red   *int     `json:"red,omitempty"`   // 红 取值范围[0,255]
   211  	Green *int     `json:"green,omitempty"` // 绿 取值范围[0,255]
   212  	Blue  *int     `json:"blue,omitempty"`  // 蓝 取值范围[0,255]
   213  	Alpha *float64 `json:"alpha,omitempty"` // 透明度 取值范围[0,1]
   214  }
   215  
   216  type ContentColorBuilder struct {
   217  	red       int // 红 取值范围[0,255]
   218  	redFlag   bool
   219  	green     int // 绿 取值范围[0,255]
   220  	greenFlag bool
   221  	blue      int // 蓝 取值范围[0,255]
   222  	blueFlag  bool
   223  	alpha     float64 // 透明度 取值范围[0,1]
   224  	alphaFlag bool
   225  }
   226  
   227  func NewContentColorBuilder() *ContentColorBuilder {
   228  	builder := &ContentColorBuilder{}
   229  	return builder
   230  }
   231  
   232  // 红 取值范围[0,255]
   233  //
   234  // 示例值:216
   235  func (builder *ContentColorBuilder) Red(red int) *ContentColorBuilder {
   236  	builder.red = red
   237  	builder.redFlag = true
   238  	return builder
   239  }
   240  
   241  // 绿 取值范围[0,255]
   242  //
   243  // 示例值:191
   244  func (builder *ContentColorBuilder) Green(green int) *ContentColorBuilder {
   245  	builder.green = green
   246  	builder.greenFlag = true
   247  	return builder
   248  }
   249  
   250  // 蓝 取值范围[0,255]
   251  //
   252  // 示例值:188
   253  func (builder *ContentColorBuilder) Blue(blue int) *ContentColorBuilder {
   254  	builder.blue = blue
   255  	builder.blueFlag = true
   256  	return builder
   257  }
   258  
   259  // 透明度 取值范围[0,1]
   260  //
   261  // 示例值:0.1
   262  func (builder *ContentColorBuilder) Alpha(alpha float64) *ContentColorBuilder {
   263  	builder.alpha = alpha
   264  	builder.alphaFlag = true
   265  	return builder
   266  }
   267  
   268  func (builder *ContentColorBuilder) Build() *ContentColor {
   269  	req := &ContentColor{}
   270  	if builder.redFlag {
   271  		req.Red = &builder.red
   272  
   273  	}
   274  	if builder.greenFlag {
   275  		req.Green = &builder.green
   276  
   277  	}
   278  	if builder.blueFlag {
   279  		req.Blue = &builder.blue
   280  
   281  	}
   282  	if builder.alphaFlag {
   283  		req.Alpha = &builder.alpha
   284  
   285  	}
   286  	return req
   287  }
   288  
   289  type ContentDocsLink struct {
   290  	Url   *string `json:"url,omitempty"`   // 飞书云文档链接地址
   291  	Title *string `json:"title,omitempty"` // 飞书云文档标题
   292  }
   293  
   294  type ContentDocsLinkBuilder struct {
   295  	url       string // 飞书云文档链接地址
   296  	urlFlag   bool
   297  	title     string // 飞书云文档标题
   298  	titleFlag bool
   299  }
   300  
   301  func NewContentDocsLinkBuilder() *ContentDocsLinkBuilder {
   302  	builder := &ContentDocsLinkBuilder{}
   303  	return builder
   304  }
   305  
   306  // 飞书云文档链接地址
   307  //
   308  // 示例值:https://xxx.feishu.cn/docx/xxxxxxxx
   309  func (builder *ContentDocsLinkBuilder) Url(url string) *ContentDocsLinkBuilder {
   310  	builder.url = url
   311  	builder.urlFlag = true
   312  	return builder
   313  }
   314  
   315  // 飞书云文档标题
   316  //
   317  // 示例值:项目说明文档
   318  func (builder *ContentDocsLinkBuilder) Title(title string) *ContentDocsLinkBuilder {
   319  	builder.title = title
   320  	builder.titleFlag = true
   321  	return builder
   322  }
   323  
   324  func (builder *ContentDocsLinkBuilder) Build() *ContentDocsLink {
   325  	req := &ContentDocsLink{}
   326  	if builder.urlFlag {
   327  		req.Url = &builder.url
   328  
   329  	}
   330  	if builder.titleFlag {
   331  		req.Title = &builder.title
   332  
   333  	}
   334  	return req
   335  }
   336  
   337  type ContentGallery struct {
   338  	ImageList []*ContentImageItem `json:"imageList,omitempty"` // 图片元素
   339  }
   340  
   341  type ContentGalleryBuilder struct {
   342  	imageList     []*ContentImageItem // 图片元素
   343  	imageListFlag bool
   344  }
   345  
   346  func NewContentGalleryBuilder() *ContentGalleryBuilder {
   347  	builder := &ContentGalleryBuilder{}
   348  	return builder
   349  }
   350  
   351  // 图片元素
   352  //
   353  // 示例值:
   354  func (builder *ContentGalleryBuilder) ImageList(imageList []*ContentImageItem) *ContentGalleryBuilder {
   355  	builder.imageList = imageList
   356  	builder.imageListFlag = true
   357  	return builder
   358  }
   359  
   360  func (builder *ContentGalleryBuilder) Build() *ContentGallery {
   361  	req := &ContentGallery{}
   362  	if builder.imageListFlag {
   363  		req.ImageList = builder.imageList
   364  	}
   365  	return req
   366  }
   367  
   368  type ContentImageItem struct {
   369  	FileToken *string  `json:"fileToken,omitempty"` // 图片 token,通过上传图片接口获取
   370  	Url       *string  `json:"url,omitempty"`       // 图片链接,通过上传图片接口获取
   371  	Width     *float64 `json:"width,omitempty"`     // 图片宽,单位px
   372  	Height    *float64 `json:"height,omitempty"`    // 图片高,单位px
   373  }
   374  
   375  type ContentImageItemBuilder struct {
   376  	fileToken     string // 图片 token,通过上传图片接口获取
   377  	fileTokenFlag bool
   378  	url           string // 图片链接,通过上传图片接口获取
   379  	urlFlag       bool
   380  	width         float64 // 图片宽,单位px
   381  	widthFlag     bool
   382  	height        float64 // 图片高,单位px
   383  	heightFlag    bool
   384  }
   385  
   386  func NewContentImageItemBuilder() *ContentImageItemBuilder {
   387  	builder := &ContentImageItemBuilder{}
   388  	return builder
   389  }
   390  
   391  // 图片 token,通过上传图片接口获取
   392  //
   393  // 示例值:boxcnOj88GDkmWGm2zsTyCBqoLb
   394  func (builder *ContentImageItemBuilder) FileToken(fileToken string) *ContentImageItemBuilder {
   395  	builder.fileToken = fileToken
   396  	builder.fileTokenFlag = true
   397  	return builder
   398  }
   399  
   400  // 图片链接,通过上传图片接口获取
   401  //
   402  // 示例值:https://internal-api-okr.feishu-boe.cn/stream/api/downloadFile/?file_token=boxbcMTBQO9ofLjWkDuPxkxOA2c\&ticket=eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ0YXJnZXRfaWQiOiI3MDQxNDMwMzc3NjQyMDgyMzIzIiwidGFyZ2V0X3R5cGUiOjMsImFjdGlvbiI6MiwiZmlsZV90b2tlbiI6ImJveGJjTVRCUU85b2ZMaldrRHVQeGt4T0EyYyIsInVzZXJfaWQiOiI2OTY5ODU1NTAxNzQ0ODM0MDkyIiwidGVuYW50X2lkIjoiNjg3NzUwMjY4NzYwOTQwNjk5MCIsImV4cCI6MTY0MDE1NTk2M30.yc4qV2pkGUVwSO53-N_XGgeMucjmDn9iso1Ez_8vpghFz8YdeSDf4NHQpxOHYHc8RURvwI0a5UTNKKJ9CWagTQ
   403  func (builder *ContentImageItemBuilder) Url(url string) *ContentImageItemBuilder {
   404  	builder.url = url
   405  	builder.urlFlag = true
   406  	return builder
   407  }
   408  
   409  // 图片宽,单位px
   410  //
   411  // 示例值:458
   412  func (builder *ContentImageItemBuilder) Width(width float64) *ContentImageItemBuilder {
   413  	builder.width = width
   414  	builder.widthFlag = true
   415  	return builder
   416  }
   417  
   418  // 图片高,单位px
   419  //
   420  // 示例值:372
   421  func (builder *ContentImageItemBuilder) Height(height float64) *ContentImageItemBuilder {
   422  	builder.height = height
   423  	builder.heightFlag = true
   424  	return builder
   425  }
   426  
   427  func (builder *ContentImageItemBuilder) Build() *ContentImageItem {
   428  	req := &ContentImageItem{}
   429  	if builder.fileTokenFlag {
   430  		req.FileToken = &builder.fileToken
   431  
   432  	}
   433  	if builder.urlFlag {
   434  		req.Url = &builder.url
   435  
   436  	}
   437  	if builder.widthFlag {
   438  		req.Width = &builder.width
   439  
   440  	}
   441  	if builder.heightFlag {
   442  		req.Height = &builder.height
   443  
   444  	}
   445  	return req
   446  }
   447  
   448  type ContentLink struct {
   449  	Url *string `json:"url,omitempty"` // 链接地址
   450  }
   451  
   452  type ContentLinkBuilder struct {
   453  	url     string // 链接地址
   454  	urlFlag bool
   455  }
   456  
   457  func NewContentLinkBuilder() *ContentLinkBuilder {
   458  	builder := &ContentLinkBuilder{}
   459  	return builder
   460  }
   461  
   462  // 链接地址
   463  //
   464  // 示例值:https://www.xxxxx.com/
   465  func (builder *ContentLinkBuilder) Url(url string) *ContentLinkBuilder {
   466  	builder.url = url
   467  	builder.urlFlag = true
   468  	return builder
   469  }
   470  
   471  func (builder *ContentLinkBuilder) Build() *ContentLink {
   472  	req := &ContentLink{}
   473  	if builder.urlFlag {
   474  		req.Url = &builder.url
   475  
   476  	}
   477  	return req
   478  }
   479  
   480  type ContentList struct {
   481  	Type        *string `json:"type,omitempty"`        // 列表类型
   482  	IndentLevel *int    `json:"indentLevel,omitempty"` // 列表的缩进级别,支持指定一行的缩进 除代码块以外的列表都支持设置缩进,支持 1-16 级缩进,取值范围:[1,16]
   483  	Number      *int    `json:"number,omitempty"`      // 用于指定列表的行号,仅对有序列表和代码块生效 如果为有序列表设置了缩进,行号可能会显示为字母或者罗马数字
   484  }
   485  
   486  type ContentListBuilder struct {
   487  	type_           string // 列表类型
   488  	typeFlag        bool
   489  	indentLevel     int // 列表的缩进级别,支持指定一行的缩进 除代码块以外的列表都支持设置缩进,支持 1-16 级缩进,取值范围:[1,16]
   490  	indentLevelFlag bool
   491  	number          int // 用于指定列表的行号,仅对有序列表和代码块生效 如果为有序列表设置了缩进,行号可能会显示为字母或者罗马数字
   492  	numberFlag      bool
   493  }
   494  
   495  func NewContentListBuilder() *ContentListBuilder {
   496  	builder := &ContentListBuilder{}
   497  	return builder
   498  }
   499  
   500  // 列表类型
   501  //
   502  // 示例值:number
   503  func (builder *ContentListBuilder) Type(type_ string) *ContentListBuilder {
   504  	builder.type_ = type_
   505  	builder.typeFlag = true
   506  	return builder
   507  }
   508  
   509  // 列表的缩进级别,支持指定一行的缩进 除代码块以外的列表都支持设置缩进,支持 1-16 级缩进,取值范围:[1,16]
   510  //
   511  // 示例值:1
   512  func (builder *ContentListBuilder) IndentLevel(indentLevel int) *ContentListBuilder {
   513  	builder.indentLevel = indentLevel
   514  	builder.indentLevelFlag = true
   515  	return builder
   516  }
   517  
   518  // 用于指定列表的行号,仅对有序列表和代码块生效 如果为有序列表设置了缩进,行号可能会显示为字母或者罗马数字
   519  //
   520  // 示例值:1
   521  func (builder *ContentListBuilder) Number(number int) *ContentListBuilder {
   522  	builder.number = number
   523  	builder.numberFlag = true
   524  	return builder
   525  }
   526  
   527  func (builder *ContentListBuilder) Build() *ContentList {
   528  	req := &ContentList{}
   529  	if builder.typeFlag {
   530  		req.Type = &builder.type_
   531  
   532  	}
   533  	if builder.indentLevelFlag {
   534  		req.IndentLevel = &builder.indentLevel
   535  
   536  	}
   537  	if builder.numberFlag {
   538  		req.Number = &builder.number
   539  
   540  	}
   541  	return req
   542  }
   543  
   544  type ContentParagraph struct {
   545  	Style    *ContentParagraphStyle     `json:"style,omitempty"`    // 段落样式
   546  	Elements []*ContentParagraphElement `json:"elements,omitempty"` // 段落元素组成一个段落
   547  }
   548  
   549  type ContentParagraphBuilder struct {
   550  	style        *ContentParagraphStyle // 段落样式
   551  	styleFlag    bool
   552  	elements     []*ContentParagraphElement // 段落元素组成一个段落
   553  	elementsFlag bool
   554  }
   555  
   556  func NewContentParagraphBuilder() *ContentParagraphBuilder {
   557  	builder := &ContentParagraphBuilder{}
   558  	return builder
   559  }
   560  
   561  // 段落样式
   562  //
   563  // 示例值:
   564  func (builder *ContentParagraphBuilder) Style(style *ContentParagraphStyle) *ContentParagraphBuilder {
   565  	builder.style = style
   566  	builder.styleFlag = true
   567  	return builder
   568  }
   569  
   570  // 段落元素组成一个段落
   571  //
   572  // 示例值:
   573  func (builder *ContentParagraphBuilder) Elements(elements []*ContentParagraphElement) *ContentParagraphBuilder {
   574  	builder.elements = elements
   575  	builder.elementsFlag = true
   576  	return builder
   577  }
   578  
   579  func (builder *ContentParagraphBuilder) Build() *ContentParagraph {
   580  	req := &ContentParagraph{}
   581  	if builder.styleFlag {
   582  		req.Style = builder.style
   583  	}
   584  	if builder.elementsFlag {
   585  		req.Elements = builder.elements
   586  	}
   587  	return req
   588  }
   589  
   590  type ContentParagraphElement struct {
   591  	Type     *string          `json:"type,omitempty"`     // 元素类型
   592  	TextRun  *ContentTextRun  `json:"textRun,omitempty"`  // 文本
   593  	DocsLink *ContentDocsLink `json:"docsLink,omitempty"` // 飞书云文档
   594  	Person   *ContentPerson   `json:"person,omitempty"`   // 艾特用户
   595  }
   596  
   597  type ContentParagraphElementBuilder struct {
   598  	type_        string // 元素类型
   599  	typeFlag     bool
   600  	textRun      *ContentTextRun // 文本
   601  	textRunFlag  bool
   602  	docsLink     *ContentDocsLink // 飞书云文档
   603  	docsLinkFlag bool
   604  	person       *ContentPerson // 艾特用户
   605  	personFlag   bool
   606  }
   607  
   608  func NewContentParagraphElementBuilder() *ContentParagraphElementBuilder {
   609  	builder := &ContentParagraphElementBuilder{}
   610  	return builder
   611  }
   612  
   613  // 元素类型
   614  //
   615  // 示例值:textRun
   616  func (builder *ContentParagraphElementBuilder) Type(type_ string) *ContentParagraphElementBuilder {
   617  	builder.type_ = type_
   618  	builder.typeFlag = true
   619  	return builder
   620  }
   621  
   622  // 文本
   623  //
   624  // 示例值:
   625  func (builder *ContentParagraphElementBuilder) TextRun(textRun *ContentTextRun) *ContentParagraphElementBuilder {
   626  	builder.textRun = textRun
   627  	builder.textRunFlag = true
   628  	return builder
   629  }
   630  
   631  // 飞书云文档
   632  //
   633  // 示例值:
   634  func (builder *ContentParagraphElementBuilder) DocsLink(docsLink *ContentDocsLink) *ContentParagraphElementBuilder {
   635  	builder.docsLink = docsLink
   636  	builder.docsLinkFlag = true
   637  	return builder
   638  }
   639  
   640  // 艾特用户
   641  //
   642  // 示例值:
   643  func (builder *ContentParagraphElementBuilder) Person(person *ContentPerson) *ContentParagraphElementBuilder {
   644  	builder.person = person
   645  	builder.personFlag = true
   646  	return builder
   647  }
   648  
   649  func (builder *ContentParagraphElementBuilder) Build() *ContentParagraphElement {
   650  	req := &ContentParagraphElement{}
   651  	if builder.typeFlag {
   652  		req.Type = &builder.type_
   653  
   654  	}
   655  	if builder.textRunFlag {
   656  		req.TextRun = builder.textRun
   657  	}
   658  	if builder.docsLinkFlag {
   659  		req.DocsLink = builder.docsLink
   660  	}
   661  	if builder.personFlag {
   662  		req.Person = builder.person
   663  	}
   664  	return req
   665  }
   666  
   667  type ContentParagraphStyle struct {
   668  	List []*ContentList `json:"list,omitempty"` // 有序列表/无序列表/任务列表
   669  }
   670  
   671  type ContentParagraphStyleBuilder struct {
   672  	list     []*ContentList // 有序列表/无序列表/任务列表
   673  	listFlag bool
   674  }
   675  
   676  func NewContentParagraphStyleBuilder() *ContentParagraphStyleBuilder {
   677  	builder := &ContentParagraphStyleBuilder{}
   678  	return builder
   679  }
   680  
   681  // 有序列表/无序列表/任务列表
   682  //
   683  // 示例值:
   684  func (builder *ContentParagraphStyleBuilder) List(list []*ContentList) *ContentParagraphStyleBuilder {
   685  	builder.list = list
   686  	builder.listFlag = true
   687  	return builder
   688  }
   689  
   690  func (builder *ContentParagraphStyleBuilder) Build() *ContentParagraphStyle {
   691  	req := &ContentParagraphStyle{}
   692  	if builder.listFlag {
   693  		req.List = builder.list
   694  	}
   695  	return req
   696  }
   697  
   698  type ContentPerson struct {
   699  	OpenId *string `json:"openId,omitempty"` // 员工的OpenID
   700  }
   701  
   702  type ContentPersonBuilder struct {
   703  	openId     string // 员工的OpenID
   704  	openIdFlag bool
   705  }
   706  
   707  func NewContentPersonBuilder() *ContentPersonBuilder {
   708  	builder := &ContentPersonBuilder{}
   709  	return builder
   710  }
   711  
   712  // 员工的OpenID
   713  //
   714  // 示例值:ou_3bbe8a09c20e89cce9bff989ed840674
   715  func (builder *ContentPersonBuilder) OpenId(openId string) *ContentPersonBuilder {
   716  	builder.openId = openId
   717  	builder.openIdFlag = true
   718  	return builder
   719  }
   720  
   721  func (builder *ContentPersonBuilder) Build() *ContentPerson {
   722  	req := &ContentPerson{}
   723  	if builder.openIdFlag {
   724  		req.OpenId = &builder.openId
   725  
   726  	}
   727  	return req
   728  }
   729  
   730  type ContentTextRun struct {
   731  	Text  *string           `json:"text,omitempty"`  // 具体的文本内容
   732  	Style *ContentTextStyle `json:"style,omitempty"` // 文本内容的样式,支持 BIUS、颜色等
   733  }
   734  
   735  type ContentTextRunBuilder struct {
   736  	text      string // 具体的文本内容
   737  	textFlag  bool
   738  	style     *ContentTextStyle // 文本内容的样式,支持 BIUS、颜色等
   739  	styleFlag bool
   740  }
   741  
   742  func NewContentTextRunBuilder() *ContentTextRunBuilder {
   743  	builder := &ContentTextRunBuilder{}
   744  	return builder
   745  }
   746  
   747  // 具体的文本内容
   748  //
   749  // 示例值:周报内容
   750  func (builder *ContentTextRunBuilder) Text(text string) *ContentTextRunBuilder {
   751  	builder.text = text
   752  	builder.textFlag = true
   753  	return builder
   754  }
   755  
   756  // 文本内容的样式,支持 BIUS、颜色等
   757  //
   758  // 示例值:
   759  func (builder *ContentTextRunBuilder) Style(style *ContentTextStyle) *ContentTextRunBuilder {
   760  	builder.style = style
   761  	builder.styleFlag = true
   762  	return builder
   763  }
   764  
   765  func (builder *ContentTextRunBuilder) Build() *ContentTextRun {
   766  	req := &ContentTextRun{}
   767  	if builder.textFlag {
   768  		req.Text = &builder.text
   769  
   770  	}
   771  	if builder.styleFlag {
   772  		req.Style = builder.style
   773  	}
   774  	return req
   775  }
   776  
   777  type ContentTextStyle struct {
   778  	Bold          *bool         `json:"bold,omitempty"`          // 是否加粗
   779  	StrikeThrough *bool         `json:"strikeThrough,omitempty"` // 是否删除
   780  	BackColor     *ContentColor `json:"backColor,omitempty"`     // 背景颜色
   781  	TextColor     *ContentColor `json:"textColor,omitempty"`     // 字体颜色
   782  	Link          *ContentLink  `json:"link,omitempty"`          // 链接地址
   783  }
   784  
   785  type ContentTextStyleBuilder struct {
   786  	bold              bool // 是否加粗
   787  	boldFlag          bool
   788  	strikeThrough     bool // 是否删除
   789  	strikeThroughFlag bool
   790  	backColor         *ContentColor // 背景颜色
   791  	backColorFlag     bool
   792  	textColor         *ContentColor // 字体颜色
   793  	textColorFlag     bool
   794  	link              *ContentLink // 链接地址
   795  	linkFlag          bool
   796  }
   797  
   798  func NewContentTextStyleBuilder() *ContentTextStyleBuilder {
   799  	builder := &ContentTextStyleBuilder{}
   800  	return builder
   801  }
   802  
   803  // 是否加粗
   804  //
   805  // 示例值:true
   806  func (builder *ContentTextStyleBuilder) Bold(bold bool) *ContentTextStyleBuilder {
   807  	builder.bold = bold
   808  	builder.boldFlag = true
   809  	return builder
   810  }
   811  
   812  // 是否删除
   813  //
   814  // 示例值:true
   815  func (builder *ContentTextStyleBuilder) StrikeThrough(strikeThrough bool) *ContentTextStyleBuilder {
   816  	builder.strikeThrough = strikeThrough
   817  	builder.strikeThroughFlag = true
   818  	return builder
   819  }
   820  
   821  // 背景颜色
   822  //
   823  // 示例值:
   824  func (builder *ContentTextStyleBuilder) BackColor(backColor *ContentColor) *ContentTextStyleBuilder {
   825  	builder.backColor = backColor
   826  	builder.backColorFlag = true
   827  	return builder
   828  }
   829  
   830  // 字体颜色
   831  //
   832  // 示例值:
   833  func (builder *ContentTextStyleBuilder) TextColor(textColor *ContentColor) *ContentTextStyleBuilder {
   834  	builder.textColor = textColor
   835  	builder.textColorFlag = true
   836  	return builder
   837  }
   838  
   839  // 链接地址
   840  //
   841  // 示例值:
   842  func (builder *ContentTextStyleBuilder) Link(link *ContentLink) *ContentTextStyleBuilder {
   843  	builder.link = link
   844  	builder.linkFlag = true
   845  	return builder
   846  }
   847  
   848  func (builder *ContentTextStyleBuilder) Build() *ContentTextStyle {
   849  	req := &ContentTextStyle{}
   850  	if builder.boldFlag {
   851  		req.Bold = &builder.bold
   852  
   853  	}
   854  	if builder.strikeThroughFlag {
   855  		req.StrikeThrough = &builder.strikeThrough
   856  
   857  	}
   858  	if builder.backColorFlag {
   859  		req.BackColor = builder.backColor
   860  	}
   861  	if builder.textColorFlag {
   862  		req.TextColor = builder.textColor
   863  	}
   864  	if builder.linkFlag {
   865  		req.Link = builder.link
   866  	}
   867  	return req
   868  }
   869  
   870  type CurrentOkrSimple struct {
   871  	OkrId    *string `json:"okr_id,omitempty"`    // OKR ID
   872  	PeriodId *string `json:"period_id,omitempty"` // 周期 ID
   873  }
   874  
   875  type CurrentOkrSimpleBuilder struct {
   876  	okrId        string // OKR ID
   877  	okrIdFlag    bool
   878  	periodId     string // 周期 ID
   879  	periodIdFlag bool
   880  }
   881  
   882  func NewCurrentOkrSimpleBuilder() *CurrentOkrSimpleBuilder {
   883  	builder := &CurrentOkrSimpleBuilder{}
   884  	return builder
   885  }
   886  
   887  // OKR ID
   888  //
   889  // 示例值:
   890  func (builder *CurrentOkrSimpleBuilder) OkrId(okrId string) *CurrentOkrSimpleBuilder {
   891  	builder.okrId = okrId
   892  	builder.okrIdFlag = true
   893  	return builder
   894  }
   895  
   896  // 周期 ID
   897  //
   898  // 示例值:
   899  func (builder *CurrentOkrSimpleBuilder) PeriodId(periodId string) *CurrentOkrSimpleBuilder {
   900  	builder.periodId = periodId
   901  	builder.periodIdFlag = true
   902  	return builder
   903  }
   904  
   905  func (builder *CurrentOkrSimpleBuilder) Build() *CurrentOkrSimple {
   906  	req := &CurrentOkrSimple{}
   907  	if builder.okrIdFlag {
   908  		req.OkrId = &builder.okrId
   909  
   910  	}
   911  	if builder.periodIdFlag {
   912  		req.PeriodId = &builder.periodId
   913  
   914  	}
   915  	return req
   916  }
   917  
   918  type Dummy struct {
   919  	Id *string `json:"id,omitempty"` // id
   920  }
   921  
   922  type DummyBuilder struct {
   923  	id     string // id
   924  	idFlag bool
   925  }
   926  
   927  func NewDummyBuilder() *DummyBuilder {
   928  	builder := &DummyBuilder{}
   929  	return builder
   930  }
   931  
   932  // id
   933  //
   934  // 示例值:
   935  func (builder *DummyBuilder) Id(id string) *DummyBuilder {
   936  	builder.id = id
   937  	builder.idFlag = true
   938  	return builder
   939  }
   940  
   941  func (builder *DummyBuilder) Build() *Dummy {
   942  	req := &Dummy{}
   943  	if builder.idFlag {
   944  		req.Id = &builder.id
   945  
   946  	}
   947  	return req
   948  }
   949  
   950  type ImageInfo struct {
   951  	FileToken *string `json:"file_token,omitempty"` // 图片token
   952  	Url       *string `json:"url,omitempty"`        // 图片下载链接
   953  }
   954  
   955  type ImageInfoBuilder struct {
   956  	fileToken     string // 图片token
   957  	fileTokenFlag bool
   958  	url           string // 图片下载链接
   959  	urlFlag       bool
   960  }
   961  
   962  func NewImageInfoBuilder() *ImageInfoBuilder {
   963  	builder := &ImageInfoBuilder{}
   964  	return builder
   965  }
   966  
   967  // 图片token
   968  //
   969  // 示例值:boxbcLxEnhUE3REJSAwAbVFZwPf
   970  func (builder *ImageInfoBuilder) FileToken(fileToken string) *ImageInfoBuilder {
   971  	builder.fileToken = fileToken
   972  	builder.fileTokenFlag = true
   973  	return builder
   974  }
   975  
   976  // 图片下载链接
   977  //
   978  // 示例值:https://internal-api-okr.feishu-boe.cn/stream/api/downloadFile/?file_token=boxbcLxEnhUE3REJSAwAbVFZwPf&ticket=eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ0YXJnZXRfaWQiOiI3MDQxNDMwMzc3NjQyMDgyMzIzIiwidGFyZ2V0X3R5cGUiOjMsImFjdGlvbiI6MiwiZmlsZV90b2tlbiI6ImJveGJjTHhFbmhVRTNSRUpTQXdBYlZGWndQZiIsInVzZXJfaWQiOiI2OTY5ODU1NTAxNzQ0ODM0MDkyIiwidGVuYW50X2lkIjoiNjg3NzUwMjY4NzYwOTQwNjk5MCIsImV4cCI6MTYzOTcyNTUwM30.G2RD3LJBycZuF0Myi2WD4IdJ1N5jB24KGjLrm9e4peNlF8uy2XflINVcTpvN6drshITErHu0ehibJI5Fci-Pkw
   979  func (builder *ImageInfoBuilder) Url(url string) *ImageInfoBuilder {
   980  	builder.url = url
   981  	builder.urlFlag = true
   982  	return builder
   983  }
   984  
   985  func (builder *ImageInfoBuilder) Build() *ImageInfo {
   986  	req := &ImageInfo{}
   987  	if builder.fileTokenFlag {
   988  		req.FileToken = &builder.fileToken
   989  
   990  	}
   991  	if builder.urlFlag {
   992  		req.Url = &builder.url
   993  
   994  	}
   995  	return req
   996  }
   997  
   998  type Kr struct {
   999  	Id         *string    `json:"id,omitempty"`          // KeyResult ID
  1000  	Pos        *string    `json:"pos,omitempty"`         // KeyResult 在所属 Objective 中的排序
  1001  	Score      *string    `json:"score,omitempty"`       // KeyResult 评分,返回值为百分制分数,需要除以 100 以获得 OKR 页面上显示的 1 分制分数
  1002  	Weight     *string    `json:"weight,omitempty"`      // KeyResult 的权重
  1003  	Content    *KrContent `json:"content,omitempty"`     // KeyResult 对应的 Content 详细内容
  1004  	CreateTime *int       `json:"create_time,omitempty"` // KeyResult 的创建时间 毫秒
  1005  	ModifyTime *int       `json:"modify_time,omitempty"` // KeyResult 的最后修改时间 毫秒
  1006  }
  1007  
  1008  type KrBuilder struct {
  1009  	id             string // KeyResult ID
  1010  	idFlag         bool
  1011  	pos            string // KeyResult 在所属 Objective 中的排序
  1012  	posFlag        bool
  1013  	score          string // KeyResult 评分,返回值为百分制分数,需要除以 100 以获得 OKR 页面上显示的 1 分制分数
  1014  	scoreFlag      bool
  1015  	weight         string // KeyResult 的权重
  1016  	weightFlag     bool
  1017  	content        *KrContent // KeyResult 对应的 Content 详细内容
  1018  	contentFlag    bool
  1019  	createTime     int // KeyResult 的创建时间 毫秒
  1020  	createTimeFlag bool
  1021  	modifyTime     int // KeyResult 的最后修改时间 毫秒
  1022  	modifyTimeFlag bool
  1023  }
  1024  
  1025  func NewKrBuilder() *KrBuilder {
  1026  	builder := &KrBuilder{}
  1027  	return builder
  1028  }
  1029  
  1030  // KeyResult ID
  1031  //
  1032  // 示例值:
  1033  func (builder *KrBuilder) Id(id string) *KrBuilder {
  1034  	builder.id = id
  1035  	builder.idFlag = true
  1036  	return builder
  1037  }
  1038  
  1039  // KeyResult 在所属 Objective 中的排序
  1040  //
  1041  // 示例值:
  1042  func (builder *KrBuilder) Pos(pos string) *KrBuilder {
  1043  	builder.pos = pos
  1044  	builder.posFlag = true
  1045  	return builder
  1046  }
  1047  
  1048  // KeyResult 评分,返回值为百分制分数,需要除以 100 以获得 OKR 页面上显示的 1 分制分数
  1049  //
  1050  // 示例值:
  1051  func (builder *KrBuilder) Score(score string) *KrBuilder {
  1052  	builder.score = score
  1053  	builder.scoreFlag = true
  1054  	return builder
  1055  }
  1056  
  1057  // KeyResult 的权重
  1058  //
  1059  // 示例值:
  1060  func (builder *KrBuilder) Weight(weight string) *KrBuilder {
  1061  	builder.weight = weight
  1062  	builder.weightFlag = true
  1063  	return builder
  1064  }
  1065  
  1066  // KeyResult 对应的 Content 详细内容
  1067  //
  1068  // 示例值:
  1069  func (builder *KrBuilder) Content(content *KrContent) *KrBuilder {
  1070  	builder.content = content
  1071  	builder.contentFlag = true
  1072  	return builder
  1073  }
  1074  
  1075  // KeyResult 的创建时间 毫秒
  1076  //
  1077  // 示例值:
  1078  func (builder *KrBuilder) CreateTime(createTime int) *KrBuilder {
  1079  	builder.createTime = createTime
  1080  	builder.createTimeFlag = true
  1081  	return builder
  1082  }
  1083  
  1084  // KeyResult 的最后修改时间 毫秒
  1085  //
  1086  // 示例值:
  1087  func (builder *KrBuilder) ModifyTime(modifyTime int) *KrBuilder {
  1088  	builder.modifyTime = modifyTime
  1089  	builder.modifyTimeFlag = true
  1090  	return builder
  1091  }
  1092  
  1093  func (builder *KrBuilder) Build() *Kr {
  1094  	req := &Kr{}
  1095  	if builder.idFlag {
  1096  		req.Id = &builder.id
  1097  
  1098  	}
  1099  	if builder.posFlag {
  1100  		req.Pos = &builder.pos
  1101  
  1102  	}
  1103  	if builder.scoreFlag {
  1104  		req.Score = &builder.score
  1105  
  1106  	}
  1107  	if builder.weightFlag {
  1108  		req.Weight = &builder.weight
  1109  
  1110  	}
  1111  	if builder.contentFlag {
  1112  		req.Content = builder.content
  1113  	}
  1114  	if builder.createTimeFlag {
  1115  		req.CreateTime = &builder.createTime
  1116  
  1117  	}
  1118  	if builder.modifyTimeFlag {
  1119  		req.ModifyTime = &builder.modifyTime
  1120  
  1121  	}
  1122  	return req
  1123  }
  1124  
  1125  type KrContent struct {
  1126  	Zh *string `json:"zh,omitempty"` // 中文内容
  1127  	En *string `json:"en,omitempty"` // 英文内容
  1128  }
  1129  
  1130  type KrContentBuilder struct {
  1131  	zh     string // 中文内容
  1132  	zhFlag bool
  1133  	en     string // 英文内容
  1134  	enFlag bool
  1135  }
  1136  
  1137  func NewKrContentBuilder() *KrContentBuilder {
  1138  	builder := &KrContentBuilder{}
  1139  	return builder
  1140  }
  1141  
  1142  // 中文内容
  1143  //
  1144  // 示例值:
  1145  func (builder *KrContentBuilder) Zh(zh string) *KrContentBuilder {
  1146  	builder.zh = zh
  1147  	builder.zhFlag = true
  1148  	return builder
  1149  }
  1150  
  1151  // 英文内容
  1152  //
  1153  // 示例值:
  1154  func (builder *KrContentBuilder) En(en string) *KrContentBuilder {
  1155  	builder.en = en
  1156  	builder.enFlag = true
  1157  	return builder
  1158  }
  1159  
  1160  func (builder *KrContentBuilder) Build() *KrContent {
  1161  	req := &KrContent{}
  1162  	if builder.zhFlag {
  1163  		req.Zh = &builder.zh
  1164  
  1165  	}
  1166  	if builder.enFlag {
  1167  		req.En = &builder.en
  1168  
  1169  	}
  1170  	return req
  1171  }
  1172  
  1173  type Objective struct {
  1174  	Id                    *string            `json:"id,omitempty"`                      // 目标的ID
  1175  	OkrId                 *string            `json:"okr_id,omitempty"`                  // 所属的OKR ID
  1176  	UserId                *string            `json:"user_id,omitempty"`                 // 拥有者的用户 UUID
  1177  	Pos                   *string            `json:"pos,omitempty"`                     // Objective 在所属 OKR 中的排序
  1178  	Score                 *string            `json:"score,omitempty"`                   // Objective 评分,返回值为百分制分数,需要除以 100 以获得 OKR 页面上显示的 1 分制分数
  1179  	Name                  *ObjectiveName     `json:"name,omitempty"`                    // Objective 的详细内容
  1180  	Progress              *ObjectiveProgress `json:"progress,omitempty"`                // Objective 对应的 Progress 详细内容
  1181  	CreateTime            *int               `json:"create_time,omitempty"`             // Objective 的创建时间
  1182  	ModifyTime            *int               `json:"modify_time,omitempty"`             // Objective 的最后修改时间
  1183  	KrList                []*Kr              `json:"kr_list,omitempty"`                 // Objective 下的 KeyResult 列表
  1184  	AligningObjectiveList []*AlignObjective  `json:"aligning_objective_list,omitempty"` // Objective 对齐别人的 Objective 列表
  1185  	AlignedObjectiveList  []*AlignObjective  `json:"aligned_objective_list,omitempty"`  // 被别人对齐的 Objective 列表
  1186  }
  1187  
  1188  type ObjectiveBuilder struct {
  1189  	id                        string // 目标的ID
  1190  	idFlag                    bool
  1191  	okrId                     string // 所属的OKR ID
  1192  	okrIdFlag                 bool
  1193  	userId                    string // 拥有者的用户 UUID
  1194  	userIdFlag                bool
  1195  	pos                       string // Objective 在所属 OKR 中的排序
  1196  	posFlag                   bool
  1197  	score                     string // Objective 评分,返回值为百分制分数,需要除以 100 以获得 OKR 页面上显示的 1 分制分数
  1198  	scoreFlag                 bool
  1199  	name                      *ObjectiveName // Objective 的详细内容
  1200  	nameFlag                  bool
  1201  	progress                  *ObjectiveProgress // Objective 对应的 Progress 详细内容
  1202  	progressFlag              bool
  1203  	createTime                int // Objective 的创建时间
  1204  	createTimeFlag            bool
  1205  	modifyTime                int // Objective 的最后修改时间
  1206  	modifyTimeFlag            bool
  1207  	krList                    []*Kr // Objective 下的 KeyResult 列表
  1208  	krListFlag                bool
  1209  	aligningObjectiveList     []*AlignObjective // Objective 对齐别人的 Objective 列表
  1210  	aligningObjectiveListFlag bool
  1211  	alignedObjectiveList      []*AlignObjective // 被别人对齐的 Objective 列表
  1212  	alignedObjectiveListFlag  bool
  1213  }
  1214  
  1215  func NewObjectiveBuilder() *ObjectiveBuilder {
  1216  	builder := &ObjectiveBuilder{}
  1217  	return builder
  1218  }
  1219  
  1220  // 目标的ID
  1221  //
  1222  // 示例值:
  1223  func (builder *ObjectiveBuilder) Id(id string) *ObjectiveBuilder {
  1224  	builder.id = id
  1225  	builder.idFlag = true
  1226  	return builder
  1227  }
  1228  
  1229  // 所属的OKR ID
  1230  //
  1231  // 示例值:
  1232  func (builder *ObjectiveBuilder) OkrId(okrId string) *ObjectiveBuilder {
  1233  	builder.okrId = okrId
  1234  	builder.okrIdFlag = true
  1235  	return builder
  1236  }
  1237  
  1238  // 拥有者的用户 UUID
  1239  //
  1240  // 示例值:
  1241  func (builder *ObjectiveBuilder) UserId(userId string) *ObjectiveBuilder {
  1242  	builder.userId = userId
  1243  	builder.userIdFlag = true
  1244  	return builder
  1245  }
  1246  
  1247  // Objective 在所属 OKR 中的排序
  1248  //
  1249  // 示例值:
  1250  func (builder *ObjectiveBuilder) Pos(pos string) *ObjectiveBuilder {
  1251  	builder.pos = pos
  1252  	builder.posFlag = true
  1253  	return builder
  1254  }
  1255  
  1256  // Objective 评分,返回值为百分制分数,需要除以 100 以获得 OKR 页面上显示的 1 分制分数
  1257  //
  1258  // 示例值:
  1259  func (builder *ObjectiveBuilder) Score(score string) *ObjectiveBuilder {
  1260  	builder.score = score
  1261  	builder.scoreFlag = true
  1262  	return builder
  1263  }
  1264  
  1265  // Objective 的详细内容
  1266  //
  1267  // 示例值:
  1268  func (builder *ObjectiveBuilder) Name(name *ObjectiveName) *ObjectiveBuilder {
  1269  	builder.name = name
  1270  	builder.nameFlag = true
  1271  	return builder
  1272  }
  1273  
  1274  // Objective 对应的 Progress 详细内容
  1275  //
  1276  // 示例值:
  1277  func (builder *ObjectiveBuilder) Progress(progress *ObjectiveProgress) *ObjectiveBuilder {
  1278  	builder.progress = progress
  1279  	builder.progressFlag = true
  1280  	return builder
  1281  }
  1282  
  1283  // Objective 的创建时间
  1284  //
  1285  // 示例值:
  1286  func (builder *ObjectiveBuilder) CreateTime(createTime int) *ObjectiveBuilder {
  1287  	builder.createTime = createTime
  1288  	builder.createTimeFlag = true
  1289  	return builder
  1290  }
  1291  
  1292  // Objective 的最后修改时间
  1293  //
  1294  // 示例值:
  1295  func (builder *ObjectiveBuilder) ModifyTime(modifyTime int) *ObjectiveBuilder {
  1296  	builder.modifyTime = modifyTime
  1297  	builder.modifyTimeFlag = true
  1298  	return builder
  1299  }
  1300  
  1301  // Objective 下的 KeyResult 列表
  1302  //
  1303  // 示例值:
  1304  func (builder *ObjectiveBuilder) KrList(krList []*Kr) *ObjectiveBuilder {
  1305  	builder.krList = krList
  1306  	builder.krListFlag = true
  1307  	return builder
  1308  }
  1309  
  1310  // Objective 对齐别人的 Objective 列表
  1311  //
  1312  // 示例值:
  1313  func (builder *ObjectiveBuilder) AligningObjectiveList(aligningObjectiveList []*AlignObjective) *ObjectiveBuilder {
  1314  	builder.aligningObjectiveList = aligningObjectiveList
  1315  	builder.aligningObjectiveListFlag = true
  1316  	return builder
  1317  }
  1318  
  1319  // 被别人对齐的 Objective 列表
  1320  //
  1321  // 示例值:
  1322  func (builder *ObjectiveBuilder) AlignedObjectiveList(alignedObjectiveList []*AlignObjective) *ObjectiveBuilder {
  1323  	builder.alignedObjectiveList = alignedObjectiveList
  1324  	builder.alignedObjectiveListFlag = true
  1325  	return builder
  1326  }
  1327  
  1328  func (builder *ObjectiveBuilder) Build() *Objective {
  1329  	req := &Objective{}
  1330  	if builder.idFlag {
  1331  		req.Id = &builder.id
  1332  
  1333  	}
  1334  	if builder.okrIdFlag {
  1335  		req.OkrId = &builder.okrId
  1336  
  1337  	}
  1338  	if builder.userIdFlag {
  1339  		req.UserId = &builder.userId
  1340  
  1341  	}
  1342  	if builder.posFlag {
  1343  		req.Pos = &builder.pos
  1344  
  1345  	}
  1346  	if builder.scoreFlag {
  1347  		req.Score = &builder.score
  1348  
  1349  	}
  1350  	if builder.nameFlag {
  1351  		req.Name = builder.name
  1352  	}
  1353  	if builder.progressFlag {
  1354  		req.Progress = builder.progress
  1355  	}
  1356  	if builder.createTimeFlag {
  1357  		req.CreateTime = &builder.createTime
  1358  
  1359  	}
  1360  	if builder.modifyTimeFlag {
  1361  		req.ModifyTime = &builder.modifyTime
  1362  
  1363  	}
  1364  	if builder.krListFlag {
  1365  		req.KrList = builder.krList
  1366  	}
  1367  	if builder.aligningObjectiveListFlag {
  1368  		req.AligningObjectiveList = builder.aligningObjectiveList
  1369  	}
  1370  	if builder.alignedObjectiveListFlag {
  1371  		req.AlignedObjectiveList = builder.alignedObjectiveList
  1372  	}
  1373  	return req
  1374  }
  1375  
  1376  type ObjectiveName struct {
  1377  	Zh *string `json:"zh,omitempty"` // 中文内容
  1378  	En *string `json:"en,omitempty"` // 英文内容
  1379  }
  1380  
  1381  type ObjectiveNameBuilder struct {
  1382  	zh     string // 中文内容
  1383  	zhFlag bool
  1384  	en     string // 英文内容
  1385  	enFlag bool
  1386  }
  1387  
  1388  func NewObjectiveNameBuilder() *ObjectiveNameBuilder {
  1389  	builder := &ObjectiveNameBuilder{}
  1390  	return builder
  1391  }
  1392  
  1393  // 中文内容
  1394  //
  1395  // 示例值:
  1396  func (builder *ObjectiveNameBuilder) Zh(zh string) *ObjectiveNameBuilder {
  1397  	builder.zh = zh
  1398  	builder.zhFlag = true
  1399  	return builder
  1400  }
  1401  
  1402  // 英文内容
  1403  //
  1404  // 示例值:
  1405  func (builder *ObjectiveNameBuilder) En(en string) *ObjectiveNameBuilder {
  1406  	builder.en = en
  1407  	builder.enFlag = true
  1408  	return builder
  1409  }
  1410  
  1411  func (builder *ObjectiveNameBuilder) Build() *ObjectiveName {
  1412  	req := &ObjectiveName{}
  1413  	if builder.zhFlag {
  1414  		req.Zh = &builder.zh
  1415  
  1416  	}
  1417  	if builder.enFlag {
  1418  		req.En = &builder.en
  1419  
  1420  	}
  1421  	return req
  1422  }
  1423  
  1424  type ObjectiveProgress struct {
  1425  	Zh *string `json:"zh,omitempty"` // 中文内容
  1426  	En *string `json:"en,omitempty"` // 英文内容
  1427  }
  1428  
  1429  type ObjectiveProgressBuilder struct {
  1430  	zh     string // 中文内容
  1431  	zhFlag bool
  1432  	en     string // 英文内容
  1433  	enFlag bool
  1434  }
  1435  
  1436  func NewObjectiveProgressBuilder() *ObjectiveProgressBuilder {
  1437  	builder := &ObjectiveProgressBuilder{}
  1438  	return builder
  1439  }
  1440  
  1441  // 中文内容
  1442  //
  1443  // 示例值:
  1444  func (builder *ObjectiveProgressBuilder) Zh(zh string) *ObjectiveProgressBuilder {
  1445  	builder.zh = zh
  1446  	builder.zhFlag = true
  1447  	return builder
  1448  }
  1449  
  1450  // 英文内容
  1451  //
  1452  // 示例值:
  1453  func (builder *ObjectiveProgressBuilder) En(en string) *ObjectiveProgressBuilder {
  1454  	builder.en = en
  1455  	builder.enFlag = true
  1456  	return builder
  1457  }
  1458  
  1459  func (builder *ObjectiveProgressBuilder) Build() *ObjectiveProgress {
  1460  	req := &ObjectiveProgress{}
  1461  	if builder.zhFlag {
  1462  		req.Zh = &builder.zh
  1463  
  1464  	}
  1465  	if builder.enFlag {
  1466  		req.En = &builder.en
  1467  
  1468  	}
  1469  	return req
  1470  }
  1471  
  1472  type Okr struct {
  1473  	OkrId         *string               `json:"okr_id,omitempty"`         // OKR ID
  1474  	PeriodId      *string               `json:"period_id,omitempty"`      // 周期 ID
  1475  	PeriodType    *string               `json:"period_type,omitempty"`    // 周期类型:1、月周期;2、年周期
  1476  	Name          *OkrName              `json:"name,omitempty"`           // 周期展示名称
  1477  	CreateTime    *int                  `json:"create_time,omitempty"`    // 创建时间 毫秒
  1478  	ModifyTime    *int                  `json:"modify_time,omitempty"`    // 修改时间 毫秒
  1479  	ObjectiveList []*OkrDetailObjective `json:"objective_list,omitempty"` // objective 列表
  1480  	OkrScore      *int                  `json:"okr_score,omitempty"`      // 打分
  1481  }
  1482  
  1483  type OkrBuilder struct {
  1484  	okrId             string // OKR ID
  1485  	okrIdFlag         bool
  1486  	periodId          string // 周期 ID
  1487  	periodIdFlag      bool
  1488  	periodType        string // 周期类型:1、月周期;2、年周期
  1489  	periodTypeFlag    bool
  1490  	name              *OkrName // 周期展示名称
  1491  	nameFlag          bool
  1492  	createTime        int // 创建时间 毫秒
  1493  	createTimeFlag    bool
  1494  	modifyTime        int // 修改时间 毫秒
  1495  	modifyTimeFlag    bool
  1496  	objectiveList     []*OkrDetailObjective // objective 列表
  1497  	objectiveListFlag bool
  1498  	okrScore          int // 打分
  1499  	okrScoreFlag      bool
  1500  }
  1501  
  1502  func NewOkrBuilder() *OkrBuilder {
  1503  	builder := &OkrBuilder{}
  1504  	return builder
  1505  }
  1506  
  1507  // OKR ID
  1508  //
  1509  // 示例值:6976173067307927084
  1510  func (builder *OkrBuilder) OkrId(okrId string) *OkrBuilder {
  1511  	builder.okrId = okrId
  1512  	builder.okrIdFlag = true
  1513  	return builder
  1514  }
  1515  
  1516  // 周期 ID
  1517  //
  1518  // 示例值:6974586812973581868
  1519  func (builder *OkrBuilder) PeriodId(periodId string) *OkrBuilder {
  1520  	builder.periodId = periodId
  1521  	builder.periodIdFlag = true
  1522  	return builder
  1523  }
  1524  
  1525  // 周期类型:1、月周期;2、年周期
  1526  //
  1527  // 示例值:1
  1528  func (builder *OkrBuilder) PeriodType(periodType string) *OkrBuilder {
  1529  	builder.periodType = periodType
  1530  	builder.periodTypeFlag = true
  1531  	return builder
  1532  }
  1533  
  1534  // 周期展示名称
  1535  //
  1536  // 示例值:
  1537  func (builder *OkrBuilder) Name(name *OkrName) *OkrBuilder {
  1538  	builder.name = name
  1539  	builder.nameFlag = true
  1540  	return builder
  1541  }
  1542  
  1543  // 创建时间 毫秒
  1544  //
  1545  // 示例值:1624267575928
  1546  func (builder *OkrBuilder) CreateTime(createTime int) *OkrBuilder {
  1547  	builder.createTime = createTime
  1548  	builder.createTimeFlag = true
  1549  	return builder
  1550  }
  1551  
  1552  // 修改时间 毫秒
  1553  //
  1554  // 示例值:1624329170463
  1555  func (builder *OkrBuilder) ModifyTime(modifyTime int) *OkrBuilder {
  1556  	builder.modifyTime = modifyTime
  1557  	builder.modifyTimeFlag = true
  1558  	return builder
  1559  }
  1560  
  1561  // objective 列表
  1562  //
  1563  // 示例值:
  1564  func (builder *OkrBuilder) ObjectiveList(objectiveList []*OkrDetailObjective) *OkrBuilder {
  1565  	builder.objectiveList = objectiveList
  1566  	builder.objectiveListFlag = true
  1567  	return builder
  1568  }
  1569  
  1570  // 打分
  1571  //
  1572  // 示例值:0.5
  1573  func (builder *OkrBuilder) OkrScore(okrScore int) *OkrBuilder {
  1574  	builder.okrScore = okrScore
  1575  	builder.okrScoreFlag = true
  1576  	return builder
  1577  }
  1578  
  1579  func (builder *OkrBuilder) Build() *Okr {
  1580  	req := &Okr{}
  1581  	if builder.okrIdFlag {
  1582  		req.OkrId = &builder.okrId
  1583  
  1584  	}
  1585  	if builder.periodIdFlag {
  1586  		req.PeriodId = &builder.periodId
  1587  
  1588  	}
  1589  	if builder.periodTypeFlag {
  1590  		req.PeriodType = &builder.periodType
  1591  
  1592  	}
  1593  	if builder.nameFlag {
  1594  		req.Name = builder.name
  1595  	}
  1596  	if builder.createTimeFlag {
  1597  		req.CreateTime = &builder.createTime
  1598  
  1599  	}
  1600  	if builder.modifyTimeFlag {
  1601  		req.ModifyTime = &builder.modifyTime
  1602  
  1603  	}
  1604  	if builder.objectiveListFlag {
  1605  		req.ObjectiveList = builder.objectiveList
  1606  	}
  1607  	if builder.okrScoreFlag {
  1608  		req.OkrScore = &builder.okrScore
  1609  
  1610  	}
  1611  	return req
  1612  }
  1613  
  1614  type OkrComment struct {
  1615  	Id                *string                            `json:"id,omitempty"`                  // 全局评论ID
  1616  	Content           *string                            `json:"content,omitempty"`             // 全局评论内容
  1617  	CommentTime       *int                               `json:"comment_time,omitempty"`        // 全局评论时间 毫秒
  1618  	Commentator       *OkrObjectiveAlignedObjectiveOwner `json:"commentator,omitempty"`         // 评论人员
  1619  	LastModifier      *OkrObjectiveAlignedObjectiveOwner `json:"last_modifier,omitempty"`       // 修改评论的用户
  1620  	ContentModifyTime *int                               `json:"content_modify_time,omitempty"` // 评论的被修改时间  0 表示未被修改过, ms级别时间戳
  1621  	SolvedTime        *int                               `json:"solved_time,omitempty"`         // 评论被解决的时间   0 表示未解决过, ms级别时间戳
  1622  }
  1623  
  1624  type OkrCommentBuilder struct {
  1625  	id                    string // 全局评论ID
  1626  	idFlag                bool
  1627  	content               string // 全局评论内容
  1628  	contentFlag           bool
  1629  	commentTime           int // 全局评论时间 毫秒
  1630  	commentTimeFlag       bool
  1631  	commentator           *OkrObjectiveAlignedObjectiveOwner // 评论人员
  1632  	commentatorFlag       bool
  1633  	lastModifier          *OkrObjectiveAlignedObjectiveOwner // 修改评论的用户
  1634  	lastModifierFlag      bool
  1635  	contentModifyTime     int // 评论的被修改时间  0 表示未被修改过, ms级别时间戳
  1636  	contentModifyTimeFlag bool
  1637  	solvedTime            int // 评论被解决的时间   0 表示未解决过, ms级别时间戳
  1638  	solvedTimeFlag        bool
  1639  }
  1640  
  1641  func NewOkrCommentBuilder() *OkrCommentBuilder {
  1642  	builder := &OkrCommentBuilder{}
  1643  	return builder
  1644  }
  1645  
  1646  // 全局评论ID
  1647  //
  1648  // 示例值:6976173067307927084
  1649  func (builder *OkrCommentBuilder) Id(id string) *OkrCommentBuilder {
  1650  	builder.id = id
  1651  	builder.idFlag = true
  1652  	return builder
  1653  }
  1654  
  1655  // 全局评论内容
  1656  //
  1657  // 示例值:well done
  1658  func (builder *OkrCommentBuilder) Content(content string) *OkrCommentBuilder {
  1659  	builder.content = content
  1660  	builder.contentFlag = true
  1661  	return builder
  1662  }
  1663  
  1664  // 全局评论时间 毫秒
  1665  //
  1666  // 示例值:1624267575928
  1667  func (builder *OkrCommentBuilder) CommentTime(commentTime int) *OkrCommentBuilder {
  1668  	builder.commentTime = commentTime
  1669  	builder.commentTimeFlag = true
  1670  	return builder
  1671  }
  1672  
  1673  // 评论人员
  1674  //
  1675  // 示例值:
  1676  func (builder *OkrCommentBuilder) Commentator(commentator *OkrObjectiveAlignedObjectiveOwner) *OkrCommentBuilder {
  1677  	builder.commentator = commentator
  1678  	builder.commentatorFlag = true
  1679  	return builder
  1680  }
  1681  
  1682  // 修改评论的用户
  1683  //
  1684  // 示例值:
  1685  func (builder *OkrCommentBuilder) LastModifier(lastModifier *OkrObjectiveAlignedObjectiveOwner) *OkrCommentBuilder {
  1686  	builder.lastModifier = lastModifier
  1687  	builder.lastModifierFlag = true
  1688  	return builder
  1689  }
  1690  
  1691  // 评论的被修改时间  0 表示未被修改过, ms级别时间戳
  1692  //
  1693  // 示例值:1624267575928
  1694  func (builder *OkrCommentBuilder) ContentModifyTime(contentModifyTime int) *OkrCommentBuilder {
  1695  	builder.contentModifyTime = contentModifyTime
  1696  	builder.contentModifyTimeFlag = true
  1697  	return builder
  1698  }
  1699  
  1700  // 评论被解决的时间   0 表示未解决过, ms级别时间戳
  1701  //
  1702  // 示例值:1624267575928
  1703  func (builder *OkrCommentBuilder) SolvedTime(solvedTime int) *OkrCommentBuilder {
  1704  	builder.solvedTime = solvedTime
  1705  	builder.solvedTimeFlag = true
  1706  	return builder
  1707  }
  1708  
  1709  func (builder *OkrCommentBuilder) Build() *OkrComment {
  1710  	req := &OkrComment{}
  1711  	if builder.idFlag {
  1712  		req.Id = &builder.id
  1713  
  1714  	}
  1715  	if builder.contentFlag {
  1716  		req.Content = &builder.content
  1717  
  1718  	}
  1719  	if builder.commentTimeFlag {
  1720  		req.CommentTime = &builder.commentTime
  1721  
  1722  	}
  1723  	if builder.commentatorFlag {
  1724  		req.Commentator = builder.commentator
  1725  	}
  1726  	if builder.lastModifierFlag {
  1727  		req.LastModifier = builder.lastModifier
  1728  	}
  1729  	if builder.contentModifyTimeFlag {
  1730  		req.ContentModifyTime = &builder.contentModifyTime
  1731  
  1732  	}
  1733  	if builder.solvedTimeFlag {
  1734  		req.SolvedTime = &builder.solvedTime
  1735  
  1736  	}
  1737  	return req
  1738  }
  1739  
  1740  type OkrObjectiveAlignment struct {
  1741  	Id     *string `json:"id,omitempty"`      // ID
  1742  	ToId   *string `json:"to_id,omitempty"`   // 目标id
  1743  	ToType *int    `json:"to_type,omitempty"` // 目标类型
  1744  }
  1745  
  1746  type OkrObjectiveAlignmentBuilder struct {
  1747  	id         string // ID
  1748  	idFlag     bool
  1749  	toId       string // 目标id
  1750  	toIdFlag   bool
  1751  	toType     int // 目标类型
  1752  	toTypeFlag bool
  1753  }
  1754  
  1755  func NewOkrObjectiveAlignmentBuilder() *OkrObjectiveAlignmentBuilder {
  1756  	builder := &OkrObjectiveAlignmentBuilder{}
  1757  	return builder
  1758  }
  1759  
  1760  // ID
  1761  //
  1762  // 示例值:
  1763  func (builder *OkrObjectiveAlignmentBuilder) Id(id string) *OkrObjectiveAlignmentBuilder {
  1764  	builder.id = id
  1765  	builder.idFlag = true
  1766  	return builder
  1767  }
  1768  
  1769  // 目标id
  1770  //
  1771  // 示例值:
  1772  func (builder *OkrObjectiveAlignmentBuilder) ToId(toId string) *OkrObjectiveAlignmentBuilder {
  1773  	builder.toId = toId
  1774  	builder.toIdFlag = true
  1775  	return builder
  1776  }
  1777  
  1778  // 目标类型
  1779  //
  1780  // 示例值:
  1781  func (builder *OkrObjectiveAlignmentBuilder) ToType(toType int) *OkrObjectiveAlignmentBuilder {
  1782  	builder.toType = toType
  1783  	builder.toTypeFlag = true
  1784  	return builder
  1785  }
  1786  
  1787  func (builder *OkrObjectiveAlignmentBuilder) Build() *OkrObjectiveAlignment {
  1788  	req := &OkrObjectiveAlignment{}
  1789  	if builder.idFlag {
  1790  		req.Id = &builder.id
  1791  
  1792  	}
  1793  	if builder.toIdFlag {
  1794  		req.ToId = &builder.toId
  1795  
  1796  	}
  1797  	if builder.toTypeFlag {
  1798  		req.ToType = &builder.toType
  1799  
  1800  	}
  1801  	return req
  1802  }
  1803  
  1804  type OkrBatch struct {
  1805  	Id            *string         `json:"id,omitempty"`             // id
  1806  	Permission    *int            `json:"permission,omitempty"`     // OKR的访问权限
  1807  	PeriodId      *string         `json:"period_id,omitempty"`      // period_id
  1808  	Name          *string         `json:"name,omitempty"`           // 名称
  1809  	ObjectiveList []*OkrObjective `json:"objective_list,omitempty"` // Objective列表
  1810  	ConfirmStatus *int            `json:"confirm_status,omitempty"` // OKR确认状态
  1811  }
  1812  
  1813  type OkrBatchBuilder struct {
  1814  	id                string // id
  1815  	idFlag            bool
  1816  	permission        int // OKR的访问权限
  1817  	permissionFlag    bool
  1818  	periodId          string // period_id
  1819  	periodIdFlag      bool
  1820  	name              string // 名称
  1821  	nameFlag          bool
  1822  	objectiveList     []*OkrObjective // Objective列表
  1823  	objectiveListFlag bool
  1824  	confirmStatus     int // OKR确认状态
  1825  	confirmStatusFlag bool
  1826  }
  1827  
  1828  func NewOkrBatchBuilder() *OkrBatchBuilder {
  1829  	builder := &OkrBatchBuilder{}
  1830  	return builder
  1831  }
  1832  
  1833  // id
  1834  //
  1835  // 示例值:11123123123123
  1836  func (builder *OkrBatchBuilder) Id(id string) *OkrBatchBuilder {
  1837  	builder.id = id
  1838  	builder.idFlag = true
  1839  	return builder
  1840  }
  1841  
  1842  // OKR的访问权限
  1843  //
  1844  // 示例值:0
  1845  func (builder *OkrBatchBuilder) Permission(permission int) *OkrBatchBuilder {
  1846  	builder.permission = permission
  1847  	builder.permissionFlag = true
  1848  	return builder
  1849  }
  1850  
  1851  // period_id
  1852  //
  1853  // 示例值:11123123123123
  1854  func (builder *OkrBatchBuilder) PeriodId(periodId string) *OkrBatchBuilder {
  1855  	builder.periodId = periodId
  1856  	builder.periodIdFlag = true
  1857  	return builder
  1858  }
  1859  
  1860  // 名称
  1861  //
  1862  // 示例值:My OKR
  1863  func (builder *OkrBatchBuilder) Name(name string) *OkrBatchBuilder {
  1864  	builder.name = name
  1865  	builder.nameFlag = true
  1866  	return builder
  1867  }
  1868  
  1869  // Objective列表
  1870  //
  1871  // 示例值:
  1872  func (builder *OkrBatchBuilder) ObjectiveList(objectiveList []*OkrObjective) *OkrBatchBuilder {
  1873  	builder.objectiveList = objectiveList
  1874  	builder.objectiveListFlag = true
  1875  	return builder
  1876  }
  1877  
  1878  // OKR确认状态
  1879  //
  1880  // 示例值:0
  1881  func (builder *OkrBatchBuilder) ConfirmStatus(confirmStatus int) *OkrBatchBuilder {
  1882  	builder.confirmStatus = confirmStatus
  1883  	builder.confirmStatusFlag = true
  1884  	return builder
  1885  }
  1886  
  1887  func (builder *OkrBatchBuilder) Build() *OkrBatch {
  1888  	req := &OkrBatch{}
  1889  	if builder.idFlag {
  1890  		req.Id = &builder.id
  1891  
  1892  	}
  1893  	if builder.permissionFlag {
  1894  		req.Permission = &builder.permission
  1895  
  1896  	}
  1897  	if builder.periodIdFlag {
  1898  		req.PeriodId = &builder.periodId
  1899  
  1900  	}
  1901  	if builder.nameFlag {
  1902  		req.Name = &builder.name
  1903  
  1904  	}
  1905  	if builder.objectiveListFlag {
  1906  		req.ObjectiveList = builder.objectiveList
  1907  	}
  1908  	if builder.confirmStatusFlag {
  1909  		req.ConfirmStatus = &builder.confirmStatus
  1910  
  1911  	}
  1912  	return req
  1913  }
  1914  
  1915  type OkrDetail struct {
  1916  	OkrId         *string               `json:"okr_id,omitempty"`         // OKR ID
  1917  	PeriodId      *string               `json:"period_id,omitempty"`      // 周期 ID
  1918  	PeriodType    *string               `json:"period_type,omitempty"`    // 周期类型:1、月周期;2、年周期
  1919  	Name          *OkrName              `json:"name,omitempty"`           // 周期展示名称
  1920  	CreateTime    *int                  `json:"create_time,omitempty"`    // 创建时间
  1921  	ModifyTime    *int                  `json:"modify_time,omitempty"`    // 修改时间
  1922  	ObjectiveList []*OkrDetailObjective `json:"objective_list,omitempty"` // objective 列表
  1923  	OkrScore      *int                  `json:"okr_score,omitempty"`      // 打分
  1924  }
  1925  
  1926  type OkrDetailBuilder struct {
  1927  	okrId             string // OKR ID
  1928  	okrIdFlag         bool
  1929  	periodId          string // 周期 ID
  1930  	periodIdFlag      bool
  1931  	periodType        string // 周期类型:1、月周期;2、年周期
  1932  	periodTypeFlag    bool
  1933  	name              *OkrName // 周期展示名称
  1934  	nameFlag          bool
  1935  	createTime        int // 创建时间
  1936  	createTimeFlag    bool
  1937  	modifyTime        int // 修改时间
  1938  	modifyTimeFlag    bool
  1939  	objectiveList     []*OkrDetailObjective // objective 列表
  1940  	objectiveListFlag bool
  1941  	okrScore          int // 打分
  1942  	okrScoreFlag      bool
  1943  }
  1944  
  1945  func NewOkrDetailBuilder() *OkrDetailBuilder {
  1946  	builder := &OkrDetailBuilder{}
  1947  	return builder
  1948  }
  1949  
  1950  // OKR ID
  1951  //
  1952  // 示例值:6976173067307927084
  1953  func (builder *OkrDetailBuilder) OkrId(okrId string) *OkrDetailBuilder {
  1954  	builder.okrId = okrId
  1955  	builder.okrIdFlag = true
  1956  	return builder
  1957  }
  1958  
  1959  // 周期 ID
  1960  //
  1961  // 示例值:6974586812973581868
  1962  func (builder *OkrDetailBuilder) PeriodId(periodId string) *OkrDetailBuilder {
  1963  	builder.periodId = periodId
  1964  	builder.periodIdFlag = true
  1965  	return builder
  1966  }
  1967  
  1968  // 周期类型:1、月周期;2、年周期
  1969  //
  1970  // 示例值:1
  1971  func (builder *OkrDetailBuilder) PeriodType(periodType string) *OkrDetailBuilder {
  1972  	builder.periodType = periodType
  1973  	builder.periodTypeFlag = true
  1974  	return builder
  1975  }
  1976  
  1977  // 周期展示名称
  1978  //
  1979  // 示例值:
  1980  func (builder *OkrDetailBuilder) Name(name *OkrName) *OkrDetailBuilder {
  1981  	builder.name = name
  1982  	builder.nameFlag = true
  1983  	return builder
  1984  }
  1985  
  1986  // 创建时间
  1987  //
  1988  // 示例值:1624267575928
  1989  func (builder *OkrDetailBuilder) CreateTime(createTime int) *OkrDetailBuilder {
  1990  	builder.createTime = createTime
  1991  	builder.createTimeFlag = true
  1992  	return builder
  1993  }
  1994  
  1995  // 修改时间
  1996  //
  1997  // 示例值:1624329170463
  1998  func (builder *OkrDetailBuilder) ModifyTime(modifyTime int) *OkrDetailBuilder {
  1999  	builder.modifyTime = modifyTime
  2000  	builder.modifyTimeFlag = true
  2001  	return builder
  2002  }
  2003  
  2004  // objective 列表
  2005  //
  2006  // 示例值:
  2007  func (builder *OkrDetailBuilder) ObjectiveList(objectiveList []*OkrDetailObjective) *OkrDetailBuilder {
  2008  	builder.objectiveList = objectiveList
  2009  	builder.objectiveListFlag = true
  2010  	return builder
  2011  }
  2012  
  2013  // 打分
  2014  //
  2015  // 示例值:0.5
  2016  func (builder *OkrDetailBuilder) OkrScore(okrScore int) *OkrDetailBuilder {
  2017  	builder.okrScore = okrScore
  2018  	builder.okrScoreFlag = true
  2019  	return builder
  2020  }
  2021  
  2022  func (builder *OkrDetailBuilder) Build() *OkrDetail {
  2023  	req := &OkrDetail{}
  2024  	if builder.okrIdFlag {
  2025  		req.OkrId = &builder.okrId
  2026  
  2027  	}
  2028  	if builder.periodIdFlag {
  2029  		req.PeriodId = &builder.periodId
  2030  
  2031  	}
  2032  	if builder.periodTypeFlag {
  2033  		req.PeriodType = &builder.periodType
  2034  
  2035  	}
  2036  	if builder.nameFlag {
  2037  		req.Name = builder.name
  2038  	}
  2039  	if builder.createTimeFlag {
  2040  		req.CreateTime = &builder.createTime
  2041  
  2042  	}
  2043  	if builder.modifyTimeFlag {
  2044  		req.ModifyTime = &builder.modifyTime
  2045  
  2046  	}
  2047  	if builder.objectiveListFlag {
  2048  		req.ObjectiveList = builder.objectiveList
  2049  	}
  2050  	if builder.okrScoreFlag {
  2051  		req.OkrScore = &builder.okrScore
  2052  
  2053  	}
  2054  	return req
  2055  }
  2056  
  2057  type OkrDetailObjective struct {
  2058  	Id                    *string                    `json:"id,omitempty"`                      // Objective ID
  2059  	OkrId                 *string                    `json:"okr_id,omitempty"`                  // 所属okr id
  2060  	UserId                *string                    `json:"user_id,omitempty"`                 // 用户id
  2061  	Pos                   *int                       `json:"pos,omitempty"`                     // pos
  2062  	Score                 *int                       `json:"score,omitempty"`                   // 得分
  2063  	Name                  *OkrName                   `json:"name,omitempty"`                    // Objective 名称
  2064  	Progress              *OkrName                   `json:"progress,omitempty"`                // Objective 进度描述
  2065  	CreateTime            *int                       `json:"create_time,omitempty"`             // 创建时间 毫秒
  2066  	ModifyTime            *int                       `json:"modify_time,omitempty"`             // 修改时间 毫秒
  2067  	KrList                []*OkrDetailObjectiveKr    `json:"kr_list,omitempty"`                 // Kr list
  2068  	AligningObjectiveList []*OkrDetailObjectiveAlign `json:"aligning_objective_list,omitempty"` // aligning_objective_list list
  2069  	AlignedObjectiveList  []*OkrDetailObjectiveAlign `json:"aligned_objective_list,omitempty"`  // aligned_objective_list list
  2070  	Weight                *float64                   `json:"weight,omitempty"`                  // 权重
  2071  }
  2072  
  2073  type OkrDetailObjectiveBuilder struct {
  2074  	id                        string // Objective ID
  2075  	idFlag                    bool
  2076  	okrId                     string // 所属okr id
  2077  	okrIdFlag                 bool
  2078  	userId                    string // 用户id
  2079  	userIdFlag                bool
  2080  	pos                       int // pos
  2081  	posFlag                   bool
  2082  	score                     int // 得分
  2083  	scoreFlag                 bool
  2084  	name                      *OkrName // Objective 名称
  2085  	nameFlag                  bool
  2086  	progress                  *OkrName // Objective 进度描述
  2087  	progressFlag              bool
  2088  	createTime                int // 创建时间 毫秒
  2089  	createTimeFlag            bool
  2090  	modifyTime                int // 修改时间 毫秒
  2091  	modifyTimeFlag            bool
  2092  	krList                    []*OkrDetailObjectiveKr // Kr list
  2093  	krListFlag                bool
  2094  	aligningObjectiveList     []*OkrDetailObjectiveAlign // aligning_objective_list list
  2095  	aligningObjectiveListFlag bool
  2096  	alignedObjectiveList      []*OkrDetailObjectiveAlign // aligned_objective_list list
  2097  	alignedObjectiveListFlag  bool
  2098  	weight                    float64 // 权重
  2099  	weightFlag                bool
  2100  }
  2101  
  2102  func NewOkrDetailObjectiveBuilder() *OkrDetailObjectiveBuilder {
  2103  	builder := &OkrDetailObjectiveBuilder{}
  2104  	return builder
  2105  }
  2106  
  2107  // Objective ID
  2108  //
  2109  // 示例值:6976243668438730284
  2110  func (builder *OkrDetailObjectiveBuilder) Id(id string) *OkrDetailObjectiveBuilder {
  2111  	builder.id = id
  2112  	builder.idFlag = true
  2113  	return builder
  2114  }
  2115  
  2116  // 所属okr id
  2117  //
  2118  // 示例值:6976173067307927084
  2119  func (builder *OkrDetailObjectiveBuilder) OkrId(okrId string) *OkrDetailObjectiveBuilder {
  2120  	builder.okrId = okrId
  2121  	builder.okrIdFlag = true
  2122  	return builder
  2123  }
  2124  
  2125  // 用户id
  2126  //
  2127  // 示例值:ou_186301103180d3469a0bfd6e80977ec9
  2128  func (builder *OkrDetailObjectiveBuilder) UserId(userId string) *OkrDetailObjectiveBuilder {
  2129  	builder.userId = userId
  2130  	builder.userIdFlag = true
  2131  	return builder
  2132  }
  2133  
  2134  // pos
  2135  //
  2136  // 示例值:0
  2137  func (builder *OkrDetailObjectiveBuilder) Pos(pos int) *OkrDetailObjectiveBuilder {
  2138  	builder.pos = pos
  2139  	builder.posFlag = true
  2140  	return builder
  2141  }
  2142  
  2143  // 得分
  2144  //
  2145  // 示例值:0
  2146  func (builder *OkrDetailObjectiveBuilder) Score(score int) *OkrDetailObjectiveBuilder {
  2147  	builder.score = score
  2148  	builder.scoreFlag = true
  2149  	return builder
  2150  }
  2151  
  2152  // Objective 名称
  2153  //
  2154  // 示例值:
  2155  func (builder *OkrDetailObjectiveBuilder) Name(name *OkrName) *OkrDetailObjectiveBuilder {
  2156  	builder.name = name
  2157  	builder.nameFlag = true
  2158  	return builder
  2159  }
  2160  
  2161  // Objective 进度描述
  2162  //
  2163  // 示例值:
  2164  func (builder *OkrDetailObjectiveBuilder) Progress(progress *OkrName) *OkrDetailObjectiveBuilder {
  2165  	builder.progress = progress
  2166  	builder.progressFlag = true
  2167  	return builder
  2168  }
  2169  
  2170  // 创建时间 毫秒
  2171  //
  2172  // 示例值:1624327915435
  2173  func (builder *OkrDetailObjectiveBuilder) CreateTime(createTime int) *OkrDetailObjectiveBuilder {
  2174  	builder.createTime = createTime
  2175  	builder.createTimeFlag = true
  2176  	return builder
  2177  }
  2178  
  2179  // 修改时间 毫秒
  2180  //
  2181  // 示例值:1624329170551
  2182  func (builder *OkrDetailObjectiveBuilder) ModifyTime(modifyTime int) *OkrDetailObjectiveBuilder {
  2183  	builder.modifyTime = modifyTime
  2184  	builder.modifyTimeFlag = true
  2185  	return builder
  2186  }
  2187  
  2188  // Kr list
  2189  //
  2190  // 示例值:
  2191  func (builder *OkrDetailObjectiveBuilder) KrList(krList []*OkrDetailObjectiveKr) *OkrDetailObjectiveBuilder {
  2192  	builder.krList = krList
  2193  	builder.krListFlag = true
  2194  	return builder
  2195  }
  2196  
  2197  // aligning_objective_list list
  2198  //
  2199  // 示例值:
  2200  func (builder *OkrDetailObjectiveBuilder) AligningObjectiveList(aligningObjectiveList []*OkrDetailObjectiveAlign) *OkrDetailObjectiveBuilder {
  2201  	builder.aligningObjectiveList = aligningObjectiveList
  2202  	builder.aligningObjectiveListFlag = true
  2203  	return builder
  2204  }
  2205  
  2206  // aligned_objective_list list
  2207  //
  2208  // 示例值:
  2209  func (builder *OkrDetailObjectiveBuilder) AlignedObjectiveList(alignedObjectiveList []*OkrDetailObjectiveAlign) *OkrDetailObjectiveBuilder {
  2210  	builder.alignedObjectiveList = alignedObjectiveList
  2211  	builder.alignedObjectiveListFlag = true
  2212  	return builder
  2213  }
  2214  
  2215  // 权重
  2216  //
  2217  // 示例值:100
  2218  func (builder *OkrDetailObjectiveBuilder) Weight(weight float64) *OkrDetailObjectiveBuilder {
  2219  	builder.weight = weight
  2220  	builder.weightFlag = true
  2221  	return builder
  2222  }
  2223  
  2224  func (builder *OkrDetailObjectiveBuilder) Build() *OkrDetailObjective {
  2225  	req := &OkrDetailObjective{}
  2226  	if builder.idFlag {
  2227  		req.Id = &builder.id
  2228  
  2229  	}
  2230  	if builder.okrIdFlag {
  2231  		req.OkrId = &builder.okrId
  2232  
  2233  	}
  2234  	if builder.userIdFlag {
  2235  		req.UserId = &builder.userId
  2236  
  2237  	}
  2238  	if builder.posFlag {
  2239  		req.Pos = &builder.pos
  2240  
  2241  	}
  2242  	if builder.scoreFlag {
  2243  		req.Score = &builder.score
  2244  
  2245  	}
  2246  	if builder.nameFlag {
  2247  		req.Name = builder.name
  2248  	}
  2249  	if builder.progressFlag {
  2250  		req.Progress = builder.progress
  2251  	}
  2252  	if builder.createTimeFlag {
  2253  		req.CreateTime = &builder.createTime
  2254  
  2255  	}
  2256  	if builder.modifyTimeFlag {
  2257  		req.ModifyTime = &builder.modifyTime
  2258  
  2259  	}
  2260  	if builder.krListFlag {
  2261  		req.KrList = builder.krList
  2262  	}
  2263  	if builder.aligningObjectiveListFlag {
  2264  		req.AligningObjectiveList = builder.aligningObjectiveList
  2265  	}
  2266  	if builder.alignedObjectiveListFlag {
  2267  		req.AlignedObjectiveList = builder.alignedObjectiveList
  2268  	}
  2269  	if builder.weightFlag {
  2270  		req.Weight = &builder.weight
  2271  
  2272  	}
  2273  	return req
  2274  }
  2275  
  2276  type OkrDetailObjectiveAlign struct {
  2277  	Id     *string `json:"id,omitempty"`      // Objective的ID
  2278  	OkrId  *string `json:"okr_id,omitempty"`  // OKR的ID
  2279  	UserId *string `json:"user_id,omitempty"` // 该Objective的Owner
  2280  }
  2281  
  2282  type OkrDetailObjectiveAlignBuilder struct {
  2283  	id         string // Objective的ID
  2284  	idFlag     bool
  2285  	okrId      string // OKR的ID
  2286  	okrIdFlag  bool
  2287  	userId     string // 该Objective的Owner
  2288  	userIdFlag bool
  2289  }
  2290  
  2291  func NewOkrDetailObjectiveAlignBuilder() *OkrDetailObjectiveAlignBuilder {
  2292  	builder := &OkrDetailObjectiveAlignBuilder{}
  2293  	return builder
  2294  }
  2295  
  2296  // Objective的ID
  2297  //
  2298  // 示例值:6975871409026975276
  2299  func (builder *OkrDetailObjectiveAlignBuilder) Id(id string) *OkrDetailObjectiveAlignBuilder {
  2300  	builder.id = id
  2301  	builder.idFlag = true
  2302  	return builder
  2303  }
  2304  
  2305  // OKR的ID
  2306  //
  2307  // 示例值:6975085709464143404
  2308  func (builder *OkrDetailObjectiveAlignBuilder) OkrId(okrId string) *OkrDetailObjectiveAlignBuilder {
  2309  	builder.okrId = okrId
  2310  	builder.okrIdFlag = true
  2311  	return builder
  2312  }
  2313  
  2314  // 该Objective的Owner
  2315  //
  2316  // 示例值:6975085709464143404
  2317  func (builder *OkrDetailObjectiveAlignBuilder) UserId(userId string) *OkrDetailObjectiveAlignBuilder {
  2318  	builder.userId = userId
  2319  	builder.userIdFlag = true
  2320  	return builder
  2321  }
  2322  
  2323  func (builder *OkrDetailObjectiveAlignBuilder) Build() *OkrDetailObjectiveAlign {
  2324  	req := &OkrDetailObjectiveAlign{}
  2325  	if builder.idFlag {
  2326  		req.Id = &builder.id
  2327  
  2328  	}
  2329  	if builder.okrIdFlag {
  2330  		req.OkrId = &builder.okrId
  2331  
  2332  	}
  2333  	if builder.userIdFlag {
  2334  		req.UserId = &builder.userId
  2335  
  2336  	}
  2337  	return req
  2338  }
  2339  
  2340  type OkrDetailObjectiveKr struct {
  2341  	Id         *string  `json:"id,omitempty"`          // Key Result ID
  2342  	Pos        *int     `json:"pos,omitempty"`         // pos
  2343  	Score      *int     `json:"score,omitempty"`       // KeyResult打分(0 - 100)
  2344  	Weight     *float64 `json:"weight,omitempty"`      // KeyResult的权重(0 - 100)(废弃)
  2345  	Content    *OkrName `json:"content,omitempty"`     // KeyResult 内容
  2346  	CreateTime *int     `json:"create_time,omitempty"` // 创建时间 毫秒
  2347  	ModifyTime *int     `json:"modify_time,omitempty"` // 修改时间 毫秒
  2348  }
  2349  
  2350  type OkrDetailObjectiveKrBuilder struct {
  2351  	id             string // Key Result ID
  2352  	idFlag         bool
  2353  	pos            int // pos
  2354  	posFlag        bool
  2355  	score          int // KeyResult打分(0 - 100)
  2356  	scoreFlag      bool
  2357  	weight         float64 // KeyResult的权重(0 - 100)(废弃)
  2358  	weightFlag     bool
  2359  	content        *OkrName // KeyResult 内容
  2360  	contentFlag    bool
  2361  	createTime     int // 创建时间 毫秒
  2362  	createTimeFlag bool
  2363  	modifyTime     int // 修改时间 毫秒
  2364  	modifyTimeFlag bool
  2365  }
  2366  
  2367  func NewOkrDetailObjectiveKrBuilder() *OkrDetailObjectiveKrBuilder {
  2368  	builder := &OkrDetailObjectiveKrBuilder{}
  2369  	return builder
  2370  }
  2371  
  2372  // Key Result ID
  2373  //
  2374  // 示例值:6976243668438992428
  2375  func (builder *OkrDetailObjectiveKrBuilder) Id(id string) *OkrDetailObjectiveKrBuilder {
  2376  	builder.id = id
  2377  	builder.idFlag = true
  2378  	return builder
  2379  }
  2380  
  2381  // pos
  2382  //
  2383  // 示例值:100
  2384  func (builder *OkrDetailObjectiveKrBuilder) Pos(pos int) *OkrDetailObjectiveKrBuilder {
  2385  	builder.pos = pos
  2386  	builder.posFlag = true
  2387  	return builder
  2388  }
  2389  
  2390  // KeyResult打分(0 - 100)
  2391  //
  2392  // 示例值:100
  2393  func (builder *OkrDetailObjectiveKrBuilder) Score(score int) *OkrDetailObjectiveKrBuilder {
  2394  	builder.score = score
  2395  	builder.scoreFlag = true
  2396  	return builder
  2397  }
  2398  
  2399  // KeyResult的权重(0 - 100)(废弃)
  2400  //
  2401  // 示例值:100
  2402  func (builder *OkrDetailObjectiveKrBuilder) Weight(weight float64) *OkrDetailObjectiveKrBuilder {
  2403  	builder.weight = weight
  2404  	builder.weightFlag = true
  2405  	return builder
  2406  }
  2407  
  2408  // KeyResult 内容
  2409  //
  2410  // 示例值:
  2411  func (builder *OkrDetailObjectiveKrBuilder) Content(content *OkrName) *OkrDetailObjectiveKrBuilder {
  2412  	builder.content = content
  2413  	builder.contentFlag = true
  2414  	return builder
  2415  }
  2416  
  2417  // 创建时间 毫秒
  2418  //
  2419  // 示例值:1624327915448
  2420  func (builder *OkrDetailObjectiveKrBuilder) CreateTime(createTime int) *OkrDetailObjectiveKrBuilder {
  2421  	builder.createTime = createTime
  2422  	builder.createTimeFlag = true
  2423  	return builder
  2424  }
  2425  
  2426  // 修改时间 毫秒
  2427  //
  2428  // 示例值:1624327915448
  2429  func (builder *OkrDetailObjectiveKrBuilder) ModifyTime(modifyTime int) *OkrDetailObjectiveKrBuilder {
  2430  	builder.modifyTime = modifyTime
  2431  	builder.modifyTimeFlag = true
  2432  	return builder
  2433  }
  2434  
  2435  func (builder *OkrDetailObjectiveKrBuilder) Build() *OkrDetailObjectiveKr {
  2436  	req := &OkrDetailObjectiveKr{}
  2437  	if builder.idFlag {
  2438  		req.Id = &builder.id
  2439  
  2440  	}
  2441  	if builder.posFlag {
  2442  		req.Pos = &builder.pos
  2443  
  2444  	}
  2445  	if builder.scoreFlag {
  2446  		req.Score = &builder.score
  2447  
  2448  	}
  2449  	if builder.weightFlag {
  2450  		req.Weight = &builder.weight
  2451  
  2452  	}
  2453  	if builder.contentFlag {
  2454  		req.Content = builder.content
  2455  	}
  2456  	if builder.createTimeFlag {
  2457  		req.CreateTime = &builder.createTime
  2458  
  2459  	}
  2460  	if builder.modifyTimeFlag {
  2461  		req.ModifyTime = &builder.modifyTime
  2462  
  2463  	}
  2464  	return req
  2465  }
  2466  
  2467  type OkrListInfo struct {
  2468  	CurrentOkr *Okr   `json:"current_okr,omitempty"` // 中文内容
  2469  	OkrList    []*Okr `json:"okr_list,omitempty"`    // 英文内容
  2470  }
  2471  
  2472  type OkrListInfoBuilder struct {
  2473  	currentOkr     *Okr // 中文内容
  2474  	currentOkrFlag bool
  2475  	okrList        []*Okr // 英文内容
  2476  	okrListFlag    bool
  2477  }
  2478  
  2479  func NewOkrListInfoBuilder() *OkrListInfoBuilder {
  2480  	builder := &OkrListInfoBuilder{}
  2481  	return builder
  2482  }
  2483  
  2484  // 中文内容
  2485  //
  2486  // 示例值:
  2487  func (builder *OkrListInfoBuilder) CurrentOkr(currentOkr *Okr) *OkrListInfoBuilder {
  2488  	builder.currentOkr = currentOkr
  2489  	builder.currentOkrFlag = true
  2490  	return builder
  2491  }
  2492  
  2493  // 英文内容
  2494  //
  2495  // 示例值:
  2496  func (builder *OkrListInfoBuilder) OkrList(okrList []*Okr) *OkrListInfoBuilder {
  2497  	builder.okrList = okrList
  2498  	builder.okrListFlag = true
  2499  	return builder
  2500  }
  2501  
  2502  func (builder *OkrListInfoBuilder) Build() *OkrListInfo {
  2503  	req := &OkrListInfo{}
  2504  	if builder.currentOkrFlag {
  2505  		req.CurrentOkr = builder.currentOkr
  2506  	}
  2507  	if builder.okrListFlag {
  2508  		req.OkrList = builder.okrList
  2509  	}
  2510  	return req
  2511  }
  2512  
  2513  type OkrName struct {
  2514  	Zh *string `json:"zh,omitempty"` // 中文内容
  2515  	En *string `json:"en,omitempty"` // 英文内容
  2516  }
  2517  
  2518  type OkrNameBuilder struct {
  2519  	zh     string // 中文内容
  2520  	zhFlag bool
  2521  	en     string // 英文内容
  2522  	enFlag bool
  2523  }
  2524  
  2525  func NewOkrNameBuilder() *OkrNameBuilder {
  2526  	builder := &OkrNameBuilder{}
  2527  	return builder
  2528  }
  2529  
  2530  // 中文内容
  2531  //
  2532  // 示例值:
  2533  func (builder *OkrNameBuilder) Zh(zh string) *OkrNameBuilder {
  2534  	builder.zh = zh
  2535  	builder.zhFlag = true
  2536  	return builder
  2537  }
  2538  
  2539  // 英文内容
  2540  //
  2541  // 示例值:
  2542  func (builder *OkrNameBuilder) En(en string) *OkrNameBuilder {
  2543  	builder.en = en
  2544  	builder.enFlag = true
  2545  	return builder
  2546  }
  2547  
  2548  func (builder *OkrNameBuilder) Build() *OkrName {
  2549  	req := &OkrName{}
  2550  	if builder.zhFlag {
  2551  		req.Zh = &builder.zh
  2552  
  2553  	}
  2554  	if builder.enFlag {
  2555  		req.En = &builder.en
  2556  
  2557  	}
  2558  	return req
  2559  }
  2560  
  2561  type OkrObjective struct {
  2562  	Id                                 *string                              `json:"id,omitempty"`                                      // Objective ID
  2563  	Permission                         *int                                 `json:"permission,omitempty"`                              // 权限
  2564  	Content                            *string                              `json:"content,omitempty"`                                 // Objective 内容
  2565  	ProgressReport                     *string                              `json:"progress_report,omitempty"`                         // Objective 进度记录内容
  2566  	Score                              *int                                 `json:"score,omitempty"`                                   // Objective 分数(0 - 100)
  2567  	Weight                             *float64                             `json:"weight,omitempty"`                                  // Objective的权重(0 - 100)
  2568  	ProgressRate                       *OkrObjectiveProgressRate            `json:"progress_rate,omitempty"`                           // Objective进度
  2569  	KrList                             []*OkrObjectiveKr                    `json:"kr_list,omitempty"`                                 // Objective KeyResult 列表
  2570  	AlignedObjectiveList               []*OkrObjectiveAlignedObjective      `json:"aligned_objective_list,omitempty"`                  // 对齐到该Objective的Objective列表
  2571  	AligningObjectiveList              []*OkrObjectiveAlignedObjective      `json:"aligning_objective_list,omitempty"`                 // 该Objective对齐到的Objective列表
  2572  	ProgressRecordList                 []*ProgressRecordSimplify            `json:"progress_record_list,omitempty"`                    // 该Objective的进度列表
  2573  	ProgressRatePercentLastUpdatedTime *string                              `json:"progress_rate_percent_last_updated_time,omitempty"` // 最后一次进度百分比更新时间 毫秒
  2574  	ProgressRateStatusLastUpdatedTime  *string                              `json:"progress_rate_status_last_updated_time,omitempty"`  // 最后一次状态更新时间 毫秒
  2575  	ProgressRecordLastUpdatedTime      *string                              `json:"progress_record_last_updated_time,omitempty"`       // 最后一次在侧边栏新增或者编辑进展的时间 毫秒
  2576  	ProgressReportLastUpdatedTime      *string                              `json:"progress_report_last_updated_time,omitempty"`       // 最后一次编辑进展记录/备注的时间 毫秒
  2577  	ScoreLastUpdatedTime               *string                              `json:"score_last_updated_time,omitempty"`                 // 最后一次打分更新时间 毫秒
  2578  	Deadline                           *string                              `json:"deadline,omitempty"`                                // 截止时间 毫秒
  2579  	MentionedUserList                  []*OkrObjectiveAlignedObjectiveOwner `json:"mentioned_user_list,omitempty"`                     // 该Objective提到的人员列表
  2580  }
  2581  
  2582  type OkrObjectiveBuilder struct {
  2583  	id                                     string // Objective ID
  2584  	idFlag                                 bool
  2585  	permission                             int // 权限
  2586  	permissionFlag                         bool
  2587  	content                                string // Objective 内容
  2588  	contentFlag                            bool
  2589  	progressReport                         string // Objective 进度记录内容
  2590  	progressReportFlag                     bool
  2591  	score                                  int // Objective 分数(0 - 100)
  2592  	scoreFlag                              bool
  2593  	weight                                 float64 // Objective的权重(0 - 100)
  2594  	weightFlag                             bool
  2595  	progressRate                           *OkrObjectiveProgressRate // Objective进度
  2596  	progressRateFlag                       bool
  2597  	krList                                 []*OkrObjectiveKr // Objective KeyResult 列表
  2598  	krListFlag                             bool
  2599  	alignedObjectiveList                   []*OkrObjectiveAlignedObjective // 对齐到该Objective的Objective列表
  2600  	alignedObjectiveListFlag               bool
  2601  	aligningObjectiveList                  []*OkrObjectiveAlignedObjective // 该Objective对齐到的Objective列表
  2602  	aligningObjectiveListFlag              bool
  2603  	progressRecordList                     []*ProgressRecordSimplify // 该Objective的进度列表
  2604  	progressRecordListFlag                 bool
  2605  	progressRatePercentLastUpdatedTime     string // 最后一次进度百分比更新时间 毫秒
  2606  	progressRatePercentLastUpdatedTimeFlag bool
  2607  	progressRateStatusLastUpdatedTime      string // 最后一次状态更新时间 毫秒
  2608  	progressRateStatusLastUpdatedTimeFlag  bool
  2609  	progressRecordLastUpdatedTime          string // 最后一次在侧边栏新增或者编辑进展的时间 毫秒
  2610  	progressRecordLastUpdatedTimeFlag      bool
  2611  	progressReportLastUpdatedTime          string // 最后一次编辑进展记录/备注的时间 毫秒
  2612  	progressReportLastUpdatedTimeFlag      bool
  2613  	scoreLastUpdatedTime                   string // 最后一次打分更新时间 毫秒
  2614  	scoreLastUpdatedTimeFlag               bool
  2615  	deadline                               string // 截止时间 毫秒
  2616  	deadlineFlag                           bool
  2617  	mentionedUserList                      []*OkrObjectiveAlignedObjectiveOwner // 该Objective提到的人员列表
  2618  	mentionedUserListFlag                  bool
  2619  }
  2620  
  2621  func NewOkrObjectiveBuilder() *OkrObjectiveBuilder {
  2622  	builder := &OkrObjectiveBuilder{}
  2623  	return builder
  2624  }
  2625  
  2626  // Objective ID
  2627  //
  2628  // 示例值:1231231231231
  2629  func (builder *OkrObjectiveBuilder) Id(id string) *OkrObjectiveBuilder {
  2630  	builder.id = id
  2631  	builder.idFlag = true
  2632  	return builder
  2633  }
  2634  
  2635  // 权限
  2636  //
  2637  // 示例值:0
  2638  func (builder *OkrObjectiveBuilder) Permission(permission int) *OkrObjectiveBuilder {
  2639  	builder.permission = permission
  2640  	builder.permissionFlag = true
  2641  	return builder
  2642  }
  2643  
  2644  // Objective 内容
  2645  //
  2646  // 示例值:Objective 内容
  2647  func (builder *OkrObjectiveBuilder) Content(content string) *OkrObjectiveBuilder {
  2648  	builder.content = content
  2649  	builder.contentFlag = true
  2650  	return builder
  2651  }
  2652  
  2653  // Objective 进度记录内容
  2654  //
  2655  // 示例值:Objective 进度记录内容
  2656  func (builder *OkrObjectiveBuilder) ProgressReport(progressReport string) *OkrObjectiveBuilder {
  2657  	builder.progressReport = progressReport
  2658  	builder.progressReportFlag = true
  2659  	return builder
  2660  }
  2661  
  2662  // Objective 分数(0 - 100)
  2663  //
  2664  // 示例值:100
  2665  func (builder *OkrObjectiveBuilder) Score(score int) *OkrObjectiveBuilder {
  2666  	builder.score = score
  2667  	builder.scoreFlag = true
  2668  	return builder
  2669  }
  2670  
  2671  // Objective的权重(0 - 100)
  2672  //
  2673  // 示例值:33.33
  2674  func (builder *OkrObjectiveBuilder) Weight(weight float64) *OkrObjectiveBuilder {
  2675  	builder.weight = weight
  2676  	builder.weightFlag = true
  2677  	return builder
  2678  }
  2679  
  2680  // Objective进度
  2681  //
  2682  // 示例值:
  2683  func (builder *OkrObjectiveBuilder) ProgressRate(progressRate *OkrObjectiveProgressRate) *OkrObjectiveBuilder {
  2684  	builder.progressRate = progressRate
  2685  	builder.progressRateFlag = true
  2686  	return builder
  2687  }
  2688  
  2689  // Objective KeyResult 列表
  2690  //
  2691  // 示例值:
  2692  func (builder *OkrObjectiveBuilder) KrList(krList []*OkrObjectiveKr) *OkrObjectiveBuilder {
  2693  	builder.krList = krList
  2694  	builder.krListFlag = true
  2695  	return builder
  2696  }
  2697  
  2698  // 对齐到该Objective的Objective列表
  2699  //
  2700  // 示例值:
  2701  func (builder *OkrObjectiveBuilder) AlignedObjectiveList(alignedObjectiveList []*OkrObjectiveAlignedObjective) *OkrObjectiveBuilder {
  2702  	builder.alignedObjectiveList = alignedObjectiveList
  2703  	builder.alignedObjectiveListFlag = true
  2704  	return builder
  2705  }
  2706  
  2707  // 该Objective对齐到的Objective列表
  2708  //
  2709  // 示例值:
  2710  func (builder *OkrObjectiveBuilder) AligningObjectiveList(aligningObjectiveList []*OkrObjectiveAlignedObjective) *OkrObjectiveBuilder {
  2711  	builder.aligningObjectiveList = aligningObjectiveList
  2712  	builder.aligningObjectiveListFlag = true
  2713  	return builder
  2714  }
  2715  
  2716  // 该Objective的进度列表
  2717  //
  2718  // 示例值:
  2719  func (builder *OkrObjectiveBuilder) ProgressRecordList(progressRecordList []*ProgressRecordSimplify) *OkrObjectiveBuilder {
  2720  	builder.progressRecordList = progressRecordList
  2721  	builder.progressRecordListFlag = true
  2722  	return builder
  2723  }
  2724  
  2725  // 最后一次进度百分比更新时间 毫秒
  2726  //
  2727  // 示例值:1618500278663
  2728  func (builder *OkrObjectiveBuilder) ProgressRatePercentLastUpdatedTime(progressRatePercentLastUpdatedTime string) *OkrObjectiveBuilder {
  2729  	builder.progressRatePercentLastUpdatedTime = progressRatePercentLastUpdatedTime
  2730  	builder.progressRatePercentLastUpdatedTimeFlag = true
  2731  	return builder
  2732  }
  2733  
  2734  // 最后一次状态更新时间 毫秒
  2735  //
  2736  // 示例值:1618500278663
  2737  func (builder *OkrObjectiveBuilder) ProgressRateStatusLastUpdatedTime(progressRateStatusLastUpdatedTime string) *OkrObjectiveBuilder {
  2738  	builder.progressRateStatusLastUpdatedTime = progressRateStatusLastUpdatedTime
  2739  	builder.progressRateStatusLastUpdatedTimeFlag = true
  2740  	return builder
  2741  }
  2742  
  2743  // 最后一次在侧边栏新增或者编辑进展的时间 毫秒
  2744  //
  2745  // 示例值:1618500278663
  2746  func (builder *OkrObjectiveBuilder) ProgressRecordLastUpdatedTime(progressRecordLastUpdatedTime string) *OkrObjectiveBuilder {
  2747  	builder.progressRecordLastUpdatedTime = progressRecordLastUpdatedTime
  2748  	builder.progressRecordLastUpdatedTimeFlag = true
  2749  	return builder
  2750  }
  2751  
  2752  // 最后一次编辑进展记录/备注的时间 毫秒
  2753  //
  2754  // 示例值:1618500278663
  2755  func (builder *OkrObjectiveBuilder) ProgressReportLastUpdatedTime(progressReportLastUpdatedTime string) *OkrObjectiveBuilder {
  2756  	builder.progressReportLastUpdatedTime = progressReportLastUpdatedTime
  2757  	builder.progressReportLastUpdatedTimeFlag = true
  2758  	return builder
  2759  }
  2760  
  2761  // 最后一次打分更新时间 毫秒
  2762  //
  2763  // 示例值:1618500278663
  2764  func (builder *OkrObjectiveBuilder) ScoreLastUpdatedTime(scoreLastUpdatedTime string) *OkrObjectiveBuilder {
  2765  	builder.scoreLastUpdatedTime = scoreLastUpdatedTime
  2766  	builder.scoreLastUpdatedTimeFlag = true
  2767  	return builder
  2768  }
  2769  
  2770  // 截止时间 毫秒
  2771  //
  2772  // 示例值:1618500278663
  2773  func (builder *OkrObjectiveBuilder) Deadline(deadline string) *OkrObjectiveBuilder {
  2774  	builder.deadline = deadline
  2775  	builder.deadlineFlag = true
  2776  	return builder
  2777  }
  2778  
  2779  // 该Objective提到的人员列表
  2780  //
  2781  // 示例值:
  2782  func (builder *OkrObjectiveBuilder) MentionedUserList(mentionedUserList []*OkrObjectiveAlignedObjectiveOwner) *OkrObjectiveBuilder {
  2783  	builder.mentionedUserList = mentionedUserList
  2784  	builder.mentionedUserListFlag = true
  2785  	return builder
  2786  }
  2787  
  2788  func (builder *OkrObjectiveBuilder) Build() *OkrObjective {
  2789  	req := &OkrObjective{}
  2790  	if builder.idFlag {
  2791  		req.Id = &builder.id
  2792  
  2793  	}
  2794  	if builder.permissionFlag {
  2795  		req.Permission = &builder.permission
  2796  
  2797  	}
  2798  	if builder.contentFlag {
  2799  		req.Content = &builder.content
  2800  
  2801  	}
  2802  	if builder.progressReportFlag {
  2803  		req.ProgressReport = &builder.progressReport
  2804  
  2805  	}
  2806  	if builder.scoreFlag {
  2807  		req.Score = &builder.score
  2808  
  2809  	}
  2810  	if builder.weightFlag {
  2811  		req.Weight = &builder.weight
  2812  
  2813  	}
  2814  	if builder.progressRateFlag {
  2815  		req.ProgressRate = builder.progressRate
  2816  	}
  2817  	if builder.krListFlag {
  2818  		req.KrList = builder.krList
  2819  	}
  2820  	if builder.alignedObjectiveListFlag {
  2821  		req.AlignedObjectiveList = builder.alignedObjectiveList
  2822  	}
  2823  	if builder.aligningObjectiveListFlag {
  2824  		req.AligningObjectiveList = builder.aligningObjectiveList
  2825  	}
  2826  	if builder.progressRecordListFlag {
  2827  		req.ProgressRecordList = builder.progressRecordList
  2828  	}
  2829  	if builder.progressRatePercentLastUpdatedTimeFlag {
  2830  		req.ProgressRatePercentLastUpdatedTime = &builder.progressRatePercentLastUpdatedTime
  2831  
  2832  	}
  2833  	if builder.progressRateStatusLastUpdatedTimeFlag {
  2834  		req.ProgressRateStatusLastUpdatedTime = &builder.progressRateStatusLastUpdatedTime
  2835  
  2836  	}
  2837  	if builder.progressRecordLastUpdatedTimeFlag {
  2838  		req.ProgressRecordLastUpdatedTime = &builder.progressRecordLastUpdatedTime
  2839  
  2840  	}
  2841  	if builder.progressReportLastUpdatedTimeFlag {
  2842  		req.ProgressReportLastUpdatedTime = &builder.progressReportLastUpdatedTime
  2843  
  2844  	}
  2845  	if builder.scoreLastUpdatedTimeFlag {
  2846  		req.ScoreLastUpdatedTime = &builder.scoreLastUpdatedTime
  2847  
  2848  	}
  2849  	if builder.deadlineFlag {
  2850  		req.Deadline = &builder.deadline
  2851  
  2852  	}
  2853  	if builder.mentionedUserListFlag {
  2854  		req.MentionedUserList = builder.mentionedUserList
  2855  	}
  2856  	return req
  2857  }
  2858  
  2859  type OkrObjectiveAlignedObjective struct {
  2860  	Id    *string                            `json:"id,omitempty"`     // Objective的ID
  2861  	OkrId *string                            `json:"okr_id,omitempty"` // OKR的ID
  2862  	Owner *OkrObjectiveAlignedObjectiveOwner `json:"owner,omitempty"`  // 该Objective的Owner
  2863  }
  2864  
  2865  type OkrObjectiveAlignedObjectiveBuilder struct {
  2866  	id        string // Objective的ID
  2867  	idFlag    bool
  2868  	okrId     string // OKR的ID
  2869  	okrIdFlag bool
  2870  	owner     *OkrObjectiveAlignedObjectiveOwner // 该Objective的Owner
  2871  	ownerFlag bool
  2872  }
  2873  
  2874  func NewOkrObjectiveAlignedObjectiveBuilder() *OkrObjectiveAlignedObjectiveBuilder {
  2875  	builder := &OkrObjectiveAlignedObjectiveBuilder{}
  2876  	return builder
  2877  }
  2878  
  2879  // Objective的ID
  2880  //
  2881  // 示例值:1231231231213
  2882  func (builder *OkrObjectiveAlignedObjectiveBuilder) Id(id string) *OkrObjectiveAlignedObjectiveBuilder {
  2883  	builder.id = id
  2884  	builder.idFlag = true
  2885  	return builder
  2886  }
  2887  
  2888  // OKR的ID
  2889  //
  2890  // 示例值:12323231231213
  2891  func (builder *OkrObjectiveAlignedObjectiveBuilder) OkrId(okrId string) *OkrObjectiveAlignedObjectiveBuilder {
  2892  	builder.okrId = okrId
  2893  	builder.okrIdFlag = true
  2894  	return builder
  2895  }
  2896  
  2897  // 该Objective的Owner
  2898  //
  2899  // 示例值:
  2900  func (builder *OkrObjectiveAlignedObjectiveBuilder) Owner(owner *OkrObjectiveAlignedObjectiveOwner) *OkrObjectiveAlignedObjectiveBuilder {
  2901  	builder.owner = owner
  2902  	builder.ownerFlag = true
  2903  	return builder
  2904  }
  2905  
  2906  func (builder *OkrObjectiveAlignedObjectiveBuilder) Build() *OkrObjectiveAlignedObjective {
  2907  	req := &OkrObjectiveAlignedObjective{}
  2908  	if builder.idFlag {
  2909  		req.Id = &builder.id
  2910  
  2911  	}
  2912  	if builder.okrIdFlag {
  2913  		req.OkrId = &builder.okrId
  2914  
  2915  	}
  2916  	if builder.ownerFlag {
  2917  		req.Owner = builder.owner
  2918  	}
  2919  	return req
  2920  }
  2921  
  2922  type OkrObjectiveAlignedObjectiveOwner struct {
  2923  	OpenId *string `json:"open_id,omitempty"` // 用户的 open_id
  2924  	UserId *string `json:"user_id,omitempty"` // 用户的 user_id
  2925  }
  2926  
  2927  type OkrObjectiveAlignedObjectiveOwnerBuilder struct {
  2928  	openId     string // 用户的 open_id
  2929  	openIdFlag bool
  2930  	userId     string // 用户的 user_id
  2931  	userIdFlag bool
  2932  }
  2933  
  2934  func NewOkrObjectiveAlignedObjectiveOwnerBuilder() *OkrObjectiveAlignedObjectiveOwnerBuilder {
  2935  	builder := &OkrObjectiveAlignedObjectiveOwnerBuilder{}
  2936  	return builder
  2937  }
  2938  
  2939  // 用户的 open_id
  2940  //
  2941  // 示例值:od-asd2dasdasd
  2942  func (builder *OkrObjectiveAlignedObjectiveOwnerBuilder) OpenId(openId string) *OkrObjectiveAlignedObjectiveOwnerBuilder {
  2943  	builder.openId = openId
  2944  	builder.openIdFlag = true
  2945  	return builder
  2946  }
  2947  
  2948  // 用户的 user_id
  2949  //
  2950  // 示例值:ou-ux987dsf6x
  2951  func (builder *OkrObjectiveAlignedObjectiveOwnerBuilder) UserId(userId string) *OkrObjectiveAlignedObjectiveOwnerBuilder {
  2952  	builder.userId = userId
  2953  	builder.userIdFlag = true
  2954  	return builder
  2955  }
  2956  
  2957  func (builder *OkrObjectiveAlignedObjectiveOwnerBuilder) Build() *OkrObjectiveAlignedObjectiveOwner {
  2958  	req := &OkrObjectiveAlignedObjectiveOwner{}
  2959  	if builder.openIdFlag {
  2960  		req.OpenId = &builder.openId
  2961  
  2962  	}
  2963  	if builder.userIdFlag {
  2964  		req.UserId = &builder.userId
  2965  
  2966  	}
  2967  	return req
  2968  }
  2969  
  2970  type OkrObjectiveKr struct {
  2971  	Id                                 *string                              `json:"id,omitempty"`                                      // Key Result ID
  2972  	Content                            *string                              `json:"content,omitempty"`                                 // KeyResult 内容
  2973  	Score                              *int                                 `json:"score,omitempty"`                                   // KeyResult打分(0 - 100)
  2974  	Weight                             *int                                 `json:"weight,omitempty"`                                  // KeyResult权重(0 - 100)(废弃)
  2975  	KrWeight                           *float64                             `json:"kr_weight,omitempty"`                               // KeyResult的权重(0 - 100)
  2976  	ProgressRate                       *OkrObjectiveProgressRate            `json:"progress_rate,omitempty"`                           // KR进度
  2977  	ProgressRecordList                 []*ProgressRecordSimplify            `json:"progress_record_list,omitempty"`                    // 该KR的进度列表
  2978  	ProgressRatePercentLastUpdatedTime *string                              `json:"progress_rate_percent_last_updated_time,omitempty"` // 最后一次进度百分比更新时间 毫秒
  2979  	ProgressRateStatusLastUpdatedTime  *string                              `json:"progress_rate_status_last_updated_time,omitempty"`  // 最后一次状态更新时间 毫秒
  2980  	ProgressRecordLastUpdatedTime      *string                              `json:"progress_record_last_updated_time,omitempty"`       // 最后一次在侧边栏新增或者编辑进展的时间 毫秒
  2981  	ProgressReportLastUpdatedTime      *string                              `json:"progress_report_last_updated_time,omitempty"`       // 最后一次编辑进展记录/备注的时间 毫秒
  2982  	ScoreLastUpdatedTime               *string                              `json:"score_last_updated_time,omitempty"`                 // 最后一次打分更新时间 毫秒
  2983  	Deadline                           *string                              `json:"deadline,omitempty"`                                // 截止时间 毫秒
  2984  	MentionedUserList                  []*OkrObjectiveAlignedObjectiveOwner `json:"mentioned_user_list,omitempty"`                     // 该Objective提到的人员列表
  2985  }
  2986  
  2987  type OkrObjectiveKrBuilder struct {
  2988  	id                                     string // Key Result ID
  2989  	idFlag                                 bool
  2990  	content                                string // KeyResult 内容
  2991  	contentFlag                            bool
  2992  	score                                  int // KeyResult打分(0 - 100)
  2993  	scoreFlag                              bool
  2994  	weight                                 int // KeyResult权重(0 - 100)(废弃)
  2995  	weightFlag                             bool
  2996  	krWeight                               float64 // KeyResult的权重(0 - 100)
  2997  	krWeightFlag                           bool
  2998  	progressRate                           *OkrObjectiveProgressRate // KR进度
  2999  	progressRateFlag                       bool
  3000  	progressRecordList                     []*ProgressRecordSimplify // 该KR的进度列表
  3001  	progressRecordListFlag                 bool
  3002  	progressRatePercentLastUpdatedTime     string // 最后一次进度百分比更新时间 毫秒
  3003  	progressRatePercentLastUpdatedTimeFlag bool
  3004  	progressRateStatusLastUpdatedTime      string // 最后一次状态更新时间 毫秒
  3005  	progressRateStatusLastUpdatedTimeFlag  bool
  3006  	progressRecordLastUpdatedTime          string // 最后一次在侧边栏新增或者编辑进展的时间 毫秒
  3007  	progressRecordLastUpdatedTimeFlag      bool
  3008  	progressReportLastUpdatedTime          string // 最后一次编辑进展记录/备注的时间 毫秒
  3009  	progressReportLastUpdatedTimeFlag      bool
  3010  	scoreLastUpdatedTime                   string // 最后一次打分更新时间 毫秒
  3011  	scoreLastUpdatedTimeFlag               bool
  3012  	deadline                               string // 截止时间 毫秒
  3013  	deadlineFlag                           bool
  3014  	mentionedUserList                      []*OkrObjectiveAlignedObjectiveOwner // 该Objective提到的人员列表
  3015  	mentionedUserListFlag                  bool
  3016  }
  3017  
  3018  func NewOkrObjectiveKrBuilder() *OkrObjectiveKrBuilder {
  3019  	builder := &OkrObjectiveKrBuilder{}
  3020  	return builder
  3021  }
  3022  
  3023  // Key Result ID
  3024  //
  3025  // 示例值:1231231223
  3026  func (builder *OkrObjectiveKrBuilder) Id(id string) *OkrObjectiveKrBuilder {
  3027  	builder.id = id
  3028  	builder.idFlag = true
  3029  	return builder
  3030  }
  3031  
  3032  // KeyResult 内容
  3033  //
  3034  // 示例值:KeyResult 内容
  3035  func (builder *OkrObjectiveKrBuilder) Content(content string) *OkrObjectiveKrBuilder {
  3036  	builder.content = content
  3037  	builder.contentFlag = true
  3038  	return builder
  3039  }
  3040  
  3041  // KeyResult打分(0 - 100)
  3042  //
  3043  // 示例值:100
  3044  func (builder *OkrObjectiveKrBuilder) Score(score int) *OkrObjectiveKrBuilder {
  3045  	builder.score = score
  3046  	builder.scoreFlag = true
  3047  	return builder
  3048  }
  3049  
  3050  // KeyResult权重(0 - 100)(废弃)
  3051  //
  3052  // 示例值:100
  3053  func (builder *OkrObjectiveKrBuilder) Weight(weight int) *OkrObjectiveKrBuilder {
  3054  	builder.weight = weight
  3055  	builder.weightFlag = true
  3056  	return builder
  3057  }
  3058  
  3059  // KeyResult的权重(0 - 100)
  3060  //
  3061  // 示例值:33.33
  3062  func (builder *OkrObjectiveKrBuilder) KrWeight(krWeight float64) *OkrObjectiveKrBuilder {
  3063  	builder.krWeight = krWeight
  3064  	builder.krWeightFlag = true
  3065  	return builder
  3066  }
  3067  
  3068  // KR进度
  3069  //
  3070  // 示例值:
  3071  func (builder *OkrObjectiveKrBuilder) ProgressRate(progressRate *OkrObjectiveProgressRate) *OkrObjectiveKrBuilder {
  3072  	builder.progressRate = progressRate
  3073  	builder.progressRateFlag = true
  3074  	return builder
  3075  }
  3076  
  3077  // 该KR的进度列表
  3078  //
  3079  // 示例值:
  3080  func (builder *OkrObjectiveKrBuilder) ProgressRecordList(progressRecordList []*ProgressRecordSimplify) *OkrObjectiveKrBuilder {
  3081  	builder.progressRecordList = progressRecordList
  3082  	builder.progressRecordListFlag = true
  3083  	return builder
  3084  }
  3085  
  3086  // 最后一次进度百分比更新时间 毫秒
  3087  //
  3088  // 示例值:1618500278663
  3089  func (builder *OkrObjectiveKrBuilder) ProgressRatePercentLastUpdatedTime(progressRatePercentLastUpdatedTime string) *OkrObjectiveKrBuilder {
  3090  	builder.progressRatePercentLastUpdatedTime = progressRatePercentLastUpdatedTime
  3091  	builder.progressRatePercentLastUpdatedTimeFlag = true
  3092  	return builder
  3093  }
  3094  
  3095  // 最后一次状态更新时间 毫秒
  3096  //
  3097  // 示例值:1618500278663
  3098  func (builder *OkrObjectiveKrBuilder) ProgressRateStatusLastUpdatedTime(progressRateStatusLastUpdatedTime string) *OkrObjectiveKrBuilder {
  3099  	builder.progressRateStatusLastUpdatedTime = progressRateStatusLastUpdatedTime
  3100  	builder.progressRateStatusLastUpdatedTimeFlag = true
  3101  	return builder
  3102  }
  3103  
  3104  // 最后一次在侧边栏新增或者编辑进展的时间 毫秒
  3105  //
  3106  // 示例值:1618500278663
  3107  func (builder *OkrObjectiveKrBuilder) ProgressRecordLastUpdatedTime(progressRecordLastUpdatedTime string) *OkrObjectiveKrBuilder {
  3108  	builder.progressRecordLastUpdatedTime = progressRecordLastUpdatedTime
  3109  	builder.progressRecordLastUpdatedTimeFlag = true
  3110  	return builder
  3111  }
  3112  
  3113  // 最后一次编辑进展记录/备注的时间 毫秒
  3114  //
  3115  // 示例值:1618500278663
  3116  func (builder *OkrObjectiveKrBuilder) ProgressReportLastUpdatedTime(progressReportLastUpdatedTime string) *OkrObjectiveKrBuilder {
  3117  	builder.progressReportLastUpdatedTime = progressReportLastUpdatedTime
  3118  	builder.progressReportLastUpdatedTimeFlag = true
  3119  	return builder
  3120  }
  3121  
  3122  // 最后一次打分更新时间 毫秒
  3123  //
  3124  // 示例值:1618500278663
  3125  func (builder *OkrObjectiveKrBuilder) ScoreLastUpdatedTime(scoreLastUpdatedTime string) *OkrObjectiveKrBuilder {
  3126  	builder.scoreLastUpdatedTime = scoreLastUpdatedTime
  3127  	builder.scoreLastUpdatedTimeFlag = true
  3128  	return builder
  3129  }
  3130  
  3131  // 截止时间 毫秒
  3132  //
  3133  // 示例值:1618500278663
  3134  func (builder *OkrObjectiveKrBuilder) Deadline(deadline string) *OkrObjectiveKrBuilder {
  3135  	builder.deadline = deadline
  3136  	builder.deadlineFlag = true
  3137  	return builder
  3138  }
  3139  
  3140  // 该Objective提到的人员列表
  3141  //
  3142  // 示例值:
  3143  func (builder *OkrObjectiveKrBuilder) MentionedUserList(mentionedUserList []*OkrObjectiveAlignedObjectiveOwner) *OkrObjectiveKrBuilder {
  3144  	builder.mentionedUserList = mentionedUserList
  3145  	builder.mentionedUserListFlag = true
  3146  	return builder
  3147  }
  3148  
  3149  func (builder *OkrObjectiveKrBuilder) Build() *OkrObjectiveKr {
  3150  	req := &OkrObjectiveKr{}
  3151  	if builder.idFlag {
  3152  		req.Id = &builder.id
  3153  
  3154  	}
  3155  	if builder.contentFlag {
  3156  		req.Content = &builder.content
  3157  
  3158  	}
  3159  	if builder.scoreFlag {
  3160  		req.Score = &builder.score
  3161  
  3162  	}
  3163  	if builder.weightFlag {
  3164  		req.Weight = &builder.weight
  3165  
  3166  	}
  3167  	if builder.krWeightFlag {
  3168  		req.KrWeight = &builder.krWeight
  3169  
  3170  	}
  3171  	if builder.progressRateFlag {
  3172  		req.ProgressRate = builder.progressRate
  3173  	}
  3174  	if builder.progressRecordListFlag {
  3175  		req.ProgressRecordList = builder.progressRecordList
  3176  	}
  3177  	if builder.progressRatePercentLastUpdatedTimeFlag {
  3178  		req.ProgressRatePercentLastUpdatedTime = &builder.progressRatePercentLastUpdatedTime
  3179  
  3180  	}
  3181  	if builder.progressRateStatusLastUpdatedTimeFlag {
  3182  		req.ProgressRateStatusLastUpdatedTime = &builder.progressRateStatusLastUpdatedTime
  3183  
  3184  	}
  3185  	if builder.progressRecordLastUpdatedTimeFlag {
  3186  		req.ProgressRecordLastUpdatedTime = &builder.progressRecordLastUpdatedTime
  3187  
  3188  	}
  3189  	if builder.progressReportLastUpdatedTimeFlag {
  3190  		req.ProgressReportLastUpdatedTime = &builder.progressReportLastUpdatedTime
  3191  
  3192  	}
  3193  	if builder.scoreLastUpdatedTimeFlag {
  3194  		req.ScoreLastUpdatedTime = &builder.scoreLastUpdatedTime
  3195  
  3196  	}
  3197  	if builder.deadlineFlag {
  3198  		req.Deadline = &builder.deadline
  3199  
  3200  	}
  3201  	if builder.mentionedUserListFlag {
  3202  		req.MentionedUserList = builder.mentionedUserList
  3203  	}
  3204  	return req
  3205  }
  3206  
  3207  type OkrObjectiveProgressRate struct {
  3208  	Percent *int    `json:"percent,omitempty"` // Objective 进度百分比 >= 0
  3209  	Status  *string `json:"status,omitempty"`  // Objective 进度状态
  3210  }
  3211  
  3212  type OkrObjectiveProgressRateBuilder struct {
  3213  	percent     int // Objective 进度百分比 >= 0
  3214  	percentFlag bool
  3215  	status      string // Objective 进度状态
  3216  	statusFlag  bool
  3217  }
  3218  
  3219  func NewOkrObjectiveProgressRateBuilder() *OkrObjectiveProgressRateBuilder {
  3220  	builder := &OkrObjectiveProgressRateBuilder{}
  3221  	return builder
  3222  }
  3223  
  3224  // Objective 进度百分比 >= 0
  3225  //
  3226  // 示例值:50
  3227  func (builder *OkrObjectiveProgressRateBuilder) Percent(percent int) *OkrObjectiveProgressRateBuilder {
  3228  	builder.percent = percent
  3229  	builder.percentFlag = true
  3230  	return builder
  3231  }
  3232  
  3233  // Objective 进度状态
  3234  //
  3235  // 示例值:1
  3236  func (builder *OkrObjectiveProgressRateBuilder) Status(status string) *OkrObjectiveProgressRateBuilder {
  3237  	builder.status = status
  3238  	builder.statusFlag = true
  3239  	return builder
  3240  }
  3241  
  3242  func (builder *OkrObjectiveProgressRateBuilder) Build() *OkrObjectiveProgressRate {
  3243  	req := &OkrObjectiveProgressRate{}
  3244  	if builder.percentFlag {
  3245  		req.Percent = &builder.percent
  3246  
  3247  	}
  3248  	if builder.statusFlag {
  3249  		req.Status = &builder.status
  3250  
  3251  	}
  3252  	return req
  3253  }
  3254  
  3255  type OkrReview struct {
  3256  	UserId           *OkrObjectiveAlignedObjectiveOwner `json:"user_id,omitempty"`            // 复盘的用户
  3257  	ReviewPeriodList []*OkrReviewPeriod                 `json:"review_period_list,omitempty"` // 用户对应的OKR复盘列表
  3258  }
  3259  
  3260  type OkrReviewBuilder struct {
  3261  	userId               *OkrObjectiveAlignedObjectiveOwner // 复盘的用户
  3262  	userIdFlag           bool
  3263  	reviewPeriodList     []*OkrReviewPeriod // 用户对应的OKR复盘列表
  3264  	reviewPeriodListFlag bool
  3265  }
  3266  
  3267  func NewOkrReviewBuilder() *OkrReviewBuilder {
  3268  	builder := &OkrReviewBuilder{}
  3269  	return builder
  3270  }
  3271  
  3272  // 复盘的用户
  3273  //
  3274  // 示例值:
  3275  func (builder *OkrReviewBuilder) UserId(userId *OkrObjectiveAlignedObjectiveOwner) *OkrReviewBuilder {
  3276  	builder.userId = userId
  3277  	builder.userIdFlag = true
  3278  	return builder
  3279  }
  3280  
  3281  // 用户对应的OKR复盘列表
  3282  //
  3283  // 示例值:
  3284  func (builder *OkrReviewBuilder) ReviewPeriodList(reviewPeriodList []*OkrReviewPeriod) *OkrReviewBuilder {
  3285  	builder.reviewPeriodList = reviewPeriodList
  3286  	builder.reviewPeriodListFlag = true
  3287  	return builder
  3288  }
  3289  
  3290  func (builder *OkrReviewBuilder) Build() *OkrReview {
  3291  	req := &OkrReview{}
  3292  	if builder.userIdFlag {
  3293  		req.UserId = builder.userId
  3294  	}
  3295  	if builder.reviewPeriodListFlag {
  3296  		req.ReviewPeriodList = builder.reviewPeriodList
  3297  	}
  3298  	return req
  3299  }
  3300  
  3301  type OkrReviewPeriod struct {
  3302  	PeriodId           *string               `json:"period_id,omitempty"`            // 周期ID
  3303  	CycleReviewList    []*OkrReviewPeriodUrl `json:"cycle_review_list,omitempty"`    // 复盘文档
  3304  	ProgressReportList []*OkrReviewPeriodUrl `json:"progress_report_list,omitempty"` // 进展报告
  3305  }
  3306  
  3307  type OkrReviewPeriodBuilder struct {
  3308  	periodId               string // 周期ID
  3309  	periodIdFlag           bool
  3310  	cycleReviewList        []*OkrReviewPeriodUrl // 复盘文档
  3311  	cycleReviewListFlag    bool
  3312  	progressReportList     []*OkrReviewPeriodUrl // 进展报告
  3313  	progressReportListFlag bool
  3314  }
  3315  
  3316  func NewOkrReviewPeriodBuilder() *OkrReviewPeriodBuilder {
  3317  	builder := &OkrReviewPeriodBuilder{}
  3318  	return builder
  3319  }
  3320  
  3321  // 周期ID
  3322  //
  3323  // 示例值:6951461264858777132
  3324  func (builder *OkrReviewPeriodBuilder) PeriodId(periodId string) *OkrReviewPeriodBuilder {
  3325  	builder.periodId = periodId
  3326  	builder.periodIdFlag = true
  3327  	return builder
  3328  }
  3329  
  3330  // 复盘文档
  3331  //
  3332  // 示例值:
  3333  func (builder *OkrReviewPeriodBuilder) CycleReviewList(cycleReviewList []*OkrReviewPeriodUrl) *OkrReviewPeriodBuilder {
  3334  	builder.cycleReviewList = cycleReviewList
  3335  	builder.cycleReviewListFlag = true
  3336  	return builder
  3337  }
  3338  
  3339  // 进展报告
  3340  //
  3341  // 示例值:
  3342  func (builder *OkrReviewPeriodBuilder) ProgressReportList(progressReportList []*OkrReviewPeriodUrl) *OkrReviewPeriodBuilder {
  3343  	builder.progressReportList = progressReportList
  3344  	builder.progressReportListFlag = true
  3345  	return builder
  3346  }
  3347  
  3348  func (builder *OkrReviewPeriodBuilder) Build() *OkrReviewPeriod {
  3349  	req := &OkrReviewPeriod{}
  3350  	if builder.periodIdFlag {
  3351  		req.PeriodId = &builder.periodId
  3352  
  3353  	}
  3354  	if builder.cycleReviewListFlag {
  3355  		req.CycleReviewList = builder.cycleReviewList
  3356  	}
  3357  	if builder.progressReportListFlag {
  3358  		req.ProgressReportList = builder.progressReportList
  3359  	}
  3360  	return req
  3361  }
  3362  
  3363  type OkrReviewPeriodUrl struct {
  3364  	Url        *string `json:"url,omitempty"`         // 文档链接
  3365  	CreateTime *string `json:"create_time,omitempty"` // 创建时间 毫秒
  3366  }
  3367  
  3368  type OkrReviewPeriodUrlBuilder struct {
  3369  	url            string // 文档链接
  3370  	urlFlag        bool
  3371  	createTime     string // 创建时间 毫秒
  3372  	createTimeFlag bool
  3373  }
  3374  
  3375  func NewOkrReviewPeriodUrlBuilder() *OkrReviewPeriodUrlBuilder {
  3376  	builder := &OkrReviewPeriodUrlBuilder{}
  3377  	return builder
  3378  }
  3379  
  3380  // 文档链接
  3381  //
  3382  // 示例值:https://okr-boe1.feishu-boe.cn/docs/docbc0cvt2wT0Yq34Tn7YemH5Qb
  3383  func (builder *OkrReviewPeriodUrlBuilder) Url(url string) *OkrReviewPeriodUrlBuilder {
  3384  	builder.url = url
  3385  	builder.urlFlag = true
  3386  	return builder
  3387  }
  3388  
  3389  // 创建时间 毫秒
  3390  //
  3391  // 示例值:1618500278663
  3392  func (builder *OkrReviewPeriodUrlBuilder) CreateTime(createTime string) *OkrReviewPeriodUrlBuilder {
  3393  	builder.createTime = createTime
  3394  	builder.createTimeFlag = true
  3395  	return builder
  3396  }
  3397  
  3398  func (builder *OkrReviewPeriodUrlBuilder) Build() *OkrReviewPeriodUrl {
  3399  	req := &OkrReviewPeriodUrl{}
  3400  	if builder.urlFlag {
  3401  		req.Url = &builder.url
  3402  
  3403  	}
  3404  	if builder.createTimeFlag {
  3405  		req.CreateTime = &builder.createTime
  3406  
  3407  	}
  3408  	return req
  3409  }
  3410  
  3411  type OkrSimple struct {
  3412  	Name       *OkrName `json:"name,omitempty"`        // 周期展示名称
  3413  	OkrId      *string  `json:"okr_id,omitempty"`      // OKR ID
  3414  	PeriodId   *string  `json:"period_id,omitempty"`   // 周期 ID
  3415  	PeriodType *string  `json:"period_type,omitempty"` // 周期类型:1、月周期;2、年周期
  3416  }
  3417  
  3418  type OkrSimpleBuilder struct {
  3419  	name           *OkrName // 周期展示名称
  3420  	nameFlag       bool
  3421  	okrId          string // OKR ID
  3422  	okrIdFlag      bool
  3423  	periodId       string // 周期 ID
  3424  	periodIdFlag   bool
  3425  	periodType     string // 周期类型:1、月周期;2、年周期
  3426  	periodTypeFlag bool
  3427  }
  3428  
  3429  func NewOkrSimpleBuilder() *OkrSimpleBuilder {
  3430  	builder := &OkrSimpleBuilder{}
  3431  	return builder
  3432  }
  3433  
  3434  // 周期展示名称
  3435  //
  3436  // 示例值:
  3437  func (builder *OkrSimpleBuilder) Name(name *OkrName) *OkrSimpleBuilder {
  3438  	builder.name = name
  3439  	builder.nameFlag = true
  3440  	return builder
  3441  }
  3442  
  3443  // OKR ID
  3444  //
  3445  // 示例值:
  3446  func (builder *OkrSimpleBuilder) OkrId(okrId string) *OkrSimpleBuilder {
  3447  	builder.okrId = okrId
  3448  	builder.okrIdFlag = true
  3449  	return builder
  3450  }
  3451  
  3452  // 周期 ID
  3453  //
  3454  // 示例值:
  3455  func (builder *OkrSimpleBuilder) PeriodId(periodId string) *OkrSimpleBuilder {
  3456  	builder.periodId = periodId
  3457  	builder.periodIdFlag = true
  3458  	return builder
  3459  }
  3460  
  3461  // 周期类型:1、月周期;2、年周期
  3462  //
  3463  // 示例值:
  3464  func (builder *OkrSimpleBuilder) PeriodType(periodType string) *OkrSimpleBuilder {
  3465  	builder.periodType = periodType
  3466  	builder.periodTypeFlag = true
  3467  	return builder
  3468  }
  3469  
  3470  func (builder *OkrSimpleBuilder) Build() *OkrSimple {
  3471  	req := &OkrSimple{}
  3472  	if builder.nameFlag {
  3473  		req.Name = builder.name
  3474  	}
  3475  	if builder.okrIdFlag {
  3476  		req.OkrId = &builder.okrId
  3477  
  3478  	}
  3479  	if builder.periodIdFlag {
  3480  		req.PeriodId = &builder.periodId
  3481  
  3482  	}
  3483  	if builder.periodTypeFlag {
  3484  		req.PeriodType = &builder.periodType
  3485  
  3486  	}
  3487  	return req
  3488  }
  3489  
  3490  type Period struct {
  3491  	Id     *string `json:"id,omitempty"`      // id
  3492  	ZhName *string `json:"zh_name,omitempty"` // 中文名称
  3493  	EnName *string `json:"en_name,omitempty"` // 英文名称
  3494  	Status *int    `json:"status,omitempty"`  // 启用状态
  3495  }
  3496  
  3497  type PeriodBuilder struct {
  3498  	id         string // id
  3499  	idFlag     bool
  3500  	zhName     string // 中文名称
  3501  	zhNameFlag bool
  3502  	enName     string // 英文名称
  3503  	enNameFlag bool
  3504  	status     int // 启用状态
  3505  	statusFlag bool
  3506  }
  3507  
  3508  func NewPeriodBuilder() *PeriodBuilder {
  3509  	builder := &PeriodBuilder{}
  3510  	return builder
  3511  }
  3512  
  3513  // id
  3514  //
  3515  // 示例值:635782378412311
  3516  func (builder *PeriodBuilder) Id(id string) *PeriodBuilder {
  3517  	builder.id = id
  3518  	builder.idFlag = true
  3519  	return builder
  3520  }
  3521  
  3522  // 中文名称
  3523  //
  3524  // 示例值:中文周期
  3525  func (builder *PeriodBuilder) ZhName(zhName string) *PeriodBuilder {
  3526  	builder.zhName = zhName
  3527  	builder.zhNameFlag = true
  3528  	return builder
  3529  }
  3530  
  3531  // 英文名称
  3532  //
  3533  // 示例值:english period
  3534  func (builder *PeriodBuilder) EnName(enName string) *PeriodBuilder {
  3535  	builder.enName = enName
  3536  	builder.enNameFlag = true
  3537  	return builder
  3538  }
  3539  
  3540  // 启用状态
  3541  //
  3542  // 示例值:0
  3543  func (builder *PeriodBuilder) Status(status int) *PeriodBuilder {
  3544  	builder.status = status
  3545  	builder.statusFlag = true
  3546  	return builder
  3547  }
  3548  
  3549  func (builder *PeriodBuilder) Build() *Period {
  3550  	req := &Period{}
  3551  	if builder.idFlag {
  3552  		req.Id = &builder.id
  3553  
  3554  	}
  3555  	if builder.zhNameFlag {
  3556  		req.ZhName = &builder.zhName
  3557  
  3558  	}
  3559  	if builder.enNameFlag {
  3560  		req.EnName = &builder.enName
  3561  
  3562  	}
  3563  	if builder.statusFlag {
  3564  		req.Status = &builder.status
  3565  
  3566  	}
  3567  	return req
  3568  }
  3569  
  3570  type ProgressItem struct {
  3571  	Content     *string  `json:"content,omitempty"`      // 进度内容
  3572  	Timestamp   *int     `json:"timestamp,omitempty"`    // 更新时间
  3573  	MentionList []string `json:"mention_list,omitempty"` // 负责人
  3574  }
  3575  
  3576  type ProgressItemBuilder struct {
  3577  	content         string // 进度内容
  3578  	contentFlag     bool
  3579  	timestamp       int // 更新时间
  3580  	timestampFlag   bool
  3581  	mentionList     []string // 负责人
  3582  	mentionListFlag bool
  3583  }
  3584  
  3585  func NewProgressItemBuilder() *ProgressItemBuilder {
  3586  	builder := &ProgressItemBuilder{}
  3587  	return builder
  3588  }
  3589  
  3590  // 进度内容
  3591  //
  3592  // 示例值:
  3593  func (builder *ProgressItemBuilder) Content(content string) *ProgressItemBuilder {
  3594  	builder.content = content
  3595  	builder.contentFlag = true
  3596  	return builder
  3597  }
  3598  
  3599  // 更新时间
  3600  //
  3601  // 示例值:
  3602  func (builder *ProgressItemBuilder) Timestamp(timestamp int) *ProgressItemBuilder {
  3603  	builder.timestamp = timestamp
  3604  	builder.timestampFlag = true
  3605  	return builder
  3606  }
  3607  
  3608  // 负责人
  3609  //
  3610  // 示例值:
  3611  func (builder *ProgressItemBuilder) MentionList(mentionList []string) *ProgressItemBuilder {
  3612  	builder.mentionList = mentionList
  3613  	builder.mentionListFlag = true
  3614  	return builder
  3615  }
  3616  
  3617  func (builder *ProgressItemBuilder) Build() *ProgressItem {
  3618  	req := &ProgressItem{}
  3619  	if builder.contentFlag {
  3620  		req.Content = &builder.content
  3621  
  3622  	}
  3623  	if builder.timestampFlag {
  3624  		req.Timestamp = &builder.timestamp
  3625  
  3626  	}
  3627  	if builder.mentionListFlag {
  3628  		req.MentionList = builder.mentionList
  3629  	}
  3630  	return req
  3631  }
  3632  
  3633  type ProgressRate struct {
  3634  	Percent *int `json:"percent,omitempty"` // 进度百分比
  3635  	Status  *int `json:"status,omitempty"`  // 状态
  3636  }
  3637  
  3638  type ProgressRateBuilder struct {
  3639  	percent     int // 进度百分比
  3640  	percentFlag bool
  3641  	status      int // 状态
  3642  	statusFlag  bool
  3643  }
  3644  
  3645  func NewProgressRateBuilder() *ProgressRateBuilder {
  3646  	builder := &ProgressRateBuilder{}
  3647  	return builder
  3648  }
  3649  
  3650  // 进度百分比
  3651  //
  3652  // 示例值:
  3653  func (builder *ProgressRateBuilder) Percent(percent int) *ProgressRateBuilder {
  3654  	builder.percent = percent
  3655  	builder.percentFlag = true
  3656  	return builder
  3657  }
  3658  
  3659  // 状态
  3660  //
  3661  // 示例值:
  3662  func (builder *ProgressRateBuilder) Status(status int) *ProgressRateBuilder {
  3663  	builder.status = status
  3664  	builder.statusFlag = true
  3665  	return builder
  3666  }
  3667  
  3668  func (builder *ProgressRateBuilder) Build() *ProgressRate {
  3669  	req := &ProgressRate{}
  3670  	if builder.percentFlag {
  3671  		req.Percent = &builder.percent
  3672  
  3673  	}
  3674  	if builder.statusFlag {
  3675  		req.Status = &builder.status
  3676  
  3677  	}
  3678  	return req
  3679  }
  3680  
  3681  type ProgressRecord struct {
  3682  	ProgressId *string       `json:"progress_id,omitempty"` // OKR 进展ID
  3683  	ModifyTime *string       `json:"modify_time,omitempty"` // 进展更新时间 毫秒
  3684  	Content    *ContentBlock `json:"content,omitempty"`     // 进展 对应的 Content 详细内容
  3685  }
  3686  
  3687  type ProgressRecordBuilder struct {
  3688  	progressId     string // OKR 进展ID
  3689  	progressIdFlag bool
  3690  	modifyTime     string // 进展更新时间 毫秒
  3691  	modifyTimeFlag bool
  3692  	content        *ContentBlock // 进展 对应的 Content 详细内容
  3693  	contentFlag    bool
  3694  }
  3695  
  3696  func NewProgressRecordBuilder() *ProgressRecordBuilder {
  3697  	builder := &ProgressRecordBuilder{}
  3698  	return builder
  3699  }
  3700  
  3701  // OKR 进展ID
  3702  //
  3703  // 示例值:7041469619902693396
  3704  func (builder *ProgressRecordBuilder) ProgressId(progressId string) *ProgressRecordBuilder {
  3705  	builder.progressId = progressId
  3706  	builder.progressIdFlag = true
  3707  	return builder
  3708  }
  3709  
  3710  // 进展更新时间 毫秒
  3711  //
  3712  // 示例值:1618500278663
  3713  func (builder *ProgressRecordBuilder) ModifyTime(modifyTime string) *ProgressRecordBuilder {
  3714  	builder.modifyTime = modifyTime
  3715  	builder.modifyTimeFlag = true
  3716  	return builder
  3717  }
  3718  
  3719  // 进展 对应的 Content 详细内容
  3720  //
  3721  // 示例值:
  3722  func (builder *ProgressRecordBuilder) Content(content *ContentBlock) *ProgressRecordBuilder {
  3723  	builder.content = content
  3724  	builder.contentFlag = true
  3725  	return builder
  3726  }
  3727  
  3728  func (builder *ProgressRecordBuilder) Build() *ProgressRecord {
  3729  	req := &ProgressRecord{}
  3730  	if builder.progressIdFlag {
  3731  		req.ProgressId = &builder.progressId
  3732  
  3733  	}
  3734  	if builder.modifyTimeFlag {
  3735  		req.ModifyTime = &builder.modifyTime
  3736  
  3737  	}
  3738  	if builder.contentFlag {
  3739  		req.Content = builder.content
  3740  	}
  3741  	return req
  3742  }
  3743  
  3744  type ProgressRecordSimplify struct {
  3745  	Id *string `json:"id,omitempty"` // OKR 进展记录ID
  3746  }
  3747  
  3748  type ProgressRecordSimplifyBuilder struct {
  3749  	id     string // OKR 进展记录ID
  3750  	idFlag bool
  3751  }
  3752  
  3753  func NewProgressRecordSimplifyBuilder() *ProgressRecordSimplifyBuilder {
  3754  	builder := &ProgressRecordSimplifyBuilder{}
  3755  	return builder
  3756  }
  3757  
  3758  // OKR 进展记录ID
  3759  //
  3760  // 示例值:7041469619902693396
  3761  func (builder *ProgressRecordSimplifyBuilder) Id(id string) *ProgressRecordSimplifyBuilder {
  3762  	builder.id = id
  3763  	builder.idFlag = true
  3764  	return builder
  3765  }
  3766  
  3767  func (builder *ProgressRecordSimplifyBuilder) Build() *ProgressRecordSimplify {
  3768  	req := &ProgressRecordSimplify{}
  3769  	if builder.idFlag {
  3770  		req.Id = &builder.id
  3771  
  3772  	}
  3773  	return req
  3774  }
  3775  
  3776  type UpsertObjective struct {
  3777  	Content      *string              `json:"content,omitempty"`       // OKR内容
  3778  	MentionList  []string             `json:"mention_list,omitempty"`  // 负责人列表
  3779  	KrList       []*UpsertObjectiveKr `json:"kr_list,omitempty"`       // KR列表
  3780  	ProgressRate *ProgressRate        `json:"progress_rate,omitempty"` // Objective进度状态
  3781  	ProgressList []*ProgressItem      `json:"progress_list,omitempty"` // Objective进度列表
  3782  	Weight       *float64             `json:"weight,omitempty"`        // OKR权重
  3783  }
  3784  
  3785  type UpsertObjectiveBuilder struct {
  3786  	content          string // OKR内容
  3787  	contentFlag      bool
  3788  	mentionList      []string // 负责人列表
  3789  	mentionListFlag  bool
  3790  	krList           []*UpsertObjectiveKr // KR列表
  3791  	krListFlag       bool
  3792  	progressRate     *ProgressRate // Objective进度状态
  3793  	progressRateFlag bool
  3794  	progressList     []*ProgressItem // Objective进度列表
  3795  	progressListFlag bool
  3796  	weight           float64 // OKR权重
  3797  	weightFlag       bool
  3798  }
  3799  
  3800  func NewUpsertObjectiveBuilder() *UpsertObjectiveBuilder {
  3801  	builder := &UpsertObjectiveBuilder{}
  3802  	return builder
  3803  }
  3804  
  3805  // OKR内容
  3806  //
  3807  // 示例值:okr
  3808  func (builder *UpsertObjectiveBuilder) Content(content string) *UpsertObjectiveBuilder {
  3809  	builder.content = content
  3810  	builder.contentFlag = true
  3811  	return builder
  3812  }
  3813  
  3814  // 负责人列表
  3815  //
  3816  // 示例值:
  3817  func (builder *UpsertObjectiveBuilder) MentionList(mentionList []string) *UpsertObjectiveBuilder {
  3818  	builder.mentionList = mentionList
  3819  	builder.mentionListFlag = true
  3820  	return builder
  3821  }
  3822  
  3823  // KR列表
  3824  //
  3825  // 示例值:
  3826  func (builder *UpsertObjectiveBuilder) KrList(krList []*UpsertObjectiveKr) *UpsertObjectiveBuilder {
  3827  	builder.krList = krList
  3828  	builder.krListFlag = true
  3829  	return builder
  3830  }
  3831  
  3832  // Objective进度状态
  3833  //
  3834  // 示例值:
  3835  func (builder *UpsertObjectiveBuilder) ProgressRate(progressRate *ProgressRate) *UpsertObjectiveBuilder {
  3836  	builder.progressRate = progressRate
  3837  	builder.progressRateFlag = true
  3838  	return builder
  3839  }
  3840  
  3841  // Objective进度列表
  3842  //
  3843  // 示例值:
  3844  func (builder *UpsertObjectiveBuilder) ProgressList(progressList []*ProgressItem) *UpsertObjectiveBuilder {
  3845  	builder.progressList = progressList
  3846  	builder.progressListFlag = true
  3847  	return builder
  3848  }
  3849  
  3850  // OKR权重
  3851  //
  3852  // 示例值:100
  3853  func (builder *UpsertObjectiveBuilder) Weight(weight float64) *UpsertObjectiveBuilder {
  3854  	builder.weight = weight
  3855  	builder.weightFlag = true
  3856  	return builder
  3857  }
  3858  
  3859  func (builder *UpsertObjectiveBuilder) Build() *UpsertObjective {
  3860  	req := &UpsertObjective{}
  3861  	if builder.contentFlag {
  3862  		req.Content = &builder.content
  3863  
  3864  	}
  3865  	if builder.mentionListFlag {
  3866  		req.MentionList = builder.mentionList
  3867  	}
  3868  	if builder.krListFlag {
  3869  		req.KrList = builder.krList
  3870  	}
  3871  	if builder.progressRateFlag {
  3872  		req.ProgressRate = builder.progressRate
  3873  	}
  3874  	if builder.progressListFlag {
  3875  		req.ProgressList = builder.progressList
  3876  	}
  3877  	if builder.weightFlag {
  3878  		req.Weight = &builder.weight
  3879  
  3880  	}
  3881  	return req
  3882  }
  3883  
  3884  type UpsertObjectiveKr struct {
  3885  	Content      *string         `json:"content,omitempty"`       // OKR内容
  3886  	MentionList  []string        `json:"mention_list,omitempty"`  // 负责人列表
  3887  	Score        *int            `json:"score,omitempty"`         // 得分
  3888  	ProgressRate *ProgressRate   `json:"progress_rate,omitempty"` // Objective进度状态
  3889  	ProgressList []*ProgressItem `json:"progress_list,omitempty"` // Objective进度列表
  3890  	Weight       *float64        `json:"weight,omitempty"`        // OKR权重
  3891  }
  3892  
  3893  type UpsertObjectiveKrBuilder struct {
  3894  	content          string // OKR内容
  3895  	contentFlag      bool
  3896  	mentionList      []string // 负责人列表
  3897  	mentionListFlag  bool
  3898  	score            int // 得分
  3899  	scoreFlag        bool
  3900  	progressRate     *ProgressRate // Objective进度状态
  3901  	progressRateFlag bool
  3902  	progressList     []*ProgressItem // Objective进度列表
  3903  	progressListFlag bool
  3904  	weight           float64 // OKR权重
  3905  	weightFlag       bool
  3906  }
  3907  
  3908  func NewUpsertObjectiveKrBuilder() *UpsertObjectiveKrBuilder {
  3909  	builder := &UpsertObjectiveKrBuilder{}
  3910  	return builder
  3911  }
  3912  
  3913  // OKR内容
  3914  //
  3915  // 示例值:okr
  3916  func (builder *UpsertObjectiveKrBuilder) Content(content string) *UpsertObjectiveKrBuilder {
  3917  	builder.content = content
  3918  	builder.contentFlag = true
  3919  	return builder
  3920  }
  3921  
  3922  // 负责人列表
  3923  //
  3924  // 示例值:
  3925  func (builder *UpsertObjectiveKrBuilder) MentionList(mentionList []string) *UpsertObjectiveKrBuilder {
  3926  	builder.mentionList = mentionList
  3927  	builder.mentionListFlag = true
  3928  	return builder
  3929  }
  3930  
  3931  // 得分
  3932  //
  3933  // 示例值:100
  3934  func (builder *UpsertObjectiveKrBuilder) Score(score int) *UpsertObjectiveKrBuilder {
  3935  	builder.score = score
  3936  	builder.scoreFlag = true
  3937  	return builder
  3938  }
  3939  
  3940  // Objective进度状态
  3941  //
  3942  // 示例值:
  3943  func (builder *UpsertObjectiveKrBuilder) ProgressRate(progressRate *ProgressRate) *UpsertObjectiveKrBuilder {
  3944  	builder.progressRate = progressRate
  3945  	builder.progressRateFlag = true
  3946  	return builder
  3947  }
  3948  
  3949  // Objective进度列表
  3950  //
  3951  // 示例值:
  3952  func (builder *UpsertObjectiveKrBuilder) ProgressList(progressList []*ProgressItem) *UpsertObjectiveKrBuilder {
  3953  	builder.progressList = progressList
  3954  	builder.progressListFlag = true
  3955  	return builder
  3956  }
  3957  
  3958  // OKR权重
  3959  //
  3960  // 示例值:100
  3961  func (builder *UpsertObjectiveKrBuilder) Weight(weight float64) *UpsertObjectiveKrBuilder {
  3962  	builder.weight = weight
  3963  	builder.weightFlag = true
  3964  	return builder
  3965  }
  3966  
  3967  func (builder *UpsertObjectiveKrBuilder) Build() *UpsertObjectiveKr {
  3968  	req := &UpsertObjectiveKr{}
  3969  	if builder.contentFlag {
  3970  		req.Content = &builder.content
  3971  
  3972  	}
  3973  	if builder.mentionListFlag {
  3974  		req.MentionList = builder.mentionList
  3975  	}
  3976  	if builder.scoreFlag {
  3977  		req.Score = &builder.score
  3978  
  3979  	}
  3980  	if builder.progressRateFlag {
  3981  		req.ProgressRate = builder.progressRate
  3982  	}
  3983  	if builder.progressListFlag {
  3984  		req.ProgressList = builder.progressList
  3985  	}
  3986  	if builder.weightFlag {
  3987  		req.Weight = &builder.weight
  3988  
  3989  	}
  3990  	return req
  3991  }
  3992  
  3993  type User struct {
  3994  	Id *string `json:"id,omitempty"` // id
  3995  }
  3996  
  3997  type UserBuilder struct {
  3998  	id     string // id
  3999  	idFlag bool
  4000  }
  4001  
  4002  func NewUserBuilder() *UserBuilder {
  4003  	builder := &UserBuilder{}
  4004  	return builder
  4005  }
  4006  
  4007  // id
  4008  //
  4009  // 示例值:
  4010  func (builder *UserBuilder) Id(id string) *UserBuilder {
  4011  	builder.id = id
  4012  	builder.idFlag = true
  4013  	return builder
  4014  }
  4015  
  4016  func (builder *UserBuilder) Build() *User {
  4017  	req := &User{}
  4018  	if builder.idFlag {
  4019  		req.Id = &builder.id
  4020  
  4021  	}
  4022  	return req
  4023  }
  4024  
  4025  type UserOkr struct {
  4026  	Id            *string             `json:"id,omitempty"`             // OKR ID
  4027  	Name          *string             `json:"name,omitempty"`           // OKR周期名称(lang指定中英文)
  4028  	Permission    *int                `json:"permission,omitempty"`     // 权限,0无权限,1有权限
  4029  	ObjectiveList []*UserOkrObjective `json:"objective_list,omitempty"` // OKR的Objective 列表
  4030  }
  4031  
  4032  type UserOkrBuilder struct {
  4033  	id                string // OKR ID
  4034  	idFlag            bool
  4035  	name              string // OKR周期名称(lang指定中英文)
  4036  	nameFlag          bool
  4037  	permission        int // 权限,0无权限,1有权限
  4038  	permissionFlag    bool
  4039  	objectiveList     []*UserOkrObjective // OKR的Objective 列表
  4040  	objectiveListFlag bool
  4041  }
  4042  
  4043  func NewUserOkrBuilder() *UserOkrBuilder {
  4044  	builder := &UserOkrBuilder{}
  4045  	return builder
  4046  }
  4047  
  4048  // OKR ID
  4049  //
  4050  // 示例值:
  4051  func (builder *UserOkrBuilder) Id(id string) *UserOkrBuilder {
  4052  	builder.id = id
  4053  	builder.idFlag = true
  4054  	return builder
  4055  }
  4056  
  4057  // OKR周期名称(lang指定中英文)
  4058  //
  4059  // 示例值:
  4060  func (builder *UserOkrBuilder) Name(name string) *UserOkrBuilder {
  4061  	builder.name = name
  4062  	builder.nameFlag = true
  4063  	return builder
  4064  }
  4065  
  4066  // 权限,0无权限,1有权限
  4067  //
  4068  // 示例值:
  4069  func (builder *UserOkrBuilder) Permission(permission int) *UserOkrBuilder {
  4070  	builder.permission = permission
  4071  	builder.permissionFlag = true
  4072  	return builder
  4073  }
  4074  
  4075  // OKR的Objective 列表
  4076  //
  4077  // 示例值:
  4078  func (builder *UserOkrBuilder) ObjectiveList(objectiveList []*UserOkrObjective) *UserOkrBuilder {
  4079  	builder.objectiveList = objectiveList
  4080  	builder.objectiveListFlag = true
  4081  	return builder
  4082  }
  4083  
  4084  func (builder *UserOkrBuilder) Build() *UserOkr {
  4085  	req := &UserOkr{}
  4086  	if builder.idFlag {
  4087  		req.Id = &builder.id
  4088  
  4089  	}
  4090  	if builder.nameFlag {
  4091  		req.Name = &builder.name
  4092  
  4093  	}
  4094  	if builder.permissionFlag {
  4095  		req.Permission = &builder.permission
  4096  
  4097  	}
  4098  	if builder.objectiveListFlag {
  4099  		req.ObjectiveList = builder.objectiveList
  4100  	}
  4101  	return req
  4102  }
  4103  
  4104  type UserOkrObjective struct {
  4105  	Id                    *string                             `json:"id,omitempty"`                      // Objective ID
  4106  	Permission            *int                                `json:"permission,omitempty"`              // 权限,0无权限,1有权限
  4107  	Content               *string                             `json:"content,omitempty"`                 // Objective 内容
  4108  	ProgressReport        *string                             `json:"progress_report,omitempty"`         // Objective 进度记录内容
  4109  	Score                 *string                             `json:"score,omitempty"`                   // Objective 分数(0 - 100)
  4110  	ProgressRate          *UserOkrObjectiveProgressRate       `json:"progress_rate,omitempty"`           // Objective进度
  4111  	KrList                []*UserOkrObjectiveKr               `json:"kr_list,omitempty"`                 // Objective KeyResult 列表
  4112  	AlignedObjectiveList  []*UserOkrObjectiveAlignedObjective `json:"aligned_objective_list,omitempty"`  // 对齐到该Objective的Objective列表
  4113  	AligningObjectiveList []*UserOkrObjectiveAlignedObjective `json:"aligning_objective_list,omitempty"` // 该Objective对齐到的Objective列表
  4114  }
  4115  
  4116  type UserOkrObjectiveBuilder struct {
  4117  	id                        string // Objective ID
  4118  	idFlag                    bool
  4119  	permission                int // 权限,0无权限,1有权限
  4120  	permissionFlag            bool
  4121  	content                   string // Objective 内容
  4122  	contentFlag               bool
  4123  	progressReport            string // Objective 进度记录内容
  4124  	progressReportFlag        bool
  4125  	score                     string // Objective 分数(0 - 100)
  4126  	scoreFlag                 bool
  4127  	progressRate              *UserOkrObjectiveProgressRate // Objective进度
  4128  	progressRateFlag          bool
  4129  	krList                    []*UserOkrObjectiveKr // Objective KeyResult 列表
  4130  	krListFlag                bool
  4131  	alignedObjectiveList      []*UserOkrObjectiveAlignedObjective // 对齐到该Objective的Objective列表
  4132  	alignedObjectiveListFlag  bool
  4133  	aligningObjectiveList     []*UserOkrObjectiveAlignedObjective // 该Objective对齐到的Objective列表
  4134  	aligningObjectiveListFlag bool
  4135  }
  4136  
  4137  func NewUserOkrObjectiveBuilder() *UserOkrObjectiveBuilder {
  4138  	builder := &UserOkrObjectiveBuilder{}
  4139  	return builder
  4140  }
  4141  
  4142  // Objective ID
  4143  //
  4144  // 示例值:
  4145  func (builder *UserOkrObjectiveBuilder) Id(id string) *UserOkrObjectiveBuilder {
  4146  	builder.id = id
  4147  	builder.idFlag = true
  4148  	return builder
  4149  }
  4150  
  4151  // 权限,0无权限,1有权限
  4152  //
  4153  // 示例值:
  4154  func (builder *UserOkrObjectiveBuilder) Permission(permission int) *UserOkrObjectiveBuilder {
  4155  	builder.permission = permission
  4156  	builder.permissionFlag = true
  4157  	return builder
  4158  }
  4159  
  4160  // Objective 内容
  4161  //
  4162  // 示例值:
  4163  func (builder *UserOkrObjectiveBuilder) Content(content string) *UserOkrObjectiveBuilder {
  4164  	builder.content = content
  4165  	builder.contentFlag = true
  4166  	return builder
  4167  }
  4168  
  4169  // Objective 进度记录内容
  4170  //
  4171  // 示例值:
  4172  func (builder *UserOkrObjectiveBuilder) ProgressReport(progressReport string) *UserOkrObjectiveBuilder {
  4173  	builder.progressReport = progressReport
  4174  	builder.progressReportFlag = true
  4175  	return builder
  4176  }
  4177  
  4178  // Objective 分数(0 - 100)
  4179  //
  4180  // 示例值:
  4181  func (builder *UserOkrObjectiveBuilder) Score(score string) *UserOkrObjectiveBuilder {
  4182  	builder.score = score
  4183  	builder.scoreFlag = true
  4184  	return builder
  4185  }
  4186  
  4187  // Objective进度
  4188  //
  4189  // 示例值:
  4190  func (builder *UserOkrObjectiveBuilder) ProgressRate(progressRate *UserOkrObjectiveProgressRate) *UserOkrObjectiveBuilder {
  4191  	builder.progressRate = progressRate
  4192  	builder.progressRateFlag = true
  4193  	return builder
  4194  }
  4195  
  4196  // Objective KeyResult 列表
  4197  //
  4198  // 示例值:
  4199  func (builder *UserOkrObjectiveBuilder) KrList(krList []*UserOkrObjectiveKr) *UserOkrObjectiveBuilder {
  4200  	builder.krList = krList
  4201  	builder.krListFlag = true
  4202  	return builder
  4203  }
  4204  
  4205  // 对齐到该Objective的Objective列表
  4206  //
  4207  // 示例值:
  4208  func (builder *UserOkrObjectiveBuilder) AlignedObjectiveList(alignedObjectiveList []*UserOkrObjectiveAlignedObjective) *UserOkrObjectiveBuilder {
  4209  	builder.alignedObjectiveList = alignedObjectiveList
  4210  	builder.alignedObjectiveListFlag = true
  4211  	return builder
  4212  }
  4213  
  4214  // 该Objective对齐到的Objective列表
  4215  //
  4216  // 示例值:
  4217  func (builder *UserOkrObjectiveBuilder) AligningObjectiveList(aligningObjectiveList []*UserOkrObjectiveAlignedObjective) *UserOkrObjectiveBuilder {
  4218  	builder.aligningObjectiveList = aligningObjectiveList
  4219  	builder.aligningObjectiveListFlag = true
  4220  	return builder
  4221  }
  4222  
  4223  func (builder *UserOkrObjectiveBuilder) Build() *UserOkrObjective {
  4224  	req := &UserOkrObjective{}
  4225  	if builder.idFlag {
  4226  		req.Id = &builder.id
  4227  
  4228  	}
  4229  	if builder.permissionFlag {
  4230  		req.Permission = &builder.permission
  4231  
  4232  	}
  4233  	if builder.contentFlag {
  4234  		req.Content = &builder.content
  4235  
  4236  	}
  4237  	if builder.progressReportFlag {
  4238  		req.ProgressReport = &builder.progressReport
  4239  
  4240  	}
  4241  	if builder.scoreFlag {
  4242  		req.Score = &builder.score
  4243  
  4244  	}
  4245  	if builder.progressRateFlag {
  4246  		req.ProgressRate = builder.progressRate
  4247  	}
  4248  	if builder.krListFlag {
  4249  		req.KrList = builder.krList
  4250  	}
  4251  	if builder.alignedObjectiveListFlag {
  4252  		req.AlignedObjectiveList = builder.alignedObjectiveList
  4253  	}
  4254  	if builder.aligningObjectiveListFlag {
  4255  		req.AligningObjectiveList = builder.aligningObjectiveList
  4256  	}
  4257  	return req
  4258  }
  4259  
  4260  type UserOkrObjectiveAlignedObjective struct {
  4261  	Id    *string                                `json:"id,omitempty"`     // Objective的ID
  4262  	OkrId *string                                `json:"okr_id,omitempty"` // OKR的ID
  4263  	Owner *UserOkrObjectiveAlignedObjectiveOwner `json:"owner,omitempty"`  // 该Objective的Owner
  4264  }
  4265  
  4266  type UserOkrObjectiveAlignedObjectiveBuilder struct {
  4267  	id        string // Objective的ID
  4268  	idFlag    bool
  4269  	okrId     string // OKR的ID
  4270  	okrIdFlag bool
  4271  	owner     *UserOkrObjectiveAlignedObjectiveOwner // 该Objective的Owner
  4272  	ownerFlag bool
  4273  }
  4274  
  4275  func NewUserOkrObjectiveAlignedObjectiveBuilder() *UserOkrObjectiveAlignedObjectiveBuilder {
  4276  	builder := &UserOkrObjectiveAlignedObjectiveBuilder{}
  4277  	return builder
  4278  }
  4279  
  4280  // Objective的ID
  4281  //
  4282  // 示例值:
  4283  func (builder *UserOkrObjectiveAlignedObjectiveBuilder) Id(id string) *UserOkrObjectiveAlignedObjectiveBuilder {
  4284  	builder.id = id
  4285  	builder.idFlag = true
  4286  	return builder
  4287  }
  4288  
  4289  // OKR的ID
  4290  //
  4291  // 示例值:
  4292  func (builder *UserOkrObjectiveAlignedObjectiveBuilder) OkrId(okrId string) *UserOkrObjectiveAlignedObjectiveBuilder {
  4293  	builder.okrId = okrId
  4294  	builder.okrIdFlag = true
  4295  	return builder
  4296  }
  4297  
  4298  // 该Objective的Owner
  4299  //
  4300  // 示例值:
  4301  func (builder *UserOkrObjectiveAlignedObjectiveBuilder) Owner(owner *UserOkrObjectiveAlignedObjectiveOwner) *UserOkrObjectiveAlignedObjectiveBuilder {
  4302  	builder.owner = owner
  4303  	builder.ownerFlag = true
  4304  	return builder
  4305  }
  4306  
  4307  func (builder *UserOkrObjectiveAlignedObjectiveBuilder) Build() *UserOkrObjectiveAlignedObjective {
  4308  	req := &UserOkrObjectiveAlignedObjective{}
  4309  	if builder.idFlag {
  4310  		req.Id = &builder.id
  4311  
  4312  	}
  4313  	if builder.okrIdFlag {
  4314  		req.OkrId = &builder.okrId
  4315  
  4316  	}
  4317  	if builder.ownerFlag {
  4318  		req.Owner = builder.owner
  4319  	}
  4320  	return req
  4321  }
  4322  
  4323  type UserOkrObjectiveAlignedObjectiveOwner struct {
  4324  	OpenId     *string `json:"open_id,omitempty"`     // 用户的 open_id
  4325  	EmployeeId *string `json:"employee_id,omitempty"` // 用户的 employee_id
  4326  	EmployeeNo *string `json:"employee_no,omitempty"` // 工号
  4327  	UnionId    *string `json:"union_id,omitempty"`    // 用户的 union_id
  4328  	Name       *string `json:"name,omitempty"`        // 用户名
  4329  }
  4330  
  4331  type UserOkrObjectiveAlignedObjectiveOwnerBuilder struct {
  4332  	openId         string // 用户的 open_id
  4333  	openIdFlag     bool
  4334  	employeeId     string // 用户的 employee_id
  4335  	employeeIdFlag bool
  4336  	employeeNo     string // 工号
  4337  	employeeNoFlag bool
  4338  	unionId        string // 用户的 union_id
  4339  	unionIdFlag    bool
  4340  	name           string // 用户名
  4341  	nameFlag       bool
  4342  }
  4343  
  4344  func NewUserOkrObjectiveAlignedObjectiveOwnerBuilder() *UserOkrObjectiveAlignedObjectiveOwnerBuilder {
  4345  	builder := &UserOkrObjectiveAlignedObjectiveOwnerBuilder{}
  4346  	return builder
  4347  }
  4348  
  4349  // 用户的 open_id
  4350  //
  4351  // 示例值:
  4352  func (builder *UserOkrObjectiveAlignedObjectiveOwnerBuilder) OpenId(openId string) *UserOkrObjectiveAlignedObjectiveOwnerBuilder {
  4353  	builder.openId = openId
  4354  	builder.openIdFlag = true
  4355  	return builder
  4356  }
  4357  
  4358  // 用户的 employee_id
  4359  //
  4360  // 示例值:
  4361  func (builder *UserOkrObjectiveAlignedObjectiveOwnerBuilder) EmployeeId(employeeId string) *UserOkrObjectiveAlignedObjectiveOwnerBuilder {
  4362  	builder.employeeId = employeeId
  4363  	builder.employeeIdFlag = true
  4364  	return builder
  4365  }
  4366  
  4367  // 工号
  4368  //
  4369  // 示例值:
  4370  func (builder *UserOkrObjectiveAlignedObjectiveOwnerBuilder) EmployeeNo(employeeNo string) *UserOkrObjectiveAlignedObjectiveOwnerBuilder {
  4371  	builder.employeeNo = employeeNo
  4372  	builder.employeeNoFlag = true
  4373  	return builder
  4374  }
  4375  
  4376  // 用户的 union_id
  4377  //
  4378  // 示例值:
  4379  func (builder *UserOkrObjectiveAlignedObjectiveOwnerBuilder) UnionId(unionId string) *UserOkrObjectiveAlignedObjectiveOwnerBuilder {
  4380  	builder.unionId = unionId
  4381  	builder.unionIdFlag = true
  4382  	return builder
  4383  }
  4384  
  4385  // 用户名
  4386  //
  4387  // 示例值:
  4388  func (builder *UserOkrObjectiveAlignedObjectiveOwnerBuilder) Name(name string) *UserOkrObjectiveAlignedObjectiveOwnerBuilder {
  4389  	builder.name = name
  4390  	builder.nameFlag = true
  4391  	return builder
  4392  }
  4393  
  4394  func (builder *UserOkrObjectiveAlignedObjectiveOwnerBuilder) Build() *UserOkrObjectiveAlignedObjectiveOwner {
  4395  	req := &UserOkrObjectiveAlignedObjectiveOwner{}
  4396  	if builder.openIdFlag {
  4397  		req.OpenId = &builder.openId
  4398  
  4399  	}
  4400  	if builder.employeeIdFlag {
  4401  		req.EmployeeId = &builder.employeeId
  4402  
  4403  	}
  4404  	if builder.employeeNoFlag {
  4405  		req.EmployeeNo = &builder.employeeNo
  4406  
  4407  	}
  4408  	if builder.unionIdFlag {
  4409  		req.UnionId = &builder.unionId
  4410  
  4411  	}
  4412  	if builder.nameFlag {
  4413  		req.Name = &builder.name
  4414  
  4415  	}
  4416  	return req
  4417  }
  4418  
  4419  type UserOkrObjectiveKr struct {
  4420  	Id           *string                       `json:"id,omitempty"`            // Key Result ID
  4421  	Content      *string                       `json:"content,omitempty"`       // KeyResult 内容
  4422  	Score        *int                          `json:"score,omitempty"`         // KeyResult打分(0 - 100)
  4423  	Weight       *int                          `json:"weight,omitempty"`        // KeyResult权重(0 - 100)
  4424  	ProgressRate *UserOkrObjectiveProgressRate `json:"progress_rate,omitempty"` // Objective进度
  4425  }
  4426  
  4427  type UserOkrObjectiveKrBuilder struct {
  4428  	id               string // Key Result ID
  4429  	idFlag           bool
  4430  	content          string // KeyResult 内容
  4431  	contentFlag      bool
  4432  	score            int // KeyResult打分(0 - 100)
  4433  	scoreFlag        bool
  4434  	weight           int // KeyResult权重(0 - 100)
  4435  	weightFlag       bool
  4436  	progressRate     *UserOkrObjectiveProgressRate // Objective进度
  4437  	progressRateFlag bool
  4438  }
  4439  
  4440  func NewUserOkrObjectiveKrBuilder() *UserOkrObjectiveKrBuilder {
  4441  	builder := &UserOkrObjectiveKrBuilder{}
  4442  	return builder
  4443  }
  4444  
  4445  // Key Result ID
  4446  //
  4447  // 示例值:
  4448  func (builder *UserOkrObjectiveKrBuilder) Id(id string) *UserOkrObjectiveKrBuilder {
  4449  	builder.id = id
  4450  	builder.idFlag = true
  4451  	return builder
  4452  }
  4453  
  4454  // KeyResult 内容
  4455  //
  4456  // 示例值:
  4457  func (builder *UserOkrObjectiveKrBuilder) Content(content string) *UserOkrObjectiveKrBuilder {
  4458  	builder.content = content
  4459  	builder.contentFlag = true
  4460  	return builder
  4461  }
  4462  
  4463  // KeyResult打分(0 - 100)
  4464  //
  4465  // 示例值:
  4466  func (builder *UserOkrObjectiveKrBuilder) Score(score int) *UserOkrObjectiveKrBuilder {
  4467  	builder.score = score
  4468  	builder.scoreFlag = true
  4469  	return builder
  4470  }
  4471  
  4472  // KeyResult权重(0 - 100)
  4473  //
  4474  // 示例值:
  4475  func (builder *UserOkrObjectiveKrBuilder) Weight(weight int) *UserOkrObjectiveKrBuilder {
  4476  	builder.weight = weight
  4477  	builder.weightFlag = true
  4478  	return builder
  4479  }
  4480  
  4481  // Objective进度
  4482  //
  4483  // 示例值:
  4484  func (builder *UserOkrObjectiveKrBuilder) ProgressRate(progressRate *UserOkrObjectiveProgressRate) *UserOkrObjectiveKrBuilder {
  4485  	builder.progressRate = progressRate
  4486  	builder.progressRateFlag = true
  4487  	return builder
  4488  }
  4489  
  4490  func (builder *UserOkrObjectiveKrBuilder) Build() *UserOkrObjectiveKr {
  4491  	req := &UserOkrObjectiveKr{}
  4492  	if builder.idFlag {
  4493  		req.Id = &builder.id
  4494  
  4495  	}
  4496  	if builder.contentFlag {
  4497  		req.Content = &builder.content
  4498  
  4499  	}
  4500  	if builder.scoreFlag {
  4501  		req.Score = &builder.score
  4502  
  4503  	}
  4504  	if builder.weightFlag {
  4505  		req.Weight = &builder.weight
  4506  
  4507  	}
  4508  	if builder.progressRateFlag {
  4509  		req.ProgressRate = builder.progressRate
  4510  	}
  4511  	return req
  4512  }
  4513  
  4514  type UserOkrObjectiveProgressRate struct {
  4515  	Percent *int    `json:"percent,omitempty"` // Objective 进度百分比 >= 0
  4516  	Status  *string `json:"status,omitempty"`  // Objective 进度状态,undefined 未更新,normal 正常,risky 有风险,overdue 已延期
  4517  }
  4518  
  4519  type UserOkrObjectiveProgressRateBuilder struct {
  4520  	percent     int // Objective 进度百分比 >= 0
  4521  	percentFlag bool
  4522  	status      string // Objective 进度状态,undefined 未更新,normal 正常,risky 有风险,overdue 已延期
  4523  	statusFlag  bool
  4524  }
  4525  
  4526  func NewUserOkrObjectiveProgressRateBuilder() *UserOkrObjectiveProgressRateBuilder {
  4527  	builder := &UserOkrObjectiveProgressRateBuilder{}
  4528  	return builder
  4529  }
  4530  
  4531  // Objective 进度百分比 >= 0
  4532  //
  4533  // 示例值:
  4534  func (builder *UserOkrObjectiveProgressRateBuilder) Percent(percent int) *UserOkrObjectiveProgressRateBuilder {
  4535  	builder.percent = percent
  4536  	builder.percentFlag = true
  4537  	return builder
  4538  }
  4539  
  4540  // Objective 进度状态,undefined 未更新,normal 正常,risky 有风险,overdue 已延期
  4541  //
  4542  // 示例值:
  4543  func (builder *UserOkrObjectiveProgressRateBuilder) Status(status string) *UserOkrObjectiveProgressRateBuilder {
  4544  	builder.status = status
  4545  	builder.statusFlag = true
  4546  	return builder
  4547  }
  4548  
  4549  func (builder *UserOkrObjectiveProgressRateBuilder) Build() *UserOkrObjectiveProgressRate {
  4550  	req := &UserOkrObjectiveProgressRate{}
  4551  	if builder.percentFlag {
  4552  		req.Percent = &builder.percent
  4553  
  4554  	}
  4555  	if builder.statusFlag {
  4556  		req.Status = &builder.status
  4557  
  4558  	}
  4559  	return req
  4560  }
  4561  
  4562  type UploadImageReqBodyBuilder struct {
  4563  	data           io.Reader // 图片
  4564  	dataFlag       bool
  4565  	targetId       string // 图片的目标ID
  4566  	targetIdFlag   bool
  4567  	targetType     int // 图片使用的目标类型
  4568  	targetTypeFlag bool
  4569  }
  4570  
  4571  func NewUploadImageReqBodyBuilder() *UploadImageReqBodyBuilder {
  4572  	builder := &UploadImageReqBodyBuilder{}
  4573  	return builder
  4574  }
  4575  
  4576  // 图片
  4577  //
  4578  //示例值:file binary
  4579  func (builder *UploadImageReqBodyBuilder) Data(data io.Reader) *UploadImageReqBodyBuilder {
  4580  	builder.data = data
  4581  	builder.dataFlag = true
  4582  	return builder
  4583  }
  4584  
  4585  // 图片的目标ID
  4586  //
  4587  //示例值:6974586812998174252
  4588  func (builder *UploadImageReqBodyBuilder) TargetId(targetId string) *UploadImageReqBodyBuilder {
  4589  	builder.targetId = targetId
  4590  	builder.targetIdFlag = true
  4591  	return builder
  4592  }
  4593  
  4594  // 图片使用的目标类型
  4595  //
  4596  //示例值:1
  4597  func (builder *UploadImageReqBodyBuilder) TargetType(targetType int) *UploadImageReqBodyBuilder {
  4598  	builder.targetType = targetType
  4599  	builder.targetTypeFlag = true
  4600  	return builder
  4601  }
  4602  
  4603  func (builder *UploadImageReqBodyBuilder) Build() *UploadImageReqBody {
  4604  	req := &UploadImageReqBody{}
  4605  	if builder.dataFlag {
  4606  		req.Data = builder.data
  4607  	}
  4608  	if builder.targetIdFlag {
  4609  		req.TargetId = &builder.targetId
  4610  	}
  4611  	if builder.targetTypeFlag {
  4612  		req.TargetType = &builder.targetType
  4613  	}
  4614  	return req
  4615  }
  4616  
  4617  type UploadImagePathReqBodyBuilder struct {
  4618  	dataPath       string // 图片
  4619  	dataPathFlag   bool
  4620  	targetId       string // 图片的目标ID
  4621  	targetIdFlag   bool
  4622  	targetType     int // 图片使用的目标类型
  4623  	targetTypeFlag bool
  4624  }
  4625  
  4626  func NewUploadImagePathReqBodyBuilder() *UploadImagePathReqBodyBuilder {
  4627  	builder := &UploadImagePathReqBodyBuilder{}
  4628  	return builder
  4629  }
  4630  
  4631  // 图片
  4632  //
  4633  // 示例值:file binary
  4634  func (builder *UploadImagePathReqBodyBuilder) DataPath(dataPath string) *UploadImagePathReqBodyBuilder {
  4635  	builder.dataPath = dataPath
  4636  	builder.dataPathFlag = true
  4637  	return builder
  4638  }
  4639  
  4640  // 图片的目标ID
  4641  //
  4642  // 示例值:6974586812998174252
  4643  func (builder *UploadImagePathReqBodyBuilder) TargetId(targetId string) *UploadImagePathReqBodyBuilder {
  4644  	builder.targetId = targetId
  4645  	builder.targetIdFlag = true
  4646  	return builder
  4647  }
  4648  
  4649  // 图片使用的目标类型
  4650  //
  4651  // 示例值:1
  4652  func (builder *UploadImagePathReqBodyBuilder) TargetType(targetType int) *UploadImagePathReqBodyBuilder {
  4653  	builder.targetType = targetType
  4654  	builder.targetTypeFlag = true
  4655  	return builder
  4656  }
  4657  
  4658  func (builder *UploadImagePathReqBodyBuilder) Build() (*UploadImageReqBody, error) {
  4659  	req := &UploadImageReqBody{}
  4660  	if builder.dataPathFlag {
  4661  		data, err := larkcore.File2Bytes(builder.dataPath)
  4662  		if err != nil {
  4663  			return nil, err
  4664  		}
  4665  		req.Data = bytes.NewBuffer(data)
  4666  	}
  4667  	if builder.targetIdFlag {
  4668  		req.TargetId = &builder.targetId
  4669  	}
  4670  	if builder.targetTypeFlag {
  4671  		req.TargetType = &builder.targetType
  4672  	}
  4673  	return req, nil
  4674  }
  4675  
  4676  type UploadImageReqBuilder struct {
  4677  	apiReq *larkcore.ApiReq
  4678  	body   *UploadImageReqBody
  4679  }
  4680  
  4681  func NewUploadImageReqBuilder() *UploadImageReqBuilder {
  4682  	builder := &UploadImageReqBuilder{}
  4683  	builder.apiReq = &larkcore.ApiReq{
  4684  		PathParams:  larkcore.PathParams{},
  4685  		QueryParams: larkcore.QueryParams{},
  4686  	}
  4687  	return builder
  4688  }
  4689  
  4690  // 上传图片
  4691  func (builder *UploadImageReqBuilder) Body(body *UploadImageReqBody) *UploadImageReqBuilder {
  4692  	builder.body = body
  4693  	return builder
  4694  }
  4695  
  4696  func (builder *UploadImageReqBuilder) Build() *UploadImageReq {
  4697  	req := &UploadImageReq{}
  4698  	req.apiReq = &larkcore.ApiReq{}
  4699  	req.apiReq.Body = builder.body
  4700  	return req
  4701  }
  4702  
  4703  type UploadImageReqBody struct {
  4704  	Data       io.Reader `json:"data,omitempty"`        // 图片
  4705  	TargetId   *string   `json:"target_id,omitempty"`   // 图片的目标ID
  4706  	TargetType *int      `json:"target_type,omitempty"` // 图片使用的目标类型
  4707  }
  4708  
  4709  type UploadImageReq struct {
  4710  	apiReq *larkcore.ApiReq
  4711  	Body   *UploadImageReqBody `body:""`
  4712  }
  4713  
  4714  type UploadImageRespData struct {
  4715  	Data *ImageInfo `json:"data,omitempty"` // 图片url和token信息
  4716  }
  4717  
  4718  type UploadImageResp struct {
  4719  	*larkcore.ApiResp `json:"-"`
  4720  	larkcore.CodeError
  4721  	Data *UploadImageRespData `json:"data"` // 业务数据
  4722  }
  4723  
  4724  func (resp *UploadImageResp) Success() bool {
  4725  	return resp.Code == 0
  4726  }
  4727  
  4728  type BatchGetOkrReqBuilder struct {
  4729  	apiReq *larkcore.ApiReq
  4730  }
  4731  
  4732  func NewBatchGetOkrReqBuilder() *BatchGetOkrReqBuilder {
  4733  	builder := &BatchGetOkrReqBuilder{}
  4734  	builder.apiReq = &larkcore.ApiReq{
  4735  		PathParams:  larkcore.PathParams{},
  4736  		QueryParams: larkcore.QueryParams{},
  4737  	}
  4738  	return builder
  4739  }
  4740  
  4741  // 此次调用中使用的用户ID的类型
  4742  //
  4743  // 示例值:
  4744  func (builder *BatchGetOkrReqBuilder) UserIdType(userIdType string) *BatchGetOkrReqBuilder {
  4745  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  4746  	return builder
  4747  }
  4748  
  4749  // OKR ID 列表,最多10个
  4750  //
  4751  // 示例值:7043693679567028244
  4752  func (builder *BatchGetOkrReqBuilder) OkrIds(okrIds []string) *BatchGetOkrReqBuilder {
  4753  	builder.apiReq.QueryParams.Set("okr_ids", fmt.Sprint(okrIds))
  4754  	return builder
  4755  }
  4756  
  4757  // 请求OKR的语言版本(比如@的人名),lang=en_us/zh_cn,请求 Query中
  4758  //
  4759  // 示例值:zh_cn
  4760  func (builder *BatchGetOkrReqBuilder) Lang(lang string) *BatchGetOkrReqBuilder {
  4761  	builder.apiReq.QueryParams.Set("lang", fmt.Sprint(lang))
  4762  	return builder
  4763  }
  4764  
  4765  func (builder *BatchGetOkrReqBuilder) Build() *BatchGetOkrReq {
  4766  	req := &BatchGetOkrReq{}
  4767  	req.apiReq = &larkcore.ApiReq{}
  4768  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  4769  	return req
  4770  }
  4771  
  4772  type BatchGetOkrReq struct {
  4773  	apiReq *larkcore.ApiReq
  4774  }
  4775  
  4776  type BatchGetOkrRespData struct {
  4777  	OkrList []*OkrBatch `json:"okr_list,omitempty"` // OKR 列表
  4778  }
  4779  
  4780  type BatchGetOkrResp struct {
  4781  	*larkcore.ApiResp `json:"-"`
  4782  	larkcore.CodeError
  4783  	Data *BatchGetOkrRespData `json:"data"` // 业务数据
  4784  }
  4785  
  4786  func (resp *BatchGetOkrResp) Success() bool {
  4787  	return resp.Code == 0
  4788  }
  4789  
  4790  type ListPeriodReqBuilder struct {
  4791  	apiReq *larkcore.ApiReq
  4792  }
  4793  
  4794  func NewListPeriodReqBuilder() *ListPeriodReqBuilder {
  4795  	builder := &ListPeriodReqBuilder{}
  4796  	builder.apiReq = &larkcore.ApiReq{
  4797  		PathParams:  larkcore.PathParams{},
  4798  		QueryParams: larkcore.QueryParams{},
  4799  	}
  4800  	return builder
  4801  }
  4802  
  4803  // 分页标志page_token
  4804  //
  4805  // 示例值:xaasdasdax
  4806  func (builder *ListPeriodReqBuilder) PageToken(pageToken string) *ListPeriodReqBuilder {
  4807  	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
  4808  	return builder
  4809  }
  4810  
  4811  // 分页大小,默认10
  4812  //
  4813  // 示例值:10
  4814  func (builder *ListPeriodReqBuilder) PageSize(pageSize int) *ListPeriodReqBuilder {
  4815  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  4816  	return builder
  4817  }
  4818  
  4819  func (builder *ListPeriodReqBuilder) Build() *ListPeriodReq {
  4820  	req := &ListPeriodReq{}
  4821  	req.apiReq = &larkcore.ApiReq{}
  4822  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  4823  	return req
  4824  }
  4825  
  4826  type ListPeriodReq struct {
  4827  	apiReq *larkcore.ApiReq
  4828  }
  4829  
  4830  type ListPeriodRespData struct {
  4831  	PageToken *string   `json:"page_token,omitempty"` // 分页标志
  4832  	HasMore   *bool     `json:"has_more,omitempty"`   // 是否有更多
  4833  	Items     []*Period `json:"items,omitempty"`      // 数据项
  4834  }
  4835  
  4836  type ListPeriodResp struct {
  4837  	*larkcore.ApiResp `json:"-"`
  4838  	larkcore.CodeError
  4839  	Data *ListPeriodRespData `json:"data"` // 业务数据
  4840  }
  4841  
  4842  func (resp *ListPeriodResp) Success() bool {
  4843  	return resp.Code == 0
  4844  }
  4845  
  4846  type CreateProgressRecordReqBodyBuilder struct {
  4847  	sourceTitle     string // 进展来源
  4848  	sourceTitleFlag bool
  4849  	sourceUrl       string // 进展来源链接
  4850  	sourceUrlFlag   bool
  4851  	targetId        string // 目标id,与target_type对应
  4852  	targetIdFlag    bool
  4853  	targetType      int // 目标类型
  4854  	targetTypeFlag  bool
  4855  	content         *ContentBlock // 进展详情 富文本格式
  4856  	contentFlag     bool
  4857  }
  4858  
  4859  func NewCreateProgressRecordReqBodyBuilder() *CreateProgressRecordReqBodyBuilder {
  4860  	builder := &CreateProgressRecordReqBodyBuilder{}
  4861  	return builder
  4862  }
  4863  
  4864  // 进展来源
  4865  //
  4866  //示例值:周报系统
  4867  func (builder *CreateProgressRecordReqBodyBuilder) SourceTitle(sourceTitle string) *CreateProgressRecordReqBodyBuilder {
  4868  	builder.sourceTitle = sourceTitle
  4869  	builder.sourceTitleFlag = true
  4870  	return builder
  4871  }
  4872  
  4873  // 进展来源链接
  4874  //
  4875  //示例值:https://www.zhoubao.com
  4876  func (builder *CreateProgressRecordReqBodyBuilder) SourceUrl(sourceUrl string) *CreateProgressRecordReqBodyBuilder {
  4877  	builder.sourceUrl = sourceUrl
  4878  	builder.sourceUrlFlag = true
  4879  	return builder
  4880  }
  4881  
  4882  // 目标id,与target_type对应
  4883  //
  4884  //示例值:7041430377642082323
  4885  func (builder *CreateProgressRecordReqBodyBuilder) TargetId(targetId string) *CreateProgressRecordReqBodyBuilder {
  4886  	builder.targetId = targetId
  4887  	builder.targetIdFlag = true
  4888  	return builder
  4889  }
  4890  
  4891  // 目标类型
  4892  //
  4893  //示例值:1
  4894  func (builder *CreateProgressRecordReqBodyBuilder) TargetType(targetType int) *CreateProgressRecordReqBodyBuilder {
  4895  	builder.targetType = targetType
  4896  	builder.targetTypeFlag = true
  4897  	return builder
  4898  }
  4899  
  4900  // 进展详情 富文本格式
  4901  //
  4902  //示例值:
  4903  func (builder *CreateProgressRecordReqBodyBuilder) Content(content *ContentBlock) *CreateProgressRecordReqBodyBuilder {
  4904  	builder.content = content
  4905  	builder.contentFlag = true
  4906  	return builder
  4907  }
  4908  
  4909  func (builder *CreateProgressRecordReqBodyBuilder) Build() *CreateProgressRecordReqBody {
  4910  	req := &CreateProgressRecordReqBody{}
  4911  	if builder.sourceTitleFlag {
  4912  		req.SourceTitle = &builder.sourceTitle
  4913  	}
  4914  	if builder.sourceUrlFlag {
  4915  		req.SourceUrl = &builder.sourceUrl
  4916  	}
  4917  	if builder.targetIdFlag {
  4918  		req.TargetId = &builder.targetId
  4919  	}
  4920  	if builder.targetTypeFlag {
  4921  		req.TargetType = &builder.targetType
  4922  	}
  4923  	if builder.contentFlag {
  4924  		req.Content = builder.content
  4925  	}
  4926  	return req
  4927  }
  4928  
  4929  type CreateProgressRecordPathReqBodyBuilder struct {
  4930  	sourceTitle     string // 进展来源
  4931  	sourceTitleFlag bool
  4932  	sourceUrl       string // 进展来源链接
  4933  	sourceUrlFlag   bool
  4934  	targetId        string // 目标id,与target_type对应
  4935  	targetIdFlag    bool
  4936  	targetType      int // 目标类型
  4937  	targetTypeFlag  bool
  4938  	content         *ContentBlock // 进展详情 富文本格式
  4939  	contentFlag     bool
  4940  }
  4941  
  4942  func NewCreateProgressRecordPathReqBodyBuilder() *CreateProgressRecordPathReqBodyBuilder {
  4943  	builder := &CreateProgressRecordPathReqBodyBuilder{}
  4944  	return builder
  4945  }
  4946  
  4947  // 进展来源
  4948  //
  4949  // 示例值:周报系统
  4950  func (builder *CreateProgressRecordPathReqBodyBuilder) SourceTitle(sourceTitle string) *CreateProgressRecordPathReqBodyBuilder {
  4951  	builder.sourceTitle = sourceTitle
  4952  	builder.sourceTitleFlag = true
  4953  	return builder
  4954  }
  4955  
  4956  // 进展来源链接
  4957  //
  4958  // 示例值:https://www.zhoubao.com
  4959  func (builder *CreateProgressRecordPathReqBodyBuilder) SourceUrl(sourceUrl string) *CreateProgressRecordPathReqBodyBuilder {
  4960  	builder.sourceUrl = sourceUrl
  4961  	builder.sourceUrlFlag = true
  4962  	return builder
  4963  }
  4964  
  4965  // 目标id,与target_type对应
  4966  //
  4967  // 示例值:7041430377642082323
  4968  func (builder *CreateProgressRecordPathReqBodyBuilder) TargetId(targetId string) *CreateProgressRecordPathReqBodyBuilder {
  4969  	builder.targetId = targetId
  4970  	builder.targetIdFlag = true
  4971  	return builder
  4972  }
  4973  
  4974  // 目标类型
  4975  //
  4976  // 示例值:1
  4977  func (builder *CreateProgressRecordPathReqBodyBuilder) TargetType(targetType int) *CreateProgressRecordPathReqBodyBuilder {
  4978  	builder.targetType = targetType
  4979  	builder.targetTypeFlag = true
  4980  	return builder
  4981  }
  4982  
  4983  // 进展详情 富文本格式
  4984  //
  4985  // 示例值:
  4986  func (builder *CreateProgressRecordPathReqBodyBuilder) Content(content *ContentBlock) *CreateProgressRecordPathReqBodyBuilder {
  4987  	builder.content = content
  4988  	builder.contentFlag = true
  4989  	return builder
  4990  }
  4991  
  4992  func (builder *CreateProgressRecordPathReqBodyBuilder) Build() (*CreateProgressRecordReqBody, error) {
  4993  	req := &CreateProgressRecordReqBody{}
  4994  	if builder.sourceTitleFlag {
  4995  		req.SourceTitle = &builder.sourceTitle
  4996  	}
  4997  	if builder.sourceUrlFlag {
  4998  		req.SourceUrl = &builder.sourceUrl
  4999  	}
  5000  	if builder.targetIdFlag {
  5001  		req.TargetId = &builder.targetId
  5002  	}
  5003  	if builder.targetTypeFlag {
  5004  		req.TargetType = &builder.targetType
  5005  	}
  5006  	if builder.contentFlag {
  5007  		req.Content = builder.content
  5008  	}
  5009  	return req, nil
  5010  }
  5011  
  5012  type CreateProgressRecordReqBuilder struct {
  5013  	apiReq *larkcore.ApiReq
  5014  	body   *CreateProgressRecordReqBody
  5015  }
  5016  
  5017  func NewCreateProgressRecordReqBuilder() *CreateProgressRecordReqBuilder {
  5018  	builder := &CreateProgressRecordReqBuilder{}
  5019  	builder.apiReq = &larkcore.ApiReq{
  5020  		PathParams:  larkcore.PathParams{},
  5021  		QueryParams: larkcore.QueryParams{},
  5022  	}
  5023  	return builder
  5024  }
  5025  
  5026  // 创建OKR进展记录
  5027  func (builder *CreateProgressRecordReqBuilder) Body(body *CreateProgressRecordReqBody) *CreateProgressRecordReqBuilder {
  5028  	builder.body = body
  5029  	return builder
  5030  }
  5031  
  5032  func (builder *CreateProgressRecordReqBuilder) Build() *CreateProgressRecordReq {
  5033  	req := &CreateProgressRecordReq{}
  5034  	req.apiReq = &larkcore.ApiReq{}
  5035  	req.apiReq.Body = builder.body
  5036  	return req
  5037  }
  5038  
  5039  type CreateProgressRecordReqBody struct {
  5040  	SourceTitle *string       `json:"source_title,omitempty"` // 进展来源
  5041  	SourceUrl   *string       `json:"source_url,omitempty"`   // 进展来源链接
  5042  	TargetId    *string       `json:"target_id,omitempty"`    // 目标id,与target_type对应
  5043  	TargetType  *int          `json:"target_type,omitempty"`  // 目标类型
  5044  	Content     *ContentBlock `json:"content,omitempty"`      // 进展详情 富文本格式
  5045  }
  5046  
  5047  type CreateProgressRecordReq struct {
  5048  	apiReq *larkcore.ApiReq
  5049  	Body   *CreateProgressRecordReqBody `body:""`
  5050  }
  5051  
  5052  type CreateProgressRecordRespData struct {
  5053  	Data *ProgressRecord `json:"data,omitempty"` // 成功创建的进展详情
  5054  }
  5055  
  5056  type CreateProgressRecordResp struct {
  5057  	*larkcore.ApiResp `json:"-"`
  5058  	larkcore.CodeError
  5059  	Data *CreateProgressRecordRespData `json:"data"` // 业务数据
  5060  }
  5061  
  5062  func (resp *CreateProgressRecordResp) Success() bool {
  5063  	return resp.Code == 0
  5064  }
  5065  
  5066  type DeleteProgressRecordReqBuilder struct {
  5067  	apiReq *larkcore.ApiReq
  5068  }
  5069  
  5070  func NewDeleteProgressRecordReqBuilder() *DeleteProgressRecordReqBuilder {
  5071  	builder := &DeleteProgressRecordReqBuilder{}
  5072  	builder.apiReq = &larkcore.ApiReq{
  5073  		PathParams:  larkcore.PathParams{},
  5074  		QueryParams: larkcore.QueryParams{},
  5075  	}
  5076  	return builder
  5077  }
  5078  
  5079  // 待删除的 OKR进展记录 ID
  5080  //
  5081  // 示例值:7041857032248410131
  5082  func (builder *DeleteProgressRecordReqBuilder) ProgressId(progressId string) *DeleteProgressRecordReqBuilder {
  5083  	builder.apiReq.PathParams.Set("progress_id", fmt.Sprint(progressId))
  5084  	return builder
  5085  }
  5086  
  5087  func (builder *DeleteProgressRecordReqBuilder) Build() *DeleteProgressRecordReq {
  5088  	req := &DeleteProgressRecordReq{}
  5089  	req.apiReq = &larkcore.ApiReq{}
  5090  	req.apiReq.PathParams = builder.apiReq.PathParams
  5091  	return req
  5092  }
  5093  
  5094  type DeleteProgressRecordReq struct {
  5095  	apiReq *larkcore.ApiReq
  5096  }
  5097  
  5098  type DeleteProgressRecordResp struct {
  5099  	*larkcore.ApiResp `json:"-"`
  5100  	larkcore.CodeError
  5101  }
  5102  
  5103  func (resp *DeleteProgressRecordResp) Success() bool {
  5104  	return resp.Code == 0
  5105  }
  5106  
  5107  type GetProgressRecordReqBuilder struct {
  5108  	apiReq *larkcore.ApiReq
  5109  }
  5110  
  5111  func NewGetProgressRecordReqBuilder() *GetProgressRecordReqBuilder {
  5112  	builder := &GetProgressRecordReqBuilder{}
  5113  	builder.apiReq = &larkcore.ApiReq{
  5114  		PathParams:  larkcore.PathParams{},
  5115  		QueryParams: larkcore.QueryParams{},
  5116  	}
  5117  	return builder
  5118  }
  5119  
  5120  // 待查询的 OKR进展记录 ID
  5121  //
  5122  // 示例值:7041857032248410131
  5123  func (builder *GetProgressRecordReqBuilder) ProgressId(progressId string) *GetProgressRecordReqBuilder {
  5124  	builder.apiReq.PathParams.Set("progress_id", fmt.Sprint(progressId))
  5125  	return builder
  5126  }
  5127  
  5128  func (builder *GetProgressRecordReqBuilder) Build() *GetProgressRecordReq {
  5129  	req := &GetProgressRecordReq{}
  5130  	req.apiReq = &larkcore.ApiReq{}
  5131  	req.apiReq.PathParams = builder.apiReq.PathParams
  5132  	return req
  5133  }
  5134  
  5135  type GetProgressRecordReq struct {
  5136  	apiReq *larkcore.ApiReq
  5137  }
  5138  
  5139  type GetProgressRecordRespData struct {
  5140  	ProgressId *string       `json:"progress_id,omitempty"` // OKR 进展ID
  5141  	ModifyTime *string       `json:"modify_time,omitempty"` // 进展更新时间 毫秒
  5142  	Content    *ContentBlock `json:"content,omitempty"`     // 进展 对应的 Content 详细内容
  5143  }
  5144  
  5145  type GetProgressRecordResp struct {
  5146  	*larkcore.ApiResp `json:"-"`
  5147  	larkcore.CodeError
  5148  	Data *GetProgressRecordRespData `json:"data"` // 业务数据
  5149  }
  5150  
  5151  func (resp *GetProgressRecordResp) Success() bool {
  5152  	return resp.Code == 0
  5153  }
  5154  
  5155  type UpdateProgressRecordReqBodyBuilder struct {
  5156  	content     *ContentBlock // 进展详情 富文本格式
  5157  	contentFlag bool
  5158  }
  5159  
  5160  func NewUpdateProgressRecordReqBodyBuilder() *UpdateProgressRecordReqBodyBuilder {
  5161  	builder := &UpdateProgressRecordReqBodyBuilder{}
  5162  	return builder
  5163  }
  5164  
  5165  // 进展详情 富文本格式
  5166  //
  5167  //示例值:
  5168  func (builder *UpdateProgressRecordReqBodyBuilder) Content(content *ContentBlock) *UpdateProgressRecordReqBodyBuilder {
  5169  	builder.content = content
  5170  	builder.contentFlag = true
  5171  	return builder
  5172  }
  5173  
  5174  func (builder *UpdateProgressRecordReqBodyBuilder) Build() *UpdateProgressRecordReqBody {
  5175  	req := &UpdateProgressRecordReqBody{}
  5176  	if builder.contentFlag {
  5177  		req.Content = builder.content
  5178  	}
  5179  	return req
  5180  }
  5181  
  5182  type UpdateProgressRecordPathReqBodyBuilder struct {
  5183  	content     *ContentBlock // 进展详情 富文本格式
  5184  	contentFlag bool
  5185  }
  5186  
  5187  func NewUpdateProgressRecordPathReqBodyBuilder() *UpdateProgressRecordPathReqBodyBuilder {
  5188  	builder := &UpdateProgressRecordPathReqBodyBuilder{}
  5189  	return builder
  5190  }
  5191  
  5192  // 进展详情 富文本格式
  5193  //
  5194  // 示例值:
  5195  func (builder *UpdateProgressRecordPathReqBodyBuilder) Content(content *ContentBlock) *UpdateProgressRecordPathReqBodyBuilder {
  5196  	builder.content = content
  5197  	builder.contentFlag = true
  5198  	return builder
  5199  }
  5200  
  5201  func (builder *UpdateProgressRecordPathReqBodyBuilder) Build() (*UpdateProgressRecordReqBody, error) {
  5202  	req := &UpdateProgressRecordReqBody{}
  5203  	if builder.contentFlag {
  5204  		req.Content = builder.content
  5205  	}
  5206  	return req, nil
  5207  }
  5208  
  5209  type UpdateProgressRecordReqBuilder struct {
  5210  	apiReq *larkcore.ApiReq
  5211  	body   *UpdateProgressRecordReqBody
  5212  }
  5213  
  5214  func NewUpdateProgressRecordReqBuilder() *UpdateProgressRecordReqBuilder {
  5215  	builder := &UpdateProgressRecordReqBuilder{}
  5216  	builder.apiReq = &larkcore.ApiReq{
  5217  		PathParams:  larkcore.PathParams{},
  5218  		QueryParams: larkcore.QueryParams{},
  5219  	}
  5220  	return builder
  5221  }
  5222  
  5223  // 待更新的 OKR进展记录 ID
  5224  //
  5225  // 示例值:7041857032248410131
  5226  func (builder *UpdateProgressRecordReqBuilder) ProgressId(progressId string) *UpdateProgressRecordReqBuilder {
  5227  	builder.apiReq.PathParams.Set("progress_id", fmt.Sprint(progressId))
  5228  	return builder
  5229  }
  5230  
  5231  // 根据OKR进展记录ID更新进展详情
  5232  func (builder *UpdateProgressRecordReqBuilder) Body(body *UpdateProgressRecordReqBody) *UpdateProgressRecordReqBuilder {
  5233  	builder.body = body
  5234  	return builder
  5235  }
  5236  
  5237  func (builder *UpdateProgressRecordReqBuilder) Build() *UpdateProgressRecordReq {
  5238  	req := &UpdateProgressRecordReq{}
  5239  	req.apiReq = &larkcore.ApiReq{}
  5240  	req.apiReq.PathParams = builder.apiReq.PathParams
  5241  	req.apiReq.Body = builder.body
  5242  	return req
  5243  }
  5244  
  5245  type UpdateProgressRecordReqBody struct {
  5246  	Content *ContentBlock `json:"content,omitempty"` // 进展详情 富文本格式
  5247  }
  5248  
  5249  type UpdateProgressRecordReq struct {
  5250  	apiReq *larkcore.ApiReq
  5251  	Body   *UpdateProgressRecordReqBody `body:""`
  5252  }
  5253  
  5254  type UpdateProgressRecordRespData struct {
  5255  	Data *ProgressRecord `json:"data,omitempty"` // 更新后的进行详情
  5256  }
  5257  
  5258  type UpdateProgressRecordResp struct {
  5259  	*larkcore.ApiResp `json:"-"`
  5260  	larkcore.CodeError
  5261  	Data *UpdateProgressRecordRespData `json:"data"` // 业务数据
  5262  }
  5263  
  5264  func (resp *UpdateProgressRecordResp) Success() bool {
  5265  	return resp.Code == 0
  5266  }
  5267  
  5268  type ListUserOkrReqBuilder struct {
  5269  	apiReq *larkcore.ApiReq
  5270  }
  5271  
  5272  func NewListUserOkrReqBuilder() *ListUserOkrReqBuilder {
  5273  	builder := &ListUserOkrReqBuilder{}
  5274  	builder.apiReq = &larkcore.ApiReq{
  5275  		PathParams:  larkcore.PathParams{},
  5276  		QueryParams: larkcore.QueryParams{},
  5277  	}
  5278  	return builder
  5279  }
  5280  
  5281  // 目标用户id
  5282  //
  5283  // 示例值:ou-asdasdasdasdasd
  5284  func (builder *ListUserOkrReqBuilder) UserId(userId string) *ListUserOkrReqBuilder {
  5285  	builder.apiReq.PathParams.Set("user_id", fmt.Sprint(userId))
  5286  	return builder
  5287  }
  5288  
  5289  // 此次调用中使用的用户ID的类型
  5290  //
  5291  // 示例值:
  5292  func (builder *ListUserOkrReqBuilder) UserIdType(userIdType string) *ListUserOkrReqBuilder {
  5293  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  5294  	return builder
  5295  }
  5296  
  5297  // 请求列表的偏移,offset>=0
  5298  //
  5299  // 示例值:0
  5300  func (builder *ListUserOkrReqBuilder) Offset(offset string) *ListUserOkrReqBuilder {
  5301  	builder.apiReq.QueryParams.Set("offset", fmt.Sprint(offset))
  5302  	return builder
  5303  }
  5304  
  5305  // 列表长度,0-10
  5306  //
  5307  // 示例值:5
  5308  func (builder *ListUserOkrReqBuilder) Limit(limit string) *ListUserOkrReqBuilder {
  5309  	builder.apiReq.QueryParams.Set("limit", fmt.Sprint(limit))
  5310  	return builder
  5311  }
  5312  
  5313  // 请求OKR的语言版本(比如@的人名),lang=en_us/zh_cn
  5314  //
  5315  // 示例值:zh_cn
  5316  func (builder *ListUserOkrReqBuilder) Lang(lang string) *ListUserOkrReqBuilder {
  5317  	builder.apiReq.QueryParams.Set("lang", fmt.Sprint(lang))
  5318  	return builder
  5319  }
  5320  
  5321  // period_id列表,最多10个
  5322  //
  5323  // 示例值:["6951461264858777132"]
  5324  func (builder *ListUserOkrReqBuilder) PeriodIds(periodIds []string) *ListUserOkrReqBuilder {
  5325  	builder.apiReq.QueryParams.Set("period_ids", fmt.Sprint(periodIds))
  5326  	return builder
  5327  }
  5328  
  5329  func (builder *ListUserOkrReqBuilder) Build() *ListUserOkrReq {
  5330  	req := &ListUserOkrReq{}
  5331  	req.apiReq = &larkcore.ApiReq{}
  5332  	req.apiReq.PathParams = builder.apiReq.PathParams
  5333  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  5334  	return req
  5335  }
  5336  
  5337  type ListUserOkrReq struct {
  5338  	apiReq *larkcore.ApiReq
  5339  }
  5340  
  5341  type ListUserOkrRespData struct {
  5342  	Total   *int        `json:"total,omitempty"`    // OKR周期总数
  5343  	OkrList []*OkrBatch `json:"okr_list,omitempty"` // OKR 列表
  5344  }
  5345  
  5346  type ListUserOkrResp struct {
  5347  	*larkcore.ApiResp `json:"-"`
  5348  	larkcore.CodeError
  5349  	Data *ListUserOkrRespData `json:"data"` // 业务数据
  5350  }
  5351  
  5352  func (resp *ListUserOkrResp) Success() bool {
  5353  	return resp.Code == 0
  5354  }