| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- package cn.com.goldenwater.dcproj.service.impl.system;
- import cn.com.goldenwater.core.service.AbstractCrudService;
- import cn.com.goldenwater.dcproj.dao.BisInspAllRlationPersDao;
- import cn.com.goldenwater.dcproj.dao.MenuDao;
- import cn.com.goldenwater.dcproj.dao.PrivDao;
- import cn.com.goldenwater.dcproj.dto.MenuDto;
- import cn.com.goldenwater.dcproj.enums.PrivTypeEnum;
- import cn.com.goldenwater.dcproj.enums.SqlExecuteStateEnum;
- import cn.com.goldenwater.dcproj.enums.SystemFlagEnum;
- import cn.com.goldenwater.dcproj.model.BisInspAllRlationPers;
- import cn.com.goldenwater.dcproj.model.Menu;
- import cn.com.goldenwater.dcproj.model.Priv;
- import cn.com.goldenwater.dcproj.param.GetMenuByUserIdParam;
- import cn.com.goldenwater.dcproj.param.InsertMenuParam;
- import cn.com.goldenwater.dcproj.param.MenuParam;
- import cn.com.goldenwater.dcproj.param.UpdateMenuParam;
- import cn.com.goldenwater.dcproj.service.MenuService;
- import cn.com.goldenwater.dcproj.utils.RecursiveSort;
- import cn.com.goldenwater.id.util.UuidUtil;
- import com.github.pagehelper.PageHelper;
- import com.github.pagehelper.PageInfo;
- import org.apache.commons.lang3.StringUtils;
- 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;
- import java.util.Optional;
- /**
- * @author lune
- * @date 2018-2-13
- */
- @Service
- @Transactional(rollbackFor = Exception.class)
- public class MenuServiceImpl extends AbstractCrudService<Menu, MenuParam> implements MenuService {
- @Autowired
- private MenuDao menuDao;
- @Autowired
- private PrivDao privDao;
- @Autowired
- private BisInspAllRlationPersDao bisInspAllRlationPersDao;
- public MenuServiceImpl(MenuDao menuDao) {
- super(menuDao);
- this.menuDao = menuDao;
- }
- @Override
- public PageInfo<Menu> getMenuByUserId(GetMenuByUserIdParam p) throws Exception {
- BisInspAllRlationPers per = bisInspAllRlationPersDao.get(p.getUserId());
- if (per == null) {
- throw new Exception("此用户不存在:" + p.getUserId());
- }
- if (per.getOwnerSystem() == null) {
- throw new Exception("用户所属系统不正确:" + per.getOwnerSystem());
- }
- List<String> systemList = new ArrayList<>();
- if (!SystemFlagEnum.DC_ALL.getValue().equals(per.getOwnerSystem())) {
- systemList.add(SystemFlagEnum.DC_ALL.getValue());
- systemList.add(per.getOwnerSystem());
- }
- List<Menu> list = menuDao.getMenuByUserId(p.getUserId(), p.getSortlevel(), p.getMenuName(), p.getOwnApp(), systemList);
- // 递归 菜单,重新排序
- List<Menu> menuList = RecursiveSort.sort(list);
- list.removeAll(menuList);
- menuList.addAll(list);
- // 分页,截取这一段
- int index = (p.getPageNum() - 1) * p.getPageSize();
- if (index > menuList.size()) {
- index = 0;
- // index = menuList.size() / index;
- }
- int endIndex = index + p.getPageSize();
- if (endIndex > menuList.size()) {
- endIndex = menuList.size();
- }
- List<Menu> subList = new ArrayList<>();
- if (menuList.size() > 0) {
- subList = menuList.subList(index, endIndex);
- }
- PageInfo<Menu> pageInfo = new PageInfo<>(subList);
- pageInfo.setTotal(menuList.size());
- pageInfo.setPageNum(p.getPageNum());
- pageInfo.setPageSize(p.getPageSize());
- return pageInfo;
- }
- @Override
- @Transactional
- public Menu addMenuAndPriv(InsertMenuParam menuParam) throws Exception {
- int result1 = 0, result2 = 0;
- String uuid = UuidUtil.uuid(); // 生成uuid
- Priv priv = new Priv();
- priv.setId(uuid);
- priv.setPrivName(menuParam.getMenuName());
- priv.setPrivType(PrivTypeEnum.MENU.getValue()); //字典类型
- priv.setPrivUri(menuParam.getPrivUri());
- priv.setFlagLeaf(menuParam.getFlagLeaf());
- priv.setCode(menuParam.getCode());
- priv.setOwnerSystem(menuParam.getOwnerSystem());
- Menu menu = new Menu();
- if (StringUtils.isBlank(menuParam.getParentId()) || "0".equals(menuParam.getParentId())) {
- menuParam.setParentId("0");
- priv.setParentId("0");
- menu.setSortLevel(1L);
- } else {
- Menu parentMenu = menuDao.get(menuParam.getParentId());
- if (parentMenu == null) {
- throw new Exception("父菜单不存在:" + menuParam.getParentId());
- }
- priv.setParentId(parentMenu.getPrivId());
- menu.setSortLevel(parentMenu.getSortLevel() + 1);
- }
- Long maxSeq = privDao.selectMaxSeqByParentId(priv.getParentId());
- if (maxSeq == null) {
- maxSeq = 0L;
- }
- priv.setSeq(maxSeq + 1);
- menu.setId(uuid);
- menu.setParentId(menuParam.getParentId());
- menu.setPrivId(uuid);
- menu.setHref(menuParam.getHref());
- menu.setIcon(StringUtils.isEmpty(menuParam.getIcon()) ? "" : menuParam.getIcon());
- menu.setMenuName(menuParam.getMenuName());
- menu.setSequence(menuParam.getSequence());
- menu.setOwnApp(menuParam.getOwnApp());
- result1 = menuDao.insert(menu);
- if (result1 == SqlExecuteStateEnum.SUCCESS.getValue()) {
- result2 = privDao.insert(priv);
- } else {
- throw new Exception("插入菜单出错");
- }
- if (result2 != SqlExecuteStateEnum.SUCCESS.getValue()) {
- throw new Exception("插入权限菜单出错");
- }
- return menu;
- }
- @Override
- @Transactional
- public Menu updateWithPriv(UpdateMenuParam p) throws Exception {
- int result1 = 0, result2 = 0;
- boolean result = false;
- Menu m = menuDao.get(p.getId());
- Priv priv = privDao.get(m.getPrivId());
- if (StringUtils.isNotBlank(p.getParentId()) && !p.getParentId().equals(m.getParentId()) ) {
- Menu parentMenu = menuDao.get(p.getParentId());
- Optional.ofNullable(parentMenu).map(Menu::getPrivId).ifPresent(priv::setParentId);
- }
- m.setSequence(p.getSequence());
- m.setHref(p.getHref());
- m.setIcon(p.getIcon());
- m.setMenuName(p.getMenuName());
- m.setParentId(p.getParentId());
- m.setSortLevel(p.getSortLevel());
- m.setOwnApp(p.getOwnApp());
- result1 = menuDao.update(m);
- if (result1 != SqlExecuteStateEnum.SUCCESS.getValue()) {
- throw new Exception("更新菜单出错");
- }
- priv.setSeq(p.getSequence());
- priv.setPrivName(p.getMenuName());
- priv.setOwnerSystem(p.getOwnerSystem());
- priv.setCode(p.getCode());
- priv.setPrivUri(p.getPrivUri());
- priv.setFlagLeaf(p.getFlagLeaf());
- result2 = privDao.update(priv);
- if (result2 != SqlExecuteStateEnum.SUCCESS.getValue()) {
- throw new Exception("更新菜单出错");
- }
- return m;
- }
- @Override
- @Transactional
- public void deleteWithPriv(String id) throws Exception {
- int result1 = 0, result2 = 0;
- Menu m = menuDao.get(id);
- Priv priv = privDao.get(m.getPrivId());
- result1 = privDao.delete(priv.getId());
- if (result1 == SqlExecuteStateEnum.SUCCESS.getValue()) {
- result2 = menuDao.delete(id);
- }
- if (result2 != SqlExecuteStateEnum.SUCCESS.getValue()) {
- throw new Exception("删除菜单出错");
- }
- }
- @Override
- public List<MenuDto> findPageDto(MenuParam param) {
- PageHelper.startPage(param.getPageNum(), param.getPageSize(), false);
- List<MenuDto> list = menuDao.findPageDto(param);
- return list;
- }
- @Override
- public List<Menu> findPage(MenuParam param) {
- PageHelper.startPage(param.getPageNum(), param.getPageSize(), false);
- List<Menu> list = menuDao.findPage(param);
- return list;
- }
- @Override
- public PageInfo<MenuDto> findPageInfoDto(MenuParam param) {
- PageHelper.startPage(param.getPageNum(), param.getPageSize(), true);
- List<MenuDto> list = menuDao.findPageDto(param);
- PageInfo<MenuDto> pageInfo = new PageInfo(list);
- return pageInfo;
- }
- @Override
- public List<MenuDto> findMenuList(MenuParam param) {
- return menuDao.findMenuList(param);
- }
- @Override
- public void updateMemuPriv(List<Menu> list, String privId) {
- menuDao.clearMemuPriv(privId);
- menuDao.updateMemuPriv(list);
- }
- }
|