From f35d2a8196eb04f9f8fccdd14006293a3621fe0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E8=BF=9B?= Date: Mon, 26 Oct 2026 09:45:36 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=94=B9=E6=9C=89=E6=95=88=E6=9C=9F?= =?UTF-8?q?=E5=88=B0=E8=BF=87=E5=8E=BB=E6=97=B6=E4=B8=8D=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=81=A2=E5=A4=8D=E8=BD=AE=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 把套餐有效期改到过去时,到期扫描前套餐仍为生效中,原逻辑会误恢复轮询;改为只认未到期的生效中主套餐。 Co-Authored-By: Claude Opus 5.5 --- internal/service/asset/service.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/service/asset/service.go b/internal/service/asset/service.go index 4ee02d73..81e0e532 100644 --- a/internal/service/asset/service.go +++ b/internal/service/asset/service.go @@ -1499,7 +1499,7 @@ func (s *Service) SetPollingRestorer(restorer PollingRestorer, evaluator AssetRe s.pollingRestorer, s.resumeEvaluator, s.logger = restorer, evaluator, logger } -// restorePollingAfterExpiryChange 改有效期保存后,资产有生效中主套餐时恢复关闭轮询的卡或设备(来源"改有效期"),再按规则评估复机。 +// restorePollingAfterExpiryChange 改有效期保存后,资产有未到期的生效中主套餐时恢复(把有效期改到过去不恢复)关闭轮询的卡或设备(来源"改有效期"),再按规则评估复机。 func (s *Service) restorePollingAfterExpiryChange(ctx context.Context, assetType string, assetID uint) { if s.pollingRestorer == nil || assetID == 0 { return @@ -1514,7 +1514,7 @@ func (s *Service) restorePollingAfterExpiryChange(ctx context.Context, assetType } var active int64 if err := s.db.WithContext(ctx).Model(&model.PackageUsage{}). - Where(column+" = ? AND status = ? AND master_usage_id IS NULL", assetID, constants.PackageUsageStatusActive). + Where(column+" = ? AND status = ? AND master_usage_id IS NULL AND (expires_at IS NULL OR expires_at > ?)", assetID, constants.PackageUsageStatusActive, time.Now()). Count(&active).Error; err != nil || active == 0 { return }