package com.ibeetl.admin.console.service; import com.ibeetl.admin.console.dao.MenuConsoleDao; import com.ibeetl.admin.core.dao.CoreRoleMenuDao; import com.ibeetl.admin.core.entity.CoreMenu; import com.ibeetl.admin.core.rbac.tree.MenuItem; import com.ibeetl.admin.core.service.CoreBaseService; import com.ibeetl.admin.core.service.CorePlatformService; import com.ibeetl.admin.core.util.PlatformException; import org.beetl.sql.core.engine.PageQuery; 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 extends CoreBaseService { @Autowired MenuConsoleDao menuDao; @Autowired CoreRoleMenuDao roleMenuDao; @Autowired CorePlatformService platformService; public void queryByCondtion(PageQuery query) { menuDao.queryByCondtion(query); queryListAfter(query.getList()); } public Long saveMenu(CoreMenu menu) { CoreMenu query = new CoreMenu(); query.setCode(menu.getCode()); long queryCount = menuDao.templateCount(query); if (queryCount > 0) { //throw new PlatformException("菜单编码已存在"); return -1L; } menuDao.insert(menu, true); 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.updateById(menu); platformService.clearMenuCache(); } public CoreMenu getMenu(Long menuId) { CoreMenu menu = menuDao.unique(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.deleteById(menuId); } } private void realDeleteMenu(List all) { List ids = new ArrayList<>(all.size()); for (MenuItem item : all) { ids.add(item.getId()); this.menuDao.deleteById(item.getId()); } //删除角色和菜单的关系 roleMenuDao.deleteRoleMenu(ids); } }