114 lines
2.5 KiB
Go
114 lines
2.5 KiB
Go
package task
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strconv"
|
|
|
|
"git.ifooth.com/common/pkg/rest"
|
|
"git.ifooth.com/common/pkg/rest/transport"
|
|
)
|
|
|
|
// Client 任务管理客户端
|
|
type Client struct {
|
|
host string
|
|
}
|
|
|
|
// NewClient 创建任务管理客户端
|
|
func NewClient(host string) *Client {
|
|
return &Client{
|
|
host: host,
|
|
}
|
|
}
|
|
|
|
// ListTask 获取任务列表
|
|
func (c *Client) ListTask(ctx context.Context, req *ListReq) (*rest.PaginationResp[Task], error) {
|
|
query := map[string]string{
|
|
"taskType": req.TaskType,
|
|
"taskName": req.TaskName,
|
|
"taskIndex": req.TaskIndex,
|
|
"currentStep": req.CurrentStep,
|
|
"status": req.Status,
|
|
"creator": req.Creator,
|
|
"offset": strconv.Itoa(req.Offset),
|
|
"limit": strconv.Itoa(req.Limit),
|
|
}
|
|
|
|
resp, err := rest.R[rest.Resp[rest.PaginationResp[Task]]]().
|
|
With(transport.CurlLog()).
|
|
With(transport.HTTPIsSuccess).
|
|
SetQueryParams(query).
|
|
SetContext(ctx).
|
|
Get("%s/api/v1/task/list", c.host)
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if resp.Code != 0 {
|
|
return nil, fmt.Errorf("list task failed, code: %d, message: %s", resp.Code, resp.Message)
|
|
}
|
|
|
|
return &resp.Data, nil
|
|
}
|
|
|
|
// GetTaskStatus 获取任务状态
|
|
func (c *Client) GetTaskStatus(ctx context.Context, req *IDReq) (*Task, error) {
|
|
resp, err := rest.R[rest.Resp[Task]]().
|
|
With(transport.CurlLog()).
|
|
With(transport.HTTPIsSuccess).
|
|
SetQueryParam("taskID", req.TaskID).
|
|
SetContext(ctx).
|
|
Get("%s/api/v1/task/status", c.host)
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if resp.Code != 0 {
|
|
return nil, fmt.Errorf("get task status failed, code: %d, message: %s", resp.Code, resp.Message)
|
|
}
|
|
|
|
return &resp.Data, nil
|
|
}
|
|
|
|
// RetryTask 重试任务
|
|
func (c *Client) RetryTask(ctx context.Context, req *IDReq) error {
|
|
resp, err := rest.R[rest.Resp[rest.EmptyResp]]().
|
|
With(transport.CurlLog()).
|
|
With(transport.HTTPIsSuccess).
|
|
SetBody(req).
|
|
SetContext(ctx).
|
|
Post("%s/api/v1/task/retry", c.host)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if resp.Code != 0 {
|
|
return fmt.Errorf("retry task failed, code: %d, message: %s", resp.Code, resp.Message)
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
// RevokeTask 撤回任务
|
|
func (c *Client) RevokeTask(ctx context.Context, req *IDReq) error {
|
|
resp, err := rest.R[rest.Resp[rest.EmptyResp]]().
|
|
With(transport.CurlLog()).
|
|
With(transport.HTTPIsSuccess).
|
|
SetBody(req).
|
|
SetContext(ctx).
|
|
Post("%s/api/v1/task/revoke", c.host)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if resp.Code != 0 {
|
|
return fmt.Errorf("revoke task failed, code: %d, message: %s", resp.Code, resp.Message)
|
|
}
|
|
|
|
return err
|
|
}
|