做字典管理

This commit is contained in:
2026-09-28 23:16:26 +08:00
parent 7c75edcc61
commit c49e8d0d3f
59 changed files with 5005 additions and 4673 deletions
+1
View File
@@ -14,6 +14,7 @@ func Register() {
RegisterPaymentRoutes()
RegisterProductRoutes()
RegisterWechatMpRoutes()
RegisterDictRoutes()
}
// RegisterProductRoutes 注册租户端「产品购买」路由。
+24
View File
@@ -0,0 +1,24 @@
package backend
import (
"server/controllers"
beego "github.com/beego/beego/v2/server/web"
)
// RegisterDictRoutes 注册租户端数据字典路由(表结构见 docs/sql/create_dict.sql)。
// 租户隔离由 JWT 里的租户ID 完成,前端不传 tenant_id。
func RegisterDictRoutes() {
// 字典列表(字典类型)
beego.Router("/backend/dict/types", &controllers.BackendDictController{}, "get:ListTypes;post:CreateType")
beego.Router("/backend/dict/types/:id", &controllers.BackendDictController{}, "put:UpdateType;delete:DeleteType")
// 字典项
beego.Router("/backend/dict/items", &controllers.BackendDictController{}, "get:ListItems;post:CreateItem")
beego.Router("/backend/dict/items/:id", &controllers.BackendDictController{}, "put:UpdateItem;delete:DeleteItem")
beego.Router("/backend/dict/items/:id/status", &controllers.BackendDictController{}, "post:ToggleItemStatus")
// 业务读取:单个编码 / 批量(指定编码)/ 全量(前端预热)
beego.Router("/backend/dict/options/:code", &controllers.BackendDictController{}, "get:Options")
beego.Router("/backend/dict/options", &controllers.BackendDictController{}, "get:OptionsAll;post:OptionsBatch")
}
+15
View File
@@ -0,0 +1,15 @@
package backend
import "testing"
// TestRegisterDictRoutes 确认字典路由能完成注册且不与既有路由冲突。
// beego 在注册重复/歧义路由或非法方法名时会 panic,这里通过实际注册来兜住这类错误。
func TestRegisterDictRoutes(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Fatalf("注册租户端字典路由失败: %v", r)
}
}()
RegisterDictRoutes()
}
+23
View File
@@ -0,0 +1,23 @@
package platform
import (
"server/controllers"
beego "github.com/beego/beego/v2/server/web"
)
// RegisterDictRoutes 注册平台端数据字典路由(表结构见 docs/sql/create_dict.sql)。
func RegisterDictRoutes() {
// 字典列表(字典类型)
beego.Router("/platform/dict/types", &controllers.PlatformDictController{}, "get:ListTypes;post:CreateType")
beego.Router("/platform/dict/types/:id", &controllers.PlatformDictController{}, "put:UpdateType;delete:DeleteType")
// 字典项
beego.Router("/platform/dict/items", &controllers.PlatformDictController{}, "get:ListItems;post:CreateItem")
beego.Router("/platform/dict/items/:id", &controllers.PlatformDictController{}, "put:UpdateItem;delete:DeleteItem")
beego.Router("/platform/dict/items/:id/status", &controllers.PlatformDictController{}, "post:ToggleItemStatus")
// 业务读取:单个编码 / 批量(指定编码)/ 全量(前端预热)
beego.Router("/platform/dict/options/:code", &controllers.PlatformDictController{}, "get:Options")
beego.Router("/platform/dict/options", &controllers.PlatformDictController{}, "get:OptionsAll;post:OptionsBatch")
}
+15
View File
@@ -0,0 +1,15 @@
package platform
import "testing"
// TestRegisterDictRoutes 确认字典路由能完成注册且不与既有路由冲突。
// beego 在注册重复/歧义路由或非法方法名时会 panic,这里通过实际注册来兜住这类错误。
func TestRegisterDictRoutes(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Fatalf("注册平台端字典路由失败: %v", r)
}
}()
RegisterDictRoutes()
}
+3
View File
@@ -14,6 +14,9 @@ func Register() {
// 微信公众号(服务号):配置 / 绑定 / 粉丝 / 推送 / 微信服务器回调
RegisterWechatMpRoutes()
// 数据字典(字典列表 / 字典项)
RegisterDictRoutes()
// 统一认证中心 - 租户登录策略配置
beego.Router("/platform/authConfig/detail", &controllers.PlatformAuthConfigController{}, "get:Detail")
beego.Router("/platform/authConfig/save", &controllers.PlatformAuthConfigController{}, "post:Save")