(ctx context.Context, channelId int, taskIds []string, taskM map[string]*model.Task)
| 93 | } |
| 94 | |
| 95 | func updateSunoTaskAll(ctx context.Context, channelId int, taskIds []string, taskM map[string]*model.Task) error { |
| 96 | common.LogInfo(ctx, fmt.Sprintf("渠道 #%d 未完成的任务有: %d", channelId, len(taskIds))) |
| 97 | if len(taskIds) == 0 { |
| 98 | return nil |
| 99 | } |
| 100 | channel, err := model.CacheGetChannel(channelId) |
| 101 | if err != nil { |
| 102 | common.SysLog(fmt.Sprintf("CacheGetChannel: %v", err)) |
| 103 | err = model.TaskBulkUpdate(taskIds, map[string]any{ |
| 104 | "fail_reason": fmt.Sprintf("获取渠道信息失败,请联系管理员,渠道ID:%d", channelId), |
| 105 | "status": "FAILURE", |
| 106 | "progress": "100%", |
| 107 | }) |
| 108 | if err != nil { |
| 109 | common.SysError(fmt.Sprintf("UpdateMidjourneyTask error2: %v", err)) |
| 110 | } |
| 111 | return err |
| 112 | } |
| 113 | adaptor := relay.GetTaskAdaptor(constant.TaskPlatformSuno) |
| 114 | if adaptor == nil { |
| 115 | return errors.New("adaptor not found") |
| 116 | } |
| 117 | resp, err := adaptor.FetchTask(*channel.BaseURL, channel.Key, map[string]any{ |
| 118 | "ids": taskIds, |
| 119 | }) |
| 120 | if err != nil { |
| 121 | common.SysError(fmt.Sprintf("Get Task Do req error: %v", err)) |
| 122 | return err |
| 123 | } |
| 124 | if resp.StatusCode != http.StatusOK { |
| 125 | common.LogError(ctx, fmt.Sprintf("Get Task status code: %d", resp.StatusCode)) |
| 126 | return errors.New(fmt.Sprintf("Get Task status code: %d", resp.StatusCode)) |
| 127 | } |
| 128 | defer resp.Body.Close() |
| 129 | responseBody, err := io.ReadAll(resp.Body) |
| 130 | if err != nil { |
| 131 | common.SysError(fmt.Sprintf("Get Task parse body error: %v", err)) |
| 132 | return err |
| 133 | } |
| 134 | var responseItems dto.TaskResponse[[]dto.SunoDataResponse] |
| 135 | err = json.Unmarshal(responseBody, &responseItems) |
| 136 | if err != nil { |
| 137 | common.LogError(ctx, fmt.Sprintf("Get Task parse body error2: %v, body: %s", err, string(responseBody))) |
| 138 | return err |
| 139 | } |
| 140 | if !responseItems.IsSuccess() { |
| 141 | common.SysLog(fmt.Sprintf("渠道 #%d 未完成的任务有: %d, 成功获取到任务数: %d", channelId, len(taskIds), string(responseBody))) |
| 142 | return err |
| 143 | } |
| 144 | |
| 145 | for _, responseItem := range responseItems.Data { |
| 146 | task := taskM[responseItem.TaskID] |
| 147 | if !checkTaskNeedUpdate(task, responseItem) { |
| 148 | continue |
| 149 | } |
| 150 | |
| 151 | task.Status = lo.If(model.TaskStatus(responseItem.Status) != "", model.TaskStatus(responseItem.Status)).Else(task.Status) |
| 152 | task.FailReason = lo.If(responseItem.FailReason != "", responseItem.FailReason).Else(task.FailReason) |
no test coverage detected