新增删除菜单
This commit is contained in:
parent
195942a4f5
commit
c8fd746540
@ -146,3 +146,26 @@ func (r *Menu) PutMenu(c *gin.Context) {
|
||||
responses.Ok(c)
|
||||
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
|
||||
}
|
||||
|
||||
// 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
|
||||
}
|
||||
|
||||
// DeleteAdminRoleMenuByMenuId 删除菜单关联api-菜单id
|
||||
func (r *AdminMenuApiDao) DeleteAdminRoleMenuByMenuId(tx *gorm.DB, menuId int64) error {
|
||||
// DeleteAdminMenuApiByMenuId 删除菜单关联api-菜单id
|
||||
func (r *AdminMenuApiDao) DeleteAdminMenuApiByMenuId(tx *gorm.DB, menuId int64) error {
|
||||
if err := tx.Where("menu_id = ?", menuId).Delete(&model.AdminMenuApi{}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -1,8 +1,9 @@
|
||||
package requests
|
||||
|
||||
type MenuRequest struct {
|
||||
AddMenu // 新增菜单
|
||||
PutMenu // 修改菜单
|
||||
AddMenu // 新增菜单
|
||||
PutMenu // 修改菜单
|
||||
DeleteMenu // 删除菜单
|
||||
}
|
||||
|
||||
// AddMenu 新增菜单
|
||||
@ -34,3 +35,8 @@ type PutMenu struct {
|
||||
Component string `json:"component" form:"component" label:"组件名称"` // 组件名称-按钮不需要
|
||||
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.DELETE("", api.Menu.DeleteMenu)
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package service
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/gin-gonic/gin"
|
||||
"hospital-admin-api/api/dao"
|
||||
"hospital-admin-api/api/model"
|
||||
"hospital-admin-api/api/requests"
|
||||
@ -172,7 +173,7 @@ func (r *MenuService) PutMenu(requestMenuId int64, PutMenuRequest requests.PutMe
|
||||
}
|
||||
|
||||
// 删除菜单关联api
|
||||
err = AdminMenuApiDao.DeleteAdminRoleMenuByMenuId(tx, adminMenu.MenuId)
|
||||
err = AdminMenuApiDao.DeleteAdminMenuApiByMenuId(tx, adminMenu.MenuId)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return false, errors.New("修改失败")
|
||||
@ -205,3 +206,66 @@ func (r *MenuService) PutMenu(requestMenuId int64, PutMenuRequest requests.PutMe
|
||||
|
||||
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 删除角色-批量
|
||||
func (r *RoleService) DeleteRole(c *gin.Context, DeleteRoleRequest requests.DeleteRole) (bool, error) {
|
||||
// 获取当前登陆用户数据
|
||||
// 获取当前登陆用户角色数据
|
||||
roleId := c.GetInt64("RoleId")
|
||||
if roleId == 0 {
|
||||
return false, errors.New("数据错误")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user