From 19792073aeb0462088208334b4bd4241571630d4 Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Tue, 27 Apr 2021 09:13:43 +0800
Subject: [PATCH] screen-manage 菜单删除和添加功能
---
screen-manage/src/main/java/com/moral/api/entity/Menu.java | 6
screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuDeleteForm.java | 24 ++
screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuDeleteVO.java | 24 ++
screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java | 182 ++++++++++++++++++
screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuInsertForm.java | 42 ++++
screen-manage/src/main/java/com/moral/api/controller/MenuController.java | 134 ++++++++++++
screen-manage/src/main/java/com/moral/api/pojo/dto/menu/MenuQueryDTO.java | 2
screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuQueryVO.java | 67 ++++++
screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuVO.java | 7
screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuInsertVO.java | 26 ++
screen-manage/src/main/java/com/moral/api/service/MenuService.java | 29 ++
11 files changed, 529 insertions(+), 14 deletions(-)
diff --git a/screen-manage/src/main/java/com/moral/api/controller/MenuController.java b/screen-manage/src/main/java/com/moral/api/controller/MenuController.java
index e12f46d..a3e3447 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/MenuController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/MenuController.java
@@ -1,14 +1,24 @@
package com.moral.api.controller;
+import com.moral.api.entity.Menu;
+import com.moral.api.pojo.dto.menu.MenuDTO;
+import com.moral.api.pojo.dto.menu.MenuQueryDTO;
+import com.moral.api.pojo.form.menu.MenuDeleteForm;
+import com.moral.api.pojo.form.menu.MenuInsertForm;
+import com.moral.api.pojo.vo.menu.MenuDeleteVO;
+import com.moral.api.pojo.vo.menu.MenuInsertVO;
import com.moral.api.pojo.vo.menu.MenuQueryVO;
-import com.moral.api.pojo.vo.menu.MenuVO;
+import com.moral.api.service.MenuService;
+import com.moral.constant.ResponseCodeEnum;
import com.moral.constant.ResultMessage;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
/**
* @ClassName MenuController
@@ -23,9 +33,117 @@
@RestController
@RequestMapping("/menu")
public class MenuController {
- @GetMapping("queryMock")
- public ResultMessage queryMock(){
+ @Autowired
+ MenuService menuService;
- return null;
+ @GetMapping("queryMock")
+ public ResultMessage queryMock() {
+ MenuQueryDTO dto = new MenuQueryDTO();
+ Menu menu1 = new Menu();
+ Menu menu11 = new Menu();
+ Menu menu111 = new Menu();
+ Menu menu12 = new Menu();
+ Menu menu121 = new Menu();
+ Menu menu13 = new Menu();
+
+ Menu menu2 = new Menu();
+ Menu menu21 = new Menu();
+ Menu menu211 = new Menu();
+ Menu menu22 = new Menu();
+ Menu menu23 = new Menu();
+ Menu menu24 = new Menu();
+ Menu menu241 = new Menu();
+ Menu menu2411 = new Menu();
+ menu1.setName("menu 1");
+ menu1.setId(1);
+ menu11.setName("menu 1-1");
+ menu11.setId(2);
+ menu111.setName("menu 1-1-1");
+ menu111.setId(3);
+ menu12.setName("menu 1-2");
+ menu12.setId(4);
+ menu121.setName("menu 1-2-1");
+ menu121.setId(5);
+ menu13.setName("menu 1-3");
+ menu13.setId(6);
+ menu2.setName("menu 2");
+ menu2.setId(7);
+ menu21.setName("menu 2-1");
+ menu21.setId(8);
+ menu211.setName("menu 2-1-1");
+ menu211.setId(9);
+ menu22.setName("menu 2-2");
+ menu22.setId(10);
+ menu23.setName("menu 2-3");
+ menu23.setId(11);
+ menu24.setName("menu 2-4");
+ menu24.setId(12);
+ menu241.setName("menu 2-4-1");
+ menu241.setId(13);
+ menu2411.setName("menu 2-4-1-1");
+ menu2411.setId(14);
+ menu12.setChildren(Arrays.asList(menu121));
+ menu11.setChildren(Arrays.asList(menu111));
+ menu1.setChildren(Arrays.asList(menu11, menu12, menu13));
+ menu241.setChildren(Arrays.asList(menu2411));
+ menu24.setChildren(Arrays.asList(menu241));
+ menu21.setChildren(Arrays.asList(menu211));
+ menu2.setChildren(Arrays.asList(menu21, menu22, menu23, menu24));
+
+ MenuDTO dto1 = new MenuDTO();
+ MenuDTO dto2 = new MenuDTO();
+ dto1.setMenu(menu1);
+ dto2.setMenu(menu2);
+
+ dto.setDtos(Arrays.asList(dto1, dto2));
+ dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
+ dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
+
+ MenuQueryVO vo = MenuQueryVO.convert(dto);
+ return new ResultMessage(dto.getCode(), dto.getMsg(), vo);
}
+
+ @GetMapping("query")
+ public ResultMessage query() {
+ //������������������
+ MenuQueryDTO dto = menuService.queryAllMenu();
+
+ //���������������������������
+ MenuQueryVO vo = MenuQueryVO.convert(dto);
+
+ return new ResultMessage(dto.getCode(), dto.getMsg(), vo);
+ }
+
+ @PostMapping("insert")
+ public ResultMessage insert(@RequestBody MenuInsertForm form) {
+ //������������������������
+ if (!form.valid())
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+ ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+
+ //������������������
+ MenuDTO dto = menuService.insertMenu(form);
+
+ //������������������������
+ MenuInsertVO vo = MenuInsertVO.convert(dto);
+
+ return new ResultMessage(dto.getCode(), dto.getMsg(), vo);
+ }
+
+ @PostMapping("delete")
+ public ResultMessage delete(@RequestBody MenuDeleteForm form){
+ //������������������������
+ if (!form.valid())
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+ ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+
+ //������������������
+ MenuDTO dto = menuService.deleteMenu(form);
+
+ //������������������������
+ MenuInsertVO vo = MenuDeleteVO.convert(dto);
+
+ return new ResultMessage(dto.getCode(), dto.getMsg(), vo);
+ }
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/entity/Menu.java b/screen-manage/src/main/java/com/moral/api/entity/Menu.java
index 5c90fda..9d6164f 100644
--- a/screen-manage/src/main/java/com/moral/api/entity/Menu.java
+++ b/screen-manage/src/main/java/com/moral/api/entity/Menu.java
@@ -1,11 +1,13 @@
package com.moral.api.entity;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;
+import java.util.List;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -53,6 +55,7 @@
/**
* ���������������������������
*/
+ @TableField(value="`order`")
private Integer order;
/**
@@ -70,6 +73,9 @@
*/
private String isDelete;
+ @TableField(exist = false)
+ private List<Menu> children;
+
@Override
protected Serializable pkVal() {
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/dto/menu/MenuQueryDto.java b/screen-manage/src/main/java/com/moral/api/pojo/dto/menu/MenuQueryDTO.java
similarity index 91%
rename from screen-manage/src/main/java/com/moral/api/pojo/dto/menu/MenuQueryDto.java
rename to screen-manage/src/main/java/com/moral/api/pojo/dto/menu/MenuQueryDTO.java
index fbc0ba7..0546d18 100644
--- a/screen-manage/src/main/java/com/moral/api/pojo/dto/menu/MenuQueryDto.java
+++ b/screen-manage/src/main/java/com/moral/api/pojo/dto/menu/MenuQueryDTO.java
@@ -12,7 +12,7 @@
* @Version TODO
**/
@Data
-public class MenuQueryDto {
+public class MenuQueryDTO {
private Integer code;
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuDeleteForm.java b/screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuDeleteForm.java
new file mode 100644
index 0000000..0f1b513
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuDeleteForm.java
@@ -0,0 +1,24 @@
+package com.moral.api.pojo.form.menu;
+
+import lombok.Data;
+import org.aspectj.lang.annotation.DeclareAnnotation;
+
+/**
+ * @ClassName MenuDeleteForm
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/4/26 14:36
+ * @Version TODO
+ **/
+@Data
+public class MenuDeleteForm {
+
+ private Integer id;
+
+ public boolean valid(){
+ if(id==null||id==0){
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuInsertForm.java b/screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuInsertForm.java
new file mode 100644
index 0000000..f7dc779
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuInsertForm.java
@@ -0,0 +1,42 @@
+package com.moral.api.pojo.form.menu;
+
+import com.moral.api.entity.Menu;
+import lombok.Data;
+import org.springframework.util.ObjectUtils;
+
+/**
+ * @ClassName MenuInsertForm
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/4/26 11:02
+ * @Version TODO
+ **/
+@Data
+public class MenuInsertForm {
+
+ private String name;
+
+ private String url;
+
+ private Integer parentId;
+
+ private Integer order;
+
+ public boolean valid(){
+ if(
+ ObjectUtils.isEmpty(name)||
+ ObjectUtils.isEmpty(order)
+ )
+ return false;
+ return true;
+ }
+
+ public Menu formConvertEntity(){
+ Menu menu = new Menu();
+ menu.setName(name);
+ menu.setParentId(parentId);
+ menu.setUrl(url);
+ menu.setOrder(order);
+ return menu;
+ }
+}
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuDeleteVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuDeleteVO.java
new file mode 100644
index 0000000..dc3d111
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuDeleteVO.java
@@ -0,0 +1,24 @@
+package com.moral.api.pojo.vo.menu;
+
+import com.moral.api.entity.Menu;
+import com.moral.api.pojo.dto.menu.MenuDTO;
+import com.moral.constant.ResponseCodeEnum;
+
+/**
+ * @ClassName MenuDeleteVO
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/4/26 15:09
+ * @Version TODO
+ **/
+public class MenuDeleteVO extends MenuVO {
+ public static MenuInsertVO convert(MenuDTO dto) {
+ if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode())
+ return null;
+ MenuInsertVO vo = new MenuInsertVO();
+ Menu menu = dto.getMenu();
+ vo.setId(menu.getId());
+ vo.setName(menu.getName());
+ return vo;
+ }
+}
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuInsertVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuInsertVO.java
new file mode 100644
index 0000000..5949b11
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuInsertVO.java
@@ -0,0 +1,26 @@
+package com.moral.api.pojo.vo.menu;
+
+import com.moral.api.entity.Menu;
+import com.moral.api.pojo.dto.menu.MenuDTO;
+import com.moral.constant.ResponseCodeEnum;
+
+/**
+ * @ClassName MenuInsertVO
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/4/26 11:40
+ * @Version TODO
+ **/
+public class MenuInsertVO extends MenuVO {
+
+ public static MenuInsertVO convert(MenuDTO dto) {
+ if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode())
+ return null;
+ MenuInsertVO vo = new MenuInsertVO();
+ Menu menu = dto.getMenu();
+ vo.setId(menu.getId());
+ vo.setParentId(menu.getParentId());
+ vo.setName(menu.getName());
+ return vo;
+ }
+}
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuQueryVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuQueryVO.java
index 5613bca..6c0a1f0 100644
--- a/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuQueryVO.java
+++ b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuQueryVO.java
@@ -1,8 +1,16 @@
package com.moral.api.pojo.vo.menu;
-import com.moral.api.pojo.dto.menu.MenuQueryDto;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.moral.api.entity.Menu;
+import com.moral.api.pojo.dto.menu.MenuDTO;
+import com.moral.api.pojo.dto.menu.MenuQueryDTO;
+import com.moral.constant.ResponseCodeEnum;
import lombok.Data;
+import org.springframework.util.ObjectUtils;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
/**
@@ -13,11 +21,64 @@
* @Version TODO
**/
@Data
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class MenuQueryVO {
List<MenuVO> vos;
- public static MenuQueryVO convert(MenuQueryDto dto){
- return null;
+ public static MenuQueryVO convert(MenuQueryDTO dto) {
+ if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode())
+ return null;
+ MenuQueryVO vo = new MenuQueryVO();
+ List<MenuDTO> dtos = dto.getDtos();
+ List<MenuVO> vos = new ArrayList<>();
+ for (MenuDTO menuDTO : dtos) {
+ MenuVO menuVO = convertToQueryPage(menuDTO);
+ vos.add(menuVO);
+ }
+ //������������������������
+ Collections.sort(vos, new Comparator<MenuVO>() {
+ @Override
+ public int compare(MenuVO o1, MenuVO o2) {
+ return o1.getOrder() - o2.getOrder();
+ }
+ });
+ vo.setVos(vos);
+ return vo;
}
+
+ private static MenuVO convertToQueryPage(MenuDTO dto) {
+ Menu menu = dto.getMenu();
+ MenuVO menuVO = convertToQueryPage(menu);
+ return menuVO;
+ }
+
+ private static MenuVO convertToQueryPage(Menu menu) {
+ MenuVO vo = new MenuVO();
+ vo.setId(menu.getId());
+ vo.setParentId(menu.getParentId());
+ vo.setUrl(menu.getUrl());
+ vo.setIcon(menu.getIcon());
+ vo.setName(menu.getName());
+ vo.setOrder(menu.getOrder());
+ List<MenuVO> vos = new ArrayList<>();
+ List<Menu> children = menu.getChildren();
+ if (!ObjectUtils.isEmpty(children)) {
+ //���children���������������������order������
+ Collections.sort(children, new Comparator<Menu>() {
+ @Override
+ public int compare(Menu o1, Menu o2) {
+ return o1.getOrder() - o2.getOrder();
+ }
+ });
+ for (Menu child : children) {
+ MenuVO menuVO = convertToQueryPage(child);
+ vos.add(menuVO);
+ }
+ vo.setChildren(vos);
+ }
+ return vo;
+ }
+
}
+
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuVO.java
index 6523e61..6a83cf9 100644
--- a/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuVO.java
+++ b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuVO.java
@@ -1,5 +1,8 @@
package com.moral.api.pojo.vo.menu;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
+
import java.util.List;
/**
@@ -9,6 +12,8 @@
* @Date 2021/4/25 10:04
* @Version TODO
**/
+@Data
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class MenuVO {
private Integer id;
@@ -22,8 +27,6 @@
private String icon;
private Integer order;
-
- private Integer level;
private List<MenuVO> children;
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/MenuService.java b/screen-manage/src/main/java/com/moral/api/service/MenuService.java
index 43e1ffe..e9b4e8a 100644
--- a/screen-manage/src/main/java/com/moral/api/service/MenuService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/MenuService.java
@@ -2,6 +2,10 @@
import com.moral.api.entity.Menu;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.pojo.dto.menu.MenuDTO;
+import com.moral.api.pojo.dto.menu.MenuQueryDTO;
+import com.moral.api.pojo.form.menu.MenuDeleteForm;
+import com.moral.api.pojo.form.menu.MenuInsertForm;
/**
* <p>
@@ -12,5 +16,30 @@
* @since 2021-03-09
*/
public interface MenuService extends IService<Menu> {
+ /**
+ * @Description: ������������������
+ * @Param: []
+ * @return: com.moral.api.pojo.dto.menu.MenuQueryDTO
+ * @Author: ���������
+ * @Date: 2021/4/25
+ */
+ MenuQueryDTO queryAllMenu();
+ /**
+ * @Description: ������������
+ * @Param: [form]
+ * @return: com.moral.api.pojo.dto.menu.MenuDTO
+ * @Author: ���������
+ * @Date: 2021/4/26
+ */
+ MenuDTO insertMenu(MenuInsertForm form);
+
+ /**
+ * @Description: ������������
+ * @Param: [form]
+ * @return: com.moral.api.pojo.dto.menu.MenuDTO
+ * @Author: ���������
+ * @Date: 2021/4/26
+ */
+ MenuDTO deleteMenu(MenuDeleteForm form);
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java
index 5047a8c..efcaec9 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java
@@ -1,10 +1,28 @@
package com.moral.api.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.moral.api.entity.ManageMenu;
import com.moral.api.entity.Menu;
import com.moral.api.mapper.MenuMapper;
+import com.moral.api.pojo.dto.menu.MenuDTO;
+import com.moral.api.pojo.dto.menu.MenuQueryDTO;
+import com.moral.api.pojo.form.menu.MenuDeleteForm;
+import com.moral.api.pojo.form.menu.MenuInsertForm;
import com.moral.api.service.MenuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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 java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Predicate;
/**
* <p>
@@ -17,4 +35,168 @@
@Service
public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements MenuService {
+ @Autowired
+ MenuMapper menuMapper;
+
+ @Override
+ public MenuQueryDTO queryAllMenu() {
+ //������������������
+ MenuQueryDTO dto = new MenuQueryDTO();
+ //������������������
+ List<Menu> menus = menuMapper.selectList(null);
+ //������menu������������
+ Map<Integer, Menu> menuMap = new HashMap<>();
+ for (Menu menu : menus) {
+ menuMap.put(menu.getId(), menu);
+ menu.setChildren(new ArrayList<>());//���������������
+ }
+ for (Menu menu : menus) {
+ combinationParentChildrenMenus(menuMap, menu);
+ }
+ //������������������
+ menus.removeIf(new Predicate<Menu>() {
+ @Override
+ public boolean test(Menu menu) {
+ if (menu.getParentId().equals(0))
+ return false;
+ return true;
+ }
+ });
+ //���������������DTO
+ List<MenuDTO> dtos = new ArrayList<>();
+ for (Menu menu : menus) {
+ MenuDTO menuDTO = new MenuDTO();
+ menuDTO.setMenu(menu);
+ dtos.add(menuDTO);
+ }
+ dto.setDtos(dtos);
+ dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
+ dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
+ return dto;
+ }
+
+ @Override
+ @Transactional
+ public MenuDTO insertMenu(MenuInsertForm form) {
+ //������������������
+ MenuDTO dto = new MenuDTO();
+ //������
+ Menu menu = form.formConvertEntity();
+ //������������������������
+ Menu existMenu = new Menu();
+ existMenu.setName(menu.getName());
+ existMenu.setIsDelete(Constants.NOT_DELETE);
+ QueryWrapper existWrapper = new QueryWrapper();
+ existWrapper.setEntity(existMenu);
+ Menu existMenuResult = menuMapper.selectOne(existWrapper);
+ if (!ObjectUtils.isEmpty(existMenuResult)) {
+ dto.setCode(ResponseCodeEnum.MENU_IS_EXIST.getCode());
+ dto.setMsg(ResponseCodeEnum.MENU_IS_EXIST.getMsg());
+ return dto;
+ }
+ //������������������
+ menuMapper.insert(menu);
+ //������������������
+ dto.setMenu(menu);
+ dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
+ dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
+ return dto;
+ }
+
+ @Override
+ public MenuDTO deleteMenu(MenuDeleteForm form) {
+ //������������������
+ MenuDTO dto = new MenuDTO();
+ //������
+ Integer id = form.getId();
+ //������������������������
+ Menu existMenu = menuMapper.selectById(id);
+ if (ObjectUtils.isEmpty(existMenu)) {
+ dto.setCode(ResponseCodeEnum.MENU_IS_NULL.getCode());
+ dto.setMsg(ResponseCodeEnum.MENU_IS_NULL.getMsg());
+ return dto;
+ }
+ //������������������
+ existMenu.setIsDelete(Constants.DELETE);
+ menuMapper.updateById(existMenu);
+ //���������������������
+ List<Integer> childrenIds = getChildrenIdsByParentId(id);
+ UpdateWrapper wrapper = new UpdateWrapper();
+ wrapper.in("id",childrenIds);
+ wrapper.set("is_delete",Constants.DELETE);
+ menuMapper.update(null,wrapper);
+ //������������������
+ dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
+ dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
+ dto.setMenu(existMenu);
+ return dto;
+ }
+
+ private void combinationParentChildrenMenus(Map<Integer, Menu> menuMap, Menu menu) {
+ Integer parentId = menu.getParentId();
+ Menu parentMenu = menuMap.get(parentId);
+ if (!ObjectUtils.isEmpty(parentMenu)) {
+ parentMenu.getChildren().add(menu);
+ }
+ }
+
+ /**
+ * @Description: ���������������id���������������children���menu������
+ * @Param: [id]
+ * @return: com.moral.api.entity.Menu
+ * @Author: ���������
+ * @Date: 2021/4/26
+ */
+ private Menu getMenuAndChildrenById(Integer id){
+ //������������������
+ List<Menu> menus = menuMapper.selectList(null);
+ //������menu������������
+ Map<Integer, Menu> menuMap = new HashMap<>();
+ for (Menu menu : menus) {
+ menuMap.put(menu.getId(), menu);
+ menu.setChildren(new ArrayList<>());//���������������
+ }
+ for (Menu menu : menus) {
+ combinationParentChildrenMenus(menuMap, menu);
+ }
+ Menu menu = menuMap.get(id);
+ return menu;
+ }
+
+ /**
+ * @Description: ������������������������������������id������
+ * @Param: [id]
+ * @return: java.util.List<java.lang.Integer>
+ * @Author: ���������
+ * @Date: 2021/4/26
+ */
+ private List<Integer> getChildrenIdsByParentId(Integer id){
+ Menu parentMenu = getMenuAndChildrenById(id);
+ List<Menu> children = parentMenu.getChildren();
+ List<Integer> childrenIds = new ArrayList<>();
+ for (Menu child : children) {
+ recursiveAccess(child,childrenIds);
+ }
+ return childrenIds;
+ }
+
+
+ /**
+ * @Description: ���������������������id���������������
+ * @Param: [menu, ids]
+ * @return: void
+ * @Author: ���������
+ * @Date: 2021/4/26
+ */
+ private void recursiveAccess(Menu menu,List<Integer> ids){
+ ids.add(menu.getId());
+ List<Menu> children = menu.getChildren();
+ if(!ObjectUtils.isEmpty(children)){
+ for (Menu child : children) {
+ recursiveAccess(child,ids);
+ }
+ }
+ }
+
}
+
--
Gitblit v1.8.0