优化表结构,重构模型,重新实现基于白银网关的提取节点流程
This commit is contained in:
172
cmd/gen/main.go
172
cmd/gen/main.go
@@ -1,11 +1,10 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"strings"
|
||||
m "platform/web/models"
|
||||
|
||||
"gorm.io/driver/postgres"
|
||||
"gorm.io/gen"
|
||||
"gorm.io/gen/field"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/schema"
|
||||
)
|
||||
@@ -26,149 +25,42 @@ func main() {
|
||||
|
||||
g = gen.NewGenerator(gen.Config{
|
||||
OutPath: "web/queries",
|
||||
ModelPkgPath: "models",
|
||||
FieldNullable: true,
|
||||
FieldSignable: true,
|
||||
FieldWithTypeTag: true,
|
||||
Mode: gen.WithDefaultQuery | gen.WithoutContext,
|
||||
})
|
||||
g.UseDB(db)
|
||||
|
||||
// 公共参数
|
||||
common := []gen.ModelOpt{
|
||||
gen.FieldModify(func(field gen.Field) gen.Field {
|
||||
switch {
|
||||
case field.Type == "*time.Time":
|
||||
field.Type = "*orm.LocalDateTime"
|
||||
case field.Type == "time.Time":
|
||||
field.Type = "orm.LocalDateTime"
|
||||
case strings.Contains(field.Tags(), "numeric"):
|
||||
field.Type = "decimal.Decimal"
|
||||
}
|
||||
return field
|
||||
}),
|
||||
gen.FieldRename("contact_qq", "ContactQQ"),
|
||||
gen.FieldRename("ua", "UA"),
|
||||
}
|
||||
|
||||
// 生成模型
|
||||
customs := make(map[string]any)
|
||||
|
||||
// resource
|
||||
resourceShort := g.GenerateModel("resource_short", common...)
|
||||
customs["resource_short"] = resourceShort
|
||||
|
||||
resourceLong := g.GenerateModel("resource_long", common...)
|
||||
customs["resource_long"] = resourceLong
|
||||
|
||||
resource := g.GenerateModel("resource", append(common,
|
||||
gen.FieldRelate(field.HasOne, "Short", resourceShort, &field.RelateConfig{
|
||||
RelatePointer: true,
|
||||
GORMTag: field.GormTag{
|
||||
"foreignKey": []string{"ResourceID"},
|
||||
"references": []string{"ID"},
|
||||
},
|
||||
}),
|
||||
gen.FieldRelate(field.HasOne, "Long", resourceLong, &field.RelateConfig{
|
||||
RelatePointer: true,
|
||||
GORMTag: field.GormTag{
|
||||
"foreignKey": []string{"ResourceID"},
|
||||
"references": []string{"ID"},
|
||||
},
|
||||
}),
|
||||
)...)
|
||||
customs["resource"] = resource
|
||||
|
||||
// trade
|
||||
trade := g.GenerateModel("trade", common...)
|
||||
customs["trade"] = trade
|
||||
|
||||
refund := g.GenerateModel("refund", common...)
|
||||
customs["refund"] = refund
|
||||
|
||||
bill := g.GenerateModel("bill", append(common,
|
||||
gen.FieldRelate(field.BelongsTo, "Trade", trade, &field.RelateConfig{
|
||||
RelatePointer: true,
|
||||
GORMTag: field.GormTag{
|
||||
"foreignKey": []string{"TradeID"},
|
||||
},
|
||||
}),
|
||||
gen.FieldRelate(field.BelongsTo, "Refund", refund, &field.RelateConfig{
|
||||
RelatePointer: true,
|
||||
GORMTag: field.GormTag{
|
||||
"foreignKey": []string{"RefundID"},
|
||||
},
|
||||
}),
|
||||
gen.FieldRelate(field.BelongsTo, "Resource", resource, &field.RelateConfig{
|
||||
RelatePointer: true,
|
||||
GORMTag: field.GormTag{
|
||||
"foreignKey": []string{"ResourceID"},
|
||||
},
|
||||
}),
|
||||
)...)
|
||||
customs["bill"] = bill
|
||||
|
||||
// proxy
|
||||
edge := g.GenerateModel("edge", common...)
|
||||
customs["edge"] = edge
|
||||
|
||||
proxy := g.GenerateModel("proxy", append(common,
|
||||
gen.FieldRelate(field.HasMany, "Edges", edge, &field.RelateConfig{
|
||||
GORMTag: field.GormTag{
|
||||
"foreignKey": []string{"ProxyID"},
|
||||
"references": []string{"ID"},
|
||||
},
|
||||
}),
|
||||
)...)
|
||||
customs["proxy"] = proxy
|
||||
|
||||
// session
|
||||
user := g.GenerateModel("user", common...)
|
||||
customs["user"] = user
|
||||
|
||||
admin := g.GenerateModel("admin", common...)
|
||||
customs["admin"] = admin
|
||||
|
||||
client := g.GenerateModel("client", common...)
|
||||
customs["client"] = client
|
||||
|
||||
session := g.GenerateModel("session", append(common,
|
||||
gen.FieldRelate(field.BelongsTo, "User", user, &field.RelateConfig{
|
||||
RelatePointer: true,
|
||||
GORMTag: field.GormTag{
|
||||
"foreignKey": []string{"UserID"},
|
||||
},
|
||||
}),
|
||||
gen.FieldRelate(field.BelongsTo, "Admin", admin, &field.RelateConfig{
|
||||
RelatePointer: true,
|
||||
GORMTag: field.GormTag{
|
||||
"foreignKey": []string{"AdminID"},
|
||||
},
|
||||
}),
|
||||
gen.FieldRelate(field.BelongsTo, "Client", client, &field.RelateConfig{
|
||||
RelatePointer: true,
|
||||
GORMTag: field.GormTag{
|
||||
"foreignKey": []string{"ClientID"},
|
||||
"belongsTo": []string{"ID"},
|
||||
},
|
||||
}),
|
||||
)...)
|
||||
customs["session"] = session
|
||||
|
||||
// 生成表结构
|
||||
tables, _ := db.Migrator().GetTables()
|
||||
models := make([]any, len(tables))
|
||||
for i, name := range tables {
|
||||
if customs[name] != nil {
|
||||
models[i] = customs[name]
|
||||
} else {
|
||||
models[i] = g.GenerateModel(name, common...)
|
||||
}
|
||||
}
|
||||
|
||||
g.ApplyBasic(models...)
|
||||
|
||||
// 生成查询
|
||||
|
||||
g.ApplyBasic(
|
||||
m.Admin{},
|
||||
m.AdminRole{},
|
||||
m.Announcement{},
|
||||
m.Bill{},
|
||||
m.Channel{},
|
||||
m.Client{},
|
||||
m.Coupon{},
|
||||
m.Edge{},
|
||||
m.LinkAdminRole{},
|
||||
m.LinkAdminRolePermission{},
|
||||
m.LinkClientPermission{},
|
||||
m.LinkUserRole{},
|
||||
m.LinkUserRolePermission{},
|
||||
m.LogsLogin{},
|
||||
m.LogsRequest{},
|
||||
m.LogsUserBandwidth{},
|
||||
m.LogsUserUsage{},
|
||||
m.Permission{},
|
||||
m.Product{},
|
||||
m.Proxy{},
|
||||
m.Refund{},
|
||||
m.Resource{},
|
||||
m.ResourceLong{},
|
||||
m.ResourceShort{},
|
||||
m.Session{},
|
||||
m.Trade{},
|
||||
m.User{},
|
||||
m.UserRole{},
|
||||
m.Whitelist{},
|
||||
)
|
||||
g.Execute()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user