新增删除菜单
This commit is contained in:
parent
195942a4f5
commit
c8fd746540
@ -146,3 +146,26 @@ func (r *Menu) PutMenu(c *gin.Context) {
|
|||||||
responses.Ok(c)
|
responses.Ok(c)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteMenu 删除菜单-批量
|
||||||
|
func (r *Menu) DeleteMenu(c *gin.Context) {
|
||||||
|
if err := c.ShouldBindJSON(&MenuRequest.DeleteMenu); err != nil {
|
||||||
|
responses.FailWithMessage(err.Error(), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 参数验证
|
||||||
|
if err := global.Validate.Struct(MenuRequest.DeleteMenu); err != nil {
|
||||||
|
responses.FailWithMessage(utils.Translate(err), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 业务处理
|
||||||
|
MenuService := service.MenuService{}
|
||||||
|
_, err := MenuService.DeleteMenu(c, MenuRequest.DeleteMenu)
|
||||||
|
if err != nil {
|
||||||
|
responses.FailWithMessage(err.Error(), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
responses.Ok(c)
|
||||||
|
}
|
||||||
|
|||||||
@ -61,3 +61,11 @@ func (r *AdminMenuDao) EditAdminMenuByIdWithStruct(tx *gorm.DB, menuId int64, mo
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteAdminMenuByMenuId 删除菜单
|
||||||
|
func (r *AdminMenuDao) DeleteAdminMenuByMenuId(tx *gorm.DB, menuId int64) error {
|
||||||
|
if err := tx.Delete(&model.AdminMenu{}, menuId).Error; err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@ -27,8 +27,8 @@ func (r *AdminMenuApiDao) AddAdminMenuApi(tx *gorm.DB, model *model.AdminMenuApi
|
|||||||
return model, nil
|
return model, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteAdminRoleMenuByMenuId 删除菜单关联api-菜单id
|
// DeleteAdminMenuApiByMenuId 删除菜单关联api-菜单id
|
||||||
func (r *AdminMenuApiDao) DeleteAdminRoleMenuByMenuId(tx *gorm.DB, menuId int64) error {
|
func (r *AdminMenuApiDao) DeleteAdminMenuApiByMenuId(tx *gorm.DB, menuId int64) error {
|
||||||
if err := tx.Where("menu_id = ?", menuId).Delete(&model.AdminMenuApi{}).Error; err != nil {
|
if err := tx.Where("menu_id = ?", menuId).Delete(&model.AdminMenuApi{}).Error; err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package requests
|
|||||||
type MenuRequest struct {
|
type MenuRequest struct {
|
||||||
AddMenu // 新增菜单
|
AddMenu // 新增菜单
|
||||||
PutMenu // 修改菜单
|
PutMenu // 修改菜单
|
||||||
|
DeleteMenu // 删除菜单
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddMenu 新增菜单
|
// AddMenu 新增菜单
|
||||||
@ -34,3 +35,8 @@ type PutMenu struct {
|
|||||||
Component string `json:"component" form:"component" label:"组件名称"` // 组件名称-按钮不需要
|
Component string `json:"component" form:"component" label:"组件名称"` // 组件名称-按钮不需要
|
||||||
ApiIds []int64 `json:"api_ids" form:"api_ids" label:"接口"` // 接口ids
|
ApiIds []int64 `json:"api_ids" form:"api_ids" label:"接口"` // 接口ids
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteMenu 删除菜单
|
||||||
|
type DeleteMenu struct {
|
||||||
|
MenuIds []int64 `json:"menu_ids" form:"menu_ids" validate:"required" label:"菜单id"`
|
||||||
|
}
|
||||||
|
|||||||
@ -105,5 +105,8 @@ func privateRouter(r *gin.Engine, api controller.Api) {
|
|||||||
|
|
||||||
// 修改菜单
|
// 修改菜单
|
||||||
menuGroup.PUT("/:menu_id", api.Menu.PutMenu)
|
menuGroup.PUT("/:menu_id", api.Menu.PutMenu)
|
||||||
|
|
||||||
|
// 删除菜单-批量
|
||||||
|
menuGroup.DELETE("", api.Menu.DeleteMenu)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package service
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
"hospital-admin-api/api/dao"
|
"hospital-admin-api/api/dao"
|
||||||
"hospital-admin-api/api/model"
|
"hospital-admin-api/api/model"
|
||||||
"hospital-admin-api/api/requests"
|
"hospital-admin-api/api/requests"
|
||||||
@ -172,7 +173,7 @@ func (r *MenuService) PutMenu(requestMenuId int64, PutMenuRequest requests.PutMe
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 删除菜单关联api
|
// 删除菜单关联api
|
||||||
err = AdminMenuApiDao.DeleteAdminRoleMenuByMenuId(tx, adminMenu.MenuId)
|
err = AdminMenuApiDao.DeleteAdminMenuApiByMenuId(tx, adminMenu.MenuId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
return false, errors.New("修改失败")
|
return false, errors.New("修改失败")
|
||||||
@ -205,3 +206,66 @@ func (r *MenuService) PutMenu(requestMenuId int64, PutMenuRequest requests.PutMe
|
|||||||
|
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteMenu 删除菜单
|
||||||
|
func (r *MenuService) DeleteMenu(c *gin.Context, DeleteMenuRequest requests.DeleteMenu) (bool, error) {
|
||||||
|
// 获取当前登陆用户角色数据
|
||||||
|
roleId := c.GetInt64("RoleId")
|
||||||
|
if roleId == 0 {
|
||||||
|
return false, errors.New("数据错误")
|
||||||
|
}
|
||||||
|
|
||||||
|
AdminMenuDao := dao.AdminMenuDao{}
|
||||||
|
AdminMenuApiDao := dao.AdminMenuApiDao{}
|
||||||
|
|
||||||
|
AdminRoleDao := dao.AdminRoleDao{}
|
||||||
|
adminRole, err := AdminRoleDao.GetAdminRoleFirstById(roleId)
|
||||||
|
if err != nil || adminRole == nil {
|
||||||
|
return false, errors.New("非法操作")
|
||||||
|
}
|
||||||
|
|
||||||
|
if adminRole.IsAdmin == 0 {
|
||||||
|
return false, errors.New("暂无权限,请联系管理员删除")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 开始事务
|
||||||
|
tx := global.Db.Begin()
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
for _, v := range DeleteMenuRequest.MenuIds {
|
||||||
|
// 获取菜单数据
|
||||||
|
adminMenu, _ := AdminMenuDao.GetAdminMenuById(v)
|
||||||
|
if adminMenu == nil {
|
||||||
|
tx.Rollback()
|
||||||
|
return false, errors.New("删除失败")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 判断是否特殊菜单
|
||||||
|
if adminMenu.MenuId == 1 || adminMenu.ParentId == 1 {
|
||||||
|
tx.Rollback()
|
||||||
|
return false, errors.New("系统菜单,请勿删除")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除菜单关联api
|
||||||
|
err = AdminMenuApiDao.DeleteAdminMenuApiByMenuId(tx, v)
|
||||||
|
if err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
return false, errors.New("删除失败")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除菜单
|
||||||
|
err = AdminMenuDao.DeleteAdminMenuByMenuId(tx, v)
|
||||||
|
if err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
return false, errors.New("删除失败")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tx.Commit()
|
||||||
|
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|||||||
@ -276,7 +276,7 @@ func (r *RoleService) PutRole(c *gin.Context, requestRoleId int64, PutRoleReques
|
|||||||
|
|
||||||
// DeleteRole 删除角色-批量
|
// DeleteRole 删除角色-批量
|
||||||
func (r *RoleService) DeleteRole(c *gin.Context, DeleteRoleRequest requests.DeleteRole) (bool, error) {
|
func (r *RoleService) DeleteRole(c *gin.Context, DeleteRoleRequest requests.DeleteRole) (bool, error) {
|
||||||
// 获取当前登陆用户数据
|
// 获取当前登陆用户角色数据
|
||||||
roleId := c.GetInt64("RoleId")
|
roleId := c.GetInt64("RoleId")
|
||||||
if roleId == 0 {
|
if roleId == 0 {
|
||||||
return false, errors.New("数据错误")
|
return false, errors.New("数据错误")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user