From 195942a4f5bf7979014370a141e8f7ff3392e2c0 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 27 Jun 2023 13:38:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9=E8=8F=9C?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/menu.go | 26 ++++++++++++++++++++------ api/dao/adminMenu.go | 9 +++++++++ api/dao/adminMenuApi.go | 8 ++++++++ api/dao/adminRole.go | 11 ++++++++++- api/service/menu.go | 27 ++++++++++++++++++++------- 5 files changed, 67 insertions(+), 14 deletions(-) diff --git a/api/controller/menu.go b/api/controller/menu.go index 2d3f478..6eaae2c 100644 --- a/api/controller/menu.go +++ b/api/controller/menu.go @@ -7,6 +7,7 @@ import ( "hospital-admin-api/api/service" "hospital-admin-api/global" "hospital-admin-api/utils" + "strconv" ) type Menu struct{} @@ -95,35 +96,48 @@ func (r *Menu) PutMenu(c *gin.Context) { return } + id := c.Param("menu_id") + if id == "" { + responses.FailWithMessage("缺少参数", c) + return + } + + // 将 id 转换为 int64 类型 + menuId, err := strconv.ParseInt(id, 10, 64) + if err != nil { + responses.Fail(c) + return + } + // 处理参数 - if MenuRequest.AddMenu.MenuType == 1 || MenuRequest.AddMenu.MenuType == 2 { + if MenuRequest.PutMenu.MenuType == 1 || MenuRequest.PutMenu.MenuType == 2 { // 模块-菜单 - if MenuRequest.AddMenu.Path == "" { + if MenuRequest.PutMenu.Path == "" { responses.FailWithMessage("请填写页面地址", c) return } - if MenuRequest.AddMenu.Component == "" { + if MenuRequest.PutMenu.Component == "" { responses.FailWithMessage("请填写组件名称", c) return } } // 非模块无父级 - if MenuRequest.AddMenu.ParentId == 0 && MenuRequest.AddMenu.MenuType != 1 { + if MenuRequest.PutMenu.ParentId == 0 && MenuRequest.PutMenu.MenuType != 1 { responses.FailWithMessage("请选择父节点", c) return } // 模块存在父级 - if MenuRequest.AddMenu.ParentId != 0 && MenuRequest.AddMenu.MenuType == 1 { + if MenuRequest.PutMenu.ParentId != 0 && MenuRequest.PutMenu.MenuType == 1 { responses.FailWithMessage("顶级菜单,无法添加上级菜单", c) return } // 业务处理 MenuService := service.MenuService{} - _, err := MenuService.PutMenu(MenuRequest.PutMenu) + _, err = MenuService.PutMenu(menuId, MenuRequest.PutMenu) if err != nil { responses.FailWithMessage(err.Error(), c) return diff --git a/api/dao/adminMenu.go b/api/dao/adminMenu.go index 69be3b1..4bfa1cb 100644 --- a/api/dao/adminMenu.go +++ b/api/dao/adminMenu.go @@ -52,3 +52,12 @@ func (r *AdminMenuDao) AddAdminMenu(tx *gorm.DB, model *model.AdminMenu) (*model } return model, nil } + +// EditAdminMenuByIdWithStruct 修改菜单-struct +func (r *AdminMenuDao) EditAdminMenuByIdWithStruct(tx *gorm.DB, menuId int64, model *model.AdminMenu) error { + err := tx.Where("menu_id = ?", menuId).Updates(model).Error + if err != nil { + return err + } + return nil +} diff --git a/api/dao/adminMenuApi.go b/api/dao/adminMenuApi.go index 15de034..4a1de1a 100644 --- a/api/dao/adminMenuApi.go +++ b/api/dao/adminMenuApi.go @@ -26,3 +26,11 @@ func (r *AdminMenuApiDao) AddAdminMenuApi(tx *gorm.DB, model *model.AdminMenuApi } return model, nil } + +// DeleteAdminRoleMenuByMenuId 删除菜单关联api-菜单id +func (r *AdminMenuApiDao) DeleteAdminRoleMenuByMenuId(tx *gorm.DB, menuId int64) error { + if err := tx.Where("menu_id = ?", menuId).Delete(&model.AdminMenuApi{}).Error; err != nil { + return err + } + return nil +} diff --git a/api/dao/adminRole.go b/api/dao/adminRole.go index 5a7aa0d..ede7d97 100644 --- a/api/dao/adminRole.go +++ b/api/dao/adminRole.go @@ -58,7 +58,7 @@ func (r *AdminRoleDao) GetAdminRolePageSearch(roleName string, page, pageSize in return m, totalRecords, nil } -// EditAdminRoleById 修改角色 +// EditAdminRoleById 修改角色-interface func (r *AdminRoleDao) EditAdminRoleById(tx *gorm.DB, roleId int64, data interface{}) error { err := tx.Model(&model.AdminRole{}).Where("role_id = ?", roleId).Updates(data).Error if err != nil { @@ -74,3 +74,12 @@ func (r *AdminRoleDao) DeleteAdminRoleByRoleId(tx *gorm.DB, roleId int64) error } return nil } + +// EditAdminRoleByIdWithStruct 修改角色-struct +func (r *AdminRoleDao) EditAdminRoleByIdWithStruct(tx *gorm.DB, roleId int64, model *model.AdminRole) error { + err := tx.Where("role_id = ?", roleId).Updates(model).Error + if err != nil { + return err + } + return nil +} diff --git a/api/service/menu.go b/api/service/menu.go index 5cc1316..c91d7a6 100644 --- a/api/service/menu.go +++ b/api/service/menu.go @@ -124,7 +124,7 @@ func (r *MenuService) AddMenu(AddMenuRequest requests.AddMenu) (bool, error) { } // PutMenu 修改菜单 -func (r *MenuService) PutMenu(PutMenuRequest requests.PutMenu) (bool, error) { +func (r *MenuService) PutMenu(requestMenuId int64, PutMenuRequest requests.PutMenu) (bool, error) { AdminMenuDao := dao.AdminMenuDao{} AdminMenuApiDao := dao.AdminMenuApiDao{} AdminApiDao := dao.AdminApiDao{} @@ -137,6 +137,12 @@ func (r *MenuService) PutMenu(PutMenuRequest requests.PutMenu) (bool, error) { } } + // 获取当前菜单数据 + adminMenu, _ := AdminMenuDao.GetAdminMenuById(requestMenuId) + if adminMenu == nil { + return false, errors.New("菜单数据错误") + } + // 开始事务 tx := global.Db.Begin() defer func() { @@ -145,7 +151,7 @@ func (r *MenuService) PutMenu(PutMenuRequest requests.PutMenu) (bool, error) { } }() - // 新增菜单 + // 修改菜单 AdminMenuModel := &model.AdminMenu{ MenuName: PutMenuRequest.MenuName, MenuTitle: PutMenuRequest.MenuTitle, @@ -159,10 +165,17 @@ func (r *MenuService) PutMenu(PutMenuRequest requests.PutMenu) (bool, error) { Component: PutMenuRequest.Component, } - adminMenu, _ := AdminMenuDao.AddAdminMenu(tx, AdminMenuModel) - if adminMenu == nil { + err := AdminMenuDao.EditAdminMenuByIdWithStruct(tx, adminMenu.MenuId, AdminMenuModel) + if err != nil { tx.Rollback() - return false, errors.New("新增失败") + return false, errors.New("修改失败") + } + + // 删除菜单关联api + err = AdminMenuApiDao.DeleteAdminRoleMenuByMenuId(tx, adminMenu.MenuId) + if err != nil { + tx.Rollback() + return false, errors.New("修改失败") } // 新增菜单api @@ -172,7 +185,7 @@ func (r *MenuService) PutMenu(PutMenuRequest requests.PutMenu) (bool, error) { adminApi, _ := AdminApiDao.GetAdminApiById(v) if adminApi == nil { tx.Rollback() - return false, errors.New("接口不存在") + return false, errors.New("关联接口api不存在") } AdminMenuApiModel := &model.AdminMenuApi{ @@ -183,7 +196,7 @@ func (r *MenuService) PutMenu(PutMenuRequest requests.PutMenu) (bool, error) { adminMenuApi, _ := AdminMenuApiDao.AddAdminMenuApi(tx, AdminMenuApiModel) if adminMenuApi == nil { tx.Rollback() - return false, errors.New("新增失败") + return false, errors.New("修改失败") } } }