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

     1  // Package task 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 larktask
    15  
    16  import (
    17  	"fmt"
    18  
    19  	"context"
    20  	"errors"
    21  
    22  	"gitee.com/larksuite/oapi-sdk-go/v3/event"
    23  
    24  	"gitee.com/larksuite/oapi-sdk-go/v3/core"
    25  )
    26  
    27  const (
    28  	UserIdTypeUserId  = "user_id"  // 以user_id来识别用户
    29  	UserIdTypeUnionId = "union_id" // 以union_id来识别用户
    30  	UserIdTypeOpenId  = "open_id"  // 以open_id来识别用户
    31  )
    32  
    33  const (
    34  	UserIdTypeBatchDeleteFollowerTaskUserId  = "user_id"  // 以user_id来识别用户
    35  	UserIdTypeBatchDeleteFollowerTaskUnionId = "union_id" // 以union_id来识别用户
    36  	UserIdTypeBatchDeleteFollowerTaskOpenId  = "open_id"  // 以open_id来识别用户
    37  )
    38  
    39  const (
    40  	UserIdTypeCreateTaskUserId  = "user_id"  // 以user_id来识别用户
    41  	UserIdTypeCreateTaskUnionId = "union_id" // 以union_id来识别用户
    42  	UserIdTypeCreateTaskOpenId  = "open_id"  // 以open_id来识别用户
    43  )
    44  
    45  const (
    46  	UserIdTypeGetTaskUserId  = "user_id"  // 以user_id来识别用户
    47  	UserIdTypeGetTaskUnionId = "union_id" // 以union_id来识别用户
    48  	UserIdTypeGetTaskOpenId  = "open_id"  // 以open_id来识别用户
    49  )
    50  
    51  const (
    52  	UserIdTypeListTaskUserId  = "user_id"  // 以user_id来识别用户
    53  	UserIdTypeListTaskUnionId = "union_id" // 以union_id来识别用户
    54  	UserIdTypeListTaskOpenId  = "open_id"  // 以open_id来识别用户
    55  )
    56  
    57  const (
    58  	UserIdTypePatchTaskUserId  = "user_id"  // 以user_id来识别用户
    59  	UserIdTypePatchTaskUnionId = "union_id" // 以union_id来识别用户
    60  	UserIdTypePatchTaskOpenId  = "open_id"  // 以open_id来识别用户
    61  )
    62  
    63  const (
    64  	UserIdTypeCreateTaskCollaboratorUserId  = "user_id"  // 以user_id来识别用户
    65  	UserIdTypeCreateTaskCollaboratorUnionId = "union_id" // 以union_id来识别用户
    66  	UserIdTypeCreateTaskCollaboratorOpenId  = "open_id"  // 以open_id来识别用户
    67  )
    68  
    69  const (
    70  	UserIdTypeDeleteTaskCollaboratorUserId  = "user_id"  // 以user_id来识别用户
    71  	UserIdTypeDeleteTaskCollaboratorUnionId = "union_id" // 以union_id来识别用户
    72  	UserIdTypeDeleteTaskCollaboratorOpenId  = "open_id"  // 以open_id来识别用户
    73  )
    74  
    75  const (
    76  	UserIdTypeListTaskCollaboratorUserId  = "user_id"  // 以user_id来识别用户
    77  	UserIdTypeListTaskCollaboratorUnionId = "union_id" // 以union_id来识别用户
    78  	UserIdTypeListTaskCollaboratorOpenId  = "open_id"  // 以open_id来识别用户
    79  )
    80  
    81  const (
    82  	ListDirectionDown = 0 // 按照回复时间从小到大查询
    83  	ListDirectionUp   = 1 // 按照回复时间从大到小查询
    84  
    85  )
    86  
    87  const (
    88  	UserIdTypeCreateTaskFollowerUserId  = "user_id"  // 以user_id来识别用户
    89  	UserIdTypeCreateTaskFollowerUnionId = "union_id" // 以union_id来识别用户
    90  	UserIdTypeCreateTaskFollowerOpenId  = "open_id"  // 以open_id来识别用户
    91  )
    92  
    93  const (
    94  	UserIdTypeDeleteTaskFollowerUserId  = "user_id"  // 以user_id来识别用户
    95  	UserIdTypeDeleteTaskFollowerUnionId = "union_id" // 以union_id来识别用户
    96  	UserIdTypeDeleteTaskFollowerOpenId  = "open_id"  // 以open_id来识别用户
    97  )
    98  
    99  const (
   100  	UserIdTypeListTaskFollowerUserId  = "user_id"  // 以user_id来识别用户
   101  	UserIdTypeListTaskFollowerUnionId = "union_id" // 以union_id来识别用户
   102  	UserIdTypeListTaskFollowerOpenId  = "open_id"  // 以open_id来识别用户
   103  )
   104  
   105  type Collaborator struct {
   106  	Id     *string  `json:"id,omitempty"`      // 任务执行者的 ID
   107  	IdList []string `json:"id_list,omitempty"` // 执行者的用户ID列表。
   108  }
   109  
   110  type CollaboratorBuilder struct {
   111  	id         string // 任务执行者的 ID
   112  	idFlag     bool
   113  	idList     []string // 执行者的用户ID列表。
   114  	idListFlag bool
   115  }
   116  
   117  func NewCollaboratorBuilder() *CollaboratorBuilder {
   118  	builder := &CollaboratorBuilder{}
   119  	return builder
   120  }
   121  
   122  // 任务执行者的 ID
   123  //
   124  // 示例值:ou_99e1a581b36ecc4862cbfbce473f1234
   125  func (builder *CollaboratorBuilder) Id(id string) *CollaboratorBuilder {
   126  	builder.id = id
   127  	builder.idFlag = true
   128  	return builder
   129  }
   130  
   131  // 执行者的用户ID列表。
   132  //
   133  // 示例值:["ou_550cc75233d8b7b9fcbdad65f34433f4", "ou_d1e9d27cf3235b40ca9a67c67ef088b0"]
   134  func (builder *CollaboratorBuilder) IdList(idList []string) *CollaboratorBuilder {
   135  	builder.idList = idList
   136  	builder.idListFlag = true
   137  	return builder
   138  }
   139  
   140  func (builder *CollaboratorBuilder) Build() *Collaborator {
   141  	req := &Collaborator{}
   142  	if builder.idFlag {
   143  		req.Id = &builder.id
   144  
   145  	}
   146  	if builder.idListFlag {
   147  		req.IdList = builder.idList
   148  	}
   149  	return req
   150  }
   151  
   152  type Comment struct {
   153  	Content         *string `json:"content,omitempty"`           // 评论内容。;<md-alert>;评论内容和富文本评论内容同时存在时只使用富文本评论内容。;</md-alert>
   154  	ParentId        *string `json:"parent_id,omitempty"`         // 评论的父ID,创建评论时若不为空则为某条评论的回复,若为空则不是回复
   155  	Id              *string `json:"id,omitempty"`                // 评论ID,由飞书服务器发号
   156  	CreateMilliTime *string `json:"create_milli_time,omitempty"` // 评论创建的时间戳,单位为毫秒,用于展示,创建时不用填写
   157  	RichContent     *string `json:"rich_content,omitempty"`      // 富文本评论内容。语法格式参见[Markdown模块](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/task-v1/markdown-module)
   158  }
   159  
   160  type CommentBuilder struct {
   161  	content             string // 评论内容。;<md-alert>;评论内容和富文本评论内容同时存在时只使用富文本评论内容。;</md-alert>
   162  	contentFlag         bool
   163  	parentId            string // 评论的父ID,创建评论时若不为空则为某条评论的回复,若为空则不是回复
   164  	parentIdFlag        bool
   165  	id                  string // 评论ID,由飞书服务器发号
   166  	idFlag              bool
   167  	createMilliTime     string // 评论创建的时间戳,单位为毫秒,用于展示,创建时不用填写
   168  	createMilliTimeFlag bool
   169  	richContent         string // 富文本评论内容。语法格式参见[Markdown模块](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/task-v1/markdown-module)
   170  	richContentFlag     bool
   171  }
   172  
   173  func NewCommentBuilder() *CommentBuilder {
   174  	builder := &CommentBuilder{}
   175  	return builder
   176  }
   177  
   178  // 评论内容。;<md-alert>;评论内容和富文本评论内容同时存在时只使用富文本评论内容。;</md-alert>
   179  //
   180  // 示例值:举杯邀明月,对影成三人
   181  func (builder *CommentBuilder) Content(content string) *CommentBuilder {
   182  	builder.content = content
   183  	builder.contentFlag = true
   184  	return builder
   185  }
   186  
   187  // 评论的父ID,创建评论时若不为空则为某条评论的回复,若为空则不是回复
   188  //
   189  // 示例值:6937231762296684564
   190  func (builder *CommentBuilder) ParentId(parentId string) *CommentBuilder {
   191  	builder.parentId = parentId
   192  	builder.parentIdFlag = true
   193  	return builder
   194  }
   195  
   196  // 评论ID,由飞书服务器发号
   197  //
   198  // 示例值:6937231762296684564
   199  func (builder *CommentBuilder) Id(id string) *CommentBuilder {
   200  	builder.id = id
   201  	builder.idFlag = true
   202  	return builder
   203  }
   204  
   205  // 评论创建的时间戳,单位为毫秒,用于展示,创建时不用填写
   206  //
   207  // 示例值:1657075055135
   208  func (builder *CommentBuilder) CreateMilliTime(createMilliTime string) *CommentBuilder {
   209  	builder.createMilliTime = createMilliTime
   210  	builder.createMilliTimeFlag = true
   211  	return builder
   212  }
   213  
   214  // 富文本评论内容。语法格式参见[Markdown模块](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/task-v1/markdown-module)
   215  //
   216  // 示例值:举杯邀明月,对影成三人<at id=7058204817822318612></at>
   217  func (builder *CommentBuilder) RichContent(richContent string) *CommentBuilder {
   218  	builder.richContent = richContent
   219  	builder.richContentFlag = true
   220  	return builder
   221  }
   222  
   223  func (builder *CommentBuilder) Build() *Comment {
   224  	req := &Comment{}
   225  	if builder.contentFlag {
   226  		req.Content = &builder.content
   227  
   228  	}
   229  	if builder.parentIdFlag {
   230  		req.ParentId = &builder.parentId
   231  
   232  	}
   233  	if builder.idFlag {
   234  		req.Id = &builder.id
   235  
   236  	}
   237  	if builder.createMilliTimeFlag {
   238  		req.CreateMilliTime = &builder.createMilliTime
   239  
   240  	}
   241  	if builder.richContentFlag {
   242  		req.RichContent = &builder.richContent
   243  
   244  	}
   245  	return req
   246  }
   247  
   248  type Due struct {
   249  	Time     *string `json:"time,omitempty"`       // 截止时间的时间戳(单位为秒)
   250  	Timezone *string `json:"timezone,omitempty"`   // 截止时间对应的时区,使用IANA Time Zone Database标准,如Asia/Shanghai
   251  	IsAllDay *bool   `json:"is_all_day,omitempty"` // 标记任务是否为全天任务(全天任务的截止时间为当天 UTC 时间的 0 点)
   252  }
   253  
   254  type DueBuilder struct {
   255  	time         string // 截止时间的时间戳(单位为秒)
   256  	timeFlag     bool
   257  	timezone     string // 截止时间对应的时区,使用IANA Time Zone Database标准,如Asia/Shanghai
   258  	timezoneFlag bool
   259  	isAllDay     bool // 标记任务是否为全天任务(全天任务的截止时间为当天 UTC 时间的 0 点)
   260  	isAllDayFlag bool
   261  }
   262  
   263  func NewDueBuilder() *DueBuilder {
   264  	builder := &DueBuilder{}
   265  	return builder
   266  }
   267  
   268  // 截止时间的时间戳(单位为秒)
   269  //
   270  // 示例值:1623124318
   271  func (builder *DueBuilder) Time(time string) *DueBuilder {
   272  	builder.time = time
   273  	builder.timeFlag = true
   274  	return builder
   275  }
   276  
   277  // 截止时间对应的时区,使用IANA Time Zone Database标准,如Asia/Shanghai
   278  //
   279  // 示例值:Asia/Shanghai
   280  func (builder *DueBuilder) Timezone(timezone string) *DueBuilder {
   281  	builder.timezone = timezone
   282  	builder.timezoneFlag = true
   283  	return builder
   284  }
   285  
   286  // 标记任务是否为全天任务(全天任务的截止时间为当天 UTC 时间的 0 点)
   287  //
   288  // 示例值:false
   289  func (builder *DueBuilder) IsAllDay(isAllDay bool) *DueBuilder {
   290  	builder.isAllDay = isAllDay
   291  	builder.isAllDayFlag = true
   292  	return builder
   293  }
   294  
   295  func (builder *DueBuilder) Build() *Due {
   296  	req := &Due{}
   297  	if builder.timeFlag {
   298  		req.Time = &builder.time
   299  
   300  	}
   301  	if builder.timezoneFlag {
   302  		req.Timezone = &builder.timezone
   303  
   304  	}
   305  	if builder.isAllDayFlag {
   306  		req.IsAllDay = &builder.isAllDay
   307  
   308  	}
   309  	return req
   310  }
   311  
   312  type Follower struct {
   313  	Id     *string  `json:"id,omitempty"`      // 任务关注人 ID
   314  	IdList []string `json:"id_list,omitempty"` // 要添加的关注人ID列表
   315  }
   316  
   317  type FollowerBuilder struct {
   318  	id         string // 任务关注人 ID
   319  	idFlag     bool
   320  	idList     []string // 要添加的关注人ID列表
   321  	idListFlag bool
   322  }
   323  
   324  func NewFollowerBuilder() *FollowerBuilder {
   325  	builder := &FollowerBuilder{}
   326  	return builder
   327  }
   328  
   329  // 任务关注人 ID
   330  //
   331  // 示例值:ou_99e1a581b36ecc4862cbfbce473f3123
   332  func (builder *FollowerBuilder) Id(id string) *FollowerBuilder {
   333  	builder.id = id
   334  	builder.idFlag = true
   335  	return builder
   336  }
   337  
   338  // 要添加的关注人ID列表
   339  //
   340  // 示例值:[;  "ou_550cc75233d8b7b9fcbdad65f34433f4", "ou_d1e9d27cf3235b40ca9a67c67ef088b0";]
   341  func (builder *FollowerBuilder) IdList(idList []string) *FollowerBuilder {
   342  	builder.idList = idList
   343  	builder.idListFlag = true
   344  	return builder
   345  }
   346  
   347  func (builder *FollowerBuilder) Build() *Follower {
   348  	req := &Follower{}
   349  	if builder.idFlag {
   350  		req.Id = &builder.id
   351  
   352  	}
   353  	if builder.idListFlag {
   354  		req.IdList = builder.idList
   355  	}
   356  	return req
   357  }
   358  
   359  type Href struct {
   360  	Url   *string `json:"url,omitempty"`   // 具体链接地址
   361  	Title *string `json:"title,omitempty"` // 链接对应的标题
   362  }
   363  
   364  type HrefBuilder struct {
   365  	url       string // 具体链接地址
   366  	urlFlag   bool
   367  	title     string // 链接对应的标题
   368  	titleFlag bool
   369  }
   370  
   371  func NewHrefBuilder() *HrefBuilder {
   372  	builder := &HrefBuilder{}
   373  	return builder
   374  }
   375  
   376  // 具体链接地址
   377  //
   378  // 示例值:https://support.feishu.com/internal/foo-bar
   379  func (builder *HrefBuilder) Url(url string) *HrefBuilder {
   380  	builder.url = url
   381  	builder.urlFlag = true
   382  	return builder
   383  }
   384  
   385  // 链接对应的标题
   386  //
   387  // 示例值:反馈一个问题,需要协助排查
   388  func (builder *HrefBuilder) Title(title string) *HrefBuilder {
   389  	builder.title = title
   390  	builder.titleFlag = true
   391  	return builder
   392  }
   393  
   394  func (builder *HrefBuilder) Build() *Href {
   395  	req := &Href{}
   396  	if builder.urlFlag {
   397  		req.Url = &builder.url
   398  
   399  	}
   400  	if builder.titleFlag {
   401  		req.Title = &builder.title
   402  
   403  	}
   404  	return req
   405  }
   406  
   407  type Origin struct {
   408  	PlatformI18nName *string `json:"platform_i18n_name,omitempty"` // 任务导入来源的名称,用于在任务中心详情页展示。请提供一个字典,多种语言名称映射。支持的各地区语言名:it_it, th_th, ko_kr, es_es, ja_jp, zh_cn, id_id, zh_hk, pt_br, de_de, fr_fr, zh_tw, ru_ru, en_us, hi_in, vi_vn
   409  	Href             *Href   `json:"href,omitempty"`               // 任务关联的来源平台详情页链接
   410  }
   411  
   412  type OriginBuilder struct {
   413  	platformI18nName     string // 任务导入来源的名称,用于在任务中心详情页展示。请提供一个字典,多种语言名称映射。支持的各地区语言名:it_it, th_th, ko_kr, es_es, ja_jp, zh_cn, id_id, zh_hk, pt_br, de_de, fr_fr, zh_tw, ru_ru, en_us, hi_in, vi_vn
   414  	platformI18nNameFlag bool
   415  	href                 *Href // 任务关联的来源平台详情页链接
   416  	hrefFlag             bool
   417  }
   418  
   419  func NewOriginBuilder() *OriginBuilder {
   420  	builder := &OriginBuilder{}
   421  	return builder
   422  }
   423  
   424  // 任务导入来源的名称,用于在任务中心详情页展示。请提供一个字典,多种语言名称映射。支持的各地区语言名:it_it, th_th, ko_kr, es_es, ja_jp, zh_cn, id_id, zh_hk, pt_br, de_de, fr_fr, zh_tw, ru_ru, en_us, hi_in, vi_vn
   425  //
   426  // 示例值:{\"zh_cn\": \"IT 工作台\", \"en_us\": \"IT Workspace\"}
   427  func (builder *OriginBuilder) PlatformI18nName(platformI18nName string) *OriginBuilder {
   428  	builder.platformI18nName = platformI18nName
   429  	builder.platformI18nNameFlag = true
   430  	return builder
   431  }
   432  
   433  // 任务关联的来源平台详情页链接
   434  //
   435  // 示例值:
   436  func (builder *OriginBuilder) Href(href *Href) *OriginBuilder {
   437  	builder.href = href
   438  	builder.hrefFlag = true
   439  	return builder
   440  }
   441  
   442  func (builder *OriginBuilder) Build() *Origin {
   443  	req := &Origin{}
   444  	if builder.platformI18nNameFlag {
   445  		req.PlatformI18nName = &builder.platformI18nName
   446  
   447  	}
   448  	if builder.hrefFlag {
   449  		req.Href = builder.href
   450  	}
   451  	return req
   452  }
   453  
   454  type Reminder struct {
   455  	Id                 *string `json:"id,omitempty"`                   // 提醒时间设置的 ID(在删除时候需要使用这个)
   456  	RelativeFireMinute *int    `json:"relative_fire_minute,omitempty"` // 相对于截止时间的提醒时间(如提前 30 分钟,截止时间后 30 分钟,则为 -30) 任务没有截止时间则为全天任务(截止时间为0)
   457  }
   458  
   459  type ReminderBuilder struct {
   460  	id                     string // 提醒时间设置的 ID(在删除时候需要使用这个)
   461  	idFlag                 bool
   462  	relativeFireMinute     int // 相对于截止时间的提醒时间(如提前 30 分钟,截止时间后 30 分钟,则为 -30) 任务没有截止时间则为全天任务(截止时间为0)
   463  	relativeFireMinuteFlag bool
   464  }
   465  
   466  func NewReminderBuilder() *ReminderBuilder {
   467  	builder := &ReminderBuilder{}
   468  	return builder
   469  }
   470  
   471  // 提醒时间设置的 ID(在删除时候需要使用这个)
   472  //
   473  // 示例值:1
   474  func (builder *ReminderBuilder) Id(id string) *ReminderBuilder {
   475  	builder.id = id
   476  	builder.idFlag = true
   477  	return builder
   478  }
   479  
   480  // 相对于截止时间的提醒时间(如提前 30 分钟,截止时间后 30 分钟,则为 -30) 任务没有截止时间则为全天任务(截止时间为0)
   481  //
   482  // 示例值:30
   483  func (builder *ReminderBuilder) RelativeFireMinute(relativeFireMinute int) *ReminderBuilder {
   484  	builder.relativeFireMinute = relativeFireMinute
   485  	builder.relativeFireMinuteFlag = true
   486  	return builder
   487  }
   488  
   489  func (builder *ReminderBuilder) Build() *Reminder {
   490  	req := &Reminder{}
   491  	if builder.idFlag {
   492  		req.Id = &builder.id
   493  
   494  	}
   495  	if builder.relativeFireMinuteFlag {
   496  		req.RelativeFireMinute = &builder.relativeFireMinute
   497  
   498  	}
   499  	return req
   500  }
   501  
   502  type Task struct {
   503  	Id              *string         `json:"id,omitempty"`               // 任务 ID,由飞书任务服务器发号
   504  	Summary         *string         `json:"summary,omitempty"`          // 任务标题。创建任务时,如果没有标题填充,飞书服务器会将其视为无主题的任务。;<md-alert>;任务标题和任务富文本标题同时存在时只使用富文本标题。;</md-alert>
   505  	Description     *string         `json:"description,omitempty"`      // 任务备注。;<md-alert>;任务备注和任务富文本备注同时存在时只使用富文本备注。;</md-alert>
   506  	CompleteTime    *string         `json:"complete_time,omitempty"`    // 任务的完成时间戳(单位为秒),如果完成时间为 0,则表示任务尚未完成
   507  	CreatorId       *string         `json:"creator_id,omitempty"`       // 任务的创建者 ID。在创建任务时无需填充该字段
   508  	Extra           *string         `json:"extra,omitempty"`            // 接入方可以自定义的附属信息二进制格式,采用 base64 编码,解析方式由接入方自己决定
   509  	CreateTime      *string         `json:"create_time,omitempty"`      // 任务的创建时间戳(单位为秒)
   510  	UpdateTime      *string         `json:"update_time,omitempty"`      // 任务的更新时间戳(单位为秒)
   511  	Due             *Due            `json:"due,omitempty"`              // 任务的截止时间设置
   512  	Origin          *Origin         `json:"origin,omitempty"`           // 任务关联的第三方平台来源信息
   513  	CanEdit         *bool           `json:"can_edit,omitempty"`         // 此字段用于控制该任务在飞书任务中心是否可编辑,默认为false,若为true则第三方需考虑是否需要接入事件来接收任务在任务中心的变更信息;(即将废弃)
   514  	Custom          *string         `json:"custom,omitempty"`           // 此字段用于存储第三方需透传到端上的自定义数据,Json格式。取值举例中custom_complete字段存储「完成」按钮的跳转链接(href)或提示信息(tip),pc、ios、android三端均可自定义,其中tip字段的key为语言类型,value为提示信息,可自行增加或减少语言类型,支持的各地区语言名:it_it, th_th, ko_kr, es_es, ja_jp, zh_cn, id_id, zh_hk, pt_br, de_de, fr_fr, zh_tw, ru_ru, en_us, hi_in, vi_vn。href的优先级高于tip,href和tip同时不为空时只跳转不提示。链接和提示信息可自定义,其余的key需按举例中的结构传递
   515  	Source          *int            `json:"source,omitempty"`           // 任务创建的来源
   516  	Followers       []*Follower     `json:"followers,omitempty"`        // 任务的关注者
   517  	Collaborators   []*Collaborator `json:"collaborators,omitempty"`    // 任务的执行者
   518  	CollaboratorIds []string        `json:"collaborator_ids,omitempty"` // 创建任务时添加的执行者用户id列表
   519  	FollowerIds     []string        `json:"follower_ids,omitempty"`     // 创建任务时添加的关注者用户id列表
   520  	RepeatRule      *string         `json:"repeat_rule,omitempty"`      // 重复任务重复规则
   521  	RichSummary     *string         `json:"rich_summary,omitempty"`     // 富文本任务标题。创建任务时,如果没有标题填充,飞书服务器会将其视为无主题的任务。语法格式参见[Markdown模块](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/task-v1/markdown-module)
   522  	RichDescription *string         `json:"rich_description,omitempty"` // 富文本任务备注。语法格式参见[Markdown模块](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/task-v1/markdown-module)
   523  }
   524  
   525  type TaskBuilder struct {
   526  	id                  string // 任务 ID,由飞书任务服务器发号
   527  	idFlag              bool
   528  	summary             string // 任务标题。创建任务时,如果没有标题填充,飞书服务器会将其视为无主题的任务。;<md-alert>;任务标题和任务富文本标题同时存在时只使用富文本标题。;</md-alert>
   529  	summaryFlag         bool
   530  	description         string // 任务备注。;<md-alert>;任务备注和任务富文本备注同时存在时只使用富文本备注。;</md-alert>
   531  	descriptionFlag     bool
   532  	completeTime        string // 任务的完成时间戳(单位为秒),如果完成时间为 0,则表示任务尚未完成
   533  	completeTimeFlag    bool
   534  	creatorId           string // 任务的创建者 ID。在创建任务时无需填充该字段
   535  	creatorIdFlag       bool
   536  	extra               string // 接入方可以自定义的附属信息二进制格式,采用 base64 编码,解析方式由接入方自己决定
   537  	extraFlag           bool
   538  	createTime          string // 任务的创建时间戳(单位为秒)
   539  	createTimeFlag      bool
   540  	updateTime          string // 任务的更新时间戳(单位为秒)
   541  	updateTimeFlag      bool
   542  	due                 *Due // 任务的截止时间设置
   543  	dueFlag             bool
   544  	origin              *Origin // 任务关联的第三方平台来源信息
   545  	originFlag          bool
   546  	canEdit             bool // 此字段用于控制该任务在飞书任务中心是否可编辑,默认为false,若为true则第三方需考虑是否需要接入事件来接收任务在任务中心的变更信息;(即将废弃)
   547  	canEditFlag         bool
   548  	custom              string // 此字段用于存储第三方需透传到端上的自定义数据,Json格式。取值举例中custom_complete字段存储「完成」按钮的跳转链接(href)或提示信息(tip),pc、ios、android三端均可自定义,其中tip字段的key为语言类型,value为提示信息,可自行增加或减少语言类型,支持的各地区语言名:it_it, th_th, ko_kr, es_es, ja_jp, zh_cn, id_id, zh_hk, pt_br, de_de, fr_fr, zh_tw, ru_ru, en_us, hi_in, vi_vn。href的优先级高于tip,href和tip同时不为空时只跳转不提示。链接和提示信息可自定义,其余的key需按举例中的结构传递
   549  	customFlag          bool
   550  	source              int // 任务创建的来源
   551  	sourceFlag          bool
   552  	followers           []*Follower // 任务的关注者
   553  	followersFlag       bool
   554  	collaborators       []*Collaborator // 任务的执行者
   555  	collaboratorsFlag   bool
   556  	collaboratorIds     []string // 创建任务时添加的执行者用户id列表
   557  	collaboratorIdsFlag bool
   558  	followerIds         []string // 创建任务时添加的关注者用户id列表
   559  	followerIdsFlag     bool
   560  	repeatRule          string // 重复任务重复规则
   561  	repeatRuleFlag      bool
   562  	richSummary         string // 富文本任务标题。创建任务时,如果没有标题填充,飞书服务器会将其视为无主题的任务。语法格式参见[Markdown模块](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/task-v1/markdown-module)
   563  	richSummaryFlag     bool
   564  	richDescription     string // 富文本任务备注。语法格式参见[Markdown模块](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/task-v1/markdown-module)
   565  	richDescriptionFlag bool
   566  }
   567  
   568  func NewTaskBuilder() *TaskBuilder {
   569  	builder := &TaskBuilder{}
   570  	return builder
   571  }
   572  
   573  // 任务 ID,由飞书任务服务器发号
   574  //
   575  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
   576  func (builder *TaskBuilder) Id(id string) *TaskBuilder {
   577  	builder.id = id
   578  	builder.idFlag = true
   579  	return builder
   580  }
   581  
   582  // 任务标题。创建任务时,如果没有标题填充,飞书服务器会将其视为无主题的任务。;<md-alert>;任务标题和任务富文本标题同时存在时只使用富文本标题。;</md-alert>
   583  //
   584  // 示例值:每天喝八杯水,保持身心愉悦
   585  func (builder *TaskBuilder) Summary(summary string) *TaskBuilder {
   586  	builder.summary = summary
   587  	builder.summaryFlag = true
   588  	return builder
   589  }
   590  
   591  // 任务备注。;<md-alert>;任务备注和任务富文本备注同时存在时只使用富文本备注。;</md-alert>
   592  //
   593  // 示例值:多吃水果,多运动,健康生活,快乐工作。
   594  func (builder *TaskBuilder) Description(description string) *TaskBuilder {
   595  	builder.description = description
   596  	builder.descriptionFlag = true
   597  	return builder
   598  }
   599  
   600  // 任务的完成时间戳(单位为秒),如果完成时间为 0,则表示任务尚未完成
   601  //
   602  // 示例值:1623499200
   603  func (builder *TaskBuilder) CompleteTime(completeTime string) *TaskBuilder {
   604  	builder.completeTime = completeTime
   605  	builder.completeTimeFlag = true
   606  	return builder
   607  }
   608  
   609  // 任务的创建者 ID。在创建任务时无需填充该字段
   610  //
   611  // 示例值:ou_99e1a581b36ecc4862cbfbce473f346a
   612  func (builder *TaskBuilder) CreatorId(creatorId string) *TaskBuilder {
   613  	builder.creatorId = creatorId
   614  	builder.creatorIdFlag = true
   615  	return builder
   616  }
   617  
   618  // 接入方可以自定义的附属信息二进制格式,采用 base64 编码,解析方式由接入方自己决定
   619  //
   620  // 示例值:dGVzdA==
   621  func (builder *TaskBuilder) Extra(extra string) *TaskBuilder {
   622  	builder.extra = extra
   623  	builder.extraFlag = true
   624  	return builder
   625  }
   626  
   627  // 任务的创建时间戳(单位为秒)
   628  //
   629  // 示例值:1623392486
   630  func (builder *TaskBuilder) CreateTime(createTime string) *TaskBuilder {
   631  	builder.createTime = createTime
   632  	builder.createTimeFlag = true
   633  	return builder
   634  }
   635  
   636  // 任务的更新时间戳(单位为秒)
   637  //
   638  // 示例值:1623392486
   639  func (builder *TaskBuilder) UpdateTime(updateTime string) *TaskBuilder {
   640  	builder.updateTime = updateTime
   641  	builder.updateTimeFlag = true
   642  	return builder
   643  }
   644  
   645  // 任务的截止时间设置
   646  //
   647  // 示例值:
   648  func (builder *TaskBuilder) Due(due *Due) *TaskBuilder {
   649  	builder.due = due
   650  	builder.dueFlag = true
   651  	return builder
   652  }
   653  
   654  // 任务关联的第三方平台来源信息
   655  //
   656  // 示例值:
   657  func (builder *TaskBuilder) Origin(origin *Origin) *TaskBuilder {
   658  	builder.origin = origin
   659  	builder.originFlag = true
   660  	return builder
   661  }
   662  
   663  // 此字段用于控制该任务在飞书任务中心是否可编辑,默认为false,若为true则第三方需考虑是否需要接入事件来接收任务在任务中心的变更信息;(即将废弃)
   664  //
   665  // 示例值:true
   666  func (builder *TaskBuilder) CanEdit(canEdit bool) *TaskBuilder {
   667  	builder.canEdit = canEdit
   668  	builder.canEditFlag = true
   669  	return builder
   670  }
   671  
   672  // 此字段用于存储第三方需透传到端上的自定义数据,Json格式。取值举例中custom_complete字段存储「完成」按钮的跳转链接(href)或提示信息(tip),pc、ios、android三端均可自定义,其中tip字段的key为语言类型,value为提示信息,可自行增加或减少语言类型,支持的各地区语言名:it_it, th_th, ko_kr, es_es, ja_jp, zh_cn, id_id, zh_hk, pt_br, de_de, fr_fr, zh_tw, ru_ru, en_us, hi_in, vi_vn。href的优先级高于tip,href和tip同时不为空时只跳转不提示。链接和提示信息可自定义,其余的key需按举例中的结构传递
   673  //
   674  // 示例值:{\"custom_complete\":{\"android\":{\"href\":\"https://www.feishu.cn/\",\"tip\":{\"zh_cn\":\"你好\",\"en_us\":\"hello\"}},\"ios\":{\"href\":\"https://www.feishu.cn/\",\"tip\":{\"zh_cn\":\"你好\",\"en_us\":\"hello\"}},\"pc\":{\"href\":\"https://www.feishu.cn/\",\"tip\":{\"zh_cn\":\"你好\",\"en_us\":\"hello\"}}}}
   675  func (builder *TaskBuilder) Custom(custom string) *TaskBuilder {
   676  	builder.custom = custom
   677  	builder.customFlag = true
   678  	return builder
   679  }
   680  
   681  // 任务创建的来源
   682  //
   683  // 示例值:
   684  func (builder *TaskBuilder) Source(source int) *TaskBuilder {
   685  	builder.source = source
   686  	builder.sourceFlag = true
   687  	return builder
   688  }
   689  
   690  // 任务的关注者
   691  //
   692  // 示例值:ou_03c21c80caea2c816665f8056dc59027
   693  func (builder *TaskBuilder) Followers(followers []*Follower) *TaskBuilder {
   694  	builder.followers = followers
   695  	builder.followersFlag = true
   696  	return builder
   697  }
   698  
   699  // 任务的执行者
   700  //
   701  // 示例值:ou_558d4999baae26e32aa2fd9bb228660b
   702  func (builder *TaskBuilder) Collaborators(collaborators []*Collaborator) *TaskBuilder {
   703  	builder.collaborators = collaborators
   704  	builder.collaboratorsFlag = true
   705  	return builder
   706  }
   707  
   708  // 创建任务时添加的执行者用户id列表
   709  //
   710  // 示例值:["ou_1400208f15333e20e11339d39067844b", "ou_84ed6312949945c8ae6168f10829e9e6"]
   711  func (builder *TaskBuilder) CollaboratorIds(collaboratorIds []string) *TaskBuilder {
   712  	builder.collaboratorIds = collaboratorIds
   713  	builder.collaboratorIdsFlag = true
   714  	return builder
   715  }
   716  
   717  // 创建任务时添加的关注者用户id列表
   718  //
   719  // 示例值:["ou_1400208f15333e20e11339d39067844b", "ou_84ed6312949945c8ae6168f10829e9e6"]
   720  func (builder *TaskBuilder) FollowerIds(followerIds []string) *TaskBuilder {
   721  	builder.followerIds = followerIds
   722  	builder.followerIdsFlag = true
   723  	return builder
   724  }
   725  
   726  // 重复任务重复规则
   727  //
   728  // 示例值:FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR
   729  func (builder *TaskBuilder) RepeatRule(repeatRule string) *TaskBuilder {
   730  	builder.repeatRule = repeatRule
   731  	builder.repeatRuleFlag = true
   732  	return builder
   733  }
   734  
   735  // 富文本任务标题。创建任务时,如果没有标题填充,飞书服务器会将其视为无主题的任务。语法格式参见[Markdown模块](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/task-v1/markdown-module)
   736  //
   737  // 示例值:每天喝八杯水,保持身心愉悦\[飞书开放平台\](https://open.feishu.cn/)
   738  func (builder *TaskBuilder) RichSummary(richSummary string) *TaskBuilder {
   739  	builder.richSummary = richSummary
   740  	builder.richSummaryFlag = true
   741  	return builder
   742  }
   743  
   744  // 富文本任务备注。语法格式参见[Markdown模块](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/task-v1/markdown-module)
   745  //
   746  // 示例值:多吃水果,多运动,健康生活,快乐工作。\[飞书开放平台](https://open.feishu.cn/)
   747  func (builder *TaskBuilder) RichDescription(richDescription string) *TaskBuilder {
   748  	builder.richDescription = richDescription
   749  	builder.richDescriptionFlag = true
   750  	return builder
   751  }
   752  
   753  func (builder *TaskBuilder) Build() *Task {
   754  	req := &Task{}
   755  	if builder.idFlag {
   756  		req.Id = &builder.id
   757  
   758  	}
   759  	if builder.summaryFlag {
   760  		req.Summary = &builder.summary
   761  
   762  	}
   763  	if builder.descriptionFlag {
   764  		req.Description = &builder.description
   765  
   766  	}
   767  	if builder.completeTimeFlag {
   768  		req.CompleteTime = &builder.completeTime
   769  
   770  	}
   771  	if builder.creatorIdFlag {
   772  		req.CreatorId = &builder.creatorId
   773  
   774  	}
   775  	if builder.extraFlag {
   776  		req.Extra = &builder.extra
   777  
   778  	}
   779  	if builder.createTimeFlag {
   780  		req.CreateTime = &builder.createTime
   781  
   782  	}
   783  	if builder.updateTimeFlag {
   784  		req.UpdateTime = &builder.updateTime
   785  
   786  	}
   787  	if builder.dueFlag {
   788  		req.Due = builder.due
   789  	}
   790  	if builder.originFlag {
   791  		req.Origin = builder.origin
   792  	}
   793  	if builder.canEditFlag {
   794  		req.CanEdit = &builder.canEdit
   795  
   796  	}
   797  	if builder.customFlag {
   798  		req.Custom = &builder.custom
   799  
   800  	}
   801  	if builder.sourceFlag {
   802  		req.Source = &builder.source
   803  
   804  	}
   805  	if builder.followersFlag {
   806  		req.Followers = builder.followers
   807  	}
   808  	if builder.collaboratorsFlag {
   809  		req.Collaborators = builder.collaborators
   810  	}
   811  	if builder.collaboratorIdsFlag {
   812  		req.CollaboratorIds = builder.collaboratorIds
   813  	}
   814  	if builder.followerIdsFlag {
   815  		req.FollowerIds = builder.followerIds
   816  	}
   817  	if builder.repeatRuleFlag {
   818  		req.RepeatRule = &builder.repeatRule
   819  
   820  	}
   821  	if builder.richSummaryFlag {
   822  		req.RichSummary = &builder.richSummary
   823  
   824  	}
   825  	if builder.richDescriptionFlag {
   826  		req.RichDescription = &builder.richDescription
   827  
   828  	}
   829  	return req
   830  }
   831  
   832  type UserId struct {
   833  	UserId  *string `json:"user_id,omitempty"`  //
   834  	OpenId  *string `json:"open_id,omitempty"`  //
   835  	UnionId *string `json:"union_id,omitempty"` //
   836  }
   837  
   838  type UserIdBuilder struct {
   839  	userId      string //
   840  	userIdFlag  bool
   841  	openId      string //
   842  	openIdFlag  bool
   843  	unionId     string //
   844  	unionIdFlag bool
   845  }
   846  
   847  func NewUserIdBuilder() *UserIdBuilder {
   848  	builder := &UserIdBuilder{}
   849  	return builder
   850  }
   851  
   852  //
   853  //
   854  // 示例值:
   855  func (builder *UserIdBuilder) UserId(userId string) *UserIdBuilder {
   856  	builder.userId = userId
   857  	builder.userIdFlag = true
   858  	return builder
   859  }
   860  
   861  //
   862  //
   863  // 示例值:
   864  func (builder *UserIdBuilder) OpenId(openId string) *UserIdBuilder {
   865  	builder.openId = openId
   866  	builder.openIdFlag = true
   867  	return builder
   868  }
   869  
   870  //
   871  //
   872  // 示例值:
   873  func (builder *UserIdBuilder) UnionId(unionId string) *UserIdBuilder {
   874  	builder.unionId = unionId
   875  	builder.unionIdFlag = true
   876  	return builder
   877  }
   878  
   879  func (builder *UserIdBuilder) Build() *UserId {
   880  	req := &UserId{}
   881  	if builder.userIdFlag {
   882  		req.UserId = &builder.userId
   883  
   884  	}
   885  	if builder.openIdFlag {
   886  		req.OpenId = &builder.openId
   887  
   888  	}
   889  	if builder.unionIdFlag {
   890  		req.UnionId = &builder.unionId
   891  
   892  	}
   893  	return req
   894  }
   895  
   896  type UserIdList struct {
   897  	UserIdList []*UserId `json:"user_id_list,omitempty"` // 用户 ID 列表
   898  }
   899  
   900  type UserIdListBuilder struct {
   901  	userIdList     []*UserId // 用户 ID 列表
   902  	userIdListFlag bool
   903  }
   904  
   905  func NewUserIdListBuilder() *UserIdListBuilder {
   906  	builder := &UserIdListBuilder{}
   907  	return builder
   908  }
   909  
   910  // 用户 ID 列表
   911  //
   912  // 示例值:
   913  func (builder *UserIdListBuilder) UserIdList(userIdList []*UserId) *UserIdListBuilder {
   914  	builder.userIdList = userIdList
   915  	builder.userIdListFlag = true
   916  	return builder
   917  }
   918  
   919  func (builder *UserIdListBuilder) Build() *UserIdList {
   920  	req := &UserIdList{}
   921  	if builder.userIdListFlag {
   922  		req.UserIdList = builder.userIdList
   923  	}
   924  	return req
   925  }
   926  
   927  type BatchDeleteCollaboratorTaskReqBuilder struct {
   928  	apiReq       *larkcore.ApiReq
   929  	collaborator *Collaborator
   930  }
   931  
   932  func NewBatchDeleteCollaboratorTaskReqBuilder() *BatchDeleteCollaboratorTaskReqBuilder {
   933  	builder := &BatchDeleteCollaboratorTaskReqBuilder{}
   934  	builder.apiReq = &larkcore.ApiReq{
   935  		PathParams:  larkcore.PathParams{},
   936  		QueryParams: larkcore.QueryParams{},
   937  	}
   938  	return builder
   939  }
   940  
   941  // 任务ID
   942  //
   943  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
   944  func (builder *BatchDeleteCollaboratorTaskReqBuilder) TaskId(taskId string) *BatchDeleteCollaboratorTaskReqBuilder {
   945  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
   946  	return builder
   947  }
   948  
   949  // 此次调用中使用的用户ID的类型
   950  //
   951  // 示例值:
   952  func (builder *BatchDeleteCollaboratorTaskReqBuilder) UserIdType(userIdType string) *BatchDeleteCollaboratorTaskReqBuilder {
   953  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
   954  	return builder
   955  }
   956  
   957  // 该接口用于批量删除执行者
   958  func (builder *BatchDeleteCollaboratorTaskReqBuilder) Collaborator(collaborator *Collaborator) *BatchDeleteCollaboratorTaskReqBuilder {
   959  	builder.collaborator = collaborator
   960  	return builder
   961  }
   962  
   963  func (builder *BatchDeleteCollaboratorTaskReqBuilder) Build() *BatchDeleteCollaboratorTaskReq {
   964  	req := &BatchDeleteCollaboratorTaskReq{}
   965  	req.apiReq = &larkcore.ApiReq{}
   966  	req.apiReq.PathParams = builder.apiReq.PathParams
   967  	req.apiReq.QueryParams = builder.apiReq.QueryParams
   968  	req.apiReq.Body = builder.collaborator
   969  	return req
   970  }
   971  
   972  type BatchDeleteCollaboratorTaskReq struct {
   973  	apiReq       *larkcore.ApiReq
   974  	Collaborator *Collaborator `body:""`
   975  }
   976  
   977  type BatchDeleteCollaboratorTaskRespData struct {
   978  	Collaborators []string `json:"collaborators,omitempty"` // 实际删除的执行人用户ID列表
   979  }
   980  
   981  type BatchDeleteCollaboratorTaskResp struct {
   982  	*larkcore.ApiResp `json:"-"`
   983  	larkcore.CodeError
   984  	Data *BatchDeleteCollaboratorTaskRespData `json:"data"` // 业务数据
   985  }
   986  
   987  func (resp *BatchDeleteCollaboratorTaskResp) Success() bool {
   988  	return resp.Code == 0
   989  }
   990  
   991  type BatchDeleteFollowerTaskReqBuilder struct {
   992  	apiReq   *larkcore.ApiReq
   993  	follower *Follower
   994  }
   995  
   996  func NewBatchDeleteFollowerTaskReqBuilder() *BatchDeleteFollowerTaskReqBuilder {
   997  	builder := &BatchDeleteFollowerTaskReqBuilder{}
   998  	builder.apiReq = &larkcore.ApiReq{
   999  		PathParams:  larkcore.PathParams{},
  1000  		QueryParams: larkcore.QueryParams{},
  1001  	}
  1002  	return builder
  1003  }
  1004  
  1005  // 任务ID
  1006  //
  1007  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
  1008  func (builder *BatchDeleteFollowerTaskReqBuilder) TaskId(taskId string) *BatchDeleteFollowerTaskReqBuilder {
  1009  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  1010  	return builder
  1011  }
  1012  
  1013  // 此次调用中使用的用户ID的类型
  1014  //
  1015  // 示例值:
  1016  func (builder *BatchDeleteFollowerTaskReqBuilder) UserIdType(userIdType string) *BatchDeleteFollowerTaskReqBuilder {
  1017  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  1018  	return builder
  1019  }
  1020  
  1021  // 该接口用于批量删除关注人
  1022  func (builder *BatchDeleteFollowerTaskReqBuilder) Follower(follower *Follower) *BatchDeleteFollowerTaskReqBuilder {
  1023  	builder.follower = follower
  1024  	return builder
  1025  }
  1026  
  1027  func (builder *BatchDeleteFollowerTaskReqBuilder) Build() *BatchDeleteFollowerTaskReq {
  1028  	req := &BatchDeleteFollowerTaskReq{}
  1029  	req.apiReq = &larkcore.ApiReq{}
  1030  	req.apiReq.PathParams = builder.apiReq.PathParams
  1031  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  1032  	req.apiReq.Body = builder.follower
  1033  	return req
  1034  }
  1035  
  1036  type BatchDeleteFollowerTaskReq struct {
  1037  	apiReq   *larkcore.ApiReq
  1038  	Follower *Follower `body:""`
  1039  }
  1040  
  1041  type BatchDeleteFollowerTaskRespData struct {
  1042  	Followers []string `json:"followers,omitempty"` // 实际删除的关注人用户ID列表
  1043  }
  1044  
  1045  type BatchDeleteFollowerTaskResp struct {
  1046  	*larkcore.ApiResp `json:"-"`
  1047  	larkcore.CodeError
  1048  	Data *BatchDeleteFollowerTaskRespData `json:"data"` // 业务数据
  1049  }
  1050  
  1051  func (resp *BatchDeleteFollowerTaskResp) Success() bool {
  1052  	return resp.Code == 0
  1053  }
  1054  
  1055  type CompleteTaskReqBuilder struct {
  1056  	apiReq *larkcore.ApiReq
  1057  }
  1058  
  1059  func NewCompleteTaskReqBuilder() *CompleteTaskReqBuilder {
  1060  	builder := &CompleteTaskReqBuilder{}
  1061  	builder.apiReq = &larkcore.ApiReq{
  1062  		PathParams:  larkcore.PathParams{},
  1063  		QueryParams: larkcore.QueryParams{},
  1064  	}
  1065  	return builder
  1066  }
  1067  
  1068  // 任务 ID
  1069  //
  1070  // 示例值:bb54ab99-d360-434f-bcaa-a4cc4c05840e
  1071  func (builder *CompleteTaskReqBuilder) TaskId(taskId string) *CompleteTaskReqBuilder {
  1072  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  1073  	return builder
  1074  }
  1075  
  1076  func (builder *CompleteTaskReqBuilder) Build() *CompleteTaskReq {
  1077  	req := &CompleteTaskReq{}
  1078  	req.apiReq = &larkcore.ApiReq{}
  1079  	req.apiReq.PathParams = builder.apiReq.PathParams
  1080  	return req
  1081  }
  1082  
  1083  type CompleteTaskReq struct {
  1084  	apiReq *larkcore.ApiReq
  1085  }
  1086  
  1087  type CompleteTaskResp struct {
  1088  	*larkcore.ApiResp `json:"-"`
  1089  	larkcore.CodeError
  1090  }
  1091  
  1092  func (resp *CompleteTaskResp) Success() bool {
  1093  	return resp.Code == 0
  1094  }
  1095  
  1096  type CreateTaskReqBuilder struct {
  1097  	apiReq *larkcore.ApiReq
  1098  	task   *Task
  1099  }
  1100  
  1101  func NewCreateTaskReqBuilder() *CreateTaskReqBuilder {
  1102  	builder := &CreateTaskReqBuilder{}
  1103  	builder.apiReq = &larkcore.ApiReq{
  1104  		PathParams:  larkcore.PathParams{},
  1105  		QueryParams: larkcore.QueryParams{},
  1106  	}
  1107  	return builder
  1108  }
  1109  
  1110  // 此次调用中使用的用户ID的类型
  1111  //
  1112  // 示例值:
  1113  func (builder *CreateTaskReqBuilder) UserIdType(userIdType string) *CreateTaskReqBuilder {
  1114  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  1115  	return builder
  1116  }
  1117  
  1118  // 该接口可以创建一个任务(基本信息),如果需要绑定协作者等需要调用别的资源管理接口。其中查询字段 user_id_type 是用于控制返回体中 creator_id 的类型,不传时默认返回 open_id。当使用tenant_access_token 调用接口时,如果user_id_type为user_id,则不会返回creator_id。
  1119  func (builder *CreateTaskReqBuilder) Task(task *Task) *CreateTaskReqBuilder {
  1120  	builder.task = task
  1121  	return builder
  1122  }
  1123  
  1124  func (builder *CreateTaskReqBuilder) Build() *CreateTaskReq {
  1125  	req := &CreateTaskReq{}
  1126  	req.apiReq = &larkcore.ApiReq{}
  1127  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  1128  	req.apiReq.Body = builder.task
  1129  	return req
  1130  }
  1131  
  1132  type CreateTaskReq struct {
  1133  	apiReq *larkcore.ApiReq
  1134  	Task   *Task `body:""`
  1135  }
  1136  
  1137  type CreateTaskRespData struct {
  1138  	Task *Task `json:"task,omitempty"` // 返回创建好的任务
  1139  }
  1140  
  1141  type CreateTaskResp struct {
  1142  	*larkcore.ApiResp `json:"-"`
  1143  	larkcore.CodeError
  1144  	Data *CreateTaskRespData `json:"data"` // 业务数据
  1145  }
  1146  
  1147  func (resp *CreateTaskResp) Success() bool {
  1148  	return resp.Code == 0
  1149  }
  1150  
  1151  type DeleteTaskReqBuilder struct {
  1152  	apiReq *larkcore.ApiReq
  1153  }
  1154  
  1155  func NewDeleteTaskReqBuilder() *DeleteTaskReqBuilder {
  1156  	builder := &DeleteTaskReqBuilder{}
  1157  	builder.apiReq = &larkcore.ApiReq{
  1158  		PathParams:  larkcore.PathParams{},
  1159  		QueryParams: larkcore.QueryParams{},
  1160  	}
  1161  	return builder
  1162  }
  1163  
  1164  // 任务 ID
  1165  //
  1166  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
  1167  func (builder *DeleteTaskReqBuilder) TaskId(taskId string) *DeleteTaskReqBuilder {
  1168  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  1169  	return builder
  1170  }
  1171  
  1172  func (builder *DeleteTaskReqBuilder) Build() *DeleteTaskReq {
  1173  	req := &DeleteTaskReq{}
  1174  	req.apiReq = &larkcore.ApiReq{}
  1175  	req.apiReq.PathParams = builder.apiReq.PathParams
  1176  	return req
  1177  }
  1178  
  1179  type DeleteTaskReq struct {
  1180  	apiReq *larkcore.ApiReq
  1181  }
  1182  
  1183  type DeleteTaskResp struct {
  1184  	*larkcore.ApiResp `json:"-"`
  1185  	larkcore.CodeError
  1186  }
  1187  
  1188  func (resp *DeleteTaskResp) Success() bool {
  1189  	return resp.Code == 0
  1190  }
  1191  
  1192  type GetTaskReqBuilder struct {
  1193  	apiReq *larkcore.ApiReq
  1194  }
  1195  
  1196  func NewGetTaskReqBuilder() *GetTaskReqBuilder {
  1197  	builder := &GetTaskReqBuilder{}
  1198  	builder.apiReq = &larkcore.ApiReq{
  1199  		PathParams:  larkcore.PathParams{},
  1200  		QueryParams: larkcore.QueryParams{},
  1201  	}
  1202  	return builder
  1203  }
  1204  
  1205  // 任务 ID
  1206  //
  1207  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
  1208  func (builder *GetTaskReqBuilder) TaskId(taskId string) *GetTaskReqBuilder {
  1209  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  1210  	return builder
  1211  }
  1212  
  1213  // 此次调用中使用的用户ID的类型
  1214  //
  1215  // 示例值:
  1216  func (builder *GetTaskReqBuilder) UserIdType(userIdType string) *GetTaskReqBuilder {
  1217  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  1218  	return builder
  1219  }
  1220  
  1221  func (builder *GetTaskReqBuilder) Build() *GetTaskReq {
  1222  	req := &GetTaskReq{}
  1223  	req.apiReq = &larkcore.ApiReq{}
  1224  	req.apiReq.PathParams = builder.apiReq.PathParams
  1225  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  1226  	return req
  1227  }
  1228  
  1229  type GetTaskReq struct {
  1230  	apiReq *larkcore.ApiReq
  1231  }
  1232  
  1233  type GetTaskRespData struct {
  1234  	Task *Task `json:"task,omitempty"` // 返回任务资源详情
  1235  }
  1236  
  1237  type GetTaskResp struct {
  1238  	*larkcore.ApiResp `json:"-"`
  1239  	larkcore.CodeError
  1240  	Data *GetTaskRespData `json:"data"` // 业务数据
  1241  }
  1242  
  1243  func (resp *GetTaskResp) Success() bool {
  1244  	return resp.Code == 0
  1245  }
  1246  
  1247  type ListTaskReqBuilder struct {
  1248  	apiReq *larkcore.ApiReq
  1249  	limit  int // 最大返回多少记录,当使用迭代器访问时才有效
  1250  }
  1251  
  1252  func NewListTaskReqBuilder() *ListTaskReqBuilder {
  1253  	builder := &ListTaskReqBuilder{}
  1254  	builder.apiReq = &larkcore.ApiReq{
  1255  		PathParams:  larkcore.PathParams{},
  1256  		QueryParams: larkcore.QueryParams{},
  1257  	}
  1258  	return builder
  1259  }
  1260  
  1261  // 最大返回多少记录,当使用迭代器访问时才有效
  1262  func (builder *ListTaskReqBuilder) Limit(limit int) *ListTaskReqBuilder {
  1263  	builder.limit = limit
  1264  	return builder
  1265  }
  1266  
  1267  // 分页大小
  1268  //
  1269  // 示例值:10
  1270  func (builder *ListTaskReqBuilder) PageSize(pageSize int) *ListTaskReqBuilder {
  1271  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  1272  	return builder
  1273  }
  1274  
  1275  // 分页标记,第一次请求不填,表示从头开始遍历;分页查询结果还有更多项时会同时返回新的 page_token,下次遍历可采用该 page_token 获取查询结果
  1276  //
  1277  // 示例值:MTYzMTg3ODUxNQ==
  1278  func (builder *ListTaskReqBuilder) PageToken(pageToken string) *ListTaskReqBuilder {
  1279  	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
  1280  	return builder
  1281  }
  1282  
  1283  // 范围查询任务时,查询的起始时间。不填时默认起始时间为第一个任务的创建时间。
  1284  //
  1285  // 示例值:1652323331
  1286  func (builder *ListTaskReqBuilder) StartCreateTime(startCreateTime string) *ListTaskReqBuilder {
  1287  	builder.apiReq.QueryParams.Set("start_create_time", fmt.Sprint(startCreateTime))
  1288  	return builder
  1289  }
  1290  
  1291  // 范围查询任务时,查询的结束时间。不填时默认结束时间为最后一个任务的创建时间。
  1292  //
  1293  // 示例值:1652323335
  1294  func (builder *ListTaskReqBuilder) EndCreateTime(endCreateTime string) *ListTaskReqBuilder {
  1295  	builder.apiReq.QueryParams.Set("end_create_time", fmt.Sprint(endCreateTime))
  1296  	return builder
  1297  }
  1298  
  1299  // 可用于查询时过滤任务完成状态。true表示只返回已完成的任务,false表示只返回未完成的任务。不填时表示同时返回两种完成状态的任务。
  1300  //
  1301  // 示例值:false
  1302  func (builder *ListTaskReqBuilder) TaskCompleted(taskCompleted bool) *ListTaskReqBuilder {
  1303  	builder.apiReq.QueryParams.Set("task_completed", fmt.Sprint(taskCompleted))
  1304  	return builder
  1305  }
  1306  
  1307  // 此次调用中使用的用户ID的类型
  1308  //
  1309  // 示例值:
  1310  func (builder *ListTaskReqBuilder) UserIdType(userIdType string) *ListTaskReqBuilder {
  1311  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  1312  	return builder
  1313  }
  1314  
  1315  func (builder *ListTaskReqBuilder) Build() *ListTaskReq {
  1316  	req := &ListTaskReq{}
  1317  	req.apiReq = &larkcore.ApiReq{}
  1318  	req.Limit = builder.limit
  1319  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  1320  	return req
  1321  }
  1322  
  1323  type ListTaskReq struct {
  1324  	apiReq *larkcore.ApiReq
  1325  	Limit  int // 最多返回多少记录,只有在使用迭代器访问时,才有效
  1326  
  1327  }
  1328  
  1329  type ListTaskRespData struct {
  1330  	Items     []*Task `json:"items,omitempty"`      // 任务列表
  1331  	PageToken *string `json:"page_token,omitempty"` //
  1332  	HasMore   *bool   `json:"has_more,omitempty"`   //
  1333  }
  1334  
  1335  type ListTaskResp struct {
  1336  	*larkcore.ApiResp `json:"-"`
  1337  	larkcore.CodeError
  1338  	Data *ListTaskRespData `json:"data"` // 业务数据
  1339  }
  1340  
  1341  func (resp *ListTaskResp) Success() bool {
  1342  	return resp.Code == 0
  1343  }
  1344  
  1345  type PatchTaskReqBodyBuilder struct {
  1346  	task             *Task // 被更新的任务实体基础信息
  1347  	taskFlag         bool
  1348  	updateFields     []string // 指定需要更新的字段(目前可选更新的字段为:summary, description, due, extra),否则服务端将不知道更新哪些字段
  1349  	updateFieldsFlag bool
  1350  }
  1351  
  1352  func NewPatchTaskReqBodyBuilder() *PatchTaskReqBodyBuilder {
  1353  	builder := &PatchTaskReqBodyBuilder{}
  1354  	return builder
  1355  }
  1356  
  1357  // 被更新的任务实体基础信息
  1358  //
  1359  //示例值:
  1360  func (builder *PatchTaskReqBodyBuilder) Task(task *Task) *PatchTaskReqBodyBuilder {
  1361  	builder.task = task
  1362  	builder.taskFlag = true
  1363  	return builder
  1364  }
  1365  
  1366  // 指定需要更新的字段(目前可选更新的字段为:summary, description, due, extra),否则服务端将不知道更新哪些字段
  1367  //
  1368  //示例值:["summary"]
  1369  func (builder *PatchTaskReqBodyBuilder) UpdateFields(updateFields []string) *PatchTaskReqBodyBuilder {
  1370  	builder.updateFields = updateFields
  1371  	builder.updateFieldsFlag = true
  1372  	return builder
  1373  }
  1374  
  1375  func (builder *PatchTaskReqBodyBuilder) Build() *PatchTaskReqBody {
  1376  	req := &PatchTaskReqBody{}
  1377  	if builder.taskFlag {
  1378  		req.Task = builder.task
  1379  	}
  1380  	if builder.updateFieldsFlag {
  1381  		req.UpdateFields = builder.updateFields
  1382  	}
  1383  	return req
  1384  }
  1385  
  1386  type PatchTaskPathReqBodyBuilder struct {
  1387  	task             *Task // 被更新的任务实体基础信息
  1388  	taskFlag         bool
  1389  	updateFields     []string // 指定需要更新的字段(目前可选更新的字段为:summary, description, due, extra),否则服务端将不知道更新哪些字段
  1390  	updateFieldsFlag bool
  1391  }
  1392  
  1393  func NewPatchTaskPathReqBodyBuilder() *PatchTaskPathReqBodyBuilder {
  1394  	builder := &PatchTaskPathReqBodyBuilder{}
  1395  	return builder
  1396  }
  1397  
  1398  // 被更新的任务实体基础信息
  1399  //
  1400  // 示例值:
  1401  func (builder *PatchTaskPathReqBodyBuilder) Task(task *Task) *PatchTaskPathReqBodyBuilder {
  1402  	builder.task = task
  1403  	builder.taskFlag = true
  1404  	return builder
  1405  }
  1406  
  1407  // 指定需要更新的字段(目前可选更新的字段为:summary, description, due, extra),否则服务端将不知道更新哪些字段
  1408  //
  1409  // 示例值:["summary"]
  1410  func (builder *PatchTaskPathReqBodyBuilder) UpdateFields(updateFields []string) *PatchTaskPathReqBodyBuilder {
  1411  	builder.updateFields = updateFields
  1412  	builder.updateFieldsFlag = true
  1413  	return builder
  1414  }
  1415  
  1416  func (builder *PatchTaskPathReqBodyBuilder) Build() (*PatchTaskReqBody, error) {
  1417  	req := &PatchTaskReqBody{}
  1418  	if builder.taskFlag {
  1419  		req.Task = builder.task
  1420  	}
  1421  	if builder.updateFieldsFlag {
  1422  		req.UpdateFields = builder.updateFields
  1423  	}
  1424  	return req, nil
  1425  }
  1426  
  1427  type PatchTaskReqBuilder struct {
  1428  	apiReq *larkcore.ApiReq
  1429  	body   *PatchTaskReqBody
  1430  }
  1431  
  1432  func NewPatchTaskReqBuilder() *PatchTaskReqBuilder {
  1433  	builder := &PatchTaskReqBuilder{}
  1434  	builder.apiReq = &larkcore.ApiReq{
  1435  		PathParams:  larkcore.PathParams{},
  1436  		QueryParams: larkcore.QueryParams{},
  1437  	}
  1438  	return builder
  1439  }
  1440  
  1441  // 任务 ID
  1442  //
  1443  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
  1444  func (builder *PatchTaskReqBuilder) TaskId(taskId string) *PatchTaskReqBuilder {
  1445  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  1446  	return builder
  1447  }
  1448  
  1449  // 此次调用中使用的用户ID的类型
  1450  //
  1451  // 示例值:
  1452  func (builder *PatchTaskReqBuilder) UserIdType(userIdType string) *PatchTaskReqBuilder {
  1453  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  1454  	return builder
  1455  }
  1456  
  1457  // 该接口用于修改任务的标题、描述、时间、来源等相关信息
  1458  func (builder *PatchTaskReqBuilder) Body(body *PatchTaskReqBody) *PatchTaskReqBuilder {
  1459  	builder.body = body
  1460  	return builder
  1461  }
  1462  
  1463  func (builder *PatchTaskReqBuilder) Build() *PatchTaskReq {
  1464  	req := &PatchTaskReq{}
  1465  	req.apiReq = &larkcore.ApiReq{}
  1466  	req.apiReq.PathParams = builder.apiReq.PathParams
  1467  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  1468  	req.apiReq.Body = builder.body
  1469  	return req
  1470  }
  1471  
  1472  type PatchTaskReqBody struct {
  1473  	Task         *Task    `json:"task,omitempty"`          // 被更新的任务实体基础信息
  1474  	UpdateFields []string `json:"update_fields,omitempty"` // 指定需要更新的字段(目前可选更新的字段为:summary, description, due, extra),否则服务端将不知道更新哪些字段
  1475  }
  1476  
  1477  type PatchTaskReq struct {
  1478  	apiReq *larkcore.ApiReq
  1479  	Body   *PatchTaskReqBody `body:""`
  1480  }
  1481  
  1482  type PatchTaskRespData struct {
  1483  	Task *Task `json:"task,omitempty"` // 返回修改后的任务详情
  1484  }
  1485  
  1486  type PatchTaskResp struct {
  1487  	*larkcore.ApiResp `json:"-"`
  1488  	larkcore.CodeError
  1489  	Data *PatchTaskRespData `json:"data"` // 业务数据
  1490  }
  1491  
  1492  func (resp *PatchTaskResp) Success() bool {
  1493  	return resp.Code == 0
  1494  }
  1495  
  1496  type UncompleteTaskReqBuilder struct {
  1497  	apiReq *larkcore.ApiReq
  1498  }
  1499  
  1500  func NewUncompleteTaskReqBuilder() *UncompleteTaskReqBuilder {
  1501  	builder := &UncompleteTaskReqBuilder{}
  1502  	builder.apiReq = &larkcore.ApiReq{
  1503  		PathParams:  larkcore.PathParams{},
  1504  		QueryParams: larkcore.QueryParams{},
  1505  	}
  1506  	return builder
  1507  }
  1508  
  1509  // 任务 ID
  1510  //
  1511  // 示例值:bb54ab99-d360-434f-bcaa-a4cc4c05840e
  1512  func (builder *UncompleteTaskReqBuilder) TaskId(taskId string) *UncompleteTaskReqBuilder {
  1513  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  1514  	return builder
  1515  }
  1516  
  1517  func (builder *UncompleteTaskReqBuilder) Build() *UncompleteTaskReq {
  1518  	req := &UncompleteTaskReq{}
  1519  	req.apiReq = &larkcore.ApiReq{}
  1520  	req.apiReq.PathParams = builder.apiReq.PathParams
  1521  	return req
  1522  }
  1523  
  1524  type UncompleteTaskReq struct {
  1525  	apiReq *larkcore.ApiReq
  1526  }
  1527  
  1528  type UncompleteTaskResp struct {
  1529  	*larkcore.ApiResp `json:"-"`
  1530  	larkcore.CodeError
  1531  }
  1532  
  1533  func (resp *UncompleteTaskResp) Success() bool {
  1534  	return resp.Code == 0
  1535  }
  1536  
  1537  type CreateTaskCollaboratorReqBuilder struct {
  1538  	apiReq       *larkcore.ApiReq
  1539  	collaborator *Collaborator
  1540  }
  1541  
  1542  func NewCreateTaskCollaboratorReqBuilder() *CreateTaskCollaboratorReqBuilder {
  1543  	builder := &CreateTaskCollaboratorReqBuilder{}
  1544  	builder.apiReq = &larkcore.ApiReq{
  1545  		PathParams:  larkcore.PathParams{},
  1546  		QueryParams: larkcore.QueryParams{},
  1547  	}
  1548  	return builder
  1549  }
  1550  
  1551  // 任务 ID
  1552  //
  1553  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
  1554  func (builder *CreateTaskCollaboratorReqBuilder) TaskId(taskId string) *CreateTaskCollaboratorReqBuilder {
  1555  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  1556  	return builder
  1557  }
  1558  
  1559  // 此次调用中使用的用户ID的类型
  1560  //
  1561  // 示例值:
  1562  func (builder *CreateTaskCollaboratorReqBuilder) UserIdType(userIdType string) *CreateTaskCollaboratorReqBuilder {
  1563  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  1564  	return builder
  1565  }
  1566  
  1567  // 该接口用于新增任务执行者,一次性可以添加多个执行者。新增的执行者必须是表示是用户的ID。
  1568  func (builder *CreateTaskCollaboratorReqBuilder) Collaborator(collaborator *Collaborator) *CreateTaskCollaboratorReqBuilder {
  1569  	builder.collaborator = collaborator
  1570  	return builder
  1571  }
  1572  
  1573  func (builder *CreateTaskCollaboratorReqBuilder) Build() *CreateTaskCollaboratorReq {
  1574  	req := &CreateTaskCollaboratorReq{}
  1575  	req.apiReq = &larkcore.ApiReq{}
  1576  	req.apiReq.PathParams = builder.apiReq.PathParams
  1577  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  1578  	req.apiReq.Body = builder.collaborator
  1579  	return req
  1580  }
  1581  
  1582  type CreateTaskCollaboratorReq struct {
  1583  	apiReq       *larkcore.ApiReq
  1584  	Collaborator *Collaborator `body:""`
  1585  }
  1586  
  1587  type CreateTaskCollaboratorRespData struct {
  1588  	Collaborator *Collaborator `json:"collaborator,omitempty"` // 返回创建成功后的任务执行者列表
  1589  }
  1590  
  1591  type CreateTaskCollaboratorResp struct {
  1592  	*larkcore.ApiResp `json:"-"`
  1593  	larkcore.CodeError
  1594  	Data *CreateTaskCollaboratorRespData `json:"data"` // 业务数据
  1595  }
  1596  
  1597  func (resp *CreateTaskCollaboratorResp) Success() bool {
  1598  	return resp.Code == 0
  1599  }
  1600  
  1601  type DeleteTaskCollaboratorReqBuilder struct {
  1602  	apiReq *larkcore.ApiReq
  1603  }
  1604  
  1605  func NewDeleteTaskCollaboratorReqBuilder() *DeleteTaskCollaboratorReqBuilder {
  1606  	builder := &DeleteTaskCollaboratorReqBuilder{}
  1607  	builder.apiReq = &larkcore.ApiReq{
  1608  		PathParams:  larkcore.PathParams{},
  1609  		QueryParams: larkcore.QueryParams{},
  1610  	}
  1611  	return builder
  1612  }
  1613  
  1614  // 任务 ID
  1615  //
  1616  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
  1617  func (builder *DeleteTaskCollaboratorReqBuilder) TaskId(taskId string) *DeleteTaskCollaboratorReqBuilder {
  1618  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  1619  	return builder
  1620  }
  1621  
  1622  // 任务执行者 ID(Open ID或User ID,由user_id_type指定)
  1623  //
  1624  // 示例值:ou_99e1a581b36ecc4862cbfbce123f346a
  1625  func (builder *DeleteTaskCollaboratorReqBuilder) CollaboratorId(collaboratorId string) *DeleteTaskCollaboratorReqBuilder {
  1626  	builder.apiReq.PathParams.Set("collaborator_id", fmt.Sprint(collaboratorId))
  1627  	return builder
  1628  }
  1629  
  1630  // 此次调用中使用的用户ID的类型
  1631  //
  1632  // 示例值:
  1633  func (builder *DeleteTaskCollaboratorReqBuilder) UserIdType(userIdType string) *DeleteTaskCollaboratorReqBuilder {
  1634  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  1635  	return builder
  1636  }
  1637  
  1638  func (builder *DeleteTaskCollaboratorReqBuilder) Build() *DeleteTaskCollaboratorReq {
  1639  	req := &DeleteTaskCollaboratorReq{}
  1640  	req.apiReq = &larkcore.ApiReq{}
  1641  	req.apiReq.PathParams = builder.apiReq.PathParams
  1642  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  1643  	return req
  1644  }
  1645  
  1646  type DeleteTaskCollaboratorReq struct {
  1647  	apiReq *larkcore.ApiReq
  1648  }
  1649  
  1650  type DeleteTaskCollaboratorResp struct {
  1651  	*larkcore.ApiResp `json:"-"`
  1652  	larkcore.CodeError
  1653  }
  1654  
  1655  func (resp *DeleteTaskCollaboratorResp) Success() bool {
  1656  	return resp.Code == 0
  1657  }
  1658  
  1659  type ListTaskCollaboratorReqBuilder struct {
  1660  	apiReq *larkcore.ApiReq
  1661  	limit  int // 最大返回多少记录,当使用迭代器访问时才有效
  1662  }
  1663  
  1664  func NewListTaskCollaboratorReqBuilder() *ListTaskCollaboratorReqBuilder {
  1665  	builder := &ListTaskCollaboratorReqBuilder{}
  1666  	builder.apiReq = &larkcore.ApiReq{
  1667  		PathParams:  larkcore.PathParams{},
  1668  		QueryParams: larkcore.QueryParams{},
  1669  	}
  1670  	return builder
  1671  }
  1672  
  1673  // 最大返回多少记录,当使用迭代器访问时才有效
  1674  func (builder *ListTaskCollaboratorReqBuilder) Limit(limit int) *ListTaskCollaboratorReqBuilder {
  1675  	builder.limit = limit
  1676  	return builder
  1677  }
  1678  
  1679  // 任务 ID
  1680  //
  1681  // 示例值:0d38e26e-190a-49e9-93a2-35067763ed1f
  1682  func (builder *ListTaskCollaboratorReqBuilder) TaskId(taskId string) *ListTaskCollaboratorReqBuilder {
  1683  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  1684  	return builder
  1685  }
  1686  
  1687  // 分页大小
  1688  //
  1689  // 示例值:50
  1690  func (builder *ListTaskCollaboratorReqBuilder) PageSize(pageSize int) *ListTaskCollaboratorReqBuilder {
  1691  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  1692  	return builder
  1693  }
  1694  
  1695  // 分页标记,第一次请求不填,表示从头开始遍历;分页查询结果还有更多项时会同时返回新的 page_token,下次遍历可采用该 page_token 获取查询结果
  1696  //
  1697  // 示例值:「上次返回的page_token」
  1698  func (builder *ListTaskCollaboratorReqBuilder) PageToken(pageToken string) *ListTaskCollaboratorReqBuilder {
  1699  	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
  1700  	return builder
  1701  }
  1702  
  1703  // 此次调用中使用的用户ID的类型
  1704  //
  1705  // 示例值:
  1706  func (builder *ListTaskCollaboratorReqBuilder) UserIdType(userIdType string) *ListTaskCollaboratorReqBuilder {
  1707  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  1708  	return builder
  1709  }
  1710  
  1711  func (builder *ListTaskCollaboratorReqBuilder) Build() *ListTaskCollaboratorReq {
  1712  	req := &ListTaskCollaboratorReq{}
  1713  	req.apiReq = &larkcore.ApiReq{}
  1714  	req.Limit = builder.limit
  1715  	req.apiReq.PathParams = builder.apiReq.PathParams
  1716  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  1717  	return req
  1718  }
  1719  
  1720  type ListTaskCollaboratorReq struct {
  1721  	apiReq *larkcore.ApiReq
  1722  	Limit  int // 最多返回多少记录,只有在使用迭代器访问时,才有效
  1723  
  1724  }
  1725  
  1726  type ListTaskCollaboratorRespData struct {
  1727  	Items     []*Collaborator `json:"items,omitempty"`      // 返回的执行者ID列表
  1728  	PageToken *string         `json:"page_token,omitempty"` // 分页标记,分页查询结果还有更多项时会同时返回新的 page_token,下次遍历可采用该 page_token 获取查询结果
  1729  	HasMore   *bool           `json:"has_more,omitempty"`   // 是否还有更多数据
  1730  }
  1731  
  1732  type ListTaskCollaboratorResp struct {
  1733  	*larkcore.ApiResp `json:"-"`
  1734  	larkcore.CodeError
  1735  	Data *ListTaskCollaboratorRespData `json:"data"` // 业务数据
  1736  }
  1737  
  1738  func (resp *ListTaskCollaboratorResp) Success() bool {
  1739  	return resp.Code == 0
  1740  }
  1741  
  1742  type CreateTaskCommentReqBuilder struct {
  1743  	apiReq  *larkcore.ApiReq
  1744  	comment *Comment
  1745  }
  1746  
  1747  func NewCreateTaskCommentReqBuilder() *CreateTaskCommentReqBuilder {
  1748  	builder := &CreateTaskCommentReqBuilder{}
  1749  	builder.apiReq = &larkcore.ApiReq{
  1750  		PathParams:  larkcore.PathParams{},
  1751  		QueryParams: larkcore.QueryParams{},
  1752  	}
  1753  	return builder
  1754  }
  1755  
  1756  // 任务 ID
  1757  //
  1758  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
  1759  func (builder *CreateTaskCommentReqBuilder) TaskId(taskId string) *CreateTaskCommentReqBuilder {
  1760  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  1761  	return builder
  1762  }
  1763  
  1764  // 该接口用于创建和回复任务的评论。当parent_id字段为0时,为创建评论;当parent_id不为0时,为回复某条评论
  1765  func (builder *CreateTaskCommentReqBuilder) Comment(comment *Comment) *CreateTaskCommentReqBuilder {
  1766  	builder.comment = comment
  1767  	return builder
  1768  }
  1769  
  1770  func (builder *CreateTaskCommentReqBuilder) Build() *CreateTaskCommentReq {
  1771  	req := &CreateTaskCommentReq{}
  1772  	req.apiReq = &larkcore.ApiReq{}
  1773  	req.apiReq.PathParams = builder.apiReq.PathParams
  1774  	req.apiReq.Body = builder.comment
  1775  	return req
  1776  }
  1777  
  1778  type CreateTaskCommentReq struct {
  1779  	apiReq  *larkcore.ApiReq
  1780  	Comment *Comment `body:""`
  1781  }
  1782  
  1783  type CreateTaskCommentRespData struct {
  1784  	Comment *Comment `json:"comment,omitempty"` // 返回创建好的任务评论
  1785  }
  1786  
  1787  type CreateTaskCommentResp struct {
  1788  	*larkcore.ApiResp `json:"-"`
  1789  	larkcore.CodeError
  1790  	Data *CreateTaskCommentRespData `json:"data"` // 业务数据
  1791  }
  1792  
  1793  func (resp *CreateTaskCommentResp) Success() bool {
  1794  	return resp.Code == 0
  1795  }
  1796  
  1797  type DeleteTaskCommentReqBuilder struct {
  1798  	apiReq *larkcore.ApiReq
  1799  }
  1800  
  1801  func NewDeleteTaskCommentReqBuilder() *DeleteTaskCommentReqBuilder {
  1802  	builder := &DeleteTaskCommentReqBuilder{}
  1803  	builder.apiReq = &larkcore.ApiReq{
  1804  		PathParams:  larkcore.PathParams{},
  1805  		QueryParams: larkcore.QueryParams{},
  1806  	}
  1807  	return builder
  1808  }
  1809  
  1810  // 任务ID
  1811  //
  1812  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
  1813  func (builder *DeleteTaskCommentReqBuilder) TaskId(taskId string) *DeleteTaskCommentReqBuilder {
  1814  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  1815  	return builder
  1816  }
  1817  
  1818  // 评论ID
  1819  //
  1820  // 示例值:6937231762296684564
  1821  func (builder *DeleteTaskCommentReqBuilder) CommentId(commentId string) *DeleteTaskCommentReqBuilder {
  1822  	builder.apiReq.PathParams.Set("comment_id", fmt.Sprint(commentId))
  1823  	return builder
  1824  }
  1825  
  1826  func (builder *DeleteTaskCommentReqBuilder) Build() *DeleteTaskCommentReq {
  1827  	req := &DeleteTaskCommentReq{}
  1828  	req.apiReq = &larkcore.ApiReq{}
  1829  	req.apiReq.PathParams = builder.apiReq.PathParams
  1830  	return req
  1831  }
  1832  
  1833  type DeleteTaskCommentReq struct {
  1834  	apiReq *larkcore.ApiReq
  1835  }
  1836  
  1837  type DeleteTaskCommentResp struct {
  1838  	*larkcore.ApiResp `json:"-"`
  1839  	larkcore.CodeError
  1840  }
  1841  
  1842  func (resp *DeleteTaskCommentResp) Success() bool {
  1843  	return resp.Code == 0
  1844  }
  1845  
  1846  type GetTaskCommentReqBuilder struct {
  1847  	apiReq *larkcore.ApiReq
  1848  }
  1849  
  1850  func NewGetTaskCommentReqBuilder() *GetTaskCommentReqBuilder {
  1851  	builder := &GetTaskCommentReqBuilder{}
  1852  	builder.apiReq = &larkcore.ApiReq{
  1853  		PathParams:  larkcore.PathParams{},
  1854  		QueryParams: larkcore.QueryParams{},
  1855  	}
  1856  	return builder
  1857  }
  1858  
  1859  // 任务ID
  1860  //
  1861  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
  1862  func (builder *GetTaskCommentReqBuilder) TaskId(taskId string) *GetTaskCommentReqBuilder {
  1863  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  1864  	return builder
  1865  }
  1866  
  1867  // 评论ID
  1868  //
  1869  // 示例值:6937231762296684564
  1870  func (builder *GetTaskCommentReqBuilder) CommentId(commentId string) *GetTaskCommentReqBuilder {
  1871  	builder.apiReq.PathParams.Set("comment_id", fmt.Sprint(commentId))
  1872  	return builder
  1873  }
  1874  
  1875  func (builder *GetTaskCommentReqBuilder) Build() *GetTaskCommentReq {
  1876  	req := &GetTaskCommentReq{}
  1877  	req.apiReq = &larkcore.ApiReq{}
  1878  	req.apiReq.PathParams = builder.apiReq.PathParams
  1879  	return req
  1880  }
  1881  
  1882  type GetTaskCommentReq struct {
  1883  	apiReq *larkcore.ApiReq
  1884  }
  1885  
  1886  type GetTaskCommentRespData struct {
  1887  	Comment *Comment `json:"comment,omitempty"` // 返回新的任务评论详情
  1888  }
  1889  
  1890  type GetTaskCommentResp struct {
  1891  	*larkcore.ApiResp `json:"-"`
  1892  	larkcore.CodeError
  1893  	Data *GetTaskCommentRespData `json:"data"` // 业务数据
  1894  }
  1895  
  1896  func (resp *GetTaskCommentResp) Success() bool {
  1897  	return resp.Code == 0
  1898  }
  1899  
  1900  type ListTaskCommentReqBuilder struct {
  1901  	apiReq *larkcore.ApiReq
  1902  	limit  int // 最大返回多少记录,当使用迭代器访问时才有效
  1903  }
  1904  
  1905  func NewListTaskCommentReqBuilder() *ListTaskCommentReqBuilder {
  1906  	builder := &ListTaskCommentReqBuilder{}
  1907  	builder.apiReq = &larkcore.ApiReq{
  1908  		PathParams:  larkcore.PathParams{},
  1909  		QueryParams: larkcore.QueryParams{},
  1910  	}
  1911  	return builder
  1912  }
  1913  
  1914  // 最大返回多少记录,当使用迭代器访问时才有效
  1915  func (builder *ListTaskCommentReqBuilder) Limit(limit int) *ListTaskCommentReqBuilder {
  1916  	builder.limit = limit
  1917  	return builder
  1918  }
  1919  
  1920  // 任务id
  1921  //
  1922  // 示例值:"83912691-2e43-47fc-94a4-d512e03984fa"
  1923  func (builder *ListTaskCommentReqBuilder) TaskId(taskId string) *ListTaskCommentReqBuilder {
  1924  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  1925  	return builder
  1926  }
  1927  
  1928  // 分页大小
  1929  //
  1930  // 示例值:10
  1931  func (builder *ListTaskCommentReqBuilder) PageSize(pageSize int) *ListTaskCommentReqBuilder {
  1932  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  1933  	return builder
  1934  }
  1935  
  1936  // 分页标记,第一次请求不填,表示从头开始遍历;分页查询结果还有更多项时会同时返回新的 page_token,下次遍历可采用该 page_token获取查询结果
  1937  //
  1938  // 示例值:"MTYzMTg3ODUxNQ=="
  1939  func (builder *ListTaskCommentReqBuilder) PageToken(pageToken string) *ListTaskCommentReqBuilder {
  1940  	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
  1941  	return builder
  1942  }
  1943  
  1944  // 评论排序标记,可按照评论时间从小到大查询,或者评论时间从大到小查询,不填默认按照从小到大
  1945  //
  1946  // 示例值:0
  1947  func (builder *ListTaskCommentReqBuilder) ListDirection(listDirection int) *ListTaskCommentReqBuilder {
  1948  	builder.apiReq.QueryParams.Set("list_direction", fmt.Sprint(listDirection))
  1949  	return builder
  1950  }
  1951  
  1952  func (builder *ListTaskCommentReqBuilder) Build() *ListTaskCommentReq {
  1953  	req := &ListTaskCommentReq{}
  1954  	req.apiReq = &larkcore.ApiReq{}
  1955  	req.Limit = builder.limit
  1956  	req.apiReq.PathParams = builder.apiReq.PathParams
  1957  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  1958  	return req
  1959  }
  1960  
  1961  type ListTaskCommentReq struct {
  1962  	apiReq *larkcore.ApiReq
  1963  	Limit  int // 最多返回多少记录,只有在使用迭代器访问时,才有效
  1964  
  1965  }
  1966  
  1967  type ListTaskCommentRespData struct {
  1968  	Items     []*Comment `json:"items,omitempty"`      // 返回的评论列表
  1969  	PageToken *string    `json:"page_token,omitempty"` // 分页标记,分页查询结果还有更多项时会同时返回新的 page_token,下次遍历可采用该 page_token 获取查询结果
  1970  	HasMore   *bool      `json:"has_more,omitempty"`   // 是否还有更多数据
  1971  }
  1972  
  1973  type ListTaskCommentResp struct {
  1974  	*larkcore.ApiResp `json:"-"`
  1975  	larkcore.CodeError
  1976  	Data *ListTaskCommentRespData `json:"data"` // 业务数据
  1977  }
  1978  
  1979  func (resp *ListTaskCommentResp) Success() bool {
  1980  	return resp.Code == 0
  1981  }
  1982  
  1983  type UpdateTaskCommentReqBodyBuilder struct {
  1984  	content         string // 新的评论内容
  1985  	contentFlag     bool
  1986  	richContent     string // 新的富文本评论内容(优先使用)
  1987  	richContentFlag bool
  1988  }
  1989  
  1990  func NewUpdateTaskCommentReqBodyBuilder() *UpdateTaskCommentReqBodyBuilder {
  1991  	builder := &UpdateTaskCommentReqBodyBuilder{}
  1992  	return builder
  1993  }
  1994  
  1995  // 新的评论内容
  1996  //
  1997  //示例值:飞流直下三千尺,疑是银河落九天
  1998  func (builder *UpdateTaskCommentReqBodyBuilder) Content(content string) *UpdateTaskCommentReqBodyBuilder {
  1999  	builder.content = content
  2000  	builder.contentFlag = true
  2001  	return builder
  2002  }
  2003  
  2004  // 新的富文本评论内容(优先使用)
  2005  //
  2006  //示例值:飞流直下三千尺,疑是银河落九天<at id=7058204817822318612></at>
  2007  func (builder *UpdateTaskCommentReqBodyBuilder) RichContent(richContent string) *UpdateTaskCommentReqBodyBuilder {
  2008  	builder.richContent = richContent
  2009  	builder.richContentFlag = true
  2010  	return builder
  2011  }
  2012  
  2013  func (builder *UpdateTaskCommentReqBodyBuilder) Build() *UpdateTaskCommentReqBody {
  2014  	req := &UpdateTaskCommentReqBody{}
  2015  	if builder.contentFlag {
  2016  		req.Content = &builder.content
  2017  	}
  2018  	if builder.richContentFlag {
  2019  		req.RichContent = &builder.richContent
  2020  	}
  2021  	return req
  2022  }
  2023  
  2024  type UpdateTaskCommentPathReqBodyBuilder struct {
  2025  	content         string // 新的评论内容
  2026  	contentFlag     bool
  2027  	richContent     string // 新的富文本评论内容(优先使用)
  2028  	richContentFlag bool
  2029  }
  2030  
  2031  func NewUpdateTaskCommentPathReqBodyBuilder() *UpdateTaskCommentPathReqBodyBuilder {
  2032  	builder := &UpdateTaskCommentPathReqBodyBuilder{}
  2033  	return builder
  2034  }
  2035  
  2036  // 新的评论内容
  2037  //
  2038  // 示例值:飞流直下三千尺,疑是银河落九天
  2039  func (builder *UpdateTaskCommentPathReqBodyBuilder) Content(content string) *UpdateTaskCommentPathReqBodyBuilder {
  2040  	builder.content = content
  2041  	builder.contentFlag = true
  2042  	return builder
  2043  }
  2044  
  2045  // 新的富文本评论内容(优先使用)
  2046  //
  2047  // 示例值:飞流直下三千尺,疑是银河落九天<at id=7058204817822318612></at>
  2048  func (builder *UpdateTaskCommentPathReqBodyBuilder) RichContent(richContent string) *UpdateTaskCommentPathReqBodyBuilder {
  2049  	builder.richContent = richContent
  2050  	builder.richContentFlag = true
  2051  	return builder
  2052  }
  2053  
  2054  func (builder *UpdateTaskCommentPathReqBodyBuilder) Build() (*UpdateTaskCommentReqBody, error) {
  2055  	req := &UpdateTaskCommentReqBody{}
  2056  	if builder.contentFlag {
  2057  		req.Content = &builder.content
  2058  	}
  2059  	if builder.richContentFlag {
  2060  		req.RichContent = &builder.richContent
  2061  	}
  2062  	return req, nil
  2063  }
  2064  
  2065  type UpdateTaskCommentReqBuilder struct {
  2066  	apiReq *larkcore.ApiReq
  2067  	body   *UpdateTaskCommentReqBody
  2068  }
  2069  
  2070  func NewUpdateTaskCommentReqBuilder() *UpdateTaskCommentReqBuilder {
  2071  	builder := &UpdateTaskCommentReqBuilder{}
  2072  	builder.apiReq = &larkcore.ApiReq{
  2073  		PathParams:  larkcore.PathParams{},
  2074  		QueryParams: larkcore.QueryParams{},
  2075  	}
  2076  	return builder
  2077  }
  2078  
  2079  // 任务ID
  2080  //
  2081  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
  2082  func (builder *UpdateTaskCommentReqBuilder) TaskId(taskId string) *UpdateTaskCommentReqBuilder {
  2083  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  2084  	return builder
  2085  }
  2086  
  2087  // 评论 ID
  2088  //
  2089  // 示例值:6937231762296684564
  2090  func (builder *UpdateTaskCommentReqBuilder) CommentId(commentId string) *UpdateTaskCommentReqBuilder {
  2091  	builder.apiReq.PathParams.Set("comment_id", fmt.Sprint(commentId))
  2092  	return builder
  2093  }
  2094  
  2095  // 该接口用于更新评论内容
  2096  func (builder *UpdateTaskCommentReqBuilder) Body(body *UpdateTaskCommentReqBody) *UpdateTaskCommentReqBuilder {
  2097  	builder.body = body
  2098  	return builder
  2099  }
  2100  
  2101  func (builder *UpdateTaskCommentReqBuilder) Build() *UpdateTaskCommentReq {
  2102  	req := &UpdateTaskCommentReq{}
  2103  	req.apiReq = &larkcore.ApiReq{}
  2104  	req.apiReq.PathParams = builder.apiReq.PathParams
  2105  	req.apiReq.Body = builder.body
  2106  	return req
  2107  }
  2108  
  2109  type UpdateTaskCommentReqBody struct {
  2110  	Content     *string `json:"content,omitempty"`      // 新的评论内容
  2111  	RichContent *string `json:"rich_content,omitempty"` // 新的富文本评论内容(优先使用)
  2112  }
  2113  
  2114  type UpdateTaskCommentReq struct {
  2115  	apiReq *larkcore.ApiReq
  2116  	Body   *UpdateTaskCommentReqBody `body:""`
  2117  }
  2118  
  2119  type UpdateTaskCommentRespData struct {
  2120  	Comment *Comment `json:"comment,omitempty"` // 返回修改后的任务评论详情
  2121  }
  2122  
  2123  type UpdateTaskCommentResp struct {
  2124  	*larkcore.ApiResp `json:"-"`
  2125  	larkcore.CodeError
  2126  	Data *UpdateTaskCommentRespData `json:"data"` // 业务数据
  2127  }
  2128  
  2129  func (resp *UpdateTaskCommentResp) Success() bool {
  2130  	return resp.Code == 0
  2131  }
  2132  
  2133  type CreateTaskFollowerReqBuilder struct {
  2134  	apiReq   *larkcore.ApiReq
  2135  	follower *Follower
  2136  }
  2137  
  2138  func NewCreateTaskFollowerReqBuilder() *CreateTaskFollowerReqBuilder {
  2139  	builder := &CreateTaskFollowerReqBuilder{}
  2140  	builder.apiReq = &larkcore.ApiReq{
  2141  		PathParams:  larkcore.PathParams{},
  2142  		QueryParams: larkcore.QueryParams{},
  2143  	}
  2144  	return builder
  2145  }
  2146  
  2147  // 任务 ID
  2148  //
  2149  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
  2150  func (builder *CreateTaskFollowerReqBuilder) TaskId(taskId string) *CreateTaskFollowerReqBuilder {
  2151  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  2152  	return builder
  2153  }
  2154  
  2155  // 此次调用中使用的用户ID的类型
  2156  //
  2157  // 示例值:
  2158  func (builder *CreateTaskFollowerReqBuilder) UserIdType(userIdType string) *CreateTaskFollowerReqBuilder {
  2159  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  2160  	return builder
  2161  }
  2162  
  2163  // 该接口用于创建任务关注人。可以一次性添加多位关注人。关注人ID要使用表示用户的ID。
  2164  func (builder *CreateTaskFollowerReqBuilder) Follower(follower *Follower) *CreateTaskFollowerReqBuilder {
  2165  	builder.follower = follower
  2166  	return builder
  2167  }
  2168  
  2169  func (builder *CreateTaskFollowerReqBuilder) Build() *CreateTaskFollowerReq {
  2170  	req := &CreateTaskFollowerReq{}
  2171  	req.apiReq = &larkcore.ApiReq{}
  2172  	req.apiReq.PathParams = builder.apiReq.PathParams
  2173  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  2174  	req.apiReq.Body = builder.follower
  2175  	return req
  2176  }
  2177  
  2178  type CreateTaskFollowerReq struct {
  2179  	apiReq   *larkcore.ApiReq
  2180  	Follower *Follower `body:""`
  2181  }
  2182  
  2183  type CreateTaskFollowerRespData struct {
  2184  	Follower *Follower `json:"follower,omitempty"` // 创建后的任务关注者
  2185  }
  2186  
  2187  type CreateTaskFollowerResp struct {
  2188  	*larkcore.ApiResp `json:"-"`
  2189  	larkcore.CodeError
  2190  	Data *CreateTaskFollowerRespData `json:"data"` // 业务数据
  2191  }
  2192  
  2193  func (resp *CreateTaskFollowerResp) Success() bool {
  2194  	return resp.Code == 0
  2195  }
  2196  
  2197  type DeleteTaskFollowerReqBuilder struct {
  2198  	apiReq *larkcore.ApiReq
  2199  }
  2200  
  2201  func NewDeleteTaskFollowerReqBuilder() *DeleteTaskFollowerReqBuilder {
  2202  	builder := &DeleteTaskFollowerReqBuilder{}
  2203  	builder.apiReq = &larkcore.ApiReq{
  2204  		PathParams:  larkcore.PathParams{},
  2205  		QueryParams: larkcore.QueryParams{},
  2206  	}
  2207  	return builder
  2208  }
  2209  
  2210  // 任务 ID
  2211  //
  2212  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
  2213  func (builder *DeleteTaskFollowerReqBuilder) TaskId(taskId string) *DeleteTaskFollowerReqBuilder {
  2214  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  2215  	return builder
  2216  }
  2217  
  2218  // 任务关注人 ID(Open ID或User ID,由user_id_type指定)
  2219  //
  2220  // 示例值:ou_87e1a581b36ecc4862cbfbce473f346a
  2221  func (builder *DeleteTaskFollowerReqBuilder) FollowerId(followerId string) *DeleteTaskFollowerReqBuilder {
  2222  	builder.apiReq.PathParams.Set("follower_id", fmt.Sprint(followerId))
  2223  	return builder
  2224  }
  2225  
  2226  // 此次调用中使用的用户ID的类型
  2227  //
  2228  // 示例值:
  2229  func (builder *DeleteTaskFollowerReqBuilder) UserIdType(userIdType string) *DeleteTaskFollowerReqBuilder {
  2230  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  2231  	return builder
  2232  }
  2233  
  2234  func (builder *DeleteTaskFollowerReqBuilder) Build() *DeleteTaskFollowerReq {
  2235  	req := &DeleteTaskFollowerReq{}
  2236  	req.apiReq = &larkcore.ApiReq{}
  2237  	req.apiReq.PathParams = builder.apiReq.PathParams
  2238  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  2239  	return req
  2240  }
  2241  
  2242  type DeleteTaskFollowerReq struct {
  2243  	apiReq *larkcore.ApiReq
  2244  }
  2245  
  2246  type DeleteTaskFollowerResp struct {
  2247  	*larkcore.ApiResp `json:"-"`
  2248  	larkcore.CodeError
  2249  }
  2250  
  2251  func (resp *DeleteTaskFollowerResp) Success() bool {
  2252  	return resp.Code == 0
  2253  }
  2254  
  2255  type ListTaskFollowerReqBuilder struct {
  2256  	apiReq *larkcore.ApiReq
  2257  	limit  int // 最大返回多少记录,当使用迭代器访问时才有效
  2258  }
  2259  
  2260  func NewListTaskFollowerReqBuilder() *ListTaskFollowerReqBuilder {
  2261  	builder := &ListTaskFollowerReqBuilder{}
  2262  	builder.apiReq = &larkcore.ApiReq{
  2263  		PathParams:  larkcore.PathParams{},
  2264  		QueryParams: larkcore.QueryParams{},
  2265  	}
  2266  	return builder
  2267  }
  2268  
  2269  // 最大返回多少记录,当使用迭代器访问时才有效
  2270  func (builder *ListTaskFollowerReqBuilder) Limit(limit int) *ListTaskFollowerReqBuilder {
  2271  	builder.limit = limit
  2272  	return builder
  2273  }
  2274  
  2275  // 任务 ID
  2276  //
  2277  // 示例值:0d38e26e-190a-49e9-93a2-35067763ed1f
  2278  func (builder *ListTaskFollowerReqBuilder) TaskId(taskId string) *ListTaskFollowerReqBuilder {
  2279  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  2280  	return builder
  2281  }
  2282  
  2283  // 分页大小
  2284  //
  2285  // 示例值:10
  2286  func (builder *ListTaskFollowerReqBuilder) PageSize(pageSize int) *ListTaskFollowerReqBuilder {
  2287  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  2288  	return builder
  2289  }
  2290  
  2291  // 分页标记,第一次请求不填,表示从头开始遍历;分页查询结果还有更多项时会同时返回新的 page_token,下次遍历可采用该 page_token 获取查询结果
  2292  //
  2293  // 示例值:「上次返回的page_token」
  2294  func (builder *ListTaskFollowerReqBuilder) PageToken(pageToken string) *ListTaskFollowerReqBuilder {
  2295  	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
  2296  	return builder
  2297  }
  2298  
  2299  // 此次调用中使用的用户ID的类型
  2300  //
  2301  // 示例值:
  2302  func (builder *ListTaskFollowerReqBuilder) UserIdType(userIdType string) *ListTaskFollowerReqBuilder {
  2303  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  2304  	return builder
  2305  }
  2306  
  2307  func (builder *ListTaskFollowerReqBuilder) Build() *ListTaskFollowerReq {
  2308  	req := &ListTaskFollowerReq{}
  2309  	req.apiReq = &larkcore.ApiReq{}
  2310  	req.Limit = builder.limit
  2311  	req.apiReq.PathParams = builder.apiReq.PathParams
  2312  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  2313  	return req
  2314  }
  2315  
  2316  type ListTaskFollowerReq struct {
  2317  	apiReq *larkcore.ApiReq
  2318  	Limit  int // 最多返回多少记录,只有在使用迭代器访问时,才有效
  2319  
  2320  }
  2321  
  2322  type ListTaskFollowerRespData struct {
  2323  	Items     []*Follower `json:"items,omitempty"`      // 返回的关注人ID列表
  2324  	PageToken *string     `json:"page_token,omitempty"` // 分页标记,分页查询结果还有更多项时会同时返回新的 page_token,下次遍历可采用该 page_token 获取查询结果
  2325  	HasMore   *bool       `json:"has_more,omitempty"`   // 是否还有更多数据
  2326  }
  2327  
  2328  type ListTaskFollowerResp struct {
  2329  	*larkcore.ApiResp `json:"-"`
  2330  	larkcore.CodeError
  2331  	Data *ListTaskFollowerRespData `json:"data"` // 业务数据
  2332  }
  2333  
  2334  func (resp *ListTaskFollowerResp) Success() bool {
  2335  	return resp.Code == 0
  2336  }
  2337  
  2338  type CreateTaskReminderReqBuilder struct {
  2339  	apiReq   *larkcore.ApiReq
  2340  	reminder *Reminder
  2341  }
  2342  
  2343  func NewCreateTaskReminderReqBuilder() *CreateTaskReminderReqBuilder {
  2344  	builder := &CreateTaskReminderReqBuilder{}
  2345  	builder.apiReq = &larkcore.ApiReq{
  2346  		PathParams:  larkcore.PathParams{},
  2347  		QueryParams: larkcore.QueryParams{},
  2348  	}
  2349  	return builder
  2350  }
  2351  
  2352  // 任务 ID
  2353  //
  2354  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
  2355  func (builder *CreateTaskReminderReqBuilder) TaskId(taskId string) *CreateTaskReminderReqBuilder {
  2356  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  2357  	return builder
  2358  }
  2359  
  2360  // 该接口用于创建任务的提醒时间。提醒时间在截止时间基础上做偏移,但是偏移后的结果不能早于当前时间。
  2361  func (builder *CreateTaskReminderReqBuilder) Reminder(reminder *Reminder) *CreateTaskReminderReqBuilder {
  2362  	builder.reminder = reminder
  2363  	return builder
  2364  }
  2365  
  2366  func (builder *CreateTaskReminderReqBuilder) Build() *CreateTaskReminderReq {
  2367  	req := &CreateTaskReminderReq{}
  2368  	req.apiReq = &larkcore.ApiReq{}
  2369  	req.apiReq.PathParams = builder.apiReq.PathParams
  2370  	req.apiReq.Body = builder.reminder
  2371  	return req
  2372  }
  2373  
  2374  type CreateTaskReminderReq struct {
  2375  	apiReq   *larkcore.ApiReq
  2376  	Reminder *Reminder `body:""`
  2377  }
  2378  
  2379  type CreateTaskReminderRespData struct {
  2380  	Reminder *Reminder `json:"reminder,omitempty"` // 返回创建成功的提醒时间
  2381  }
  2382  
  2383  type CreateTaskReminderResp struct {
  2384  	*larkcore.ApiResp `json:"-"`
  2385  	larkcore.CodeError
  2386  	Data *CreateTaskReminderRespData `json:"data"` // 业务数据
  2387  }
  2388  
  2389  func (resp *CreateTaskReminderResp) Success() bool {
  2390  	return resp.Code == 0
  2391  }
  2392  
  2393  type DeleteTaskReminderReqBuilder struct {
  2394  	apiReq *larkcore.ApiReq
  2395  }
  2396  
  2397  func NewDeleteTaskReminderReqBuilder() *DeleteTaskReminderReqBuilder {
  2398  	builder := &DeleteTaskReminderReqBuilder{}
  2399  	builder.apiReq = &larkcore.ApiReq{
  2400  		PathParams:  larkcore.PathParams{},
  2401  		QueryParams: larkcore.QueryParams{},
  2402  	}
  2403  	return builder
  2404  }
  2405  
  2406  // 任务 ID
  2407  //
  2408  // 示例值:83912691-2e43-47fc-94a4-d512e03984fa
  2409  func (builder *DeleteTaskReminderReqBuilder) TaskId(taskId string) *DeleteTaskReminderReqBuilder {
  2410  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  2411  	return builder
  2412  }
  2413  
  2414  // 任务提醒时间设置的 ID(即 reminder.id)
  2415  //
  2416  // 示例值:1
  2417  func (builder *DeleteTaskReminderReqBuilder) ReminderId(reminderId string) *DeleteTaskReminderReqBuilder {
  2418  	builder.apiReq.PathParams.Set("reminder_id", fmt.Sprint(reminderId))
  2419  	return builder
  2420  }
  2421  
  2422  func (builder *DeleteTaskReminderReqBuilder) Build() *DeleteTaskReminderReq {
  2423  	req := &DeleteTaskReminderReq{}
  2424  	req.apiReq = &larkcore.ApiReq{}
  2425  	req.apiReq.PathParams = builder.apiReq.PathParams
  2426  	return req
  2427  }
  2428  
  2429  type DeleteTaskReminderReq struct {
  2430  	apiReq *larkcore.ApiReq
  2431  }
  2432  
  2433  type DeleteTaskReminderResp struct {
  2434  	*larkcore.ApiResp `json:"-"`
  2435  	larkcore.CodeError
  2436  }
  2437  
  2438  func (resp *DeleteTaskReminderResp) Success() bool {
  2439  	return resp.Code == 0
  2440  }
  2441  
  2442  type ListTaskReminderReqBuilder struct {
  2443  	apiReq *larkcore.ApiReq
  2444  	limit  int // 最大返回多少记录,当使用迭代器访问时才有效
  2445  }
  2446  
  2447  func NewListTaskReminderReqBuilder() *ListTaskReminderReqBuilder {
  2448  	builder := &ListTaskReminderReqBuilder{}
  2449  	builder.apiReq = &larkcore.ApiReq{
  2450  		PathParams:  larkcore.PathParams{},
  2451  		QueryParams: larkcore.QueryParams{},
  2452  	}
  2453  	return builder
  2454  }
  2455  
  2456  // 最大返回多少记录,当使用迭代器访问时才有效
  2457  func (builder *ListTaskReminderReqBuilder) Limit(limit int) *ListTaskReminderReqBuilder {
  2458  	builder.limit = limit
  2459  	return builder
  2460  }
  2461  
  2462  // 任务 ID
  2463  //
  2464  // 示例值:0d38e26e-190a-49e9-93a2-35067763ed1f
  2465  func (builder *ListTaskReminderReqBuilder) TaskId(taskId string) *ListTaskReminderReqBuilder {
  2466  	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
  2467  	return builder
  2468  }
  2469  
  2470  // 分页大小
  2471  //
  2472  // 示例值:50
  2473  func (builder *ListTaskReminderReqBuilder) PageSize(pageSize int) *ListTaskReminderReqBuilder {
  2474  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  2475  	return builder
  2476  }
  2477  
  2478  // 分页标记,第一次请求不填,表示从头开始遍历;分页查询结果还有更多项时会同时返回新的 page_token,下次遍历可采用该 page_token 获取查询结果
  2479  //
  2480  // 示例值:「填写上次返回的page_token」
  2481  func (builder *ListTaskReminderReqBuilder) PageToken(pageToken string) *ListTaskReminderReqBuilder {
  2482  	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
  2483  	return builder
  2484  }
  2485  
  2486  func (builder *ListTaskReminderReqBuilder) Build() *ListTaskReminderReq {
  2487  	req := &ListTaskReminderReq{}
  2488  	req.apiReq = &larkcore.ApiReq{}
  2489  	req.Limit = builder.limit
  2490  	req.apiReq.PathParams = builder.apiReq.PathParams
  2491  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  2492  	return req
  2493  }
  2494  
  2495  type ListTaskReminderReq struct {
  2496  	apiReq *larkcore.ApiReq
  2497  	Limit  int // 最多返回多少记录,只有在使用迭代器访问时,才有效
  2498  
  2499  }
  2500  
  2501  type ListTaskReminderRespData struct {
  2502  	Items     []*Reminder `json:"items,omitempty"`      // 返回提醒时间设置列表
  2503  	PageToken *string     `json:"page_token,omitempty"` // 分页标记,分页查询结果还有更多项时会同时返回新的 page_token,下次遍历可采用该 page_token 获取查询结果
  2504  	HasMore   *bool       `json:"has_more,omitempty"`   // 是否还有更多数据
  2505  }
  2506  
  2507  type ListTaskReminderResp struct {
  2508  	*larkcore.ApiResp `json:"-"`
  2509  	larkcore.CodeError
  2510  	Data *ListTaskReminderRespData `json:"data"` // 业务数据
  2511  }
  2512  
  2513  func (resp *ListTaskReminderResp) Success() bool {
  2514  	return resp.Code == 0
  2515  }
  2516  
  2517  type P2TaskUpdateTenantV1Data struct {
  2518  	UserIdList *UserIdList `json:"user_id_list,omitempty"` // 用户 ID 列表
  2519  	TaskId     *string     `json:"task_id,omitempty"`      // 任务的id
  2520  	ObjectType *string     `json:"object_type,omitempty"`  // 变更的数据类型,可选值:;"task","collaborator","follower"
  2521  	EventType  *string     `json:"event_type,omitempty"`   // 事件类型,可选值:;"create","delete","update"
  2522  }
  2523  
  2524  type P2TaskUpdateTenantV1 struct {
  2525  	*larkevent.EventV2Base                           // 事件基础数据
  2526  	*larkevent.EventReq                              // 请求原生数据
  2527  	Event                  *P2TaskUpdateTenantV1Data `json:"event"` // 事件内容
  2528  }
  2529  
  2530  func (m *P2TaskUpdateTenantV1) RawReq(req *larkevent.EventReq) {
  2531  	m.EventReq = req
  2532  }
  2533  
  2534  type P2TaskUpdatedV1Data struct {
  2535  	TaskId  *string `json:"task_id,omitempty"`  // 任务ID
  2536  	ObjType *int    `json:"obj_type,omitempty"` // 通知类型(1:任务详情发生变化,2:任务协作者发生变化,3:任务关注者发生变化,4:任务提醒时间发生变化,5:任务完成,6:任务取消完成,7:任务删除)
  2537  }
  2538  
  2539  type P2TaskUpdatedV1 struct {
  2540  	*larkevent.EventV2Base                      // 事件基础数据
  2541  	*larkevent.EventReq                         // 请求原生数据
  2542  	Event                  *P2TaskUpdatedV1Data `json:"event"` // 事件内容
  2543  }
  2544  
  2545  func (m *P2TaskUpdatedV1) RawReq(req *larkevent.EventReq) {
  2546  	m.EventReq = req
  2547  }
  2548  
  2549  type P2TaskCommentUpdatedV1Data struct {
  2550  	TaskId    *string `json:"task_id,omitempty"`    // 任务ID
  2551  	CommentId *string `json:"comment_id,omitempty"` // 任务评论ID
  2552  	ParentId  *string `json:"parent_id,omitempty"`  // 任务评论父ID
  2553  	ObjType   *int    `json:"obj_type,omitempty"`   // 通知类型(1:创建评论,2:回复评论,3:更新评论,4:删除评论)
  2554  }
  2555  
  2556  type P2TaskCommentUpdatedV1 struct {
  2557  	*larkevent.EventV2Base                             // 事件基础数据
  2558  	*larkevent.EventReq                                // 请求原生数据
  2559  	Event                  *P2TaskCommentUpdatedV1Data `json:"event"` // 事件内容
  2560  }
  2561  
  2562  func (m *P2TaskCommentUpdatedV1) RawReq(req *larkevent.EventReq) {
  2563  	m.EventReq = req
  2564  }
  2565  
  2566  type ListTaskIterator struct {
  2567  	nextPageToken *string
  2568  	items         []*Task
  2569  	index         int
  2570  	limit         int
  2571  	ctx           context.Context
  2572  	req           *ListTaskReq
  2573  	listFunc      func(ctx context.Context, req *ListTaskReq, options ...larkcore.RequestOptionFunc) (*ListTaskResp, error)
  2574  	options       []larkcore.RequestOptionFunc
  2575  	curlNum       int
  2576  }
  2577  
  2578  func (iterator *ListTaskIterator) Next() (bool, *Task, error) {
  2579  	// 达到最大量,则返回
  2580  	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
  2581  		return false, nil, nil
  2582  	}
  2583  
  2584  	// 为0则拉取数据
  2585  	if iterator.index == 0 || iterator.index >= len(iterator.items) {
  2586  		if iterator.index != 0 && iterator.nextPageToken == nil {
  2587  			return false, nil, nil
  2588  		}
  2589  		if iterator.nextPageToken != nil {
  2590  			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
  2591  		}
  2592  		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
  2593  		if err != nil {
  2594  			return false, nil, err
  2595  		}
  2596  
  2597  		if resp.Code != 0 {
  2598  			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
  2599  		}
  2600  
  2601  		if len(resp.Data.Items) == 0 {
  2602  			return false, nil, nil
  2603  		}
  2604  
  2605  		iterator.nextPageToken = resp.Data.PageToken
  2606  		iterator.items = resp.Data.Items
  2607  		iterator.index = 0
  2608  	}
  2609  
  2610  	block := iterator.items[iterator.index]
  2611  	iterator.index++
  2612  	iterator.curlNum++
  2613  	return true, block, nil
  2614  }
  2615  
  2616  func (iterator *ListTaskIterator) NextPageToken() *string {
  2617  	return iterator.nextPageToken
  2618  }
  2619  
  2620  type ListTaskCollaboratorIterator struct {
  2621  	nextPageToken *string
  2622  	items         []*Collaborator
  2623  	index         int
  2624  	limit         int
  2625  	ctx           context.Context
  2626  	req           *ListTaskCollaboratorReq
  2627  	listFunc      func(ctx context.Context, req *ListTaskCollaboratorReq, options ...larkcore.RequestOptionFunc) (*ListTaskCollaboratorResp, error)
  2628  	options       []larkcore.RequestOptionFunc
  2629  	curlNum       int
  2630  }
  2631  
  2632  func (iterator *ListTaskCollaboratorIterator) Next() (bool, *Collaborator, error) {
  2633  	// 达到最大量,则返回
  2634  	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
  2635  		return false, nil, nil
  2636  	}
  2637  
  2638  	// 为0则拉取数据
  2639  	if iterator.index == 0 || iterator.index >= len(iterator.items) {
  2640  		if iterator.index != 0 && iterator.nextPageToken == nil {
  2641  			return false, nil, nil
  2642  		}
  2643  		if iterator.nextPageToken != nil {
  2644  			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
  2645  		}
  2646  		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
  2647  		if err != nil {
  2648  			return false, nil, err
  2649  		}
  2650  
  2651  		if resp.Code != 0 {
  2652  			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
  2653  		}
  2654  
  2655  		if len(resp.Data.Items) == 0 {
  2656  			return false, nil, nil
  2657  		}
  2658  
  2659  		iterator.nextPageToken = resp.Data.PageToken
  2660  		iterator.items = resp.Data.Items
  2661  		iterator.index = 0
  2662  	}
  2663  
  2664  	block := iterator.items[iterator.index]
  2665  	iterator.index++
  2666  	iterator.curlNum++
  2667  	return true, block, nil
  2668  }
  2669  
  2670  func (iterator *ListTaskCollaboratorIterator) NextPageToken() *string {
  2671  	return iterator.nextPageToken
  2672  }
  2673  
  2674  type ListTaskCommentIterator struct {
  2675  	nextPageToken *string
  2676  	items         []*Comment
  2677  	index         int
  2678  	limit         int
  2679  	ctx           context.Context
  2680  	req           *ListTaskCommentReq
  2681  	listFunc      func(ctx context.Context, req *ListTaskCommentReq, options ...larkcore.RequestOptionFunc) (*ListTaskCommentResp, error)
  2682  	options       []larkcore.RequestOptionFunc
  2683  	curlNum       int
  2684  }
  2685  
  2686  func (iterator *ListTaskCommentIterator) Next() (bool, *Comment, error) {
  2687  	// 达到最大量,则返回
  2688  	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
  2689  		return false, nil, nil
  2690  	}
  2691  
  2692  	// 为0则拉取数据
  2693  	if iterator.index == 0 || iterator.index >= len(iterator.items) {
  2694  		if iterator.index != 0 && iterator.nextPageToken == nil {
  2695  			return false, nil, nil
  2696  		}
  2697  		if iterator.nextPageToken != nil {
  2698  			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
  2699  		}
  2700  		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
  2701  		if err != nil {
  2702  			return false, nil, err
  2703  		}
  2704  
  2705  		if resp.Code != 0 {
  2706  			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
  2707  		}
  2708  
  2709  		if len(resp.Data.Items) == 0 {
  2710  			return false, nil, nil
  2711  		}
  2712  
  2713  		iterator.nextPageToken = resp.Data.PageToken
  2714  		iterator.items = resp.Data.Items
  2715  		iterator.index = 0
  2716  	}
  2717  
  2718  	block := iterator.items[iterator.index]
  2719  	iterator.index++
  2720  	iterator.curlNum++
  2721  	return true, block, nil
  2722  }
  2723  
  2724  func (iterator *ListTaskCommentIterator) NextPageToken() *string {
  2725  	return iterator.nextPageToken
  2726  }
  2727  
  2728  type ListTaskFollowerIterator struct {
  2729  	nextPageToken *string
  2730  	items         []*Follower
  2731  	index         int
  2732  	limit         int
  2733  	ctx           context.Context
  2734  	req           *ListTaskFollowerReq
  2735  	listFunc      func(ctx context.Context, req *ListTaskFollowerReq, options ...larkcore.RequestOptionFunc) (*ListTaskFollowerResp, error)
  2736  	options       []larkcore.RequestOptionFunc
  2737  	curlNum       int
  2738  }
  2739  
  2740  func (iterator *ListTaskFollowerIterator) Next() (bool, *Follower, error) {
  2741  	// 达到最大量,则返回
  2742  	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
  2743  		return false, nil, nil
  2744  	}
  2745  
  2746  	// 为0则拉取数据
  2747  	if iterator.index == 0 || iterator.index >= len(iterator.items) {
  2748  		if iterator.index != 0 && iterator.nextPageToken == nil {
  2749  			return false, nil, nil
  2750  		}
  2751  		if iterator.nextPageToken != nil {
  2752  			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
  2753  		}
  2754  		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
  2755  		if err != nil {
  2756  			return false, nil, err
  2757  		}
  2758  
  2759  		if resp.Code != 0 {
  2760  			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
  2761  		}
  2762  
  2763  		if len(resp.Data.Items) == 0 {
  2764  			return false, nil, nil
  2765  		}
  2766  
  2767  		iterator.nextPageToken = resp.Data.PageToken
  2768  		iterator.items = resp.Data.Items
  2769  		iterator.index = 0
  2770  	}
  2771  
  2772  	block := iterator.items[iterator.index]
  2773  	iterator.index++
  2774  	iterator.curlNum++
  2775  	return true, block, nil
  2776  }
  2777  
  2778  func (iterator *ListTaskFollowerIterator) NextPageToken() *string {
  2779  	return iterator.nextPageToken
  2780  }
  2781  
  2782  type ListTaskReminderIterator struct {
  2783  	nextPageToken *string
  2784  	items         []*Reminder
  2785  	index         int
  2786  	limit         int
  2787  	ctx           context.Context
  2788  	req           *ListTaskReminderReq
  2789  	listFunc      func(ctx context.Context, req *ListTaskReminderReq, options ...larkcore.RequestOptionFunc) (*ListTaskReminderResp, error)
  2790  	options       []larkcore.RequestOptionFunc
  2791  	curlNum       int
  2792  }
  2793  
  2794  func (iterator *ListTaskReminderIterator) Next() (bool, *Reminder, error) {
  2795  	// 达到最大量,则返回
  2796  	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
  2797  		return false, nil, nil
  2798  	}
  2799  
  2800  	// 为0则拉取数据
  2801  	if iterator.index == 0 || iterator.index >= len(iterator.items) {
  2802  		if iterator.index != 0 && iterator.nextPageToken == nil {
  2803  			return false, nil, nil
  2804  		}
  2805  		if iterator.nextPageToken != nil {
  2806  			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
  2807  		}
  2808  		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
  2809  		if err != nil {
  2810  			return false, nil, err
  2811  		}
  2812  
  2813  		if resp.Code != 0 {
  2814  			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
  2815  		}
  2816  
  2817  		if len(resp.Data.Items) == 0 {
  2818  			return false, nil, nil
  2819  		}
  2820  
  2821  		iterator.nextPageToken = resp.Data.PageToken
  2822  		iterator.items = resp.Data.Items
  2823  		iterator.index = 0
  2824  	}
  2825  
  2826  	block := iterator.items[iterator.index]
  2827  	iterator.index++
  2828  	iterator.curlNum++
  2829  	return true, block, nil
  2830  }
  2831  
  2832  func (iterator *ListTaskReminderIterator) NextPageToken() *string {
  2833  	return iterator.nextPageToken
  2834  }