增加气站历史账户显式修复与审计
This commit is contained in:
@@ -3,6 +3,8 @@ package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
@@ -20,6 +22,7 @@ import (
|
||||
gaslogic "git.apinb.com/heqiapp/platforms/backend/api/internal/logic/gas"
|
||||
"git.apinb.com/heqiapp/platforms/backend/api/internal/logic/platform"
|
||||
"git.apinb.com/heqiapp/platforms/backend/api/internal/models"
|
||||
"git.apinb.com/heqiapp/platforms/backend/api/internal/repair"
|
||||
"git.apinb.com/heqiapp/platforms/backend/api/internal/routers"
|
||||
"git.apinb.com/heqiapp/platforms/backend/api/internal/seed"
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -85,6 +88,11 @@ func main() {
|
||||
os.Exit(1)
|
||||
}
|
||||
fmt.Printf("mock refund reviewers repaired: %d\n", count)
|
||||
case "repair-legacy-gas-account":
|
||||
if err := repairLegacyGasAccount(os.Args[2:], os.Stdout); err != nil {
|
||||
fmt.Fprintln(os.Stderr, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
case "migrate":
|
||||
if err := migrateDatabase(); err != nil {
|
||||
fmt.Fprintln(os.Stderr, err)
|
||||
@@ -99,7 +107,7 @@ func main() {
|
||||
}
|
||||
|
||||
func printUsage() {
|
||||
fmt.Fprintln(os.Stderr, "usage: platform-cli <version|resource-contract|gas-resource-contract|delivery-resource-contract|migrate|mock-data|repair-mock-gasorder-status|repair-mock-ec-order|repair-mock-track-point|repair-mock-refund-reviewer>")
|
||||
fmt.Fprintln(os.Stderr, "usage: platform-cli <version|resource-contract|gas-resource-contract|delivery-resource-contract|migrate|mock-data|repair-mock-gasorder-status|repair-mock-ec-order|repair-mock-track-point|repair-mock-refund-reviewer|repair-legacy-gas-account>")
|
||||
}
|
||||
|
||||
type route struct {
|
||||
@@ -293,6 +301,49 @@ func repairMockRefundReviewer() (int64, error) {
|
||||
return count, nil
|
||||
}
|
||||
|
||||
// repairLegacyGasAccount 显式修复唯一历史 010 气站账号,并将前后值写入操作审计表。
|
||||
func repairLegacyGasAccount(arguments []string, output io.Writer) error {
|
||||
flags := flag.NewFlagSet("repair-legacy-gas-account", flag.ContinueOnError)
|
||||
flags.SetOutput(io.Discard)
|
||||
operator := flags.String("operator", "", "执行修复的平台账户用户名")
|
||||
displayName := flags.String("display-name", "", "修复后的显示名称")
|
||||
dryRun := flags.Bool("dry-run", false, "只读核对目标,不执行修复")
|
||||
if err := flags.Parse(arguments); err != nil {
|
||||
return fmt.Errorf("parse repair arguments: %w", err)
|
||||
}
|
||||
if strings.TrimSpace(*operator) == "" || strings.TrimSpace(*displayName) == "" {
|
||||
return errors.New("repair-legacy-gas-account requires --operator and --display-name")
|
||||
}
|
||||
|
||||
config.New(serviceKey)
|
||||
if config.Spec.Databases == nil {
|
||||
return fmt.Errorf("database configuration is required")
|
||||
}
|
||||
databaseService, err := database.NewDatabase(
|
||||
config.Spec.Databases.Driver,
|
||||
config.Spec.Databases.Source,
|
||||
dbsql.SetOptions(nil),
|
||||
)
|
||||
if err != nil {
|
||||
return fmt.Errorf("connect database: %w", err)
|
||||
}
|
||||
if *dryRun {
|
||||
result, err := repair.InspectLegacyGasAccount(databaseService, *operator, *displayName)
|
||||
if err != nil {
|
||||
return fmt.Errorf("inspect legacy gas account: %w", err)
|
||||
}
|
||||
return json.NewEncoder(output).Encode(result)
|
||||
}
|
||||
if err := databaseService.AutoMigrate(&models.AuditOperationLog{}); err != nil {
|
||||
return fmt.Errorf("migrate operation audit table: %w", err)
|
||||
}
|
||||
result, err := repair.RepairLegacyGasAccount(databaseService, *operator, *displayName)
|
||||
if err != nil {
|
||||
return fmt.Errorf("repair legacy gas account: %w", err)
|
||||
}
|
||||
return json.NewEncoder(output).Encode(result)
|
||||
}
|
||||
|
||||
func migrateDatabase() error {
|
||||
config.New(serviceKey)
|
||||
options := &types.SqlOptions{
|
||||
|
||||
Reference in New Issue
Block a user