更新
This commit is contained in:
@@ -31,10 +31,11 @@ var defaultMenus = []model.Menu{
|
||||
{ID: 18, ParentID: 8, Name: "Dashboard", Path: "/admin/dashboard", Component: "admin/dashboard/index", Title: "数据统计", Icon: "fas fa-chart-line", Sort: 1, Visible: true, RequireAuth: true, RequireAdmin: true},
|
||||
{ID: 9, ParentID: 8, Name: "AdminAudit", Path: "/admin/audit", Component: "admin/audit/list/index", Title: "审核管理", Icon: "fas fa-clipboard-check", Sort: 2, Visible: true, RequireAuth: true, RequireAdmin: true},
|
||||
{ID: 10, ParentID: 8, Name: "AdminAuditDetail", Path: "/admin/audit/detail/:id", Component: "admin/audit/detail/index", Title: "审核详情", Icon: "", Sort: 3, Visible: false, RequireAuth: true, RequireAdmin: true},
|
||||
{ID: 11, ParentID: 8, Name: "AdminConfig", Path: "/admin/config", Component: "admin/config/index", Title: "系统配置", Icon: "fas fa-sliders-h", Sort: 4, Visible: true, RequireAuth: true, RequireAdmin: true},
|
||||
{ID: 12, ParentID: 8, Name: "AdminMenu", Path: "/admin/menu", Component: "admin/menu/index", Title: "菜单管理", Icon: "fas fa-bars", Sort: 5, Visible: true, RequireAuth: true, RequireAdmin: true},
|
||||
{ID: 19, ParentID: 8, Name: "UserManage", Path: "/admin/users", Component: "admin/users/index", Title: "用户管理", Icon: "fas fa-user-shield", Sort: 6, Visible: true, RequireAuth: true, RequireAdmin: true},
|
||||
{ID: 20, ParentID: 8, Name: "SensitiveWord", Path: "/admin/sensitive", Component: "admin/sensitive/index", Title: "敏感词管理", Icon: "fas fa-shield-alt", Sort: 7, Visible: true, RequireAuth: true, RequireAdmin: true},
|
||||
{ID: 21, ParentID: 8, Name: "AdminBaseData", Path: "/admin/basedata", Component: "admin/basedata/index", Title: "基础数据", Icon: "fas fa-database", Sort: 4, Visible: true, RequireAuth: true, RequireAdmin: true},
|
||||
{ID: 11, ParentID: 8, Name: "AdminConfig", Path: "/admin/config", Component: "admin/config/index", Title: "系统配置", Icon: "fas fa-sliders-h", Sort: 5, Visible: true, RequireAuth: true, RequireAdmin: true},
|
||||
{ID: 12, ParentID: 8, Name: "AdminMenu", Path: "/admin/menu", Component: "admin/menu/index", Title: "菜单管理", Icon: "fas fa-bars", Sort: 6, Visible: true, RequireAuth: true, RequireAdmin: true},
|
||||
{ID: 19, ParentID: 8, Name: "UserManage", Path: "/admin/users", Component: "admin/users/index", Title: "用户管理", Icon: "fas fa-user-shield", Sort: 7, Visible: true, RequireAuth: true, RequireAdmin: true},
|
||||
{ID: 20, ParentID: 8, Name: "SensitiveWord", Path: "/admin/sensitive", Component: "admin/sensitive/index", Title: "敏感词管理", Icon: "fas fa-shield-alt", Sort: 8, Visible: true, RequireAuth: true, RequireAdmin: true},
|
||||
// 基本设置(管理员)
|
||||
{ID: 13, ParentID: 0, Name: "NormalSettings", Path: "/normalsettings", Component: "", Title: "基本设置", Icon: "fas fa-wrench", Sort: 5, Visible: true, RequireAuth: true, RequireAdmin: true, Redirect: "/normalsettings/usersettings"},
|
||||
{ID: 14, ParentID: 13, Name: "UserSettings", Path: "/normalsettings/usersettings", Component: "normalsettings/usersettings/list/index", Title: "用户设置", Icon: "fas fa-user-cog", Sort: 1, Visible: true, RequireAuth: true, RequireAdmin: true},
|
||||
@@ -47,12 +48,15 @@ var defaultMenus = []model.Menu{
|
||||
// InitDefaults 初始化默认菜单(不存在则创建)
|
||||
func (s *MenuService) InitDefaults() error {
|
||||
for _, m := range defaultMenus {
|
||||
var count int64
|
||||
s.db.Model(&model.Menu{}).Where("id = ? OR name = ?", m.ID, m.Name).Count(&count)
|
||||
if count == 0 {
|
||||
if err := s.db.Create(&m).Error; err != nil {
|
||||
var existing model.Menu
|
||||
err := s.db.Where("id = ? OR name = ?", m.ID, m.Name).First(&existing).Error
|
||||
if err != nil {
|
||||
if err := s.db.Select("*").Create(&m).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
} else if !m.Visible && existing.Visible {
|
||||
// 默认隐藏菜单(如详情页带 :id 参数、登录页)在库中若是显示状态,自动校正为隐藏
|
||||
s.db.Model(&existing).Update("visible", false)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
@@ -74,10 +78,19 @@ func (s *MenuService) GetMenuTree(isAdmin bool) ([]*model.MenuTree, error) {
|
||||
// GetAll 获取所有菜单(管理用,含隐藏)
|
||||
func (s *MenuService) GetAll() ([]model.Menu, error) {
|
||||
var list []model.Menu
|
||||
err := s.db.Order("parent_id, sort").Find(&list).Error
|
||||
err := s.db.Order("sort, id").Find(&list).Error
|
||||
return list, err
|
||||
}
|
||||
|
||||
// GetAllTree 获取所有菜单树结构(管理用,含隐藏)
|
||||
func (s *MenuService) GetAllTree() ([]*model.MenuTree, error) {
|
||||
var all []model.Menu
|
||||
if err := s.db.Order("sort, id").Find(&all).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return buildTree(all, 0), nil
|
||||
}
|
||||
|
||||
// GetByID 获取单个菜单
|
||||
func (s *MenuService) GetByID(id uint) (*model.Menu, error) {
|
||||
var m model.Menu
|
||||
@@ -97,6 +110,11 @@ func (s *MenuService) Update(m *model.Menu) error {
|
||||
return s.db.Save(m).Error
|
||||
}
|
||||
|
||||
// UpdateFields 更新菜单指定字段
|
||||
func (s *MenuService) UpdateFields(id uint, updates map[string]interface{}) error {
|
||||
return s.db.Model(&model.Menu{}).Where("id = ?", id).Updates(updates).Error
|
||||
}
|
||||
|
||||
// Delete 删除菜单(同时删除子菜单)
|
||||
func (s *MenuService) Delete(id uint) error {
|
||||
return s.db.Transaction(func(tx *gorm.DB) error {
|
||||
|
||||
Reference in New Issue
Block a user