From 46b8e1862dc83d9211d194a9938e2d53e102d5aa Mon Sep 17 00:00:00 2001 From: "jiaji.H" Date: Tue, 16 Dec 2025 17:35:29 +0800 Subject: [PATCH] =?UTF-8?q?Updata:=E5=A2=9E=E5=8A=A0=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=89=8B=E5=8A=A8=E7=A1=AE=E8=AE=A4=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/cron/task.go | 68 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 53 insertions(+), 15 deletions(-) diff --git a/pkg/cron/task.go b/pkg/cron/task.go index d82d266..f99ca42 100644 --- a/pkg/cron/task.go +++ b/pkg/cron/task.go @@ -10,10 +10,11 @@ import ( "fonchain-fiee/pkg/cache" bundleModel "fonchain-fiee/pkg/model/bundle" modelCast "fonchain-fiee/pkg/model/cast" - "fonchain-fiee/pkg/model/login" "fonchain-fiee/pkg/service" serverCast "fonchain-fiee/pkg/service/cast" "log" + "math/rand" + "strconv" "time" "github.com/go-redis/redis" @@ -34,6 +35,9 @@ func InitTasks() error { // 启动队列消费者 go WorkPublishQueueConsumer() + // 启动随机间隔的自动确认任务 + go AutoManuallyConfirmWorkTaskWithRandomInterval() + return nil } @@ -53,6 +57,23 @@ func RefreshWorkApprovalStatusTask() { serverCast.RefreshWorkApproval(nil, resp.Data) } +// AutoManuallyConfirmWorkTaskWithRandomInterval 以随机间隔(3-7分钟)执行自动确认任务 +func AutoManuallyConfirmWorkTaskWithRandomInterval() { + // 初始化随机数种子 + rand.Seed(time.Now().UnixNano()) + + for { + // 执行任务 + AutoManuallyConfirmWorkTask() + + // 生成3-7分钟之间的随机间隔(单位:分钟) + randomMinutes := rand.Intn(5) + 3 // 3-7分钟 + randomDuration := time.Duration(randomMinutes) * time.Minute + + // 等待随机时间 + time.Sleep(randomDuration) + } +} func AutoManuallyConfirmWorkTask() { var req bundle.GetWaitConfirmWorkListReq res, err := service.BundleProvider.GetWaitConfirmWorkList(context.Background(), &req) @@ -67,8 +88,13 @@ func AutoManuallyConfirmWorkTask() { var req bundleModel.UserWorkConfirmReq req.WorkUuid = work.WorkUuid req.ConfirmStatus = 1 + artistId, err := strconv.ParseInt(work.ArtistUuid, 10, 64) + if err != nil { + zap.L().Error("解析艺术家ID失败", zap.Error(err)) + return + } if req.ConfirmStatus == 2 { // 驳回完直接结束 - res, err := service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{ + _, err := service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{ WorkAction: cast.WorkActionENUM_CONFIRM, WorkUuid: req.WorkUuid, ConfirmRemark: req.ConfirmRemark, @@ -80,49 +106,61 @@ func AutoManuallyConfirmWorkTask() { } continue } - userInfo := login.GetUserInfoFromC(context.Background()) + balanceInfoRes, err := service.BundleProvider.GetBundleBalanceByUserId(context.Background(), &bundle.GetBundleBalanceByUserIdReq{ - UserId: int32(userInfo.ID), + UserId: int32(artistId), }) if err != nil { - return + continue } - wordInfoRes, err := service.CastProvider.WorkDetail(c, &cast.WorkDetailReq{ + wordInfoRes, err := service.CastProvider.WorkDetail(context.Background(), &cast.WorkDetailReq{ WorkUuid: req.WorkUuid, }) if err != nil { - return + continue } if wordInfoRes.WorkStatus != 4 { - return + continue } var workCategory = wordInfoRes.WorkCategory var addBalanceReq bundle.AddBundleBalanceReq - addBalanceReq.UserId = int32(userInfo.ID) + addBalanceReq.UserId = int32(artistId) switch workCategory { case 1: { if balanceInfoRes.ImageConsumptionNumber >= balanceInfoRes.ImageNumber { // 图文余量不足 - return + _, err = service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{ + WorkAction: cast.WorkActionENUM_CONFIRM, + WorkUuid: req.WorkUuid, + ConfirmRemark: req.ConfirmRemark, + ConfirmStatus: 3, + }) + continue } addBalanceReq.ImageConsumptionNumber = 1 } case 2: { if balanceInfoRes.VideoConsumptionNumber >= balanceInfoRes.VideoNumber { // 视频余量不足 - return + _, err = service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{ + WorkAction: cast.WorkActionENUM_CONFIRM, + WorkUuid: req.WorkUuid, + ConfirmRemark: req.ConfirmRemark, + ConfirmStatus: 3, + }) + continue } addBalanceReq.VideoConsumptionNumber = 1 } default: - return + continue } resp, err := service.BundleProvider.AddBundleBalance(context.Background(), &addBalanceReq) if err != nil { - zap.L().Error("扣除余额失败", zap.Error(err)) - return + zap.L().Error("扣除余额失败,作品uuid:"+req.WorkUuid, zap.Error(err)) + continue } _, err = service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{ WorkAction: cast.WorkActionENUM_CONFIRM, @@ -132,7 +170,7 @@ func AutoManuallyConfirmWorkTask() { ConfirmStatus: 1, }) if err != nil { - zap.L().Error("更新作品状态失败", zap.Error(err)) + zap.L().Error("更新作品状态失败,作品uuid:"+req.WorkUuid, zap.Error(err)) return } }