From 594413c015324860616b349ac26b33dfaaf30730 Mon Sep 17 00:00:00 2001 From: xinyuandd Date: Tue, 31 May 2022 12:33:45 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E5=90=8E=E6=9C=AA=E8=83=BD=E6=8C=89=E7=85=A7=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=AE=9E=E9=99=85=E8=8F=9C=E5=8D=95=E6=9D=83=E9=99=90=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E8=8F=9C=E5=8D=95=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logic/menu_logic.go | 11 +++++++++-- service/isql/menu_isql.go | 6 ++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/logic/menu_logic.go b/logic/menu_logic.go index 9662027..8436287 100644 --- a/logic/menu_logic.go +++ b/logic/menu_logic.go @@ -168,9 +168,16 @@ func (l MenuLogic) GetTree(c *gin.Context, req interface{}) (data interface{}, r return nil, ReqAssertErr } _ = c - + ctxUser, err := isql.User.GetCurrentLoginUser(c) + if err != nil { + return nil, tools.NewMySqlError(fmt.Errorf("获取当前登陆用户信息失败")) + } + roleIds := []uint{} + for _, role := range ctxUser.Roles { + roleIds = append(roleIds, role.ID) + } var menus []*model.Menu - menus, err := isql.Menu.List() + menus, err = isql.Menu.ListUserMenus(roleIds) if err != nil { return nil, tools.NewMySqlError(fmt.Errorf("获取资源列表失败: " + err.Error())) } diff --git a/service/isql/menu_isql.go b/service/isql/menu_isql.go index e20a29b..f76f934 100644 --- a/service/isql/menu_isql.go +++ b/service/isql/menu_isql.go @@ -47,6 +47,12 @@ func (s MenuService) List() (menus []*model.Menu, err error) { return menus, err } +// List 获取数据列表 +func (s MenuService) ListUserMenus(roleIds []uint) (menus []*model.Menu, err error) { + err = common.DB.Where("id IN (select menu_id as id from role_menus where role_id IN (?))", roleIds).Order("sort").Find(&menus).Error + return menus, err +} + // 批量删除资源 func (s MenuService) Delete(menuIds []uint) error { return common.DB.Where("id IN (?)", menuIds).Select("Roles").Unscoped().Delete(&model.Menu{}).Error From 954cc1f279da912748286cbd82b0c97819afb64f Mon Sep 17 00:00:00 2001 From: xinyuandd Date: Wed, 1 Jun 2022 10:20:51 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=90=8E=EF=BC=8C=E7=94=A8=E6=88=B7=E6=9D=83?= =?UTF-8?q?=E9=99=90=E4=B8=A2=E5=A4=B1=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/isql/user_isql.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/service/isql/user_isql.go b/service/isql/user_isql.go index 0e8a91f..c8cd9fd 100644 --- a/service/isql/user_isql.go +++ b/service/isql/user_isql.go @@ -135,7 +135,9 @@ func (s UserService) Update(user *model.User) error { // 如果更新成功就更新用户信息缓存 if err == nil { - userInfoCache.Set(user.Username, *user, cache.DefaultExpiration) + userDb := &model.User{} + common.DB.Where("username = ?", user.Username).Preload("Roles").First(&userDb) + userInfoCache.Set(user.Username, *userDb, cache.DefaultExpiration) } return err }