From f5d9a22f83d8490cbcf0a08e95562096465b4c66 Mon Sep 17 00:00:00 2001 From: zhangwenjian Date: Mon, 31 May 2021 23:37:04 +0800 Subject: [PATCH] =?UTF-8?q?perf=F0=9F=91=8C=20=E8=B0=83=E6=95=B4=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/service/sys_menu.go | 55 ++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/app/admin/service/sys_menu.go b/app/admin/service/sys_menu.go index 6cf75da9..208aff39 100644 --- a/app/admin/service/sys_menu.go +++ b/app/admin/service/sys_menu.go @@ -9,6 +9,7 @@ import ( "go-admin/app/admin/models" "go-admin/app/admin/service/dto" cDto "go-admin/common/dto" + cModels "go-admin/common/models" "github.com/go-admin-team/go-admin-core/sdk/service" ) @@ -18,24 +19,25 @@ type SysMenu struct { } // GetSysMenuPage 获取SysMenu列表 -func (e *SysMenu) GetSysMenuPage(c *dto.SysMenuSearch) (*[]models.SysMenu, error) { - var m = make([]models.SysMenu, 0) - var err error +func (e *SysMenu) GetSysMenuPage(c *dto.SysMenuSearch, menus *[]models.SysMenu) *SysMenu { var menu = make([]models.SysMenu, 0) - err = e.getSysMenuPage(c, &menu) + err := e.getSysMenuPage(c, &menu).Error + if err != nil { + _ = e.AddError(err) + return e + } for i := 0; i < len(menu); i++ { if menu[i].ParentId != 0 { continue } menusInfo := menuCall(&menu, menu[i]) - - m = append(m, menusInfo) + *menus = append(*menus, menusInfo) } - return &m, err + return e } -// getSysMenuPage 菜单列表 -func (e *SysMenu) getSysMenuPage(c *dto.SysMenuSearch, list *[]models.SysMenu) error { +// getSysMenuPage 菜单分页列表 +func (e *SysMenu) getSysMenuPage(c *dto.SysMenuSearch, list *[]models.SysMenu) *SysMenu { var err error var data models.SysMenu @@ -46,14 +48,15 @@ func (e *SysMenu) getSysMenuPage(c *dto.SysMenuSearch, list *[]models.SysMenu) e ). Find(list).Error if err != nil { - e.Log.Errorf("db error:%s", err) - return err + e.Log.Errorf("getSysMenuPage error:%s", err) + _ = e.AddError(err) + return e } - return nil + return e } // GetSysMenu 获取SysMenu对象 -func (e *SysMenu) GetSysMenu(d *dto.SysMenuById, model *models.SysMenu) error { +func (e *SysMenu) GetSysMenu(d *dto.SysMenuById, model *models.SysMenu) *SysMenu { var err error var data models.SysMenu @@ -62,19 +65,21 @@ func (e *SysMenu) GetSysMenu(d *dto.SysMenuById, model *models.SysMenu) error { err = db.Error if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { err = errors.New("查看对象不存在或无权查看") - e.Log.Errorf("db error:%s", err) - return err + e.Log.Errorf("GetSysMenu error:%s", err) + _ = e.AddError(err) + return e } - if db.Error != nil { + if err != nil { e.Log.Errorf("db error:%s", err) - return err + _ = e.AddError(err) + return e } apis := make([]int, 0) for _, v := range model.SysApi { apis = append(apis, v.Id) } model.Apis = apis - return nil + return e } // InsertSysMenu 创建SysMenu对象 @@ -132,8 +137,7 @@ func (e *SysMenu) RemoveSysMenu(d *dto.SysMenuById) *SysMenu { var err error var data models.SysMenu - db := e.Orm.Model(&data). - Where(d.Ids).Delete(&data) + db := e.Orm.Model(&data).Delete(&data, d.Ids) if db.Error != nil { err = db.Error e.Log.Errorf("Delete error: %s", err) @@ -239,8 +243,9 @@ func menuLabelCall(elist *[]models.SysMenu, dept dto.MenuLabel) dto.MenuLabel { return dept } -func menuCall(menulist *[]models.SysMenu, menu models.SysMenu) models.SysMenu { - list := *menulist +// menuCall 构建菜单树 +func menuCall(menuList *[]models.SysMenu, menu models.SysMenu) models.SysMenu { + list := *menuList min := make([]models.SysMenu, 0) for j := 0; j < len(list); j++ { @@ -266,14 +271,12 @@ func menuCall(menulist *[]models.SysMenu, menu models.SysMenu) models.SysMenu { mi.CreatedAt = list[j].CreatedAt mi.Children = []models.SysMenu{} - if mi.MenuType != "F" { - ms := menuCall(menulist, mi) + if mi.MenuType != cModels.Button { + ms := menuCall(menuList, mi) min = append(min, ms) - } else { min = append(min, mi) } - } menu.Children = min return menu