package com.xzx.gc.role.service; import com.xzx.gc.entity.CoreMenu; import com.xzx.gc.role.mapper.CoreRoleMenuMapper; import com.xzx.gc.role.mapper.MenuConsoleMapper; import com.xzx.gc.role.rbac.tree.MenuItem; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @Service @Transactional public class MenuConsoleService { @Autowired MenuConsoleMapper menuDao; @Autowired CoreRoleMenuMapper roleMenuDao; @Autowired CorePlatformService platformService; public Long saveMenu(CoreMenu menu) { CoreMenu query = new CoreMenu(); query.setCode(menu.getCode()); long queryCount = menuDao.selectCount(query); if (queryCount > 0) { //throw new PlatformException("菜单编码已存在"); return -1L; } menuDao.insertUseGeneratedKeys(menu); platformService.clearMenuCache(); return menu.getId(); } public void deleteMenu(Long menuId) { deleteMenuId(menuId); } public void batchDeleteMenuId(List menuIds) { for (Long id : menuIds) { deleteMenuId(id); } platformService.clearMenuCache(); } public void updateMenu(CoreMenu menu) { menuDao.updateByPrimaryKey(menu); platformService.clearMenuCache(); } public CoreMenu getMenu(Long menuId) { CoreMenu menu = menuDao.selectByPrimaryKey(menuId); platformService.clearMenuCache(); return menu; } private void deleteMenuId(Long menuId) { MenuItem root = platformService.buildMenu(); MenuItem fun = root.findChild(menuId); if(fun!=null){ List all = fun.findAllItem(); //也删除自身 all.add(fun); realDeleteMenu(all); }else{ this.menuDao.deleteByPrimaryKey(menuId); } } private void realDeleteMenu(List all) { List ids = new ArrayList<>(all.size()); for (MenuItem item : all) { ids.add(item.getId()); this.menuDao.deleteByPrimaryKey(item.getId()); } //删除角色和菜单的关系 roleMenuDao.deleteRoleMenu(ids); } public CoreMenu queryById(Long id) { return menuDao.selectByPrimaryKey(id); } }