package model import ( "time" "gorm.io/gorm" ) // PhoneAssetAssociation 手机号—资产当前有效关联。 // 关联只能由 H5 短信验证建立(Source 固定为 constants.PhoneAssetAssociationSourceH5SMSVerification), // 后台不提供创建或补录入口。资产身份一律取 (AssetType, AssetID):iot_card 与 device 的 ID 空间独立, // 同号计为两项资产。失效走 Status 置 0 并同时写失效时间、方式与操作人,关系行保留为业务事实。 type PhoneAssetAssociation struct { gorm.Model Phone string `gorm:"column:phone;type:varchar(20);not null;comment:已验证手机号" json:"phone"` AssetType string `gorm:"column:asset_type;type:varchar(20);not null;comment:资产类型 iot_card/device" json:"asset_type"` AssetID uint `gorm:"column:asset_id;type:bigint;not null;comment:资产ID" json:"asset_id"` Status int `gorm:"column:status;type:smallint;not null;default:1;comment:状态 0-已失效 1-有效" json:"status"` Source string `gorm:"column:source;type:varchar(30);not null;default:'h5_sms_verification';comment:建立来源" json:"source"` EstablishedAt time.Time `gorm:"column:established_at;type:timestamptz;not null;default:now();comment:关联建立时间" json:"established_at"` InvalidatedAt *time.Time `gorm:"column:invalidated_at;type:timestamptz;comment:失效时间" json:"invalidated_at"` InvalidationMethod string `gorm:"column:invalidation_method;type:varchar(30);not null;default:'';comment:失效方式" json:"invalidation_method"` InvalidationReason string `gorm:"column:invalidation_reason;type:varchar(500);not null;default:'';comment:失效原因" json:"invalidation_reason"` Invalidator uint `gorm:"column:invalidator;type:bigint;not null;default:0;comment:失效操作人账号ID" json:"invalidator"` } // TableName 指定手机号—资产关联表名。 func (PhoneAssetAssociation) TableName() string { return "tb_phone_asset_association" }