修复错误的停止
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m51s

This commit is contained in:
Break
2026-06-11 10:01:35 +08:00
parent 5c779cb6e0
commit 134021c91e

View File

@@ -253,12 +253,6 @@ func (h *PackageActivationHandler) processExpiredPackage(ctx context.Context, pk
zap.Error(err))
}
if err := h.updateCarrierSuspendedStatus(ctx, tx, carrierType, carrierID); err != nil {
h.logger.Warn("更新载体停用状态失败",
zap.String("carrier_type", carrierType),
zap.Uint("carrier_id", carrierID),
zap.Error(err))
}
}
return nil
@@ -301,84 +295,6 @@ func (h *PackageActivationHandler) invalidateAddons(ctx context.Context, tx *gor
return nil
}
func (h *PackageActivationHandler) updateCarrierSuspendedStatus(ctx context.Context, tx *gorm.DB, carrierType string, carrierID uint) error {
if carrierType == constants.AssetTypeIotCard {
return h.updateIotCardSuspendedStatus(ctx, tx, carrierID)
}
if carrierType == constants.AssetTypeDevice {
return h.updateDeviceSuspendedStatus(ctx, tx, carrierID)
}
return nil
}
func (h *PackageActivationHandler) updateIotCardSuspendedStatus(ctx context.Context, tx *gorm.DB, cardID uint) error {
var activeCount int64
if err := tx.WithContext(ctx).
Model(&model.PackageUsage{}).
Where("iot_card_id = ?", cardID).
Where("status = ?", constants.PackageUsageStatusActive).
Count(&activeCount).Error; err != nil {
return err
}
if activeCount > 0 {
return nil
}
return tx.WithContext(ctx).
Model(&model.IotCard{}).
Where("id = ?", cardID).
Update("status", constants.IotCardStatusSuspended).Error
}
func (h *PackageActivationHandler) updateDeviceSuspendedStatus(ctx context.Context, tx *gorm.DB, deviceID uint) error {
var activeCount int64
if err := tx.WithContext(ctx).
Model(&model.PackageUsage{}).
Where("device_id = ?", deviceID).
Where("status = ?", constants.PackageUsageStatusActive).
Count(&activeCount).Error; err != nil {
return err
}
if activeCount > 0 {
return nil
}
var cardIDs []uint
if err := tx.WithContext(ctx).
Model(&model.DeviceSimBinding{}).
Where("device_id = ?", deviceID).
Where("bind_status = ?", constants.BindStatusBound).
Pluck("iot_card_id", &cardIDs).Error; err != nil {
return err
}
if len(cardIDs) > 0 {
if err := tx.WithContext(ctx).
Model(&model.PackageUsage{}).
Where("iot_card_id IN ?", cardIDs).
Where("status = ?", constants.PackageUsageStatusActive).
Count(&activeCount).Error; err != nil {
return err
}
if activeCount > 0 {
return nil
}
}
if len(cardIDs) > 0 {
if err := tx.WithContext(ctx).
Model(&model.IotCard{}).
Where("id IN ?", cardIDs).
Update("status", constants.IotCardStatusSuspended).Error; err != nil {
return err
}
}
return nil
}
// getCarrierInfo 获取载体信息
func (h *PackageActivationHandler) getCarrierInfo(pkg *model.PackageUsage) (string, uint) {
if pkg.IotCardID > 0 {