From e938c8c00bf43efe90bd6b1af308cbeefdc0e530 Mon Sep 17 00:00:00 2001 From: SliverHorn Date: Sat, 7 Nov 2020 10:40:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9v1/sys=5Fmenu.go=E7=9A=84?= =?UTF-8?q?=E5=A4=87=E6=B3=A8=E9=94=99=E8=AF=AF=E5=8F=8A=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/api/v1/sys_menu.go | 144 ++++++++++++------------------- server/model/request/common.go | 9 +- server/model/request/sys_menu.go | 5 -- server/service/sys_authority.go | 2 +- server/service/sys_menu.go | 5 +- 5 files changed, 67 insertions(+), 98 deletions(-) diff --git a/server/api/v1/sys_menu.go b/server/api/v1/sys_menu.go index 572f9333..300b896a 100644 --- a/server/api/v1/sys_menu.go +++ b/server/api/v1/sys_menu.go @@ -11,18 +11,15 @@ import ( "github.com/gin-gonic/gin" ) -// @Tags authorityAndMenu +// @Tags AuthorityMenu // @Summary 获取用户动态路由 // @Security ApiKeyAuth // @Produce application/json -// @Param data body request.RegisterAndLoginStruct true "可以什么都不填" -// @Success 200 {string} string "{"success":true,"data":{},"msg":"返回成功"}" +// @Param data body request.Empty true "空" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"操作成功"}" // @Router /menu/getMenu [post] func GetMenu(c *gin.Context) { - claims, _ := c.Get("claims") - waitUse := claims.(*request.CustomClaims) - err, menus := service.GetMenuTree(waitUse.AuthorityId) - if err != nil { + if err, menus := service.GetMenuTree(getUserAuthorityId(c)); err != nil { response.FailWithMessage(fmt.Sprintf("获取失败,%v", err), c) } else { response.OkWithData(resp.SysMenusResponse{Menus: menus}, c) @@ -34,15 +31,14 @@ func GetMenu(c *gin.Context) { // @Security ApiKeyAuth // @accept application/json // @Produce application/json -// @Param data body request.PageInfo true "分页获取基础menu列表" -// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Param data body request.PageInfo true "页码, 每页大小" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"操作成功"}" // @Router /menu/getMenuList [post] func GetMenuList(c *gin.Context) { var pageInfo request.PageInfo _ = c.ShouldBindJSON(&pageInfo) - PageVerifyErr := utils.Verify(pageInfo, utils.CustomizeMap["PageVerify"]) - if PageVerifyErr != nil { - response.FailWithMessage(PageVerifyErr.Error(), c) + if err := utils.Verify(pageInfo, utils.CustomizeMap["PageVerify"]); err != nil { + response.FailWithMessage(err.Error(), c) return } err, menuList, total := service.GetInfoList() @@ -63,8 +59,8 @@ func GetMenuList(c *gin.Context) { // @Security ApiKeyAuth // @accept application/json // @Produce application/json -// @Param data body model.SysBaseMenu true "新增菜单" -// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Param data body model.SysBaseMenu true "路由path, 父菜单ID, 路由name, 对应前端文件路径, 排序标记" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"添加成功"}" // @Router /menu/addBaseMenu [post] func AddBaseMenu(c *gin.Context) { var menu model.SysBaseMenu @@ -76,21 +72,15 @@ func AddBaseMenu(c *gin.Context) { "Component": {utils.NotEmpty()}, "Sort": {utils.Ge("0")}, } - MenuVerifyErr := utils.Verify(menu, MenuVerify) - if MenuVerifyErr != nil { - response.FailWithMessage(MenuVerifyErr.Error(), c) + if err := utils.Verify(menu, MenuVerify); err != nil { + response.FailWithMessage(err.Error(), c) return } - MetaVerify := utils.Rules{ - "Title": {utils.NotEmpty()}, - } - MetaVerifyErr := utils.Verify(menu.Meta, MetaVerify) - if MetaVerifyErr != nil { - response.FailWithMessage(MetaVerifyErr.Error(), c) + if err := utils.Verify(menu.Meta, utils.Rules{"Title": {utils.NotEmpty()}}); err != nil { + response.FailWithMessage(err.Error(), c) return } - err := service.AddBaseMenu(menu) - if err != nil { + if err := service.AddBaseMenu(menu); err != nil { response.FailWithMessage(fmt.Sprintf("添加失败,%v", err), c) } else { response.OkWithMessage("添加成功", c) @@ -101,66 +91,55 @@ func AddBaseMenu(c *gin.Context) { // @Summary 获取用户动态路由 // @Security ApiKeyAuth // @Produce application/json -// @Param data body request.RegisterAndLoginStruct true "可以什么都不填" -// @Success 200 {string} string "{"success":true,"data":{},"msg":"返回成功"}" +// @Param data body request.Empty true "空" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"操作成功"}" // @Router /menu/getBaseMenuTree [post] func GetBaseMenuTree(c *gin.Context) { - err, menus := service.GetBaseMenuTree() - if err != nil { + if err, menus := service.GetBaseMenuTree(); err != nil { response.FailWithMessage(fmt.Sprintf("获取失败,%v", err), c) } else { response.OkWithData(resp.SysBaseMenusResponse{Menus: menus}, c) } } -// @Tags authorityAndMenu +// @Tags AuthorityAndMenu // @Summary 增加menu和角色关联关系 // @Security ApiKeyAuth // @accept application/json // @Produce application/json -// @Param data body request.AddMenuAuthorityInfo true "增加menu和角色关联关系" -// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Param data body request.AddMenuAuthorityInfo true "角色ID" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"添加成功"}" // @Router /menu/addMenuAuthority [post] func AddMenuAuthority(c *gin.Context) { - var addMenuAuthorityInfo request.AddMenuAuthorityInfo - _ = c.ShouldBindJSON(&addMenuAuthorityInfo) - MenuVerify := utils.Rules{ - "AuthorityId": {"notEmpty"}, - } - MenuVerifyErr := utils.Verify(addMenuAuthorityInfo, MenuVerify) - if MenuVerifyErr != nil { - response.FailWithMessage(MenuVerifyErr.Error(), c) + var params request.AddMenuAuthorityInfo + _ = c.ShouldBindJSON(¶ms) + if err := utils.Verify(params, utils.Rules{"AuthorityId": {"notEmpty"}}); err != nil { + response.FailWithMessage(err.Error(), c) return } - err := service.AddMenuAuthority(addMenuAuthorityInfo.Menus, addMenuAuthorityInfo.AuthorityId) - if err != nil { + if err := service.AddMenuAuthority(params.Menus, params.AuthorityId); err != nil { response.FailWithMessage(fmt.Sprintf("添加失败,%v", err), c) } else { response.OkWithMessage("添加成功", c) } } -// @Tags authorityAndMenu +// @Tags AuthorityAndMenu // @Summary 获取指定角色menu // @Security ApiKeyAuth // @accept application/json // @Produce application/json -// @Param data body request.AuthorityIdInfo true "增加menu和角色关联关系" +// @Param data body request.GetAuthorityId true "角色ID" // @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" // @Router /menu/GetMenuAuthority [post] func GetMenuAuthority(c *gin.Context) { - var authorityIdInfo request.AuthorityIdInfo - _ = c.ShouldBindJSON(&authorityIdInfo) - MenuVerify := utils.Rules{ - "AuthorityId": {"notEmpty"}, - } - MenuVerifyErr := utils.Verify(authorityIdInfo, MenuVerify) - if MenuVerifyErr != nil { - response.FailWithMessage(MenuVerifyErr.Error(), c) + var param request.GetAuthorityId + _ = c.ShouldBindJSON(¶m) + if err := utils.Verify(param, utils.Rules{"AuthorityId": {"notEmpty"}}); err != nil { + response.FailWithMessage(err.Error(), c) return } - err, menus := service.GetMenuAuthority(authorityIdInfo.AuthorityId) - if err != nil { + if err, menus := service.GetMenuAuthority(¶m); err != nil { response.FailWithDetailed(response.ERROR, resp.SysMenusResponse{Menus: menus}, fmt.Sprintf("添加失败,%v", err), c) } else { response.Result(response.SUCCESS, gin.H{"menus": menus}, "获取成功", c) @@ -172,19 +151,17 @@ func GetMenuAuthority(c *gin.Context) { // @Security ApiKeyAuth // @accept application/json // @Produce application/json -// @Param data body request.GetById true "删除菜单" -// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Param data body request.GetById true "菜单id" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" // @Router /menu/deleteBaseMenu [post] func DeleteBaseMenu(c *gin.Context) { - var idInfo request.GetById - _ = c.ShouldBindJSON(&idInfo) - IdVerifyErr := utils.Verify(idInfo, utils.CustomizeMap["IdVerify"]) - if IdVerifyErr != nil { - response.FailWithMessage(IdVerifyErr.Error(), c) + var param request.GetById + _ = c.ShouldBindJSON(¶m) + if err := utils.Verify(param, utils.CustomizeMap["IdVerify"]); err != nil { + response.FailWithMessage(err.Error(), c) return } - err := service.DeleteBaseMenu(idInfo.Id) - if err != nil { + if err := service.DeleteBaseMenu(param.Id); err != nil { response.FailWithMessage(fmt.Sprintf("删除失败:%v", err), c) } else { response.OkWithMessage("删除成功", c) @@ -197,8 +174,8 @@ func DeleteBaseMenu(c *gin.Context) { // @Security ApiKeyAuth // @accept application/json // @Produce application/json -// @Param data body model.SysBaseMenu true "更新菜单" -// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Param data body model.SysBaseMenu true "路由path, 父菜单ID, 路由name, 对应前端文件路径, 排序标记" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"修改成功"}" // @Router /menu/updateBaseMenu [post] func UpdateBaseMenu(c *gin.Context) { var menu model.SysBaseMenu @@ -210,24 +187,18 @@ func UpdateBaseMenu(c *gin.Context) { "Component": {utils.NotEmpty()}, "Sort": {utils.Ge("0")}, } - MenuVerifyErr := utils.Verify(menu, MenuVerify) - if MenuVerifyErr != nil { - response.FailWithMessage(MenuVerifyErr.Error(), c) + if err := utils.Verify(menu, MenuVerify); err != nil { + response.FailWithMessage(err.Error(), c) return } - MetaVerify := utils.Rules{ - "Title": {utils.NotEmpty()}, - } - MetaVerifyErr := utils.Verify(menu.Meta, MetaVerify) - if MetaVerifyErr != nil { - response.FailWithMessage(MetaVerifyErr.Error(), c) + if err := utils.Verify(menu.Meta, utils.Rules{"Title": {utils.NotEmpty()}}); err != nil { + response.FailWithMessage(err.Error(), c) return } - err := service.UpdateBaseMenu(menu) - if err != nil { - response.FailWithMessage(fmt.Sprintf("修改失败:%v", err), c) + if err := service.UpdateBaseMenu(menu); err != nil { + response.FailWithMessage(fmt.Sprintf("更新失败:%v", err), c) } else { - response.OkWithMessage("修改成功", c) + response.OkWithMessage("更新成功", c) } } @@ -236,23 +207,18 @@ func UpdateBaseMenu(c *gin.Context) { // @Security ApiKeyAuth // @accept application/json // @Produce application/json -// @Param data body request.GetById true "根据id获取菜单" -// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Param data body request.GetById true "菜单id" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"操作成功"}" // @Router /menu/getBaseMenuById [post] func GetBaseMenuById(c *gin.Context) { var idInfo request.GetById _ = c.ShouldBindJSON(&idInfo) - MenuVerify := utils.Rules{ - "Id": {"notEmpty"}, - } - MenuVerifyErr := utils.Verify(idInfo, MenuVerify) - if MenuVerifyErr != nil { - response.FailWithMessage(MenuVerifyErr.Error(), c) + if err := utils.Verify(idInfo, utils.Rules{"Id": {"notEmpty"}}); err != nil { + response.FailWithMessage(err.Error(), c) return } - err, menu := service.GetBaseMenuById(idInfo.Id) - if err != nil { - response.FailWithMessage(fmt.Sprintf("查询失败:%v", err), c) + if err, menu := service.GetBaseMenuById(idInfo.Id); err != nil { + response.FailWithMessage(fmt.Sprintf("获取失败:%v", err), c) } else { response.OkWithData(resp.SysBaseMenuResponse{Menu: menu}, c) } diff --git a/server/model/request/common.go b/server/model/request/common.go index f45a950a..a7c542e6 100644 --- a/server/model/request/common.go +++ b/server/model/request/common.go @@ -13,4 +13,11 @@ type GetById struct { type IdsReq struct { Ids []int `json:"ids" form:"ids"` -} \ No newline at end of file +} + +// Get role by id structure +type GetAuthorityId struct { + AuthorityId string +} + +type Empty struct {} \ No newline at end of file diff --git a/server/model/request/sys_menu.go b/server/model/request/sys_menu.go index 7096a9e2..e17ffafd 100644 --- a/server/model/request/sys_menu.go +++ b/server/model/request/sys_menu.go @@ -7,8 +7,3 @@ type AddMenuAuthorityInfo struct { Menus []model.SysBaseMenu AuthorityId string } - -// Get role by id structure -type AuthorityIdInfo struct { - AuthorityId string -} diff --git a/server/service/sys_authority.go b/server/service/sys_authority.go index 1ef4c921..734a4ed6 100644 --- a/server/service/sys_authority.go +++ b/server/service/sys_authority.go @@ -39,7 +39,7 @@ func CopyAuthority(copyInfo response.SysAuthorityCopyResponse) (err error, autho return errors.New("存在相同角色id"), authority } copyInfo.Authority.Children = []model.SysAuthority{} - err, menus := GetMenuAuthority(copyInfo.OldAuthorityId) + err, menus := GetMenuAuthority(&request.GetAuthorityId{AuthorityId: copyInfo.OldAuthorityId}) var baseMenu []model.SysBaseMenu for _, v := range menus { intNum, _ := strconv.Atoi(v.MenuId) diff --git a/server/service/sys_menu.go b/server/service/sys_menu.go index 573ab915..8ebf5a35 100644 --- a/server/service/sys_menu.go +++ b/server/service/sys_menu.go @@ -4,6 +4,7 @@ import ( "errors" "gin-vue-admin/global" "gin-vue-admin/model" + "gin-vue-admin/model/request" "gorm.io/gorm" "strconv" ) @@ -155,9 +156,9 @@ func AddMenuAuthority(menus []model.SysBaseMenu, authorityId string) (err error) // @return err error // @return menus []SysBaseMenu -func GetMenuAuthority(authorityId string) (err error, menus []model.SysMenu) { +func GetMenuAuthority(info *request.GetAuthorityId) (err error, menus []model.SysMenu) { + err = global.GVA_DB.Where("authority_id = ? ", info.AuthorityId).Order("sort").Find(&menus).Error //sql := "SELECT authority_menu.keep_alive,authority_menu.default_menu,authority_menu.created_at,authority_menu.updated_at,authority_menu.deleted_at,authority_menu.menu_level,authority_menu.parent_id,authority_menu.path,authority_menu.`name`,authority_menu.hidden,authority_menu.component,authority_menu.title,authority_menu.icon,authority_menu.sort,authority_menu.menu_id,authority_menu.authority_id FROM authority_menu WHERE authority_menu.authority_id = ? ORDER BY authority_menu.sort ASC" - err = global.GVA_DB.Where("authority_id = ? ", authorityId).Order("sort").Find(&menus).Error //err = global.GVA_DB.Raw(sql, authorityId).Scan(&menus).Error return err, menus } -- GitLab