From 7fe2038dcb37d6a338acd2016ee5d92a908ad5b6 Mon Sep 17 00:00:00 2001 From: cjy Date: Wed, 22 Oct 2025 10:07:37 +0800 Subject: [PATCH] =?UTF-8?q?Reapply=20"feat:=20=E8=B4=AD=E4=B9=B0=E5=A5=97?= =?UTF-8?q?=E9=A4=90=E5=92=8C=E6=89=A9=E5=B1=95=E5=A5=97=E9=A4=90=E4=BD=99?= =?UTF-8?q?=E9=A2=9D=E6=97=B6=E5=90=8C=E6=AD=A5=E4=BB=BB=E5=8A=A1=E4=BD=99?= =?UTF-8?q?=E9=A2=9D"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit aa7de9e4f6541d3ce202abf88e60f9aa350d3ed0. --- internal/dao/bundleExtend.go | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/internal/dao/bundleExtend.go b/internal/dao/bundleExtend.go index 282de8e..c369b09 100644 --- a/internal/dao/bundleExtend.go +++ b/internal/dao/bundleExtend.go @@ -9,6 +9,7 @@ import ( "micro-bundle/pkg/utils" "time" + "dubbo.apache.org/dubbo-go/v3/common/logger" "gorm.io/gorm" "gorm.io/gorm/clause" ) @@ -366,7 +367,7 @@ func CreateUsedRecord(tx *gorm.DB, data model.BundleUsedRecord) error { } func ExtendBundleBalanceByUserId(data model.BundleBalanceExtendPo) error { - return app.ModuleClients.BundleDB.Transaction(func(tx *gorm.DB) error { + err := app.ModuleClients.BundleDB.Transaction(func(tx *gorm.DB) error { oldData := model.BundleBalance{} if err := tx.Model(&model.BundleBalance{}).Where("user_id = ?", data.UserId).Order("created_at desc").First(&oldData).Error; err != nil { return errors.New("用户还没有套餐信息") @@ -383,10 +384,33 @@ func ExtendBundleBalanceByUserId(data model.BundleBalanceExtendPo) error { oldData.ExpiredAt.Add(time.Hour * 24 * time.Duration(data.DurationNumber)) return tx.Model(&model.BundleBalance{}).Where("id = ?", oldData.ID).Save(&oldData).Error }) + + if err != nil { + return err + } + + // 套餐余额更新成功后,同步增量更新任务余额 + // 如果任务余额更新失败,只记录错误日志,不影响主流程 + if taskErr := ExtendTaskBalanceByUserId(data.UserId, data.ImageNumber, data.DataAnalysisNumber, data.VideoNumber, data.DurationNumber); taskErr != nil { + // 记录错误日志但不返回错误,避免影响主流程 + logger.Errorf("任务余额同步失败,用户ID: %d, 错误: %v", data.UserId, taskErr) + } + + return nil } func CreateBundleBalance(data model.BundleBalance) error { - return app.ModuleClients.BundleDB.Save(&data).Error + if err := app.ModuleClients.BundleDB.Save(&data).Error; err != nil { + return err + } + // 同步任务余额(新建套餐余额时) + // 如果任务余额同步失败,只记录错误日志,不影响主流程 + if taskErr := SyncTaskBalanceFromBundleBalance(data); taskErr != nil { + // 记录错误日志但不返回错误,避免影响主流程 + logger.Errorf("新建套餐余额时任务余额同步失败,更新数据: %v, 错误 %v", data, taskErr) + } + + return nil } func GetUsedRecord(req *bundle.GetUsedRecordListReq) (data []model.CostLogPo, total int64, err error) {