fix: 修复菜单接口关联字段映射 (#71)

This commit is contained in:
ila
2026-08-27 09:20:44 +08:00
parent ef3ad272b5
commit ee4f87db50
2 changed files with 44 additions and 1 deletions
+1 -1
View File
@@ -19,7 +19,7 @@ type SysMenu struct {
Sort int `json:"sort" gorm:"size:4;"`
Visible string `json:"visible" gorm:"size:1;"`
IsFrame string `json:"isFrame" gorm:"size:1;DEFAULT:0;"`
SysApi []SysApi `json:"sysApi" gorm:"many2many:sys_menu_api_rule"`
SysApi []SysApi `json:"sysApi" gorm:"many2many:sys_menu_api_rule;foreignKey:MenuId;joinForeignKey:menu_id;references:Id;joinReferences:sys_api_id"`
Apis []int `json:"apis" gorm:"-"`
DataScope string `json:"dataScope" gorm:"-"`
Params string `json:"params" gorm:"-"`
+43
View File
@@ -0,0 +1,43 @@
package service
import (
"testing"
adminSDKService "github.com/go-admin-team/go-admin-core/sdk/service"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"git.ilapage.cn/OPC/chorus/admin/app/admin/models"
"git.ilapage.cn/OPC/chorus/admin/app/admin/service/dto"
)
func TestSysMenuGetPagePreloadsAPIsUsingMigrationJoinColumns(t *testing.T) {
db, err := gorm.Open(sqlite.Open("file:"+t.Name()+"?mode=memory&cache=shared"), &gorm.Config{})
if err != nil {
t.Fatal(err)
}
statements := []string{
`CREATE TABLE sys_menu (menu_id INTEGER PRIMARY KEY, title TEXT, sort INTEGER, parent_id INTEGER, deleted_at DATETIME)`,
`CREATE TABLE sys_api (id INTEGER PRIMARY KEY, title TEXT, deleted_at DATETIME)`,
`CREATE TABLE sys_menu_api_rule (menu_id INTEGER NOT NULL, sys_api_id INTEGER NOT NULL, PRIMARY KEY (menu_id, sys_api_id))`,
`INSERT INTO sys_menu (menu_id, title, sort, parent_id) VALUES (1, '菜单结构', 1, 0)`,
`INSERT INTO sys_api (id, title) VALUES (7, '菜单列表')`,
`INSERT INTO sys_menu_api_rule (menu_id, sys_api_id) VALUES (1, 7)`,
}
for _, statement := range statements {
if err := db.Exec(statement).Error; err != nil {
t.Fatal(err)
}
}
menuService := SysMenu{Service: adminSDKService.Service{Orm: db}}
var menus []models.SysMenu
menuService.GetPage(&dto.SysMenuGetPageReq{}, &menus)
if menuService.Error != nil {
t.Fatalf("get menu page: %v", menuService.Error)
}
if len(menus) != 1 || len(menus[0].SysApi) != 1 || menus[0].SysApi[0].Id != 7 {
t.Fatalf("menus = %#v", menus)
}
}