60 lines
2.7 KiB
Go
60 lines
2.7 KiB
Go
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" }
|