From 97d6319b64c7853a8ebeac3049595304f3cf70fe Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 15 Apr 2026 18:14:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=20HasValidByCarrier?= =?UTF-8?q?=20=E6=9C=89=E6=95=88=E5=A5=97=E9=A4=90=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=EF=BC=8C=E4=BB=85=20status=3DActive=20=E6=89=8D=E7=AE=97?= =?UTF-8?q?=E6=9C=89=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复Bug:原代码将 Pending(0) 也算作有效套餐,导致待生效套餐的卡 不会被触发停机指令。现改为仅生效中(Active)才算有效套餐。 Co-Authored-By: Claude Opus 4.6 --- internal/store/postgres/package_usage_store.go | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/internal/store/postgres/package_usage_store.go b/internal/store/postgres/package_usage_store.go index 91be31f..47dd859 100644 --- a/internal/store/postgres/package_usage_store.go +++ b/internal/store/postgres/package_usage_store.go @@ -172,17 +172,12 @@ func (s *PackageUsageStore) ResetDataUsage(ctx context.Context, id uint, lastRes }).Error } -// HasValidByCarrier 检查载体是否有有效套餐(status IN 待生效/生效中) -// 修复Bug1:通过 carrierType 动态切换 device_id / iot_card_id 查询 +// HasValidByCarrier 检查载体是否有有效套餐(仅 status = 生效中) // carrierType: "iot_card" 或 "device" func (s *PackageUsageStore) HasValidByCarrier(ctx context.Context, carrierType string, carrierID uint) (bool, error) { var count int64 - validStatuses := []int{ - constants.PackageUsageStatusPending, // 待生效 - constants.PackageUsageStatusActive, // 生效中 - } query := s.db.WithContext(ctx).Model(&model.PackageUsage{}). - Where("status IN ?", validStatuses) + Where("status = ?", constants.PackageUsageStatusActive) if carrierType == "device" { query = query.Where("device_id = ?", carrierID) } else {