diff --git a/api/controller/adminUser.go b/api/controller/adminUser.go index f84705d..fe6f02f 100644 --- a/api/controller/adminUser.go +++ b/api/controller/adminUser.go @@ -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) +} diff --git a/api/dao/adminMenu.go b/api/dao/adminMenu.go index 56be364..5e3af33 100644 --- a/api/dao/adminMenu.go +++ b/api/dao/adminMenu.go @@ -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 { diff --git a/api/model/adminRoleMenu.go b/api/model/adminRoleMenu.go index 3990fd0..0dd0c94 100644 --- a/api/model/adminRoleMenu.go +++ b/api/model/adminRoleMenu.go @@ -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 { diff --git a/api/router/router.go b/api/router/router.go index 0b41482..82b961a 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -151,6 +151,9 @@ func privateRouter(r *gin.Engine, api controller.Api) { // 获取用户菜单列表 userGroup.GET("/menu", api.User.GetUserMenuList) + + // 获取用户按钮列表 + userGroup.GET("/button", api.User.GetUserButtonList) } // 接口 diff --git a/api/service/role.go b/api/service/role.go index 17a21ae..0fb910b 100644 --- a/api/service/role.go +++ b/api/service/role.go @@ -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)