feat: integrate unified payment and wallet refunds
This commit is contained in:
@@ -153,7 +153,7 @@ func writeDeliveryResourceContract(output io.Writer) error {
|
||||
}
|
||||
|
||||
func writeMockData() error {
|
||||
config.New("platform")
|
||||
config.New("heqi")
|
||||
if config.Spec.Databases == nil {
|
||||
return fmt.Errorf("database configuration is required")
|
||||
}
|
||||
@@ -175,7 +175,7 @@ func writeMockData() error {
|
||||
}
|
||||
|
||||
func migrateDatabase() error {
|
||||
config.New("platform")
|
||||
config.New("heqi")
|
||||
if config.Spec.Databases == nil {
|
||||
return fmt.Errorf("database configuration is required")
|
||||
}
|
||||
@@ -196,6 +196,9 @@ func migrateDatabase() error {
|
||||
if err := prepareAdditiveMigrations(migrationDatabase, driver); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := resetLegacyPaymentSchema(migrationDatabase, driver); err != nil {
|
||||
return err
|
||||
}
|
||||
const legacyPhoneIndex = "idx_platform_account_phone"
|
||||
if migrationDatabase.Migrator().HasIndex(&models.PlatformAccount{}, legacyPhoneIndex) {
|
||||
if err := migrationDatabase.Migrator().DropIndex(&models.PlatformAccount{}, legacyPhoneIndex); err != nil {
|
||||
@@ -213,6 +216,30 @@ func migrateDatabase() error {
|
||||
return initdb.New(databaseService)
|
||||
}
|
||||
|
||||
// resetLegacyPaymentSchema 执行经业务明确授权的开发期破坏性支付模型重置,不迁移旧支付或退款历史。
|
||||
func resetLegacyPaymentSchema(databaseService *gorm.DB, driver string) error {
|
||||
statements := []string{}
|
||||
if driver == "postgres" {
|
||||
statements = append(statements,
|
||||
`DROP TABLE IF EXISTS "wallet_refund" CASCADE`,
|
||||
`DROP TABLE IF EXISTS "wallet_payment" CASCADE`,
|
||||
`DROP TABLE IF EXISTS "gasorder_payment" CASCADE`,
|
||||
)
|
||||
} else {
|
||||
statements = append(statements,
|
||||
`DROP TABLE IF EXISTS wallet_refund`,
|
||||
`DROP TABLE IF EXISTS wallet_payment`,
|
||||
`DROP TABLE IF EXISTS gasorder_payment`,
|
||||
)
|
||||
}
|
||||
for _, statement := range statements {
|
||||
if err := databaseService.Exec(statement).Error; err != nil {
|
||||
return fmt.Errorf("reset legacy payment schema: %w", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// prepareAdditiveMigrations 先处理无法由 GORM AutoMigrate 安全完成的新增非空字段。
|
||||
// 旧轨迹没有服务端接收时间时,以定位发生时间(再退化到创建时间)回填,
|
||||
// 避免直接 ADD NOT NULL 因历史行存在而中断整库迁移。
|
||||
|
||||
Reference in New Issue
Block a user