MCPcopy Index your code
hub / github.com/aiprodcoder/MIXAPI / updateSunoTaskAll

Function updateSunoTaskAll

controller/task.go:95–185  ·  view source on GitHub ↗
(ctx context.Context, channelId int, taskIds []string, taskM map[string]*model.Task)

Source from the content-addressed store, hash-verified

93}
94
95func 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)

Callers 1

UpdateSunoTaskAllFunction · 0.85

Calls 15

LogInfoFunction · 0.92
CacheGetChannelFunction · 0.92
SysLogFunction · 0.92
TaskBulkUpdateFunction · 0.92
SysErrorFunction · 0.92
GetTaskAdaptorFunction · 0.92
LogErrorFunction · 0.92
TaskStatusTypeAlias · 0.92
IncreaseUserQuotaFunction · 0.92
LogQuotaFunction · 0.92
RecordLogFunction · 0.92
checkTaskNeedUpdateFunction · 0.85

Tested by

no test coverage detected