package com.moral.service.impl; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.Iterator; import java.util.List; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.github.pagehelper.PageHelper; import com.moral.common.bean.Constants; import com.moral.common.bean.PageBean; import com.moral.common.util.ExampleUtil; import com.moral.entity.Menu; import com.moral.entity.RoleMenu; import com.moral.mapper.MenuMapper; import com.moral.mapper.RoleMenuMapper; import com.moral.service.MenuService; import com.moral.util.TkMybatisUtils; import javax.annotation.Resource; import tk.mybatis.mapper.entity.Example; @Service public class MenuServiceImpl implements MenuService { private static Class ENTITY_CLASS = Menu.class; @Resource private MenuMapper menuMapper; @Resource private RoleMenuMapper roleMenuMapper; @Override @Transactional public void addOrModify(Menu menu) { try { if (menu.getMenuParentId() == null) { menu.setMenuParentId(0); } menu.setUpdateTime(new Date()); menu.setUpdateUser(menu.getUpdateUser()); if (menu.getId() != null) { menuMapper.updateByPrimaryKeySelective(menu); } else { Menu menuQuery = new Menu(); menuQuery.setMenuCode(menu.getMenuCode()); menuQuery.setIsDelete(Constants.IS_DELETE_FALSE); Menu menuResult = menuMapper.selectOne(menuQuery); if (menuResult != null) { menu.setId(menuResult.getId()); menuMapper.updateByPrimaryKeySelective(menu); } else { menu.setChannelId(menu.getChannelId()); menu.setIsDelete(Constants.IS_DELETE_FALSE); menu.setCreateTime(new Date()); menu.setCreateUser(menu.getCreateUser()); menuMapper.insertSelective(menu); } } } catch (Exception ex) { throw ex; } } @Override public PageBean queryByAllPageBean(PageBean pageBean) { Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean); List criteriaList = example.getOredCriteria(); if (criteriaList != null && criteriaList.size() > 0) { for (Example.Criteria cri : criteriaList) { cri.andNotEqualTo("isDelete", Constants.IS_DELETE_TRUE); } } else { example.or().andNotEqualTo("isDelete", Constants.IS_DELETE_TRUE); } if (example.getOrderByClause() == null || example.getOrderByClause().isEmpty()) { example.setOrderByClause("menu_name asc"); } List menuList = menuMapper.selectWithMenuNameByExample(example); Iterator iterator = menuList.iterator(); return new PageBean(menuList); } @Override public int countByExample(PageBean pageBean) { Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean); TkMybatisUtils.addDeletesToExample(example); return menuMapper.countByExample(example); } @Override public PageBean getMenuList(PageBean pageBean) { Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean); TkMybatisUtils.addDeletesToExample(example); if (pageBean.getPageSize() > 0) { PageHelper.startPage(pageBean.getPageIndex(), pageBean.getPageSize()); } List menuList = menuMapper.getMenuList(example); return new PageBean(menuList); } @Override public List getMenuParentList(String menuName) { List menuParentList = menuMapper.getParentMenuList(menuName); return menuParentList; } @Override @Transactional public void deleteByIds(Integer[] ids) { Menu menu = new Menu(); menu.setIsDelete(Constants.IS_DELETE_TRUE); Example example = new Example(ENTITY_CLASS); example.or().andIn("id", Arrays.asList(ids)); menuMapper.updateByExampleSelective(menu, example); Example roleMenuExample = new Example(RoleMenu.class); roleMenuExample.or().andIn("menuId", Arrays.asList(ids)); roleMenuMapper.deleteByExample(roleMenuExample); } @Override public List getZNodes() { List menuList = menuMapper.getMenuListInfo(); List zNodes = new ArrayList<>(); for (Menu menu : menuList) { if (menu.getMenuOrder().toString().substring(0, 1).equals("1")) { menu.setMenuParentId(Integer.valueOf(menu.getMenuOrder().toString().substring(0, 1))); } else { if (menu.getMenuOrder().toString().length() == 2) { menu.setMenuParentId(Integer.valueOf(menu.getMenuOrder().toString().substring(0, 1))); } else if (menu.getMenuOrder().toString().length() == 3) { menu.setMenuParentId(Integer.valueOf(menu.getMenuOrder().toString().substring(0, 2))); } } zNodes.add(menu); } return zNodes; } @Override public List getMenuOrders(Integer roleId) { List menuOrders = menuMapper.getMenuOrdersByRoleId(roleId); List channels = roleMenuMapper.getChannels(roleId); if (CollectionUtils.isNotEmpty(channels)) { for (Integer channel : channels) { menuOrders.add(channel); } } return menuOrders; } }