From 6907e59e2ed5f55db93f9b0a1011e514572f8e3d Mon Sep 17 00:00:00 2001 From: lzh <1625167628@qq.com> Date: Sun, 28 Sep 2025 16:30:20 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E6=AC=A1=E6=BF=80=E6=B4=BB=E9=87=8D?= =?UTF-8?q?=E6=96=B0=E8=AE=A1=E7=AE=97=E4=BD=99=E9=87=8F=E6=97=B6=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/dao/bundleExtend.go | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/internal/dao/bundleExtend.go b/internal/dao/bundleExtend.go index eed3cba..a5fb168 100644 --- a/internal/dao/bundleExtend.go +++ b/internal/dao/bundleExtend.go @@ -451,11 +451,29 @@ func ConfirmWork(req *bundle.ConfirmWorkReq) error { } func BundleActivate(ids []uint32) error { - batch := []model.BundleActivate{} for _, v := range ids { - batch = append(batch, model.BundleActivate{UserId: int(v), Activate: true}) + app.ModuleClients.BundleDB.Transaction(func(tx *gorm.DB) error { + activate := model.BundleActivate{} + if err := tx.Model(&model.BundleActivate{}).Where("user_id = ?", v).First(&activate).Error; err != nil { + return err + } + if !activate.Activate { // 第一次激活重新计算余量的开始时间和过期时间 + balance := model.BundleBalance{} + if err := tx.Model(&model.BundleBalance{}).Where("user_id = ?", v).First(&balance).Error; err != nil { + return err + } + balance.ExpiredAt = balance.ExpiredAt.Add(time.Since(balance.StartAt)) + balance.StartAt = time.Now() + if err := tx.Model(&model.BundleBalance{}).Save(balance).Error; err != nil { + return err + } + activate.Activate = true + return tx.Model(&model.BundleActivate{}).Save(activate).Error + } + return nil + }) } - return app.ModuleClients.BundleDB.Model(&model.BundleActivate{}).Where("user_id = ?").Save(batch).Error + return nil } func GetValueAddByOrderUUID(orderUUID string) (data []model.BundleOrderValueAdd, err error) {