fix: 记录查询扫描结构显式指定列名,修复 ICCID 一直为空
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled

GORM 默认把字段 ICCID 映射成 icc_id,卡日流量的 c.iccid 和展示字段批量查询都读不到值;
扫描用的匿名结构统一写 gorm column tag。
This commit is contained in:
邹进
2026-11-07 17:33:28 +09:00
parent 3f593b912d
commit eb0d86df4f
2 changed files with 19 additions and 17 deletions

View File

@@ -47,9 +47,10 @@ func Load(ctx context.Context, db *gorm.DB, req Request) (*Lookup, error) {
session := db.WithContext(ctx).Unscoped()
if ids := distinct(req.CardIDs); len(ids) > 0 {
// 显式列名:GORM 默认把字段 ICCID 映射成 icc_id,不写 tag 会读不到值。
var rows []struct {
ID uint
ICCID string
ID uint `gorm:"column:id"`
ICCID string `gorm:"column:iccid"`
}
if err := session.Model(&model.IotCard{}).Select("id, iccid").Where("id IN ?", ids).Scan(&rows).Error; err != nil {
return nil, errors.Wrap(errors.CodeDatabaseError, err, "查询卡展示信息失败")
@@ -60,9 +61,9 @@ func Load(ctx context.Context, db *gorm.DB, req Request) (*Lookup, error) {
}
if ids := distinct(req.DeviceIDs); len(ids) > 0 {
var rows []struct {
ID uint
VirtualNo string
IMEI string
ID uint `gorm:"column:id"`
VirtualNo string `gorm:"column:virtual_no"`
IMEI string `gorm:"column:imei"`
}
if err := session.Model(&model.Device{}).Select("id, virtual_no, imei").Where("id IN ?", ids).Scan(&rows).Error; err != nil {
return nil, errors.Wrap(errors.CodeDatabaseError, err, "查询设备展示信息失败")
@@ -73,8 +74,8 @@ func Load(ctx context.Context, db *gorm.DB, req Request) (*Lookup, error) {
}
if ids := distinct(req.CarrierIDs); len(ids) > 0 {
var rows []struct {
ID uint
CarrierName string
ID uint `gorm:"column:id"`
CarrierName string `gorm:"column:carrier_name"`
}
if err := session.Model(&model.Carrier{}).Select("id, carrier_name").Where("id IN ?", ids).Scan(&rows).Error; err != nil {
return nil, errors.Wrap(errors.CodeDatabaseError, err, "查询运营商账户展示信息失败")
@@ -85,8 +86,8 @@ func Load(ctx context.Context, db *gorm.DB, req Request) (*Lookup, error) {
}
if ids := distinct(req.OperatorIDs); len(ids) > 0 {
var rows []struct {
ID uint
Username string
ID uint `gorm:"column:id"`
Username string `gorm:"column:username"`
}
if err := session.Model(&model.Account{}).Select("id, username").Where("id IN ?", ids).Scan(&rows).Error; err != nil {
return nil, errors.Wrap(errors.CodeDatabaseError, err, "查询操作人展示信息失败")
@@ -97,8 +98,8 @@ func Load(ctx context.Context, db *gorm.DB, req Request) (*Lookup, error) {
}
if ids := distinct(req.PackageUsageIDs); len(ids) > 0 {
var rows []struct {
ID uint
PackageName string
ID uint `gorm:"column:id"`
PackageName string `gorm:"column:package_name"`
}
if err := session.Model(&model.PackageUsage{}).Select("id, package_name").Where("id IN ?", ids).Scan(&rows).Error; err != nil {
return nil, errors.Wrap(errors.CodeDatabaseError, err, "查询套餐名称失败")