新增获取菜单列表
This commit is contained in:
parent
6b61f6ca43
commit
c4d8dd6791
@ -40,12 +40,12 @@ func (b *Basic) Login(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 验证验证码
|
// 验证验证码
|
||||||
isValid := utils.VerifyCaptcha(login)
|
// isValid := utils.VerifyCaptcha(login)
|
||||||
if !isValid {
|
// if !isValid {
|
||||||
// 验证码错误
|
// // 验证码错误
|
||||||
responses.FailWithMessage("验证码错误", c)
|
// responses.FailWithMessage("验证码错误", c)
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 登陆
|
// 登陆
|
||||||
Basic := service.Basic{}
|
Basic := service.Basic{}
|
||||||
|
|||||||
@ -1,10 +1,33 @@
|
|||||||
package controller
|
package controller
|
||||||
|
|
||||||
import "github.com/gin-gonic/gin"
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"hospital-admin-api/api/responses"
|
||||||
|
"hospital-admin-api/api/service"
|
||||||
|
)
|
||||||
|
|
||||||
type Role struct{}
|
type Role struct{}
|
||||||
|
|
||||||
// GetRoleMenuList 获取角色菜单列表
|
// GetRoleMenuList 获取角色菜单列表
|
||||||
func (r *Role) GetRoleMenuList(c *gin.Context) {
|
func (r *Role) GetRoleMenuList(c *gin.Context) {
|
||||||
|
roleId := c.GetInt64("RoleId")
|
||||||
|
if roleId == 0 {
|
||||||
|
responses.Fail(c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 登陆
|
||||||
|
Role := service.Role{}
|
||||||
|
roleMenuList, err := Role.GetRoleMenuList(roleId)
|
||||||
|
if err != nil {
|
||||||
|
responses.FailWithMessage(err.Error(), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(roleMenuList) == 0 {
|
||||||
|
responses.FailWithMessage("请联系管理人员设置菜单", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
responses.OkWithData(roleMenuList, c)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,2 +1,25 @@
|
|||||||
package dao
|
package dao
|
||||||
|
|
||||||
|
import (
|
||||||
|
"hospital-admin-api/api/model"
|
||||||
|
"hospital-admin-api/global"
|
||||||
|
)
|
||||||
|
|
||||||
|
type AdminMenu struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AdminMenu) GetAdminMenuList() (m []*model.AdminMenu, err error) {
|
||||||
|
err = global.Db.Find(&m).Error
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AdminMenu) GetAdminMenuListSortOrderNum() (m []*model.AdminMenu, err error) {
|
||||||
|
err = global.Db.Order("order_num asc").Find(&m).Error
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import (
|
|||||||
type AdminMenuApi struct {
|
type AdminMenuApi struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetAdminMenuApiListByMenuID 菜单id获取菜单api
|
// GetAdminMenuApiListByMenuID 获取菜单api-菜单id
|
||||||
// menuId 菜单id
|
// menuId 菜单id
|
||||||
func (r *AdminMenuApi) GetAdminMenuApiListByMenuID(menuId int64) (m []*model.AdminMenuApi, err error) {
|
func (r *AdminMenuApi) GetAdminMenuApiListByMenuID(menuId int64) (m []*model.AdminMenuApi, err error) {
|
||||||
err = global.Db.Where("menu_id = ?", menuId).Preload("API").Find(&m).Error
|
err = global.Db.Where("menu_id = ?", menuId).Preload("API").Find(&m).Error
|
||||||
|
|||||||
@ -8,9 +8,18 @@ import (
|
|||||||
type AdminRoleMenu struct {
|
type AdminRoleMenu struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetAdminMenuListByRoleId GetAdminRoleById 角色id获取用户角色
|
// GetAdminRoleMenuListByRoleId 获取角色菜单-角色id
|
||||||
// roleId 角色id
|
// roleId 角色id
|
||||||
func (r *AdminRoleMenu) GetAdminMenuListByRoleId(roleId int64) (m []*model.AdminRoleMenu, err error) {
|
func (r *AdminRoleMenu) GetAdminRoleMenuListByRoleId(roleId int64) (m []*model.AdminRoleMenu, err error) {
|
||||||
|
err = global.Db.Where("role_id = ?", roleId).Find(&m).Error
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAdminRoleMenuListWithMenuByRoleId 获取角色菜单
|
||||||
|
func (r *AdminRoleMenu) GetAdminRoleMenuListWithMenuByRoleId(roleId int64) (m []*model.AdminRoleMenu, err error) {
|
||||||
err = global.Db.Where("role_id = ?", roleId).Preload("Menu").Find(&m).Error
|
err = global.Db.Where("role_id = ?", roleId).Preload("Menu").Find(&m).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@ -64,9 +64,9 @@ func Auth() gin.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取角色菜单
|
// 获取角色菜单id
|
||||||
AdminRoleMenuDao := dao.AdminRoleMenu{}
|
AdminRoleMenuDao := dao.AdminRoleMenu{}
|
||||||
adminRoleMenu, _ := AdminRoleMenuDao.GetAdminMenuListByRoleId(roleId)
|
adminRoleMenu, _ := AdminRoleMenuDao.GetAdminRoleMenuListByRoleId(roleId)
|
||||||
if adminRoleMenu == nil {
|
if adminRoleMenu == nil {
|
||||||
c.JSON(http.StatusForbidden, gin.H{
|
c.JSON(http.StatusForbidden, gin.H{
|
||||||
"message": "暂无权限",
|
"message": "暂无权限",
|
||||||
|
|||||||
@ -2,7 +2,6 @@ package middlewares
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"hospital-admin-api/api/responses"
|
|
||||||
"hospital-admin-api/consts"
|
"hospital-admin-api/consts"
|
||||||
"hospital-admin-api/global"
|
"hospital-admin-api/global"
|
||||||
"hospital-admin-api/utils"
|
"hospital-admin-api/utils"
|
||||||
@ -29,8 +28,13 @@ func Jwt() gin.HandlerFunc {
|
|||||||
|
|
||||||
// 检测是否存在黑名单
|
// 检测是否存在黑名单
|
||||||
res, _ := global.Redis.Get(c, "jwt_black_"+authorization).Result()
|
res, _ := global.Redis.Get(c, "jwt_black_"+authorization).Result()
|
||||||
|
|
||||||
if res != "" {
|
if res != "" {
|
||||||
responses.Fail(c)
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"message": "token错误/过期",
|
||||||
|
"code": consts.TOKEN_ERROR,
|
||||||
|
"data": "",
|
||||||
|
})
|
||||||
|
|
||||||
c.Abort()
|
c.Abort()
|
||||||
return
|
return
|
||||||
|
|||||||
@ -1,12 +1,13 @@
|
|||||||
package model
|
package model
|
||||||
|
|
||||||
// AdminApi 后台-接口表
|
// AdminAPI 后台-接口表
|
||||||
type AdminAPI struct {
|
type AdminAPI struct {
|
||||||
Model
|
Model
|
||||||
APIID int64 `gorm:"column:api_id;type:bigint(19);primary_key;AUTO_INCREMENT;comment:主键id" json:"api_id"`
|
APIID int64 `gorm:"column:api_id;type:bigint(19);primary_key;AUTO_INCREMENT;comment:主键id" json:"api_id"`
|
||||||
APIName string `gorm:"column:api_name;type:varchar(100);comment:api名称;NOT NULL" json:"api_name"`
|
APIName string `gorm:"column:api_name;type:varchar(100);comment:api名称;NOT NULL" json:"api_name"`
|
||||||
APIPath string `gorm:"column:api_path;type:varchar(255);comment:接口路径(全路径 id为:id);NOT NULL" json:"api_path"`
|
APIPath string `gorm:"column:api_path;type:varchar(255);comment:接口路径(全路径 id为:id);NOT NULL" json:"api_path"`
|
||||||
APIMethod string `gorm:"column:api_method;type:varchar(10);comment:请求类型(put:修改 post:新增 get:获取 );NOT NULL" json:"api_method"`
|
APIMethod string `gorm:"column:api_method;type:varchar(10);comment:请求类型(put:修改 post:新增 get:获取 );NOT NULL" json:"api_method"`
|
||||||
|
IsAuth int `gorm:"column:is_auth;type:tinyint(1);default:1;comment:是否验证权限(0:否 1:是)" json:"is_auth"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *AdminAPI) TableName() string {
|
func (m *AdminAPI) TableName() string {
|
||||||
|
|||||||
@ -5,7 +5,7 @@ type AdminMenu struct {
|
|||||||
Model
|
Model
|
||||||
MenuId int64 `gorm:"column:menu_id;type:bigint(19);primary_key;comment:主键id" json:"menu_id"`
|
MenuId int64 `gorm:"column:menu_id;type:bigint(19);primary_key;comment:主键id" json:"menu_id"`
|
||||||
MenuName string `gorm:"column:menu_name;type:varchar(30);comment:菜单名称" json:"menu_name"`
|
MenuName string `gorm:"column:menu_name;type:varchar(30);comment:菜单名称" json:"menu_name"`
|
||||||
ParentId int `gorm:"column:parent_id;type:int(10);default:0;comment:父菜单ID(0表示一级)" json:"parent_id"`
|
ParentId int64 `gorm:"column:parent_id;type:int(10);default:0;comment:父菜单ID(0表示一级)" json:"parent_id"`
|
||||||
MenuStatus int `gorm:"column:menu_status;type:tinyint(1);default:1;comment:菜单状态(0:隐藏 1:正常)此优先级最高" json:"menu_status"`
|
MenuStatus int `gorm:"column:menu_status;type:tinyint(1);default:1;comment:菜单状态(0:隐藏 1:正常)此优先级最高" json:"menu_status"`
|
||||||
MenuType int `gorm:"column:menu_type;type:tinyint(1);comment:菜单类型(1:模块 2:菜单 2:按钮)" json:"menu_type"`
|
MenuType int `gorm:"column:menu_type;type:tinyint(1);comment:菜单类型(1:模块 2:菜单 2:按钮)" json:"menu_type"`
|
||||||
Permission string `gorm:"column:permission;type:varchar(255);comment:标识" json:"permission"`
|
Permission string `gorm:"column:permission;type:varchar(255);comment:标识" json:"permission"`
|
||||||
|
|||||||
15
api/responses/roleResponse/roleResponse.go
Normal file
15
api/responses/roleResponse/roleResponse.go
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package roleResponse
|
||||||
|
|
||||||
|
// RoleMenuList 登陆
|
||||||
|
type RoleMenuList struct {
|
||||||
|
MenuId int64 `json:"menu_id"` // 主键id
|
||||||
|
MenuName string `json:"menu_name"` // 菜单名称
|
||||||
|
ParentId int64 `json:"parent_id"` // 父菜单ID(0表示一级)
|
||||||
|
MenuStatus int `json:"menu_status"` // 菜单状态(0:隐藏 1:正常)此优先级最高
|
||||||
|
MenuType int `json:"menu_type"` // 菜单类型(1:模块 2:菜单 2:按钮)
|
||||||
|
Permission string `json:"permission"` // 标识
|
||||||
|
OrderNum int `json:"order_num"` // 显示顺序
|
||||||
|
Icon string `json:"icon"` // 图标地址
|
||||||
|
Path string `json:"path"` // 页面地址(#表示当前页)
|
||||||
|
Children []*RoleMenuList `json:"children"` // 下级页面
|
||||||
|
}
|
||||||
78
api/service/role.go
Normal file
78
api/service/role.go
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"hospital-admin-api/api/dao"
|
||||||
|
"hospital-admin-api/api/model"
|
||||||
|
"hospital-admin-api/api/responses/roleResponse"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Role struct{}
|
||||||
|
|
||||||
|
// GetRoleMenuList 获取角色菜单
|
||||||
|
func (r *Role) GetRoleMenuList(roleId int64) ([]*roleResponse.RoleMenuList, error) {
|
||||||
|
AdminRoleMenuDao := dao.AdminRoleMenu{}
|
||||||
|
adminRoleMenu, _ := AdminRoleMenuDao.GetAdminRoleMenuListByRoleId(roleId)
|
||||||
|
if adminRoleMenu == nil {
|
||||||
|
return []*roleResponse.RoleMenuList{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取全部菜单
|
||||||
|
AdminMenuDao := dao.AdminMenu{}
|
||||||
|
adminMenu, _ := AdminMenuDao.GetAdminMenuListSortOrderNum()
|
||||||
|
if adminMenu == nil {
|
||||||
|
return []*roleResponse.RoleMenuList{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var menuIDs []int64
|
||||||
|
var menuTree []*roleResponse.RoleMenuList
|
||||||
|
|
||||||
|
if len(adminRoleMenu) > 0 {
|
||||||
|
for _, roleMenu := range adminRoleMenu {
|
||||||
|
menuIDs = append(menuIDs, roleMenu.MenuID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建菜单树
|
||||||
|
menuTree = buildMenuTree(menuIDs, adminMenu)
|
||||||
|
}
|
||||||
|
|
||||||
|
return menuTree, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建菜单树
|
||||||
|
func buildMenuTree(menuIds []int64, menuData []*model.AdminMenu) []*roleResponse.RoleMenuList {
|
||||||
|
menuMap := make(map[int64]*roleResponse.RoleMenuList)
|
||||||
|
rootNodes := make([]*roleResponse.RoleMenuList, 0)
|
||||||
|
|
||||||
|
// 构建菜单映射
|
||||||
|
for _, menu := range menuData {
|
||||||
|
for _, v := range menuIds {
|
||||||
|
if v == menu.MenuId {
|
||||||
|
node := &roleResponse.RoleMenuList{
|
||||||
|
MenuId: menu.MenuId,
|
||||||
|
MenuName: menu.MenuName,
|
||||||
|
ParentId: menu.ParentId,
|
||||||
|
MenuStatus: menu.MenuStatus,
|
||||||
|
MenuType: menu.MenuType,
|
||||||
|
Permission: menu.Permission,
|
||||||
|
OrderNum: menu.OrderNum,
|
||||||
|
Icon: menu.Icon,
|
||||||
|
Path: menu.Path,
|
||||||
|
Children: nil,
|
||||||
|
}
|
||||||
|
|
||||||
|
menuMap[menu.MenuId] = node
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建菜单树
|
||||||
|
for _, menu := range menuData {
|
||||||
|
if menu.ParentId == 0 {
|
||||||
|
rootNodes = append(rootNodes, menuMap[menu.MenuId])
|
||||||
|
} else if parent, ok := menuMap[menu.ParentId]; ok {
|
||||||
|
parent.Children = append(parent.Children, menuMap[menu.MenuId])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return rootNodes
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user