package com.securityControl.system.service.impl; import com.google.common.collect.Maps; import com.securityControl.system.api.domain.SysUser; import com.securityControl.system.api.domain.decision.SysMenu; import com.securityControl.system.domain.vo.*; import com.securityControl.system.mapper.SysMenuDao; import com.securityControl.system.service.SysMenuService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; /** * */ @Slf4j @Service public class SysMenuServiceImpl implements SysMenuService { @Autowired private SysMenuDao dao; @Override public Map getMenuTree(String keyId) { Map map= Maps.newHashMap(); List allList=dao.getAllMenuList();//查询全部数据 List checkList =dao.getCheckMenu(keyId); List list=new ArrayList<>(); treeMenuList(allList,"0",list); map.put("tree",list); map.put("check",checkList); return map; } /** * 查询全部菜单数据 * @param sysMenu * @return */ @Override public List getMenuList(SysMenuEntity sysMenu) { try{ List list= dao.getMenuList(sysMenu);//查询全部数据; return list; }catch (Exception e){ } return new ArrayList(); } /** * 新增菜单列表 * @param sysMenu * @return */ @Override public ReturnCodeEntity insertMenu(SysMenuEntity sysMenu) { ReturnCodeEntity returnCodeEntity=new ReturnCodeEntity(); try{ if("1".equals(sysMenu.getTypes())){ int num=dao.getMenuNameNum(sysMenu); if(num>0){ returnCodeEntity.setMsg("菜单名称已存在"); returnCodeEntity.setCode("201"); return returnCodeEntity; } } int num2=dao.insertMenu(sysMenu); if(num2<1){ returnCodeEntity.setMsg("新增失败,请联系管理员"); returnCodeEntity.setCode("202"); return returnCodeEntity; } returnCodeEntity.setMsg("添加成功"); returnCodeEntity.setCode("200"); return returnCodeEntity; }catch (Exception e){ returnCodeEntity.setMsg("网络异常,请稍后重试"); returnCodeEntity.setCode("203"); } return returnCodeEntity; } /** * 删除菜单数据 * @param keyId * @return */ @Override public ReturnCodeEntity deleteMenu(String keyId) { ReturnCodeEntity returnCodeEntity=new ReturnCodeEntity(); try{ int num=dao.getChilderNum(keyId);//查询是否有子节点 if(num>0){ returnCodeEntity.setMsg("该节点下存在子节点,无法删除"); returnCodeEntity.setCode("202"); return returnCodeEntity; } int num2=dao.deleteMenu(keyId); if(num2<1){ returnCodeEntity.setMsg("删除失败,请联系管理员"); returnCodeEntity.setCode("200"); return returnCodeEntity; } returnCodeEntity.setMsg("删除成功"); returnCodeEntity.setCode("200"); return returnCodeEntity; }catch (Exception e){ returnCodeEntity.setMsg("网络异常,请稍后重试"); returnCodeEntity.setCode("203"); } return returnCodeEntity; } /** * 查询菜单数据列表 * @param keyId * @return */ @Override public SysMenuEntity getMenuDetail(String keyId) { return dao.getMenuDetail(keyId); } /** * 更新菜单 * @param sysMenu * @return */ @Override public ReturnCodeEntity updateMenu(SysMenuEntity sysMenu) { ReturnCodeEntity returnCodeEntity=new ReturnCodeEntity(); try{ if("1".equals(sysMenu.getTypes())){ int num=dao.getMenuNameNum(sysMenu); if(num>0){ returnCodeEntity.setMsg("菜单名称已存在"); returnCodeEntity.setCode("201"); return returnCodeEntity; } } int num2=dao.updateMenu(sysMenu); if(num2<1){ returnCodeEntity.setMsg("修改失败,请联系管理员"); returnCodeEntity.setCode("202"); return returnCodeEntity; } returnCodeEntity.setMsg("修改成功"); returnCodeEntity.setCode("200"); return returnCodeEntity; }catch (Exception e){ System.err.println(e.toString()); returnCodeEntity.setMsg("网络异常,请稍后重试"); returnCodeEntity.setCode("203"); } return returnCodeEntity; } /** * 子节点数据处理 * @param menuList * @param pid * @param childMenu */ private void treeMenuList(List menuList, String pid,List childMenu) { for (DtreeEntity mu : menuList) {//遍历菜单 //遍历出父id等于参数的id,add进子节点集合 if (pid.equals(mu.getParentId())) { List childList = new ArrayList();//创建数据 List cl=new ArrayList(); CheckArr checkArr=new CheckArr("0","0"); cl.add(checkArr); mu.setCheckArr(cl); //递归遍历下一级 treeMenuList(menuList, mu.getId(),childList); if(childList.size()>0){ mu.setChildren(childList); }else{ mu.setLast(true); } childMenu.add(mu); } } } /** * * @param sysUser * @return */ @Override public Set getMenuPermission(SysUser sysUser) { return dao.getMenuPermission(sysUser); } /** * 系統菜單獲取 * @param userId * @return */ @Override public List getMenuPer(String userId, String types) { return dao.getMenuPer(userId,types); } /** * 查询当前角色配置的菜单信息 * @param userId * @return */ @Override public List getAllMenuList(String userId) { List menuList =new ArrayList(); try{ menuList =dao.getMenu(userId,"0"); getChilder(menuList,userId); }catch (Exception e){ } return menuList; } /** * 子菜单查询 * @param menuList */ private void getChilder(List menuList, String userId) { for (SysMenu menu : menuList) { List list=dao.getMenu(userId, menu.getMenuId()); if(list!=null &&list.size()>0){ menu.setChilder(list); menu.setLast(false); }else{ menu.setChilder(new ArrayList()); menu.setLast(true); } } } }