新增获取用户按钮权限

This commit is contained in:
wucongxing 2023-07-04 18:19:06 +08:00
parent f9c9db303c
commit b393570e86
5 changed files with 77 additions and 6 deletions

View File

@ -1,7 +1,6 @@
package controller
import (
"fmt"
"github.com/gin-gonic/gin"
"hospital-admin-api/api/dao"
"hospital-admin-api/api/requests"
@ -278,7 +277,6 @@ func (r *User) GetUserMenuList(c *gin.Context) {
// 获取用户角色身份
isAdmin, err := roleService.GetRoleIden(c)
fmt.Println(isAdmin)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
@ -298,3 +296,38 @@ func (r *User) GetUserMenuList(c *gin.Context) {
responses.OkWithData(roleMenuList, c)
}
// GetUserButtonList 获取用户按钮列表
func (r *User) GetUserButtonList(c *gin.Context) {
roleId := c.GetInt64("RoleId")
if roleId == 0 {
responses.Fail(c)
return
}
roleService := service.RoleService{}
// 获取用户角色身份
isAdmin, err := roleService.GetRoleIden(c)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
var buttons []string
if isAdmin {
// 管理员
buttons = append(buttons, "*")
responses.OkWithData(buttons, c)
return
}
// 获取角色菜单按钮
buttons, err = roleService.GetRoleMenuButtonList(roleId)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
responses.OkWithData(buttons, c)
}

View File

@ -54,6 +54,15 @@ func (r *AdminMenuDao) GetAdminMenuListNonButtonNormalSortOrderNum() (m []*model
return m, nil
}
// GetAdminMenuListButtonNormalSortOrderNum 获取全部正常按钮菜单列表-排序
func (r *AdminMenuDao) GetAdminMenuListButtonNormalSortOrderNum() (m []*model.AdminMenu, err error) {
err = global.Db.Where("menu_status = ?", 1).Where("menu_type = ?", 3).Order("order_num asc").Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// AddAdminMenu 新增菜单
func (r *AdminMenuDao) AddAdminMenu(tx *gorm.DB, model *model.AdminMenu) (*model.AdminMenu, error) {
if err := tx.Create(model).Error; err != nil {

View File

@ -2,10 +2,10 @@ package model
// AdminRoleMenu 后台-角色-菜单表
type AdminRoleMenu struct {
RoleID int64 `gorm:"column:role_id;type:bigint(19);primary_key;comment:权限id" json:"role_id"`
MenuID int64 `gorm:"column:menu_id;type:bigint(19);primary_key;comment:菜单id" json:"menu_id"`
Menu AdminMenu `gorm:"foreignKey:MenuID" json:"menu"`
Role AdminRole `gorm:"foreignKey:RoleID" json:"role"`
RoleID int64 `gorm:"column:role_id;type:bigint(19);primary_key;comment:权限id" json:"role_id"`
MenuID int64 `gorm:"column:menu_id;type:bigint(19);primary_key;comment:菜单id" json:"menu_id"`
Menu *AdminMenu `gorm:"foreignKey:MenuID" json:"menu"`
Role *AdminRole `gorm:"foreignKey:RoleID" json:"role"`
}
func (m *AdminRoleMenu) TableName() string {

View File

@ -151,6 +151,9 @@ func privateRouter(r *gin.Engine, api controller.Api) {
// 获取用户菜单列表
userGroup.GET("/menu", api.User.GetUserMenuList)
// 获取用户按钮列表
userGroup.GET("/button", api.User.GetUserButtonList)
}
// 接口

View File

@ -53,6 +53,32 @@ func (r *RoleService) GetRoleMenuList(roleId int64, isAdmin bool) ([]*roleRespon
return getRoleMenuListResponse, nil
}
// GetRoleMenuButtonList 获取角色菜单按钮
func (r *RoleService) GetRoleMenuButtonList(roleId int64) ([]string, error) {
// 获取角色菜单
adminRoleMenuDao := dao.AdminRoleMenuDao{}
var buttons []string
adminRoleMenus, err := adminRoleMenuDao.GetAdminRoleMenuListWithMenuByRoleId(roleId)
if err != nil {
return buttons, nil
}
if adminRoleMenus != nil {
for _, v := range adminRoleMenus {
if v.Menu != nil {
if v.Menu.MenuType != 3 {
continue
}
buttons = append(buttons, v.Menu.Permission)
}
}
}
return buttons, nil
}
// 获取角色菜单-构建菜单树
func buildMenuTree(menuIds []int64, menuData []*model.AdminMenu) []*roleResponse.GetRoleMenuList {
menuMap := make(map[int64]*roleResponse.GetRoleMenuList)