From 493ae72055fbfb4db3085ccf3cb18f340b8588c1 Mon Sep 17 00:00:00 2001 From: harold Date: Thu, 22 May 2025 00:31:17 +0500 Subject: [PATCH] add fix for auto duration donate --- internal/service/donat/donat.go | 46 +++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/internal/service/donat/donat.go b/internal/service/donat/donat.go index 9022d42..f8e61fb 100644 --- a/internal/service/donat/donat.go +++ b/internal/service/donat/donat.go @@ -192,16 +192,13 @@ func (donatService *ServiceDonat) MarkDonatPaid( return err } - err = donatService.donatRepo.MarkDonatPaid( - ctx, - orderID, - ) + err = donatService.donatRepo.MarkDonatPaid(ctx, orderID) if err != nil { slog.Error(err.Error()) return err } - if moderationSettings.Enable == false { + if !moderationSettings.Enable { moderated := true updateModel := model.ModerationDonat{ Accepted: &moderated, @@ -219,6 +216,45 @@ func (donatService *ServiceDonat) MarkDonatPaid( slog.Error(err.Error()) return err } + } else { + go func(streamerID, donatID int, duration int) { + select { + case <-time.After(time.Duration(duration) * time.Second): + moderated := true + updateModel := model.ModerationDonat{ + Accepted: &moderated, + ShowText: &moderated, + ShowName: &moderated, + PlayContent: &moderated, + } + + bgCtx := context.Background() + donateModel, err := donatService.donatRepo.GetDonatByOrderID(bgCtx, orderID) + if err != nil { + slog.Error(err.Error()) + return + } + if donateModel.AcceptedTime == nil { + if err := donatService.donatRepo.ModerateDonation( + bgCtx, + donateModel.ID, + donatModel.StreamerID, + updateModel, + ); err != nil { + slog.Error("failed to auto-moderate donation", + "error", err.Error(), + "donatID", donatID, + "streamerID", streamerID, + ) + } + } + case <-ctx.Done(): + slog.Warn("context canceled before auto-moderation", + "donatID", donatID, + "streamerID", streamerID, + ) + } + }(donatModel.StreamerID, donatModel.ID, moderationSettings.Duration) } return nil