package model import "time" // MerchantStatus 商户状态 type MerchantStatus string const ( MerchantStatusPending MerchantStatus = "PENDING" MerchantStatusActive MerchantStatus = "ACTIVE" MerchantStatusFrozen MerchantStatus = "FROZEN" MerchantStatusRejected MerchantStatus = "REJECTED" ) // AuditStatus 进件审核状态 type AuditStatus string const ( AuditStatusSubmitting AuditStatus = "SUBMITTING" AuditStatusReviewing AuditStatus = "REVIEWING" AuditStatusApproved AuditStatus = "APPROVED" AuditStatusRejected AuditStatus = "REJECTED" ) // Merchant 商户 type Merchant struct { ID uint64 `gorm:"column:id;primaryKey;autoIncrement"` MerchantID string `gorm:"column:merchant_id;uniqueIndex;size:32;not null"` AppID string `gorm:"column:app_id;size:32;not null;default:'';index"` MerchantName string `gorm:"column:merchant_name;size:128;not null"` LicenseNo string `gorm:"column:license_no;size:64"` LegalPerson string `gorm:"column:legal_person;size:64"` BankAccount string `gorm:"column:bank_account;size:64"` // 脱敏 ChannelMerchantID string `gorm:"column:channel_merchant_id;size:64"` Status MerchantStatus `gorm:"column:status;size:20;not null;default:PENDING;index"` CreatedAt time.Time `gorm:"column:created_at;autoCreateTime:milli"` UpdatedAt time.Time `gorm:"column:updated_at;autoUpdateTime:milli"` } func (Merchant) TableName() string { return "merchant" } // MerchantApplication 商户进件申请 // 一条记录对应一个商户在一个渠道的进件,(merchant_id, channel_code) 唯一 type MerchantApplication struct { ID uint64 `gorm:"column:id;primaryKey;autoIncrement"` ApplicationID string `gorm:"column:application_id;uniqueIndex;size:32;not null"` MerchantID string `gorm:"column:merchant_id;size:32;not null;index"` ChannelCode string `gorm:"column:channel_code;size:32;not null"` ChannelMerchantID string `gorm:"column:channel_merchant_id;size:64;not null;default:''"` SubmitData JSONMap `gorm:"column:submit_data;type:json"` AuditStatus AuditStatus `gorm:"column:audit_status;size:20;not null;default:SUBMITTING"` RejectReason string `gorm:"column:reject_reason;size:512"` SubmittedAt time.Time `gorm:"column:submitted_at"` AuditedAt *time.Time `gorm:"column:audited_at"` CreatedAt time.Time `gorm:"column:created_at;autoCreateTime:milli"` UpdatedAt time.Time `gorm:"column:updated_at;autoUpdateTime:milli"` } func (MerchantApplication) TableName() string { return "merchant_application" }