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<Long> 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<MenuItem> all = fun.findAllItem();  
 | 
            //也删除自身  
 | 
            all.add(fun);  
 | 
            realDeleteMenu(all);  
 | 
        }else{  
 | 
            this.menuDao.deleteByPrimaryKey(menuId);  
 | 
        }  
 | 
  
 | 
  
 | 
    }  
 | 
  
 | 
    private void realDeleteMenu(List<MenuItem> all) {  
 | 
        List<Long> 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);  
 | 
    }  
 | 
}  
 |