From 4c731165468e1dfa0cc064035bdb3cdbed65c348 Mon Sep 17 00:00:00 2001 From: Leufolium Date: Thu, 28 Dec 2023 22:46:14 +0800 Subject: [PATCH] by Robin at 20231228; fix --- library/contentaudit/imageaudit/imageaudit.go | 77 +++++-------------- library/contentaudit/textaudit/textaudit.go | 21 ++++- 2 files changed, 37 insertions(+), 61 deletions(-) diff --git a/library/contentaudit/imageaudit/imageaudit.go b/library/contentaudit/imageaudit/imageaudit.go index 18adea9a..f6f1076d 100644 --- a/library/contentaudit/imageaudit/imageaudit.go +++ b/library/contentaudit/imageaudit/imageaudit.go @@ -34,7 +34,7 @@ func executeImageAuditTasks(tasks []*ImageAuditTaskControlBlock, batchId string) req, taskMap, actionMap, err := createScanImageAdvanceRequest(tasks, batchId) if err != nil { logger.Info("Create Scan ImageRequest fail: %v", err) - handleBatchError(batchId, err) + handleBatchError(tasks, batchId, err) return } @@ -46,7 +46,7 @@ func executeImageAuditTasks(tasks []*ImageAuditTaskControlBlock, batchId string) //_result, err := defaultImageAuditClient.ScanImageWithOptions(req, runtime) if err != nil { logger.Error("ScanImageAdvance fail : %v", err) - handleBatchError(batchId, err) + handleBatchError(tasks, batchId, err) return } @@ -357,7 +357,7 @@ func updateExpiredTasks(expiredTaskIds []string) (err error) { return } -func handleBatchError(batchId string, _err error) (err error) { +func handleBatchError(tasks []*ImageAuditTaskControlBlock, batchId string, _err error) (err error) { logger.Info("All tasks of this batchId: %v has failed, rolling back...", batchId) ctx := &gin.Context{} if err = _DefaultImageAudit.OpUpdateByBatchId(ctx, batchId, &dbstruct.ImageAudit{ @@ -375,60 +375,21 @@ func handleBatchError(batchId string, _err error) (err error) { logger.Error("_DefaultImageAuditTask OpUpdateByBatchId fail: %v\n", err) return } + + // 回退 + for _, task := range tasks { + if err = task.RollbackFunc(); err != nil { + if err = _DefaultImageAuditTask.OpUpdate(ctx, &imageaudittaskproto.OpUpdateReq{ + ImageAuditTask: &dbstruct.ImageAuditTask{ + Id: task.ImageAuditTask.Id, + Status: goproto.Int64(consts.ImageAudit_Failed), + Remarks: goproto.String("任务审核失败,回退失败,请联系管理员排查"), + }, + }); err != nil { + logger.Error("_DefaultImageAudit OpUpdate fail: %v\n", err) + } + } + } + return } - -// func createScanImageRequest(tasks []*ImageAuditTaskControlBlock, batchId string) (request *imageaudit.ScanImageRequest, -// taskMap map[int]*ImageAuditTaskControlBlock, actionMap map[string]*ImageAuditAction, err error) { - -// ctx := &gin.Context{} -// // todo:taskMap其实可以删掉 -// taskMap = make(map[int]*ImageAuditTaskControlBlock) // 图像审核索引号-task的map -// actionMap = make(map[string]*ImageAuditAction) // 动作Id号-action的map - -// // 1.获取所有图像信息 -// offset := 0 -// images := make([]mediafiller.MediaFillable, 0) -// for _, task := range tasks { -// // 写map记录 -// if actionMap[task.ActionId] == nil { // 写入actionMap -// actionMap[task.ActionId] = NewImageAuditAction() -// } -// actionMap[task.ActionId].Record(task) - -// //获取图像 -// for _, image := range task.Images { -// images = append(images, image) -// taskMap[offset] = task -// offset++ -// } -// } -// mediafiller.FillList(ctx, images) - -// // 2.打包图像url及图像审核id,转成ScanImageRequest -// reqTasks := make([]*imageaudit.ScanImageRequestTask, 0) -// for _, task := range tasks { -// if util.DerefInt64(task.ImageAuditTask.IsFragmented) == 1 { -// imageauditIds := util.DerefStringSlice(task.ImageAuditTask.ImageAuditFragmentIds) -// for i := range task.Images { -// reqTasks = append(reqTasks, &imageaudit.ScanImageRequestTask{ -// DataId: goproto.String(imageauditIds[i]), -// ImageURL: goproto.String(task.Images[i].Images[0].Urls[0]), -// }) -// } -// } else { -// reqTasks = append(reqTasks, &imageaudit.ScanImageRequestTask{ -// DataId: task.ImageAuditTask.ImageAuditId, -// ImageURL: goproto.String(task.Images[0].Images[0].Urls[0]), -// }) -// } - -// } - -// request = &imageaudit.ScanImageRequest{ -// Scene: scenes, -// Task: reqTasks, -// } -// logger.Info("本次打包:%v", reqTasks) -// return -// } diff --git a/library/contentaudit/textaudit/textaudit.go b/library/contentaudit/textaudit/textaudit.go index 2cb01660..ee96f9b1 100644 --- a/library/contentaudit/textaudit/textaudit.go +++ b/library/contentaudit/textaudit/textaudit.go @@ -29,7 +29,7 @@ func executeTextAuditTasks(tasks []*TextAuditTaskControlBlock, batchId string) ( req, actionMap, err := createScanTextRequest(tasks, batchId) if err != nil { logger.Info("Create Scan TextRequest fail: %v", err) - handleBatchError(batchId, err) + handleBatchError(tasks, batchId, err) return } @@ -40,7 +40,7 @@ func executeTextAuditTasks(tasks []*TextAuditTaskControlBlock, batchId string) ( _result, err := defaultTextAuditClient.ScanTextWithOptions(req, runtime) if err != nil { logger.Error("ScanTextWithOptions fail : %v", err) - handleBatchError(batchId, err) + handleBatchError(tasks, batchId, err) return } @@ -296,7 +296,7 @@ func updateExpiredTasks(expiredTaskIds []string) (err error) { return } -func handleBatchError(batchId string, _err error) (err error) { +func handleBatchError(tasks []*TextAuditTaskControlBlock, batchId string, _err error) (err error) { logger.Info("All tasks of this batchId: %v has failed, rolling back...", batchId) ctx := &gin.Context{} if err = _DefaultTextAudit.OpUpdateByBatchId(ctx, batchId, &dbstruct.TextAudit{ @@ -314,5 +314,20 @@ func handleBatchError(batchId string, _err error) (err error) { logger.Error("_DefaultTextAuditTask OpUpdateByBatchId fail: %v\n", err) return } + + // 回退 + for _, task := range tasks { + if err = task.RollbackFunc(); err != nil { + if err = _DefaultTextAuditTask.OpUpdate(ctx, &textaudittaskproto.OpUpdateReq{ + TextAuditTask: &dbstruct.TextAuditTask{ + Id: task.TextAuditTask.Id, + Status: goproto.Int64(consts.ImageAudit_Failed), + Remarks: goproto.String("任务审核失败,回退失败,请联系管理员排查"), + }, + }); err != nil { + logger.Error("_DefaultTextAudit OpUpdate fail: %v\n", err) + } + } + } return }