fix: 改有效期到过去时不自动恢复轮询
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m34s

把套餐有效期改到过去时,到期扫描前套餐仍为生效中,原逻辑会误恢复轮询;改为只认未到期的生效中主套餐。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
邹进
2026-10-26 09:45:36 +09:00
parent 5efe0026c0
commit f35d2a8196

View File

@@ -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
}