sys_menu.go 7.8 KB
Newer Older
1
package system
Mr.奇淼('s avatar
Mr.奇淼( 已提交
2 3

import (
4 5 6 7 8 9 10
	"github.com/flipped-aurora/gin-vue-admin/server/global"
	"github.com/flipped-aurora/gin-vue-admin/server/model/common/request"
	"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
	"github.com/flipped-aurora/gin-vue-admin/server/model/system"
	systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request"
	systemRes "github.com/flipped-aurora/gin-vue-admin/server/model/system/response"
	"github.com/flipped-aurora/gin-vue-admin/server/utils"
11

Mr.奇淼('s avatar
Mr.奇淼( 已提交
12
	"github.com/gin-gonic/gin"
13
	"go.uber.org/zap"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
14 15
)

16 17 18
type AuthorityMenuApi struct {
}

19
// @Tags AuthorityMenu
Mr.奇淼('s avatar
Mr.奇淼( 已提交
20 21 22
// @Summary 获取用户动态路由
// @Security ApiKeyAuth
// @Produce  application/json
23
// @Param data body request.Empty true "空"
24
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
25
// @Router /menu/getMenu [post]
26 27
func (a *AuthorityMenuApi) GetMenu(c *gin.Context) {
	if err, menus := menuService.GetMenuTree(utils.GetUserAuthorityId(c)); err != nil {
Sliver_Horn's avatar
Sliver_Horn 已提交
28
		global.GVA_LOG.Error("获取失败!", zap.Error(err))
29
		response.FailWithMessage("获取失败", c)
30
	} else {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
31
		if menus == nil {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
32
			menus = []system.SysMenu{}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
33
		}
34
		response.OkWithDetailed(systemRes.SysMenusResponse{Menus: menus}, "获取成功", c)
35 36 37
	}
}

38
// @Tags AuthorityMenu
39 40 41
// @Summary 获取用户动态路由
// @Security ApiKeyAuth
// @Produce  application/json
42
// @Param data body request.Empty true "空"
43
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
44
// @Router /menu/getBaseMenuTree [post]
45 46
func (a *AuthorityMenuApi) GetBaseMenuTree(c *gin.Context) {
	if err, menus := menuService.GetBaseMenuTree(); err != nil {
Sliver_Horn's avatar
Sliver_Horn 已提交
47
		global.GVA_LOG.Error("获取失败!", zap.Error(err))
48
		response.FailWithMessage("获取失败", c)
49
	} else {
50
		response.OkWithDetailed(systemRes.SysBaseMenusResponse{Menus: menus}, "获取成功", c)
51 52 53
	}
}

54
// @Tags AuthorityMenu
55 56 57 58
// @Summary 增加menu和角色关联关系
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
59
// @Param data body systemReq.AddMenuAuthorityInfo true "角色ID"
60
// @Success 200 {string} string "{"success":true,"data":{},"msg":"添加成功"}"
61
// @Router /menu/addMenuAuthority [post]
62 63
func (a *AuthorityMenuApi) AddMenuAuthority(c *gin.Context) {
	var authorityMenu systemReq.AddMenuAuthorityInfo
64 65
	_ = c.ShouldBindJSON(&authorityMenu)
	if err := utils.Verify(authorityMenu, utils.AuthorityIdVerify); err != nil {
66
		response.FailWithMessage(err.Error(), c)
67 68
		return
	}
69
	if err := menuService.AddMenuAuthority(authorityMenu.Menus, authorityMenu.AuthorityId); err != nil {
Sliver_Horn's avatar
Sliver_Horn 已提交
70
		global.GVA_LOG.Error("添加失败!", zap.Error(err))
71
		response.FailWithMessage("添加失败", c)
72
	} else {
73
		response.OkWithMessage("添加成功", c)
74 75 76
	}
}

77
// @Tags AuthorityMenu
78 79 80 81
// @Summary 获取指定角色menu
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
82
// @Param data body request.GetAuthorityId true "角色ID"
83
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
84
// @Router /menu/getMenuAuthority [post]
85
func (a *AuthorityMenuApi) GetMenuAuthority(c *gin.Context) {
86 87
	var param request.GetAuthorityId
	_ = c.ShouldBindJSON(&param)
88
	if err := utils.Verify(param, utils.AuthorityIdVerify); err != nil {
89
		response.FailWithMessage(err.Error(), c)
90 91
		return
	}
92
	if err, menus := menuService.GetMenuAuthority(&param); err != nil {
Sliver_Horn's avatar
Sliver_Horn 已提交
93
		global.GVA_LOG.Error("获取失败!", zap.Error(err))
94
		response.FailWithDetailed(systemRes.SysMenusResponse{Menus: menus}, "获取失败", c)
95
	} else {
96
		response.OkWithDetailed(gin.H{"menus": menus}, "获取成功", c)
97 98
	}
}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
99

100 101 102 103 104
// @Tags Menu
// @Summary 新增菜单
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
Mr.奇淼('s avatar
Mr.奇淼( 已提交
105
// @Param data body system.SysBaseMenu true "路由path, 父菜单ID, 路由name, 对应前端文件路径, 排序标记"
106 107
// @Success 200 {string} string "{"success":true,"data":{},"msg":"添加成功"}"
// @Router /menu/addBaseMenu [post]
108
func (a *AuthorityMenuApi) AddBaseMenu(c *gin.Context) {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
109
	var menu system.SysBaseMenu
110 111 112 113 114 115 116 117 118
	_ = c.ShouldBindJSON(&menu)
	if err := utils.Verify(menu, utils.MenuVerify); err != nil {
		response.FailWithMessage(err.Error(), c)
		return
	}
	if err := utils.Verify(menu.Meta, utils.MenuMetaVerify); err != nil {
		response.FailWithMessage(err.Error(), c)
		return
	}
119
	if err := menuService.AddBaseMenu(menu); err != nil {
Sliver_Horn's avatar
Sliver_Horn 已提交
120
		global.GVA_LOG.Error("添加失败!", zap.Error(err))
121 122 123 124 125 126 127 128

		response.FailWithMessage("添加失败", c)
	} else {
		response.OkWithMessage("添加成功", c)
	}
}

// @Tags Menu
Mr.奇淼('s avatar
Mr.奇淼( 已提交
129
// @Summary 删除菜单
Mr.奇淼('s avatar
Mr.奇淼( 已提交
130 131 132
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
133 134
// @Param data body request.GetById true "菜单id"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
135
// @Router /menu/deleteBaseMenu [post]
136
func (a *AuthorityMenuApi) DeleteBaseMenu(c *gin.Context) {
137 138 139
	var menu request.GetById
	_ = c.ShouldBindJSON(&menu)
	if err := utils.Verify(menu, utils.IdVerify); err != nil {
140
		response.FailWithMessage(err.Error(), c)
141 142
		return
	}
143
	if err := baseMenuService.DeleteBaseMenu(menu.ID); err != nil {
Sliver_Horn's avatar
Sliver_Horn 已提交
144
		global.GVA_LOG.Error("删除失败!", zap.Error(err))
145
		response.FailWithMessage("删除失败", c)
Mr.奇淼('s avatar
Mr.奇淼( 已提交
146
	} else {
147
		response.OkWithMessage("删除成功", c)
Mr.奇淼('s avatar
Mr.奇淼( 已提交
148
	}
K
klausY 已提交
149
}
150

151
// @Tags Menu
Mr.奇淼('s avatar
Mr.奇淼( 已提交
152
// @Summary 更新菜单
153 154 155
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
Mr.奇淼('s avatar
Mr.奇淼( 已提交
156
// @Param data body system.SysBaseMenu true "路由path, 父菜单ID, 路由name, 对应前端文件路径, 排序标记"
157
// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
158
// @Router /menu/updateBaseMenu [post]
159
func (a *AuthorityMenuApi) UpdateBaseMenu(c *gin.Context) {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
160
	var menu system.SysBaseMenu
161
	_ = c.ShouldBindJSON(&menu)
162
	if err := utils.Verify(menu, utils.MenuVerify); err != nil {
163
		response.FailWithMessage(err.Error(), c)
164 165
		return
	}
166
	if err := utils.Verify(menu.Meta, utils.MenuMetaVerify); err != nil {
167
		response.FailWithMessage(err.Error(), c)
168 169
		return
	}
170
	if err := baseMenuService.UpdateBaseMenu(menu); err != nil {
Sliver_Horn's avatar
Sliver_Horn 已提交
171
		global.GVA_LOG.Error("更新失败!", zap.Error(err))
172
		response.FailWithMessage("更新失败", c)
173
	} else {
174
		response.OkWithMessage("更新成功", c)
175 176
	}
}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
177

178
// @Tags Menu
Mr.奇淼('s avatar
Mr.奇淼( 已提交
179 180 181 182
// @Summary 根据id获取菜单
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
183
// @Param data body request.GetById true "菜单id"
184
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
185
// @Router /menu/getBaseMenuById [post]
186
func (a *AuthorityMenuApi) GetBaseMenuById(c *gin.Context) {
187
	var idInfo request.GetById
188
	_ = c.ShouldBindJSON(&idInfo)
189
	if err := utils.Verify(idInfo, utils.IdVerify); err != nil {
190
		response.FailWithMessage(err.Error(), c)
191 192
		return
	}
193
	if err, menu := baseMenuService.GetBaseMenuById(idInfo.ID); err != nil {
Sliver_Horn's avatar
Sliver_Horn 已提交
194
		global.GVA_LOG.Error("获取失败!", zap.Error(err))
195
		response.FailWithMessage("获取失败", c)
Mr.奇淼('s avatar
Mr.奇淼( 已提交
196
	} else {
197
		response.OkWithDetailed(systemRes.SysBaseMenuResponse{Menu: menu}, "获取成功", c)
Mr.奇淼('s avatar
Mr.奇淼( 已提交
198 199
	}
}
200 201 202 203 204 205 206 207 208

// @Tags Menu
// @Summary 分页获取基础menu列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.PageInfo true "页码, 每页大小"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /menu/getMenuList [post]
209
func (a *AuthorityMenuApi) GetMenuList(c *gin.Context) {
210 211 212 213 214 215
	var pageInfo request.PageInfo
	_ = c.ShouldBindJSON(&pageInfo)
	if err := utils.Verify(pageInfo, utils.PageInfoVerify); err != nil {
		response.FailWithMessage(err.Error(), c)
		return
	}
216
	if err, menuList, total := menuService.GetInfoList(); err != nil {
Sliver_Horn's avatar
Sliver_Horn 已提交
217
		global.GVA_LOG.Error("获取失败!", zap.Error(err))
218 219 220 221 222 223 224
		response.FailWithMessage("获取失败", c)
	} else {
		response.OkWithDetailed(response.PageResult{
			List:     menuList,
			Total:    total,
			Page:     pageInfo.Page,
			PageSize: pageInfo.PageSize,
225
		}, "获取成功", c)
226
	}
227
}