package model import "time" // ReconciliationStatus 对账单状态 type ReconciliationStatus string const ( ReconciliationStatusPending ReconciliationStatus = "PENDING" ReconciliationStatusMatched ReconciliationStatus = "MATCHED" ReconciliationStatusException ReconciliationStatus = "EXCEPTION" ) // ReconciliationReport 对账报告 type ReconciliationReport struct { ID uint64 `gorm:"column:id;primaryKey;autoIncrement"` AppID string `gorm:"column:app_id;size:32;not null;index:idx_app_date"` ChannelCode string `gorm:"column:channel_code;size:32;not null"` BillDate string `gorm:"column:bill_date;size:10;not null;index:idx_app_date"` // yyyy-MM-dd TotalCount int `gorm:"column:total_count;not null;default:0"` TotalAmount int64 `gorm:"column:total_amount;not null;default:0"` // 分 MatchedCount int `gorm:"column:matched_count;not null;default:0"` ExceptionCount int `gorm:"column:exception_count;not null;default:0"` Status ReconciliationStatus `gorm:"column:status;size:20;not null;default:PENDING"` CreatedAt time.Time `gorm:"column:created_at;autoCreateTime:milli"` UpdatedAt time.Time `gorm:"column:updated_at;autoUpdateTime:milli"` } func (ReconciliationReport) TableName() string { return "reconciliation_report" } // ReconciliationException 对账异常明细 type ReconciliationException struct { ID uint64 `gorm:"column:id;primaryKey;autoIncrement"` ReportID uint64 `gorm:"column:report_id;not null;index"` TradeNo string `gorm:"column:trade_no;size:32;index"` ChannelBillNo string `gorm:"column:channel_bill_no;size:64"` ExceptionType string `gorm:"column:exception_type;size:32;not null"` // MISSING_LOCAL/MISSING_CHANNEL/AMOUNT_MISMATCH LocalAmount int64 `gorm:"column:local_amount"` ChannelAmount int64 `gorm:"column:channel_amount"` Remark string `gorm:"column:remark;size:256"` CreatedAt time.Time `gorm:"column:created_at;autoCreateTime:milli"` } func (ReconciliationException) TableName() string { return "reconciliation_exception" }