From 83b219458f95c29909449bfa9ce256506bced517 Mon Sep 17 00:00:00 2001 From: zhangwenjian Date: Fri, 29 Jul 2022 18:44:22 +0800 Subject: [PATCH] =?UTF-8?q?fix=F0=9F=90=9B:=20=20=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E4=B8=ADpaths=E6=9C=AA=E8=AE=BE=E7=BD=AE=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/service/sys_menu.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/admin/service/sys_menu.go b/app/admin/service/sys_menu.go index e2d8a35e..26162f8a 100644 --- a/app/admin/service/sys_menu.go +++ b/app/admin/service/sys_menu.go @@ -4,6 +4,7 @@ import ( "errors" "github.com/go-admin-team/go-admin-core/sdk/pkg" "gorm.io/gorm" + "strings" "go-admin/app/admin/models" "go-admin/app/admin/service/dto" @@ -92,6 +93,11 @@ func (e *SysMenu) Insert(c *dto.SysMenuInsertReq) *SysMenu { _ = e.AddError(err) } c.MenuId = data.MenuId + err = e.initPaths(&data) + if err != nil { + e.Log.Errorf("db error:%s", err) + _ = e.AddError(err) + } return e } @@ -127,6 +133,7 @@ func (e *SysMenu) Update(c *dto.SysMenuUpdateReq) *SysMenu { var alist = make([]models.SysApi, 0) var model = models.SysMenu{} tx.Preload("SysApi").First(&model, c.GetId()) + oldPath := model.Paths tx.Where("id in ?", c.Apis).Find(&alist) err = tx.Model(&model).Association("SysApi").Delete(model.SysApi) if err != nil { @@ -146,6 +153,12 @@ func (e *SysMenu) Update(c *dto.SysMenuUpdateReq) *SysMenu { _ = e.AddError(errors.New("无权更新该数据")) return e } + var menuList []models.SysMenu + tx.Where("paths like ?", oldPath+"%").Find(&menuList) + for _, v := range menuList { + v.Paths = strings.Replace(v.Paths, oldPath, model.Paths, 1) + tx.Model(&v).Update("paths", v.Paths) + } return e } @@ -331,7 +344,7 @@ func (e *SysMenu) getByRoleName(roleName string) ([]models.SysMenu, error) { MenuList = data } else { role.RoleKey = roleName - buttons := make([]models.SysMenu,0) + buttons := make([]models.SysMenu, 0) err = e.Orm.Debug().Model(&role).Where("role_key = ? ", roleName).Preload("SysMenu", func(db *gorm.DB) *gorm.DB { return db.Where(" menu_type in ('F')").Order("sort") }).Find(&role).Error