From d6a0a1bb4c7b27a6521c969046cb969b168fa93a Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Mon, 07 Jun 2021 10:11:08 +0800 Subject: [PATCH] screen-manage 更新组织删除逻辑,存在站点或者子组织存在站点则无法删除。 --- screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java | 317 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 292 insertions(+), 25 deletions(-) diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java index 7d18186..e48fc17 100644 --- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java +++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java @@ -1,5 +1,6 @@ package com.moral.api.service.impl; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.moral.api.entity.ManageMenu; @@ -8,13 +9,19 @@ import com.moral.api.mapper.ManageRoleMenuMapper; import com.moral.api.service.ManageMenuService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.moral.api.util.LogUtils; +import com.moral.constant.Constants; import com.moral.constant.ResponseCodeEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -38,6 +45,9 @@ @Autowired(required = false) private ManageRoleMenuMapper manageRoleMenuMapper; + @Autowired + LogUtils logUtils; + @Override @Transactional public Map<String, Object> insertManageMenu(ManageMenu manageMenu) { @@ -48,13 +58,25 @@ return resultMap; } if (manageMenuMapper.getManageMenuByName(manageMenu.getName()) != null) { - resultMap.put("code", ResponseCodeEnum.MENU_IS_EXPIRE.getCode()); - resultMap.put("msg", ResponseCodeEnum.MENU_IS_EXPIRE.getMsg()); - } else { - manageMenuMapper.insertOne(manageMenu); - resultMap.put("code", ResponseCodeEnum.SUCCESS.getCode()); - resultMap.put("msg", ResponseCodeEnum.SUCCESS.getMsg()); + resultMap.put("code", ResponseCodeEnum.MENU_IS_EXIST.getCode()); + resultMap.put("msg", ResponseCodeEnum.MENU_IS_EXIST.getMsg()); + return resultMap; } + QueryWrapper<ManageMenu> wrapper_url = new QueryWrapper(); + wrapper_url.eq("url",manageMenu.getUrl()); + wrapper_url.eq("is_delete",Constants.NOT_DELETE); + if (manageMenuMapper.selectCount(wrapper_url) != 0) { + resultMap.put("code", ResponseCodeEnum.URL_IS_EXIST.getCode()); + resultMap.put("msg", ResponseCodeEnum.URL_IS_EXIST.getMsg()); + return resultMap; + } + manageMenuMapper.insertOne(manageMenu); + //������������������ + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String content = "������������:"+manageMenu.getName()+";"; + logUtils.saveOperationForManage(request,content,Constants.INSERT_OPERATE_TYPE); + resultMap.put("code", ResponseCodeEnum.SUCCESS.getCode()); + resultMap.put("msg", ResponseCodeEnum.SUCCESS.getMsg()); return resultMap; } @@ -70,11 +92,56 @@ if (manageMenuMapper.getManageMenuById(Integer.parseInt(map.get("id").toString())) == null) { resultMap.put("code", ResponseCodeEnum.MENU_IS_NULL.getCode()); resultMap.put("msg", ResponseCodeEnum.MENU_IS_NULL.getMsg()); - } else { - manageMenuMapper.updateManageMenuById(map); - resultMap.put("code", ResponseCodeEnum.SUCCESS.getCode()); - resultMap.put("msg", ResponseCodeEnum.SUCCESS.getMsg()); + return resultMap; } + if (map.get("name")!=null && manageMenuMapper.getManageMenuByName(map.get("name").toString()) != null) { + resultMap.put("code", ResponseCodeEnum.MENU_IS_EXIST.getCode()); + resultMap.put("msg", ResponseCodeEnum.MENU_IS_EXIST.getMsg()); + return resultMap; + } + QueryWrapper<ManageMenu> wrapper_url = new QueryWrapper(); + wrapper_url.eq("url",map.get("url")); + wrapper_url.eq("is_delete",Constants.NOT_DELETE); + if (manageMenuMapper.selectCount(wrapper_url) != 0) { + resultMap.put("code", ResponseCodeEnum.URL_IS_EXIST.getCode()); + resultMap.put("msg", ResponseCodeEnum.URL_IS_EXIST.getMsg()); + return resultMap; + } + //��������������������������������������� + ManageMenu manageMenuOld = manageMenuMapper.getManageMenuById(Integer.parseInt(map.get("id").toString())); + manageMenuMapper.updateManageMenuById(map); + //������������������ + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String content = "���������������:"+manageMenuOld.getName()+";"; + for (Object key:map.keySet()) { + if (key.toString().equals("name")&&map.get(key)!=null){ + content = content+"���������:"+manageMenuOld.getName()+"->"+map.get(key)+";"; + } + if (key.toString().equals("url")&&map.get(key)!=null){ + content = content+"url������:"+manageMenuOld.getUrl()+"->"+map.get(key)+";"; + } + if (key.toString().equals("icon")&&map.get(key)!=null){ + content = content+"������������:"+manageMenuOld.getIcon()+"->"+map.get(key)+";"; + } + if (key.toString().equals("parent_id")&&map.get(key)!=null){ + if (map.get(key).toString().equals("0")){ + content = content+"���������:"+manageMenuMapper.getManageMenuById(manageMenuOld.getId()).getName()+"->0"+";"; + }else if (manageMenuOld.getId().toString().equals("0")){ + content = content+"���������:"+"0->"+manageMenuMapper.getManageMenuById(Integer.parseInt(map.get(key).toString())).getName()+";"; + }else { + content = content+"���������:"+manageMenuMapper.getManageMenuById(manageMenuOld.getId()).getName()+"->"+manageMenuMapper.getManageMenuById(Integer.parseInt(map.get(key).toString())).getName()+";"; + } + } + if (key.toString().equals("order")&&map.get(key)!=null){ + content = content+"������������������������:"+manageMenuOld.getOrder()+"->"+map.get(key)+";"; + } + if (key.toString().equals("desc")&&map.get(key)!=null){ + content = content+"������:"+manageMenuOld.getDesc()+"->"+map.get(key)+";"; + } + } + logUtils.saveOperationForManage(request,content,Constants.UPDATE_OPERATE_TYPE); + resultMap.put("code", ResponseCodeEnum.SUCCESS.getCode()); + resultMap.put("msg", ResponseCodeEnum.SUCCESS.getMsg()); return resultMap; } @@ -91,6 +158,8 @@ resultMap.put("code", ResponseCodeEnum.MENU_IS_NULL.getCode()); resultMap.put("msg", ResponseCodeEnum.MENU_IS_NULL.getMsg()); } else { + //������������������������������ + ManageMenu manageMenuDelete = manageMenuMapper.getManageMenuById(Integer.parseInt(map.get("id").toString())); Map deleteMap = new HashMap(); int id = Integer.parseInt(map.get("id").toString()); deleteMap.put("id", id); @@ -99,6 +168,10 @@ Map role_menuDeleteMap = new HashMap(); role_menuDeleteMap.put("menu_id", id); manageRoleMenuMapper.updateDeleteStateByMenu_id(role_menuDeleteMap); + //������������������ + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String content = "������������:"+manageMenuDelete.getName()+";"; + logUtils.saveOperationForManage(request,content,Constants.DELETE_OPERATE_TYPE); resultMap.put("code", ResponseCodeEnum.SUCCESS.getCode()); resultMap.put("msg", ResponseCodeEnum.SUCCESS.getMsg()); } @@ -106,28 +179,40 @@ } @Override - public List<ManageMenu> getAllWithPagingQuery(Map map) { + public List<Map<String,Object>> getAllWithPagingQuery(Map map) { Map limitMap = new HashMap(); limitMap.put("start", (Integer.parseInt(map.get("current").toString()) - 1) * Integer.parseInt(map.get("size").toString())); limitMap.put("number", Integer.parseInt(map.get("size").toString())); List<ManageMenu> manageMenus = manageMenuMapper.getDataWithPage(limitMap); - System.out.println(manageMenus); - return manageMenus; + SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + List<Map<String,Object>> resultList = new ArrayList<>(); + for (ManageMenu manageMenu:manageMenus) { + Map manegeMenuMap = JSON.parseObject(JSON.toJSONString(manageMenu)); + if (manageMenu.getParentId().equals(0)){ + manegeMenuMap.put("parent_name",""); + }else { + ManageMenu parentMenu = manageMenuMapper.getManageMenuById(manageMenu.getParentId()); + if (ObjectUtils.isEmpty(parentMenu)){ + manegeMenuMap.put("parent_name",""); + }else { + String parent_name = parentMenu.getName(); + manegeMenuMap.put("parent_name",parent_name); + } + } + String createTime = SDF.format(manageMenu.getCreateTime()); + String updateTime = SDF.format(manageMenu.getUpdateTime()); + manegeMenuMap.put("createTime",createTime); + manegeMenuMap.put("updateTime",updateTime); + resultList.add(manegeMenuMap); + } + return resultList; } @Override - public List<ManageMenu> getManageMenuByNameFuzzy(Map map) { - Map limitMap = new HashMap(); - limitMap.put("name", map.get("name")); - limitMap.put("start", (Integer.parseInt(map.get("current").toString()) - 1) * Integer.parseInt(map.get("size").toString())); - limitMap.put("number", Integer.parseInt(map.get("size").toString())); - List<ManageMenu> manageMenus = manageMenuMapper.getManageRoleByNameFuzzy(limitMap); - return manageMenus; - } - - @Override - public List<ManageMenu> getParentChildrenMenusByRoles(List<ManageRole> roles) { - List<ManageMenu> allMenus = manageMenuMapper.getAllMenusByRoles(roles); + public List<ManageMenu> getAllMenus() { + List<ManageMenu> allMenus = manageMenuMapper.getAll(); + if(ObjectUtils.isEmpty(allMenus)) + return null; Map<Integer, ManageMenu> menusMap = new HashMap<>(); for (ManageMenu menu : allMenus) { menu.setChildren(new ArrayList<>());//��������� @@ -136,6 +221,188 @@ for (ManageMenu menu : allMenus) { combinationParentChildrenMenus(menusMap, menu); } + + //������������������������������������parentId������0������������������������ + allMenus.removeIf(new Predicate<ManageMenu>() { + @Override + public boolean test(ManageMenu manageMenu) { + if(manageMenu.getParentId().equals(0)) + return false; + return true; + } + }); + return allMenus; + } + + @Override + public List getManageMenuByRoleId(int roleId) { + List<ManageMenu> manageMenus = manageMenuMapper.getManageMenuByRoleId(roleId); + List menuIdList = new ArrayList(); + for (ManageMenu manageMenu:manageMenus) { + menuIdList.add(manageMenu.getId()); + } + return menuIdList; + } + + @Override + public List getManageChildMenuByRoleId(int roleId) { + List<ManageMenu> manageMenus = manageMenuMapper.getManageMenuByRoleId(roleId); + List menuIdList = new ArrayList(); + Map limitMap = new HashMap(); + limitMap.put("start", 1); + limitMap.put("number", 1); + for (ManageMenu manageMenu:manageMenus) { + limitMap.put("parent_id", manageMenu.getId()); + List result = manageMenuMapper.getManageMenuByCondition(limitMap); + if (result.size()==0){ + menuIdList.add(manageMenu.getId()); + } + } + return menuIdList; + } + + @Override + public List<Map<String,Object>> getManageMenuByNameFuzzy(Map map) { + Map limitMap = new HashMap(); + if(!ObjectUtils.isEmpty(map.get("name"))){ + limitMap.put("name", map.get("name")); + } + if(!ObjectUtils.isEmpty(map.get("parent_id"))){ + limitMap.put("parent_id", map.get("parent_id")); + } + limitMap.put("start", (Integer.parseInt(map.get("current").toString()) - 1) * Integer.parseInt(map.get("size").toString())); + limitMap.put("number", Integer.parseInt(map.get("size").toString())); + List<ManageMenu> manageMenus = manageMenuMapper.getManageMenuByNameFuzzy(limitMap); + SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + List<Map<String,Object>> resultList = new ArrayList<>(); + for (ManageMenu manageMenu:manageMenus) { + Map manegeMenuMap = JSON.parseObject(JSON.toJSONString(manageMenu)); + if (manageMenu.getParentId().equals(0)){ + manegeMenuMap.put("parent_name",""); + }else { + ManageMenu parentMenu = manageMenuMapper.getManageMenuById(manageMenu.getParentId()); + if (ObjectUtils.isEmpty(parentMenu)){ + manegeMenuMap.put("parent_name",""); + }else { + String parent_name = parentMenu.getName(); + manegeMenuMap.put("parent_name",parent_name); + } + } + String createTime = SDF.format(manageMenu.getCreateTime()); + String updateTime = SDF.format(manageMenu.getUpdateTime()); + manegeMenuMap.put("createTime",createTime); + manegeMenuMap.put("updateTime",updateTime); + resultList.add(manegeMenuMap); + } + return resultList; + } + + @Override + public Map<String, Object> getManageMenuByCondition(Map map) { + Map<String,Object> resultMap = new HashMap<>(); + int current = Integer.parseInt(map.get("current").toString()); + int size = Integer.parseInt(map.get("size").toString()); + Page<ManageMenu> page = new Page<>(current,size); + QueryWrapper<ManageMenu> wrapper = new QueryWrapper(); + wrapper.eq("is_delete",Constants.NOT_DELETE); + if(!ObjectUtils.isEmpty(map.get("name"))){ + wrapper.like("name", map.get("name")); + } + if(!ObjectUtils.isEmpty(map.get("parent_id"))){ + wrapper.eq("parent_id", map.get("parent_id")); + } + Page resultpage = manageMenuMapper.selectPage(page,wrapper); + List<ManageMenu> manageMenus = resultpage.getRecords(); + SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + List<Map<String,Object>> manageMenuList = new ArrayList<>(); + for (ManageMenu manageMenu:manageMenus) { + Map manegeMenuMap = JSON.parseObject(JSON.toJSONString(manageMenu)); + if (manageMenu.getParentId().equals(0)){ + manegeMenuMap.put("parent_name",""); + }else { + ManageMenu parentMenu = manageMenuMapper.getManageMenuById(manageMenu.getParentId()); + if (ObjectUtils.isEmpty(parentMenu)){ + manegeMenuMap.put("parent_name",""); + }else { + String parent_name = parentMenu.getName(); + manegeMenuMap.put("parent_name",parent_name); + } + } + String createTime = SDF.format(manageMenu.getCreateTime()); + String updateTime = SDF.format(manageMenu.getUpdateTime()); + manegeMenuMap.put("createTime",createTime); + manegeMenuMap.put("updateTime",updateTime); + manageMenuList.add(manegeMenuMap); + } + resultMap.put("manageMenus",manageMenuList); + int totalNumber = manageMenuMapper.selectCount(wrapper); + resultMap.put("totalNumber",totalNumber); + resultMap.put("current",current); + resultMap.put("size",size); + int totalPageNumber = totalNumber/size; + if(totalNumber%size != 0){ + totalPageNumber += 1; + } + resultMap.put("totalPageNumber",totalPageNumber); + return resultMap; + } + + @Override + public Map<String, Object> getManageParentMenu(Map map) { + Map<String,Object> resultMap = new HashMap(); + QueryWrapper<ManageMenu> wrapper = new QueryWrapper(); + wrapper.eq("is_delete",Constants.NOT_DELETE); + wrapper.eq("parent_id",0); + List<ManageMenu> manageMenus = manageMenuMapper.selectList(wrapper); + resultMap.put("manageMenus",manageMenus); + return resultMap; + } + + @Override + public List<Map<String, Object>> getManageMenuByParentId(Map map) { + Map limitMap = new HashMap(); + limitMap.put("parent_id", map.get("parent_id")); + limitMap.put("start", (Integer.parseInt(map.get("current").toString()) - 1) * Integer.parseInt(map.get("size").toString())); + limitMap.put("number", Integer.parseInt(map.get("size").toString())); + List<ManageMenu> manageMenus = manageMenuMapper.getManageMenuByCondition(limitMap); + SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + List<Map<String,Object>> resultList = new ArrayList<>(); + for (ManageMenu manageMenu:manageMenus) { + Map manegeMenuMap = JSON.parseObject(JSON.toJSONString(manageMenu)); + if (manageMenu.getParentId().equals(0)){ + manegeMenuMap.put("parent_name",""); + }else { + ManageMenu parentMenu = manageMenuMapper.getManageMenuById(manageMenu.getParentId()); + if (ObjectUtils.isEmpty(parentMenu)){ + manegeMenuMap.put("parent_name",""); + }else { + String parent_name = parentMenu.getName(); + manegeMenuMap.put("parent_name",parent_name); + } + } + String createTime = SDF.format(manageMenu.getCreateTime()); + String updateTime = SDF.format(manageMenu.getUpdateTime()); + manegeMenuMap.put("createTime",createTime); + manegeMenuMap.put("updateTime",updateTime); + resultList.add(manegeMenuMap); + } + return resultList; + } + + @Override + public List<ManageMenu> getParentChildrenMenusByRoles(List<ManageRole> roles) { + List<ManageMenu> allMenus = manageMenuMapper.getAllMenusByRoles(roles); + if(ObjectUtils.isEmpty(allMenus)) + return null; + Map<Integer, ManageMenu> menusMap = new HashMap<>(); + for (ManageMenu menu : allMenus) { + menu.setChildren(new ArrayList<>());//��������� + menusMap.put(menu.getId(), menu); + } + for (ManageMenu menu : allMenus) { + combinationParentChildrenMenus(menusMap, menu); + } + //������������������������������������parentId������0������������������������ allMenus.removeIf(new Predicate<ManageMenu>() { @Override -- Gitblit v1.8.0