From 8f637e02d003e6a86a503193c3464da635e914b5 Mon Sep 17 00:00:00 2001 From: wenjianzhang Date: Wed, 16 Jun 2021 18:34:25 +0800 Subject: [PATCH] =?UTF-8?q?refactor=F0=9F=8E=A8=EF=BC=9A=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E3=80=81=E8=A7=92=E8=89=B2=E3=80=81=E7=94=A8=E6=88=B7=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/apis/sys_menu.go | 73 ++++++++++++++++++----------------- app/admin/apis/sys_user.go | 9 +++-- app/admin/service/sys_role.go | 32 +++++++++++---- 3 files changed, 68 insertions(+), 46 deletions(-) diff --git a/app/admin/apis/sys_menu.go b/app/admin/apis/sys_menu.go index 28b7dbfc..6fe7bd8f 100644 --- a/app/admin/apis/sys_menu.go +++ b/app/admin/apis/sys_menu.go @@ -204,42 +204,43 @@ func (e SysMenu) GetMenuRole(c *gin.Context) { e.OK(result, "") } -// GetMenuIDS 获取角色对应的菜单id数组 -// @Summary 获取角色对应的菜单id数组,设置角色权限使用 -// @Description 获取JSON -// @Tags 菜单 -// @Param id path int true "id" -// @Success 200 {object} response.Response "{"code": 200, "data": [...]}" -// @Router /api/v1/menuids/{id} [get] -// @Security Bearer -func (e SysMenu) GetMenuIDS(c *gin.Context) { - s := new(service.SysMenu) - r := service.SysRole{} - m := dto.SysRoleByName{} - err := e.MakeContext(c). - MakeOrm(). - Bind(&m, binding.JSON). - MakeService(&s.Service). - MakeService(&r.Service). - Errors - if err != nil { - e.Logger.Error(err) - e.Error(500, err, err.Error()) - return - } - r.GetWithName(&m) - var data models.RoleMenu - data.RoleName = c.GetString("role") - data.UpdateBy = user.GetUserId(c) - result, err := data.GetIDS(s.Orm) - - if err != nil { - e.Logger.Errorf("GetIDS error, %s", err.Error()) - e.Error(500, err, "获取失败") - return - } - e.OK(result, "") -} +//// GetMenuIDS 获取角色对应的菜单id数组 +//// @Summary 获取角色对应的菜单id数组,设置角色权限使用 +//// @Description 获取JSON +//// @Tags 菜单 +//// @Param id path int true "id" +//// @Success 200 {object} response.Response "{"code": 200, "data": [...]}" +//// @Router /api/v1/menuids/{id} [get] +//// @Security Bearer +//func (e SysMenu) GetMenuIDS(c *gin.Context) { +// s := new(service.SysMenu) +// r := service.SysRole{} +// m := dto.SysRoleByName{} +// err := e.MakeContext(c). +// MakeOrm(). +// Bind(&m, binding.JSON). +// MakeService(&s.Service). +// MakeService(&r.Service). +// Errors +// if err != nil { +// e.Logger.Error(err) +// e.Error(500, err, err.Error()) +// return +// } +// var data models.SysRole +// err = r.GetWithName(&m, &data).Error +// +// //data.RoleName = c.GetString("role") +// //data.UpdateBy = user.GetUserId(c) +// //result, err := data.GetIDS(s.Orm) +// +// if err != nil { +// e.Logger.Errorf("GetIDS error, %s", err.Error()) +// e.Error(500, err, "获取失败") +// return +// } +// e.OK(result, "") +//} // GetMenuTreeSelect 根据角色ID查询菜单下拉树结构 // @Summary 角色修改使用的菜单列表 diff --git a/app/admin/apis/sys_user.go b/app/admin/apis/sys_user.go index 14bdff57..af2ed3cb 100644 --- a/app/admin/apis/sys_user.go +++ b/app/admin/apis/sys_user.go @@ -397,8 +397,10 @@ func (e SysUser) GetProfile(c *gin.Context) { func (e SysUser) GetInfo(c *gin.Context) { req := dto.SysUserById{} s := service.SysUser{} + r := service.SysRole{} err := e.MakeContext(c). MakeOrm(). + MakeService(&r.Service). MakeService(&s.Service). Errors if err != nil { @@ -413,15 +415,16 @@ func (e SysUser) GetInfo(c *gin.Context) { permissions[0] = "*:*:*" var buttons = make([]string, 1) buttons[0] = "*:*:*" - RoleMenu := models.RoleMenu{} - RoleMenu.RoleId = user.GetRoleId(c) + //RoleMenu := models.RoleMenu{} + //RoleMenu.RoleId = user.GetRoleId(c) + var mp = make(map[string]interface{}) mp["roles"] = roles if user.GetRoleName(c) == "admin" || user.GetRoleName(c) == "系统管理员" { mp["permissions"] = permissions mp["buttons"] = buttons } else { - list, _ := RoleMenu.GetPermis(e.Orm) + list, _ := r.GetById(user.GetRoleId(c)) mp["permissions"] = list mp["buttons"] = list } diff --git a/app/admin/service/sys_role.go b/app/admin/service/sys_role.go index ca12e090..5e40f73f 100644 --- a/app/admin/service/sys_role.go +++ b/app/admin/service/sys_role.go @@ -252,24 +252,42 @@ func (e *SysRole) UpdateStatus(c *dto.UpdateStatusReq) error { return nil } -// Get 获取SysRole对象 -func (e *SysRole) GetWithName(d *dto.SysRoleByName, model *models.SysRole) error { +// GetWithName 获取SysRole对象 +func (e *SysRole) GetWithName(d *dto.SysRoleByName, model *models.SysRole) *SysRole { var err error - db := e.Orm.Where("role_name = ?",d.RoleName).First(model) + db := e.Orm.Where("role_name = ?", d.RoleName).First(model) err = db.Error if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { err = errors.New("查看对象不存在或无权查看") e.Log.Errorf("db error:%s", err) - return err + _ = e.AddError(err) + return e } if err != nil { e.Log.Errorf("db error:%s", err) - return err + _ = e.AddError(err) + return e } model.MenuIds, err = e.GetRoleMenuId(model.RoleId) if err != nil { e.Log.Errorf("get menuIds error, %s", err.Error()) - return err + _ = e.AddError(err) + return e } - return nil + return e +} + +// GetById 获取SysRole对象 +func (e *SysRole) GetById(roleId int) ([]string, error) { + permissions := make([]string, 0) + model := models.SysRole{} + model.RoleId = roleId + if err := e.Orm.Model(&model).Preload("SysMenu").First(&model).Error; err != nil { + return nil, err + } + l := *model.SysMenu + for i := 0; i < len(l); i++ { + permissions = append(permissions, l[i].Permission) + } + return permissions, nil } \ No newline at end of file