gitee.com/larksuite/oapi-sdk-go/v3@v3.0.3/service/task/v1/api.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  	"context"
    18  	"net/http"
    19  
    20  	"gitee.com/larksuite/oapi-sdk-go/v3/core"
    21  )
    22  
    23  func NewService(config *larkcore.Config) *TaskService {
    24  	t := &TaskService{config: config}
    25  	t.Task = &task{service: t}
    26  	t.TaskCollaborator = &taskCollaborator{service: t}
    27  	t.TaskComment = &taskComment{service: t}
    28  	t.TaskFollower = &taskFollower{service: t}
    29  	t.TaskReminder = &taskReminder{service: t}
    30  	return t
    31  }
    32  
    33  type TaskService struct {
    34  	config           *larkcore.Config
    35  	Task             *task             // 任务
    36  	TaskCollaborator *taskCollaborator // 执行者
    37  	TaskComment      *taskComment      // 评论
    38  	TaskFollower     *taskFollower     // 关注人
    39  	TaskReminder     *taskReminder     // 提醒
    40  }
    41  
    42  type task struct {
    43  	service *TaskService
    44  }
    45  type taskCollaborator struct {
    46  	service *TaskService
    47  }
    48  type taskComment struct {
    49  	service *TaskService
    50  }
    51  type taskFollower struct {
    52  	service *TaskService
    53  }
    54  type taskReminder struct {
    55  	service *TaskService
    56  }
    57  
    58  // 批量删除执行者
    59  //
    60  // - 该接口用于批量删除执行者
    61  //
    62  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task/batch_delete_collaborator
    63  //
    64  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/batchDeleteCollaborator_task.go
    65  func (t *task) BatchDeleteCollaborator(ctx context.Context, req *BatchDeleteCollaboratorTaskReq, options ...larkcore.RequestOptionFunc) (*BatchDeleteCollaboratorTaskResp, error) {
    66  	// 发起请求
    67  	apiReq := req.apiReq
    68  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/batch_delete_collaborator"
    69  	apiReq.HttpMethod = http.MethodPost
    70  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
    71  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
    72  	if err != nil {
    73  		return nil, err
    74  	}
    75  	// 反序列响应结果
    76  	resp := &BatchDeleteCollaboratorTaskResp{ApiResp: apiResp}
    77  	err = apiResp.JSONUnmarshalBody(resp)
    78  	if err != nil {
    79  		return nil, err
    80  	}
    81  	return resp, err
    82  }
    83  
    84  // 批量删除关注人
    85  //
    86  // - 该接口用于批量删除关注人
    87  //
    88  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task/batch_delete_follower
    89  //
    90  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/batchDeleteFollower_task.go
    91  func (t *task) BatchDeleteFollower(ctx context.Context, req *BatchDeleteFollowerTaskReq, options ...larkcore.RequestOptionFunc) (*BatchDeleteFollowerTaskResp, error) {
    92  	// 发起请求
    93  	apiReq := req.apiReq
    94  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/batch_delete_follower"
    95  	apiReq.HttpMethod = http.MethodPost
    96  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
    97  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
    98  	if err != nil {
    99  		return nil, err
   100  	}
   101  	// 反序列响应结果
   102  	resp := &BatchDeleteFollowerTaskResp{ApiResp: apiResp}
   103  	err = apiResp.JSONUnmarshalBody(resp)
   104  	if err != nil {
   105  		return nil, err
   106  	}
   107  	return resp, err
   108  }
   109  
   110  // 完成任务
   111  //
   112  // - 该接口用于将任务状态修改为”已完成“
   113  //
   114  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task/complete
   115  //
   116  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/complete_task.go
   117  func (t *task) Complete(ctx context.Context, req *CompleteTaskReq, options ...larkcore.RequestOptionFunc) (*CompleteTaskResp, error) {
   118  	// 发起请求
   119  	apiReq := req.apiReq
   120  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/complete"
   121  	apiReq.HttpMethod = http.MethodPost
   122  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   123  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   124  	if err != nil {
   125  		return nil, err
   126  	}
   127  	// 反序列响应结果
   128  	resp := &CompleteTaskResp{ApiResp: apiResp}
   129  	err = apiResp.JSONUnmarshalBody(resp)
   130  	if err != nil {
   131  		return nil, err
   132  	}
   133  	return resp, err
   134  }
   135  
   136  // 创建任务
   137  //
   138  // - 该接口可以创建一个任务(基本信息),如果需要绑定协作者等需要调用别的资源管理接口。其中查询字段 user_id_type 是用于控制返回体中 creator_id 的类型,不传时默认返回 open_id。当使用tenant_access_token 调用接口时,如果user_id_type为user_id,则不会返回creator_id。
   139  //
   140  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task/create
   141  //
   142  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/create_task.go
   143  func (t *task) Create(ctx context.Context, req *CreateTaskReq, options ...larkcore.RequestOptionFunc) (*CreateTaskResp, error) {
   144  	// 发起请求
   145  	apiReq := req.apiReq
   146  	apiReq.ApiPath = "/open-apis/task/v1/tasks"
   147  	apiReq.HttpMethod = http.MethodPost
   148  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   149  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   150  	if err != nil {
   151  		return nil, err
   152  	}
   153  	// 反序列响应结果
   154  	resp := &CreateTaskResp{ApiResp: apiResp}
   155  	err = apiResp.JSONUnmarshalBody(resp)
   156  	if err != nil {
   157  		return nil, err
   158  	}
   159  	return resp, err
   160  }
   161  
   162  // 删除任务
   163  //
   164  // - 该接口用于删除任务
   165  //
   166  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task/delete
   167  //
   168  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/delete_task.go
   169  func (t *task) Delete(ctx context.Context, req *DeleteTaskReq, options ...larkcore.RequestOptionFunc) (*DeleteTaskResp, error) {
   170  	// 发起请求
   171  	apiReq := req.apiReq
   172  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id"
   173  	apiReq.HttpMethod = http.MethodDelete
   174  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   175  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   176  	if err != nil {
   177  		return nil, err
   178  	}
   179  	// 反序列响应结果
   180  	resp := &DeleteTaskResp{ApiResp: apiResp}
   181  	err = apiResp.JSONUnmarshalBody(resp)
   182  	if err != nil {
   183  		return nil, err
   184  	}
   185  	return resp, err
   186  }
   187  
   188  // 获取任务详情
   189  //
   190  // - 该接口用于获取任务详情,包括任务标题、描述、时间、来源等信息
   191  //
   192  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task/get
   193  //
   194  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/get_task.go
   195  func (t *task) Get(ctx context.Context, req *GetTaskReq, options ...larkcore.RequestOptionFunc) (*GetTaskResp, error) {
   196  	// 发起请求
   197  	apiReq := req.apiReq
   198  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id"
   199  	apiReq.HttpMethod = http.MethodGet
   200  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   201  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   202  	if err != nil {
   203  		return nil, err
   204  	}
   205  	// 反序列响应结果
   206  	resp := &GetTaskResp{ApiResp: apiResp}
   207  	err = apiResp.JSONUnmarshalBody(resp)
   208  	if err != nil {
   209  		return nil, err
   210  	}
   211  	return resp, err
   212  }
   213  
   214  // 获取任务列表
   215  //
   216  // - 以分页的方式获取任务列表。当使用user_access_token时,获取与该用户身份相关的所有任务。当使用tenant_access_token时,获取以该应用身份通过“创建任务“接口创建的所有任务(并非获取该应用所在租户下所有用户创建的任务)。;本接口支持通过任务创建时间以及任务的完成状态对任务进行过滤。
   217  //
   218  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task/list
   219  //
   220  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/list_task.go
   221  func (t *task) List(ctx context.Context, req *ListTaskReq, options ...larkcore.RequestOptionFunc) (*ListTaskResp, error) {
   222  	// 发起请求
   223  	apiReq := req.apiReq
   224  	apiReq.ApiPath = "/open-apis/task/v1/tasks"
   225  	apiReq.HttpMethod = http.MethodGet
   226  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   227  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   228  	if err != nil {
   229  		return nil, err
   230  	}
   231  	// 反序列响应结果
   232  	resp := &ListTaskResp{ApiResp: apiResp}
   233  	err = apiResp.JSONUnmarshalBody(resp)
   234  	if err != nil {
   235  		return nil, err
   236  	}
   237  	return resp, err
   238  }
   239  func (t *task) ListByIterator(ctx context.Context, req *ListTaskReq, options ...larkcore.RequestOptionFunc) (*ListTaskIterator, error) {
   240  	return &ListTaskIterator{
   241  		ctx:      ctx,
   242  		req:      req,
   243  		listFunc: t.List,
   244  		options:  options,
   245  		limit:    req.Limit}, nil
   246  }
   247  
   248  // 更新任务
   249  //
   250  // - 该接口用于修改任务的标题、描述、时间、来源等相关信息
   251  //
   252  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task/patch
   253  //
   254  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/patch_task.go
   255  func (t *task) Patch(ctx context.Context, req *PatchTaskReq, options ...larkcore.RequestOptionFunc) (*PatchTaskResp, error) {
   256  	// 发起请求
   257  	apiReq := req.apiReq
   258  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id"
   259  	apiReq.HttpMethod = http.MethodPatch
   260  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   261  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   262  	if err != nil {
   263  		return nil, err
   264  	}
   265  	// 反序列响应结果
   266  	resp := &PatchTaskResp{ApiResp: apiResp}
   267  	err = apiResp.JSONUnmarshalBody(resp)
   268  	if err != nil {
   269  		return nil, err
   270  	}
   271  	return resp, err
   272  }
   273  
   274  // 取消完成任务
   275  //
   276  // - 该接口用于取消任务的已完成状态
   277  //
   278  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task/uncomplete
   279  //
   280  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/uncomplete_task.go
   281  func (t *task) Uncomplete(ctx context.Context, req *UncompleteTaskReq, options ...larkcore.RequestOptionFunc) (*UncompleteTaskResp, error) {
   282  	// 发起请求
   283  	apiReq := req.apiReq
   284  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/uncomplete"
   285  	apiReq.HttpMethod = http.MethodPost
   286  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   287  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   288  	if err != nil {
   289  		return nil, err
   290  	}
   291  	// 反序列响应结果
   292  	resp := &UncompleteTaskResp{ApiResp: apiResp}
   293  	err = apiResp.JSONUnmarshalBody(resp)
   294  	if err != nil {
   295  		return nil, err
   296  	}
   297  	return resp, err
   298  }
   299  
   300  // 新增执行者
   301  //
   302  // - 该接口用于新增任务执行者,一次性可以添加多个执行者。新增的执行者必须是表示是用户的ID。
   303  //
   304  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task-collaborator/create
   305  //
   306  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/create_taskCollaborator.go
   307  func (t *taskCollaborator) Create(ctx context.Context, req *CreateTaskCollaboratorReq, options ...larkcore.RequestOptionFunc) (*CreateTaskCollaboratorResp, error) {
   308  	// 发起请求
   309  	apiReq := req.apiReq
   310  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/collaborators"
   311  	apiReq.HttpMethod = http.MethodPost
   312  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   313  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   314  	if err != nil {
   315  		return nil, err
   316  	}
   317  	// 反序列响应结果
   318  	resp := &CreateTaskCollaboratorResp{ApiResp: apiResp}
   319  	err = apiResp.JSONUnmarshalBody(resp)
   320  	if err != nil {
   321  		return nil, err
   322  	}
   323  	return resp, err
   324  }
   325  
   326  // 删除执行者
   327  //
   328  // - 该接口用于删除任务执行者
   329  //
   330  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task-collaborator/delete
   331  //
   332  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/delete_taskCollaborator.go
   333  func (t *taskCollaborator) Delete(ctx context.Context, req *DeleteTaskCollaboratorReq, options ...larkcore.RequestOptionFunc) (*DeleteTaskCollaboratorResp, error) {
   334  	// 发起请求
   335  	apiReq := req.apiReq
   336  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/collaborators/:collaborator_id"
   337  	apiReq.HttpMethod = http.MethodDelete
   338  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   339  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   340  	if err != nil {
   341  		return nil, err
   342  	}
   343  	// 反序列响应结果
   344  	resp := &DeleteTaskCollaboratorResp{ApiResp: apiResp}
   345  	err = apiResp.JSONUnmarshalBody(resp)
   346  	if err != nil {
   347  		return nil, err
   348  	}
   349  	return resp, err
   350  }
   351  
   352  // 获取一个任务的执行者列表
   353  //
   354  // - 该接口用于查询任务执行者列表,支持分页,最大值为50
   355  //
   356  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task-collaborator/list
   357  //
   358  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/list_taskCollaborator.go
   359  func (t *taskCollaborator) List(ctx context.Context, req *ListTaskCollaboratorReq, options ...larkcore.RequestOptionFunc) (*ListTaskCollaboratorResp, error) {
   360  	// 发起请求
   361  	apiReq := req.apiReq
   362  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/collaborators"
   363  	apiReq.HttpMethod = http.MethodGet
   364  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   365  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   366  	if err != nil {
   367  		return nil, err
   368  	}
   369  	// 反序列响应结果
   370  	resp := &ListTaskCollaboratorResp{ApiResp: apiResp}
   371  	err = apiResp.JSONUnmarshalBody(resp)
   372  	if err != nil {
   373  		return nil, err
   374  	}
   375  	return resp, err
   376  }
   377  func (t *taskCollaborator) ListByIterator(ctx context.Context, req *ListTaskCollaboratorReq, options ...larkcore.RequestOptionFunc) (*ListTaskCollaboratorIterator, error) {
   378  	return &ListTaskCollaboratorIterator{
   379  		ctx:      ctx,
   380  		req:      req,
   381  		listFunc: t.List,
   382  		options:  options,
   383  		limit:    req.Limit}, nil
   384  }
   385  
   386  // 创建评论
   387  //
   388  // - 该接口用于创建和回复任务的评论。当parent_id字段为0时,为创建评论;当parent_id不为0时,为回复某条评论
   389  //
   390  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task-comment/create
   391  //
   392  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/create_taskComment.go
   393  func (t *taskComment) Create(ctx context.Context, req *CreateTaskCommentReq, options ...larkcore.RequestOptionFunc) (*CreateTaskCommentResp, error) {
   394  	// 发起请求
   395  	apiReq := req.apiReq
   396  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/comments"
   397  	apiReq.HttpMethod = http.MethodPost
   398  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   399  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   400  	if err != nil {
   401  		return nil, err
   402  	}
   403  	// 反序列响应结果
   404  	resp := &CreateTaskCommentResp{ApiResp: apiResp}
   405  	err = apiResp.JSONUnmarshalBody(resp)
   406  	if err != nil {
   407  		return nil, err
   408  	}
   409  	return resp, err
   410  }
   411  
   412  // 删除评论
   413  //
   414  // - 该接口用于通过评论ID删除评论
   415  //
   416  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task-comment/delete
   417  //
   418  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/delete_taskComment.go
   419  func (t *taskComment) Delete(ctx context.Context, req *DeleteTaskCommentReq, options ...larkcore.RequestOptionFunc) (*DeleteTaskCommentResp, error) {
   420  	// 发起请求
   421  	apiReq := req.apiReq
   422  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/comments/:comment_id"
   423  	apiReq.HttpMethod = http.MethodDelete
   424  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   425  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   426  	if err != nil {
   427  		return nil, err
   428  	}
   429  	// 反序列响应结果
   430  	resp := &DeleteTaskCommentResp{ApiResp: apiResp}
   431  	err = apiResp.JSONUnmarshalBody(resp)
   432  	if err != nil {
   433  		return nil, err
   434  	}
   435  	return resp, err
   436  }
   437  
   438  // 获取评论详情
   439  //
   440  // - 该接口用于通过评论ID获取评论详情
   441  //
   442  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task-comment/get
   443  //
   444  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/get_taskComment.go
   445  func (t *taskComment) Get(ctx context.Context, req *GetTaskCommentReq, options ...larkcore.RequestOptionFunc) (*GetTaskCommentResp, error) {
   446  	// 发起请求
   447  	apiReq := req.apiReq
   448  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/comments/:comment_id"
   449  	apiReq.HttpMethod = http.MethodGet
   450  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   451  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   452  	if err != nil {
   453  		return nil, err
   454  	}
   455  	// 反序列响应结果
   456  	resp := &GetTaskCommentResp{ApiResp: apiResp}
   457  	err = apiResp.JSONUnmarshalBody(resp)
   458  	if err != nil {
   459  		return nil, err
   460  	}
   461  	return resp, err
   462  }
   463  
   464  // 获取评论列表
   465  //
   466  // - 该接口用于查询任务评论列表,支持分页,最大值为100
   467  //
   468  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task-comment/list
   469  //
   470  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/list_taskComment.go
   471  func (t *taskComment) List(ctx context.Context, req *ListTaskCommentReq, options ...larkcore.RequestOptionFunc) (*ListTaskCommentResp, error) {
   472  	// 发起请求
   473  	apiReq := req.apiReq
   474  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/comments"
   475  	apiReq.HttpMethod = http.MethodGet
   476  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   477  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   478  	if err != nil {
   479  		return nil, err
   480  	}
   481  	// 反序列响应结果
   482  	resp := &ListTaskCommentResp{ApiResp: apiResp}
   483  	err = apiResp.JSONUnmarshalBody(resp)
   484  	if err != nil {
   485  		return nil, err
   486  	}
   487  	return resp, err
   488  }
   489  func (t *taskComment) ListByIterator(ctx context.Context, req *ListTaskCommentReq, options ...larkcore.RequestOptionFunc) (*ListTaskCommentIterator, error) {
   490  	return &ListTaskCommentIterator{
   491  		ctx:      ctx,
   492  		req:      req,
   493  		listFunc: t.List,
   494  		options:  options,
   495  		limit:    req.Limit}, nil
   496  }
   497  
   498  // 更新评论
   499  //
   500  // - 该接口用于更新评论内容
   501  //
   502  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task-comment/update
   503  //
   504  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/update_taskComment.go
   505  func (t *taskComment) Update(ctx context.Context, req *UpdateTaskCommentReq, options ...larkcore.RequestOptionFunc) (*UpdateTaskCommentResp, error) {
   506  	// 发起请求
   507  	apiReq := req.apiReq
   508  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/comments/:comment_id"
   509  	apiReq.HttpMethod = http.MethodPut
   510  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   511  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   512  	if err != nil {
   513  		return nil, err
   514  	}
   515  	// 反序列响应结果
   516  	resp := &UpdateTaskCommentResp{ApiResp: apiResp}
   517  	err = apiResp.JSONUnmarshalBody(resp)
   518  	if err != nil {
   519  		return nil, err
   520  	}
   521  	return resp, err
   522  }
   523  
   524  // 新增关注人
   525  //
   526  // - 该接口用于创建任务关注人。可以一次性添加多位关注人。关注人ID要使用表示用户的ID。
   527  //
   528  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task-follower/create
   529  //
   530  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/create_taskFollower.go
   531  func (t *taskFollower) Create(ctx context.Context, req *CreateTaskFollowerReq, options ...larkcore.RequestOptionFunc) (*CreateTaskFollowerResp, error) {
   532  	// 发起请求
   533  	apiReq := req.apiReq
   534  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/followers"
   535  	apiReq.HttpMethod = http.MethodPost
   536  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   537  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   538  	if err != nil {
   539  		return nil, err
   540  	}
   541  	// 反序列响应结果
   542  	resp := &CreateTaskFollowerResp{ApiResp: apiResp}
   543  	err = apiResp.JSONUnmarshalBody(resp)
   544  	if err != nil {
   545  		return nil, err
   546  	}
   547  	return resp, err
   548  }
   549  
   550  // 删除关注人
   551  //
   552  // - 该接口用于删除任务关注人
   553  //
   554  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task-follower/delete
   555  //
   556  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/delete_taskFollower.go
   557  func (t *taskFollower) Delete(ctx context.Context, req *DeleteTaskFollowerReq, options ...larkcore.RequestOptionFunc) (*DeleteTaskFollowerResp, error) {
   558  	// 发起请求
   559  	apiReq := req.apiReq
   560  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/followers/:follower_id"
   561  	apiReq.HttpMethod = http.MethodDelete
   562  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   563  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   564  	if err != nil {
   565  		return nil, err
   566  	}
   567  	// 反序列响应结果
   568  	resp := &DeleteTaskFollowerResp{ApiResp: apiResp}
   569  	err = apiResp.JSONUnmarshalBody(resp)
   570  	if err != nil {
   571  		return nil, err
   572  	}
   573  	return resp, err
   574  }
   575  
   576  // 获取任务关注人列表
   577  //
   578  // - 该接口用于查询任务关注人列表,支持分页,最大值为50
   579  //
   580  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task-follower/list
   581  //
   582  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/list_taskFollower.go
   583  func (t *taskFollower) List(ctx context.Context, req *ListTaskFollowerReq, options ...larkcore.RequestOptionFunc) (*ListTaskFollowerResp, error) {
   584  	// 发起请求
   585  	apiReq := req.apiReq
   586  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/followers"
   587  	apiReq.HttpMethod = http.MethodGet
   588  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   589  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   590  	if err != nil {
   591  		return nil, err
   592  	}
   593  	// 反序列响应结果
   594  	resp := &ListTaskFollowerResp{ApiResp: apiResp}
   595  	err = apiResp.JSONUnmarshalBody(resp)
   596  	if err != nil {
   597  		return nil, err
   598  	}
   599  	return resp, err
   600  }
   601  func (t *taskFollower) ListByIterator(ctx context.Context, req *ListTaskFollowerReq, options ...larkcore.RequestOptionFunc) (*ListTaskFollowerIterator, error) {
   602  	return &ListTaskFollowerIterator{
   603  		ctx:      ctx,
   604  		req:      req,
   605  		listFunc: t.List,
   606  		options:  options,
   607  		limit:    req.Limit}, nil
   608  }
   609  
   610  // 新增提醒时间
   611  //
   612  // - 该接口用于创建任务的提醒时间。提醒时间在截止时间基础上做偏移,但是偏移后的结果不能早于当前时间。
   613  //
   614  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task-reminder/create
   615  //
   616  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/create_taskReminder.go
   617  func (t *taskReminder) Create(ctx context.Context, req *CreateTaskReminderReq, options ...larkcore.RequestOptionFunc) (*CreateTaskReminderResp, error) {
   618  	// 发起请求
   619  	apiReq := req.apiReq
   620  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/reminders"
   621  	apiReq.HttpMethod = http.MethodPost
   622  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   623  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   624  	if err != nil {
   625  		return nil, err
   626  	}
   627  	// 反序列响应结果
   628  	resp := &CreateTaskReminderResp{ApiResp: apiResp}
   629  	err = apiResp.JSONUnmarshalBody(resp)
   630  	if err != nil {
   631  		return nil, err
   632  	}
   633  	return resp, err
   634  }
   635  
   636  // 删除提醒时间
   637  //
   638  // - 删除提醒时间,返回结果状态
   639  //
   640  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task-reminder/delete
   641  //
   642  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/delete_taskReminder.go
   643  func (t *taskReminder) Delete(ctx context.Context, req *DeleteTaskReminderReq, options ...larkcore.RequestOptionFunc) (*DeleteTaskReminderResp, error) {
   644  	// 发起请求
   645  	apiReq := req.apiReq
   646  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/reminders/:reminder_id"
   647  	apiReq.HttpMethod = http.MethodDelete
   648  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   649  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   650  	if err != nil {
   651  		return nil, err
   652  	}
   653  	// 反序列响应结果
   654  	resp := &DeleteTaskReminderResp{ApiResp: apiResp}
   655  	err = apiResp.JSONUnmarshalBody(resp)
   656  	if err != nil {
   657  		return nil, err
   658  	}
   659  	return resp, err
   660  }
   661  
   662  // 查询提醒时间列表
   663  //
   664  // - 返回提醒时间列表,支持分页,最大值为50
   665  //
   666  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task-reminder/list
   667  //
   668  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/taskv1/list_taskReminder.go
   669  func (t *taskReminder) List(ctx context.Context, req *ListTaskReminderReq, options ...larkcore.RequestOptionFunc) (*ListTaskReminderResp, error) {
   670  	// 发起请求
   671  	apiReq := req.apiReq
   672  	apiReq.ApiPath = "/open-apis/task/v1/tasks/:task_id/reminders"
   673  	apiReq.HttpMethod = http.MethodGet
   674  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   675  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   676  	if err != nil {
   677  		return nil, err
   678  	}
   679  	// 反序列响应结果
   680  	resp := &ListTaskReminderResp{ApiResp: apiResp}
   681  	err = apiResp.JSONUnmarshalBody(resp)
   682  	if err != nil {
   683  		return nil, err
   684  	}
   685  	return resp, err
   686  }
   687  func (t *taskReminder) ListByIterator(ctx context.Context, req *ListTaskReminderReq, options ...larkcore.RequestOptionFunc) (*ListTaskReminderIterator, error) {
   688  	return &ListTaskReminderIterator{
   689  		ctx:      ctx,
   690  		req:      req,
   691  		listFunc: t.List,
   692  		options:  options,
   693  		limit:    req.Limit}, nil
   694  }