From 9a87635a1599787948c2f6d1d8086df0730f3b2d Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Tue, 08 Jun 2021 14:05:55 +0800 Subject: [PATCH] screen-manage 修改编辑账号功能BUG --- screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java | 416 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 377 insertions(+), 39 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 40149bf..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,15 +1,32 @@ 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; +import com.moral.api.entity.ManageRole; import com.moral.api.mapper.ManageMenuMapper; 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; import java.util.Map; +import java.util.function.Predicate; /** * <p> @@ -22,73 +39,394 @@ @Service public class ManageMenuServiceImpl extends ServiceImpl<ManageMenuMapper, ManageMenu> implements ManageMenuService { - @Resource + @Autowired(required = false) private ManageMenuMapper manageMenuMapper; - @Resource + @Autowired(required = false) private ManageRoleMenuMapper manageRoleMenuMapper; + @Autowired + LogUtils logUtils; + @Override - public Map<String,Object> insertManageMenu(ManageMenu manageMenu) { - Map<String,Object> resultMap = new HashMap<>(); - if (manageMenu.getName()==null){ - resultMap.put("flag",false); - resultMap.put("msg","���������������"); + @Transactional + public Map<String, Object> insertManageMenu(ManageMenu manageMenu) { + Map<String, Object> resultMap = new HashMap<>(); + if (manageMenu.getName() == null) { + resultMap.put("code", ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode()); + resultMap.put("msg", ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); return resultMap; } - if (manageMenuMapper.getManageMenuByName(manageMenu.getName()) != null){ - resultMap.put("flag",false); - resultMap.put("msg","���������������������"); - }else { - manageMenuMapper.insertOne(manageMenu); - resultMap.put("flag",true); - resultMap.put("msg","���������������"); + if (manageMenuMapper.getManageMenuByName(manageMenu.getName()) != 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",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; } @Override - public Map<String,Object> updateManageMenu(Map map) { - Map<String,Object> resultMap = new HashMap<>(); - if (!map.containsKey("id")){ - resultMap.put("flag",false); - resultMap.put("msg","������������������������"); + @Transactional + public Map<String, Object> updateManageMenu(Map map) { + Map<String, Object> resultMap = new HashMap<>(); + if (!map.containsKey("id")) { + resultMap.put("code", ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode()); + resultMap.put("msg", ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); return resultMap; } - if (manageMenuMapper.getManageMenuById(Integer.parseInt(map.get("id").toString())) == null){ - resultMap.put("flag",false); - resultMap.put("msg","���������������������"); - }else { - manageMenuMapper.updateManageMenuById(map); - resultMap.put("flag",true); - resultMap.put("msg","���������������"); + 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()); + 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; } @Override + @Transactional public Map<String, Object> deleteManageMenu(Map map) { - Map<String,Object> resultMap = new HashMap<>(); - if (!map.containsKey("id")){ - resultMap.put("flag",false); - resultMap.put("msg","������������������������"); + Map<String, Object> resultMap = new HashMap<>(); + if (!map.containsKey("id")) { + resultMap.put("code", ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode()); + resultMap.put("msg", ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); return resultMap; } - if (manageMenuMapper.getManageMenuById(Integer.parseInt(map.get("id").toString())) == null){ - resultMap.put("flag",false); - resultMap.put("msg","������������������������������������"); - }else { + 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 { + //������������������������������ + 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); - deleteMap.put("is_delete",1); + deleteMap.put("id", id); + deleteMap.put("is_delete", 1); manageMenuMapper.updateManageMenuById(deleteMap); Map role_menuDeleteMap = new HashMap(); - role_menuDeleteMap.put("menu_id",id); + role_menuDeleteMap.put("menu_id", id); manageRoleMenuMapper.updateDeleteStateByMenu_id(role_menuDeleteMap); - resultMap.put("flag",true); - resultMap.put("msg","���������������"); + //������������������ + 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()); } return resultMap; } + + @Override + 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); + 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> 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<>());//��������� + menusMap.put(menu.getId(), menu); + } + 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 + public boolean test(ManageMenu manageMenu) { + if(manageMenu.getParentId().equals(0)) + return false; + return true; + } + }); + return allMenus; + } + + /** + * @Description: ������������������ + * @Param: [menuMap, menu]menuMap���key���menuid���value���menu + * @return: void + * @Author: ��������� + * @Date: 2021/4/7 + */ + private void combinationParentChildrenMenus(Map<Integer, ManageMenu> menuMap, ManageMenu menu) { + Integer parentId = menu.getParentId(); + ManageMenu parentMenu = menuMap.get(parentId); + if (!ObjectUtils.isEmpty(parentMenu)) { + parentMenu.getChildren().add(menu); + } + } } -- Gitblit v1.8.0