- 新增区域状态字段与增删改查接口,支持区域启用/停用 - 重构实体字段JSON标签为camelCase格式统一接口规范 - 优化入库、盘点、装箱流程的交互与提示文案 - 新增装箱管理功能,支持合同号关联与装箱编辑 - 调整前端菜单与帮助文档适配业务场景变更
70 lines
1.7 KiB
Go
70 lines
1.7 KiB
Go
//go:build entgenerate
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"strings"
|
|
|
|
"entgo.io/ent/entc"
|
|
"entgo.io/ent/entc/gen"
|
|
)
|
|
|
|
// camel 把 snake_case 的字段名/边名转成 camelCase。
|
|
// 项目约定:接口 JSON 一律 camelCase(见《技术约束.md》),
|
|
// 而 ent 默认生成的 json tag 是 snake_case,这里统一覆盖。
|
|
func camel(s string) string {
|
|
parts := strings.Split(s, "_")
|
|
for i := 1; i < len(parts); i++ {
|
|
if parts[i] != "" {
|
|
parts[i] = strings.ToUpper(parts[i][:1]) + parts[i][1:]
|
|
}
|
|
}
|
|
return strings.Join(parts, "")
|
|
}
|
|
|
|
// camelJSON 扩展:为所有字段与边设置 camelCase 的 json tag。
|
|
type camelJSON struct {
|
|
entc.DefaultExtension
|
|
}
|
|
|
|
func (camelJSON) Hooks() []gen.Hook {
|
|
return []gen.Hook{
|
|
func(next gen.Generator) gen.Generator {
|
|
return gen.GenerateFunc(func(g *gen.Graph) error {
|
|
for _, n := range g.Nodes {
|
|
for _, f := range n.Fields {
|
|
// schema 中显式声明的标签(如 json:"-")不覆盖
|
|
if f.StructTag != "" && strings.Contains(f.StructTag, `json:"-"`) {
|
|
continue
|
|
}
|
|
f.StructTag = fmt.Sprintf("json:%q", camel(f.Name)+",omitempty")
|
|
}
|
|
for _, e := range n.Edges {
|
|
if e.StructTag != "" && strings.Contains(e.StructTag, `json:"-"`) {
|
|
continue
|
|
}
|
|
e.StructTag = fmt.Sprintf("json:%q", camel(e.Name)+",omitempty")
|
|
}
|
|
}
|
|
return next.Generate(g)
|
|
})
|
|
},
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
err := entc.Generate("./schema", &gen.Config{
|
|
Package: "bj_power_wms/ent",
|
|
Target: "./ent",
|
|
Features: []gen.Feature{
|
|
gen.FeatureVersionedMigration,
|
|
gen.FeatureUpsert,
|
|
},
|
|
}, entc.Extensions(camelJSON{}))
|
|
if err != nil {
|
|
log.Fatalf("running ent codegen: %v", err)
|
|
}
|
|
}
|