Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
- 新增六对成对迁移 000232–000237:H5 弹窗类型、退款结算标识与申请人备注、优先轮询事实字段与两个新终态、通道阈值命中留痕、手机号最近解绑人、提现资格校验留痕 - 退款:原因必填与申请人备注、来源支付与渠道流水冻结、线下处理流水号补录审计、按订单查询可选退款方式、企微审批材料补齐且新增字段缺失映射即明确失败 - 优先轮询:人工关闭、有效期到期独立周期任务、失败与过期人工重触发、事实字段与异常重试查询、资产解析端点只读投影 - 通道阈值:命中事实同事务留痕与命中记录查询;员工账单:列表筛选与详情投影;商户池:列表投影与统计周期语义;H5:弹窗类型与类别排序 - 手机号:有效关联数量与最近解绑人、短信验证码失败次数限制;导出:佣金明细十五列与报表序号列 - 时间筛选:三处新增筛选纳入统一严格解析契约,员工账单产生时间参数改名 - 同步 12 份主 Spec 需求、两端点与异步任务证据链,门禁 context-health 与 OpenSpec 校验通过
34 lines
2.5 KiB
Go
34 lines
2.5 KiB
Go
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"`
|
||
// InvalidatorNameSnapshot 是解绑当时的后台账号名称快照,只读投影字段。
|
||
// 仅 status = 0 时写入;有效关系为空,MUST NOT 以创建人或更新时间填充(账号改名后无法由账号ID反推名称)。
|
||
InvalidatorNameSnapshot string `gorm:"column:invalidator_name_snapshot;type:varchar(100);not null;default:'';comment:最近解绑人名称快照,仅已失效关系写入" json:"invalidator_name_snapshot"`
|
||
}
|
||
|
||
// TableName 指定手机号—资产关联表名。
|
||
func (PhoneAssetAssociation) TableName() string {
|
||
return "tb_phone_asset_association"
|
||
}
|