kaiyu
2021-05-13 912ee45ea29637bfb8d9656bebab7304921d5cf6
screen-manage
修改获取组织admin角色菜单接口
修改分配组织admin角色菜单接口
2 files renamed
4 files deleted
1 files added
11 files modified
607 ■■■■ changed files
screen-manage/src/main/java/com/moral/api/controller/GroupController.java 43 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/controller/GroupMenuController.java 45 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/controller/MenuController.java 22 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/mapper/MenuMapper.java 4 ●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/dto/group/GroupDTO.java 8 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/dto/groupMenu/GroupMenuQueryDTO.java 23 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/group/AdminGroupUpdateMenuForm.java 6 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/groupMenu/GroupMenuQueryForm.java 23 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/groupMenu/GroupMenuQueryVO.java 48 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/groupMenu/GroupMenuVO.java 31 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/GroupMenuService.java 20 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/GroupService.java 20 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/MenuService.java 13 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java 98 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java 64 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java 116 ●●●● patch | view | raw | blame | history
screen-manage/src/main/resources/mapper/ManageMenuMapper.xml 2 ●●● patch | view | raw | blame | history
screen-manage/src/main/resources/mapper/MenuMapper.xml 21 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/controller/GroupController.java
New file
@@ -0,0 +1,43 @@
package com.moral.api.controller;
import com.moral.api.pojo.dto.group.GroupDTO;
import com.moral.api.pojo.form.group.AdminGroupUpdateMenuForm;
import com.moral.api.service.GroupService;
import com.moral.constant.ResponseCodeEnum;
import com.moral.constant.ResultMessage;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
 * @ClassName GroupController
 * @Description TODO
 * @Author 陈凯裕
 * @Date 2021/5/13 15:29
 * @Version TODO
 **/
@Slf4j
@Api(tags = {"前台角色管理"})
@RestController
@CrossOrigin(origins = "*", maxAge = 3600)
@RequestMapping("/group")
public class GroupController {
    @Autowired
    GroupService groupService;
    @PostMapping("updateAdminGroupMenu")
    public ResultMessage updateMenu(@RequestBody AdminGroupUpdateMenuForm form) {
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        //处理分配业务
        GroupDTO dto = groupService.updateAdminGroupMenu(form);
        return new ResultMessage(dto.getCode(), dto.getMsg(), null);
    }
}
screen-manage/src/main/java/com/moral/api/controller/GroupMenuController.java
@@ -1,16 +1,8 @@
package com.moral.api.controller;
import com.moral.api.pojo.dto.groupMenu.GroupMenuDTO;
import com.moral.api.pojo.dto.groupMenu.GroupMenuQueryDTO;
import com.moral.api.pojo.form.groupMenu.GroupMenuQueryForm;
import com.moral.api.pojo.form.groupMenu.GroupMenuUpdateForm;
import com.moral.api.pojo.vo.groupMenu.GroupMenuQueryVO;
import com.moral.api.service.GroupMenuService;
import com.moral.constant.ResponseCodeEnum;
import com.moral.constant.ResultMessage;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
@@ -26,40 +18,5 @@
@CrossOrigin(origins = "*", maxAge = 3600)
@RequestMapping("/groupMenu")
public class GroupMenuController {
    @Autowired
    GroupMenuService groupMenuService;
    @PostMapping("update")
    public ResultMessage update(@RequestBody GroupMenuUpdateForm form) {
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        //处理分配业务
        GroupMenuDTO dto = groupMenuService.updateGroupMenu(form);
        return new ResultMessage(dto.getCode(), dto.getMsg(), null);
    }
    @GetMapping("query")
    public ResultMessage query(GroupMenuQueryForm form){
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        //处理查询业务
        GroupMenuQueryDTO dto = groupMenuService.queryGroupMenu(form);
        //转换前端所需参数
        GroupMenuQueryVO vo = GroupMenuQueryVO.convert(dto);
        return new ResultMessage(dto.getCode(), dto.getMsg(), vo);
    }
}
screen-manage/src/main/java/com/moral/api/controller/MenuController.java
@@ -14,6 +14,7 @@
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
/**
@@ -35,8 +36,21 @@
    @GetMapping("query")
    public ResultMessage query() {
        //查询组织admin角色的所有菜单,非父子结构
        MenuQueryDTO dto = menuService.queryAllMenus();
        //转换为前端所需参数
        MenuQueryVO vo = MenuQueryVO.convert(dto);
        return new ResultMessage(dto.getCode(), dto.getMsg(), vo);
    }
    @GetMapping("queryAdmin")
    public ResultMessage queryAdmin(@RequestParam Integer organizationId) {
        //执行查询业务
        MenuQueryDTO dto = menuService.queryAllMenu();
        MenuQueryDTO dto = menuService.queryAdminGroupMenusByOrganizationId(organizationId);
        //转换为前端所需参数
        MenuQueryVO vo = MenuQueryVO.convert(dto);
@@ -45,7 +59,7 @@
    }
    @GetMapping("queryNames")
    public ResultMessage queryNames(MenuQueryNamesForm form){
    public ResultMessage queryNames(MenuQueryNamesForm form) {
        //处理查询业务
        MenuQueryNamesDTO dto = menuService.queryNames(form);
@@ -72,7 +86,7 @@
    }
    @PostMapping("delete")
    public ResultMessage delete(@RequestBody MenuDeleteForm form){
    public ResultMessage delete(@RequestBody MenuDeleteForm form) {
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
@@ -88,7 +102,7 @@
    }
    @PostMapping("update")
    public ResultMessage update(@RequestBody MenuUpdateForm form){
    public ResultMessage update(@RequestBody MenuUpdateForm form) {
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
screen-manage/src/main/java/com/moral/api/mapper/MenuMapper.java
@@ -3,6 +3,8 @@
import com.moral.api.entity.Menu;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
/**
 * <p>
 * 前台菜单 Mapper 接口
@@ -12,5 +14,5 @@
 * @since 2021-03-09
 */
public interface MenuMapper extends BaseMapper<Menu> {
    List<Menu> getMenusByGroupId(Integer groupId);
}
screen-manage/src/main/java/com/moral/api/pojo/dto/group/GroupDTO.java
File was renamed from screen-manage/src/main/java/com/moral/api/pojo/dto/groupMenu/GroupMenuDTO.java
@@ -1,5 +1,6 @@
package com.moral.api.pojo.dto.groupMenu;
package com.moral.api.pojo.dto.group;
import com.moral.api.entity.Group;
import com.moral.api.entity.GroupMenu;
import lombok.Data;
@@ -11,11 +12,12 @@
 * @Version TODO
 **/
@Data
public class GroupMenuDTO {
public class GroupDTO {
    private Integer code;
    private String msg;
    private GroupMenu groupMenu;
    private Group group;
}
screen-manage/src/main/java/com/moral/api/pojo/dto/groupMenu/GroupMenuQueryDTO.java
File was deleted
screen-manage/src/main/java/com/moral/api/pojo/form/group/AdminGroupUpdateMenuForm.java
File was renamed from screen-manage/src/main/java/com/moral/api/pojo/form/groupMenu/GroupMenuUpdateForm.java
@@ -1,4 +1,4 @@
package com.moral.api.pojo.form.groupMenu;
package com.moral.api.pojo.form.group;
import lombok.Data;
import org.springframework.util.ObjectUtils;
@@ -7,13 +7,13 @@
/**
 * @ClassName GroupUpdateForm
 * @Description TODO
 * @Description 用于接收更新admin角色菜单参数
 * @Author 陈凯裕
 * @Date 2021/5/11 10:25
 * @Version TODO
 **/
@Data
public class GroupMenuUpdateForm {
public class AdminGroupUpdateMenuForm {
    private Integer organizationId;
screen-manage/src/main/java/com/moral/api/pojo/form/groupMenu/GroupMenuQueryForm.java
File was deleted
screen-manage/src/main/java/com/moral/api/pojo/vo/groupMenu/GroupMenuQueryVO.java
File was deleted
screen-manage/src/main/java/com/moral/api/pojo/vo/groupMenu/GroupMenuVO.java
File was deleted
screen-manage/src/main/java/com/moral/api/service/GroupMenuService.java
@@ -2,10 +2,6 @@
import com.moral.api.entity.GroupMenu;
import com.baomidou.mybatisplus.extension.service.IService;
import com.moral.api.pojo.dto.groupMenu.GroupMenuDTO;
import com.moral.api.pojo.dto.groupMenu.GroupMenuQueryDTO;
import com.moral.api.pojo.form.groupMenu.GroupMenuQueryForm;
import com.moral.api.pojo.form.groupMenu.GroupMenuUpdateForm;
/**
 * <p>
@@ -17,22 +13,6 @@
 */
public interface GroupMenuService extends IService<GroupMenu> {
    /**
     * @Description: 给组织admin角色分配前台菜单
     * @Param: [GroupMenuUpdateForm form]
     * @return: com.moral.constant.ResultMessage
     * @Author: 陈凯裕
     * @Date: 2021/5/11
     */
     GroupMenuDTO updateGroupMenu(GroupMenuUpdateForm form);
     /**
     * @Description: 查询组织admin角色的所有菜单
             * @Param: [form]
             * @return: com.moral.api.pojo.dto.groupMenu.GroupMenuQueryDTO
             * @Author: 陈凯裕
             * @Date: 2021/5/11
             */
     GroupMenuQueryDTO queryGroupMenu(GroupMenuQueryForm form);
}
screen-manage/src/main/java/com/moral/api/service/GroupService.java
@@ -2,6 +2,8 @@
import com.moral.api.entity.Group;
import com.baomidou.mybatisplus.extension.service.IService;
import com.moral.api.pojo.dto.group.GroupDTO;
import com.moral.api.pojo.form.group.AdminGroupUpdateMenuForm;
/**
 * <p>
@@ -13,4 +15,22 @@
 */
public interface GroupService extends IService<Group> {
    /**
     * @Description: 查询组织对应的admin角色
     * @Param: [organizationId]
     * @return: com.moral.api.entity.Group
     * @Author: 陈凯裕
     * @Date: 2021/5/13
     */
    Group queryAdminGroupByOrganizationId(Integer organizationId);
    /**
     * @Description: 更新admin角色菜单
     * @Param: [GroupMenuUpdateForm form]
     * @return: com.moral.constant.ResultMessage
     * @Author: 陈凯裕
     * @Date: 2021/5/11
     */
    GroupDTO updateAdminGroupMenu(AdminGroupUpdateMenuForm form);
}
screen-manage/src/main/java/com/moral/api/service/MenuService.java
@@ -20,13 +20,22 @@
 */
public interface MenuService extends IService<Menu> {
    /**
    * @Description: 查询父子结构菜单
    * @Description: 查询菜单
            * @Param: []
            * @return: com.moral.api.pojo.dto.menu.MenuQueryDTO
            * @Author: 陈凯裕
            * @Date: 2021/4/25
            */
    MenuQueryDTO queryAllMenu();
    MenuQueryDTO queryAllMenus();
    /**
    * @Description: 通过组织id,查询组织admin角色的所有菜单
            * @Param: [organizationId]
            * @return: com.moral.api.pojo.dto.menu.MenuQueryDTO
            * @Author: 陈凯裕
            * @Date: 2021/5/13
            */
    MenuQueryDTO queryAdminGroupMenusByOrganizationId(Integer organizationId);
    /**
    * @Description: 插入菜单
screen-manage/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java
@@ -1,26 +1,11 @@
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.Group;
import com.moral.api.entity.GroupMenu;
import com.moral.api.mapper.GroupMapper;
import com.moral.api.mapper.GroupMenuMapper;
import com.moral.api.pojo.dto.groupMenu.GroupMenuDTO;
import com.moral.api.pojo.dto.groupMenu.GroupMenuQueryDTO;
import com.moral.api.pojo.form.groupMenu.GroupMenuQueryForm;
import com.moral.api.pojo.form.groupMenu.GroupMenuUpdateForm;
import com.moral.api.service.GroupMenuService;
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.List;
/**
 * <p>
@@ -32,88 +17,5 @@
 */
@Service
public class GroupMenuServiceImpl extends ServiceImpl<GroupMenuMapper, GroupMenu> implements GroupMenuService {
    @Autowired
    GroupMenuMapper groupMenuMapper;
    @Autowired
    GroupMapper groupMapper;
    @Override
    @Transactional
    public GroupMenuDTO updateGroupMenu(GroupMenuUpdateForm form) {
        //创建返回对象
        GroupMenuDTO dto = new GroupMenuDTO();
        //取参
        Integer orgId = form.getOrganizationId();
        String channelKey = form.getChannelKey();
        List<Integer> insertMenuIds = form.getMenuIds();
        //根据orgId查询组织admin角色id
        Group group = queryAdminGroupByOrganizationId(orgId);
        if (ObjectUtils.isEmpty(group)) {//如果没有角色则证明组织还没有账号
            dto.setCode(ResponseCodeEnum.ORGANIZATION_USER_NOT_EXIST.getCode());
            dto.setMsg(ResponseCodeEnum.ORGANIZATION_USER_NOT_EXIST.getMsg());
            return dto;
        }
        //删除角色当前所有的菜单
        UpdateWrapper deleteWrapper = new UpdateWrapper();
        deleteWrapper.set("is_delete", Constants.DELETE);
        deleteWrapper.eq("group_id", group.getId());
        groupMenuMapper.update(null, deleteWrapper);
        //重新添加
        for (Integer menuId : insertMenuIds) {
            GroupMenu groupMenu = new GroupMenu();
            groupMenu.setChannelKey(channelKey);
            groupMenu.setGroupId(group.getId());
            groupMenu.setMenuId(menuId);
            groupMenu.setOrganizationId(orgId);
            groupMenuMapper.insert(groupMenu);
        }
        //封装返回对象
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        return dto;
    }
    @Override
    public GroupMenuQueryDTO queryGroupMenu(GroupMenuQueryForm form) {
        //创建返回对象
        GroupMenuQueryDTO dto = new GroupMenuQueryDTO();
        //取参
        Integer organizationId = form.getOrganizationId();
        //查询组织admin角色
        Group group = queryAdminGroupByOrganizationId(organizationId);
        if (ObjectUtils.isEmpty(group)) {//如果没有角色则证明组织还没有账号
            dto.setCode(ResponseCodeEnum.ORGANIZATION_USER_NOT_EXIST.getCode());
            dto.setMsg(ResponseCodeEnum.ORGANIZATION_USER_NOT_EXIST.getMsg());
            return dto;
        }
        //根据角色查询对应的所有菜单
        QueryWrapper<GroupMenu> queryGroupMenuWrapper = new QueryWrapper<>();
        queryGroupMenuWrapper.eq("group_id", group.getId());
        queryGroupMenuWrapper.eq("is_delete",Constants.NOT_DELETE);
        List<GroupMenu> groupMenus = groupMenuMapper.selectList(queryGroupMenuWrapper);
        //封装返回结果
        List<GroupMenuDTO> dtos = new ArrayList<>();
        for (GroupMenu groupMenu : groupMenus) {
            GroupMenuDTO groupMenuDTO = new GroupMenuDTO();
            groupMenuDTO.setGroupMenu(groupMenu);
            dtos.add(groupMenuDTO);
        }
        dto.setDtos(dtos);
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        return dto;
    }
    private Group queryAdminGroupByOrganizationId(Integer OrganizationId) {
        QueryWrapper<Group> queryGroupWrapper = new QueryWrapper<>();
        Group groupConditon = new Group();
        groupConditon.setOrganizationId(OrganizationId);
        groupConditon.setGroupName("admin");
        groupConditon.setIsDelete(Constants.NOT_DELETE);
        queryGroupWrapper.setEntity(groupConditon);
        return groupMapper.selectOne(queryGroupWrapper);
    }
}
screen-manage/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java
@@ -1,10 +1,23 @@
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.Group;
import com.moral.api.entity.GroupMenu;
import com.moral.api.mapper.GroupMapper;
import com.moral.api.mapper.GroupMenuMapper;
import com.moral.api.pojo.dto.group.GroupDTO;
import com.moral.api.pojo.form.group.AdminGroupUpdateMenuForm;
import com.moral.api.service.GroupService;
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.List;
/**
 * <p>
@@ -17,4 +30,55 @@
@Service
public class GroupServiceImpl extends ServiceImpl<GroupMapper, Group> implements GroupService {
    @Autowired
    GroupMapper groupMapper;
    @Autowired
    GroupMenuMapper groupMenuMapper;
    @Override
    public Group queryAdminGroupByOrganizationId(Integer OrganizationId) {
        QueryWrapper<Group> queryGroupWrapper = new QueryWrapper<>();
        Group groupConditon = new Group();
        groupConditon.setOrganizationId(OrganizationId);
        groupConditon.setGroupName("admin");
        groupConditon.setIsDelete(Constants.NOT_DELETE);
        queryGroupWrapper.setEntity(groupConditon);
        return groupMapper.selectOne(queryGroupWrapper);
    }
    @Override
    @Transactional
    public GroupDTO updateAdminGroupMenu(AdminGroupUpdateMenuForm form) {
        //创建返回对象
        GroupDTO dto = new GroupDTO();
        //取参
        Integer orgId = form.getOrganizationId();
        String channelKey = form.getChannelKey();
        List<Integer> insertMenuIds = form.getMenuIds();
        //根据orgId查询组织admin角色id
        Group group = queryAdminGroupByOrganizationId(orgId);
        if (ObjectUtils.isEmpty(group)) {//如果没有角色则证明组织还没有账号
            dto.setCode(ResponseCodeEnum.ORGANIZATION_USER_NOT_EXIST.getCode());
            dto.setMsg(ResponseCodeEnum.ORGANIZATION_USER_NOT_EXIST.getMsg());
            return dto;
        }
        //删除角色当前所有的菜单
        UpdateWrapper deleteWrapper = new UpdateWrapper();
        deleteWrapper.set("is_delete", Constants.DELETE);
        deleteWrapper.eq("group_id", group.getId());
        groupMenuMapper.update(null, deleteWrapper);
        //重新添加
        for (Integer menuId : insertMenuIds) {
            GroupMenu groupMenu = new GroupMenu();
            groupMenu.setChannelKey(channelKey);
            groupMenu.setGroupId(group.getId());
            groupMenu.setMenuId(menuId);
            groupMenu.setOrganizationId(orgId);
            groupMenuMapper.insert(groupMenu);
        }
        //封装返回对象
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        return dto;
    }
}
screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.moral.api.config.mybatis.wrapper.NullFilterWrapper;
import com.moral.api.entity.Group;
import com.moral.api.entity.Menu;
import com.moral.api.mapper.MenuMapper;
import com.moral.api.pojo.dto.menu.MenuDTO;
@@ -12,6 +13,7 @@
import com.moral.api.pojo.form.menu.MenuInsertForm;
import com.moral.api.pojo.form.menu.MenuQueryNamesForm;
import com.moral.api.pojo.form.menu.MenuUpdateForm;
import com.moral.api.service.GroupService;
import com.moral.api.service.MenuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.constant.Constants;
@@ -40,34 +42,53 @@
    @Autowired
    MenuMapper menuMapper;
    @Autowired
    GroupService groupService;
    @Override
    public MenuQueryDTO queryAllMenu() {
    public MenuQueryDTO queryAllMenus() {
        //创建返回对象
        MenuQueryDTO dto = new MenuQueryDTO();
        //获取所有菜单
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.eq("is_delete", Constants.NOT_DELETE);
        List<Menu> menus = menuMapper.selectList(wrapper);
        //组合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;
            }
        });
        //组装成父子结构
        combinationParentChildrenMenus(menus);
        //转换菜单为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
    public MenuQueryDTO queryAdminGroupMenusByOrganizationId(Integer organizationId) {
        //创建返回对象
        MenuQueryDTO dto = new MenuQueryDTO();
        //查询组织admin角色
        Group group = groupService.queryAdminGroupByOrganizationId(organizationId);
        if (ObjectUtils.isEmpty(group)) {//如果没有角色则证明组织还没有账号
            dto.setCode(ResponseCodeEnum.ORGANIZATION_USER_NOT_EXIST.getCode());
            dto.setMsg(ResponseCodeEnum.ORGANIZATION_USER_NOT_EXIST.getMsg());
            return dto;
        }
        //根据角色查询对应的所有菜单
        List<Menu> allMenus = menuMapper.getMenusByGroupId(group.getId());
        //将菜单转换为父子结构
        combinationParentChildrenMenus(allMenus);
        //删除所有菜单只保留最底层菜单
        List<Menu> menus = new ArrayList<>();
        for (Menu menu : allMenus) {
            getNotParentMenu(menu, menus);
        }
        //封装返回结果
        List<MenuDTO> dtos = new ArrayList<>();
        for (Menu menu : menus) {
            MenuDTO menuDTO = new MenuDTO();
@@ -130,7 +151,7 @@
            wrapper.set("is_delete", Constants.DELETE);
            menuMapper.update(null, wrapper);
        }
        //删除根菜单
        //删除菜单
        existMenu.setIsDelete(Constants.DELETE);
        menuMapper.updateById(existMenu);
@@ -180,7 +201,7 @@
        //查询结果
        NullFilterWrapper<Menu> wrapper = new NullFilterWrapper<>();
        wrapper.eq("is_delete", Constants.NOT_DELETE);
        wrapper.like("name",name);
        wrapper.like("name", name);
        List<Menu> menus = menuMapper.selectList(wrapper);
        //过滤该id对应的所有子菜单
        List<Integer> childrenIds = getChildrenIdsByParentId(id);//获取所有子菜单id结合
@@ -211,6 +232,35 @@
        return dto;
    }
    /**
    * @Description: 将传来的菜单集合封装成父子结构的集合
            * @Param: [menus]
            * @return: java.util.List<com.moral.api.entity.Menu>
            * @Author: 陈凯裕
            * @Date: 2021/5/13
            */
    public void combinationParentChildrenMenus(List<Menu> menus){
        //组合menu父子结构
        Map<Integer, Menu> menuMap = new HashMap<>();
        for (Menu menu : menus) {
            menuMap.put(menu.getId(), menu);
            menu.setChildren(new ArrayList<>());//初始化集合
        }
        for (Menu menu : menus) {
            putMenuToParentMenu(menuMap, menu);
        }
        //删除非根菜单
        menus.removeIf(new Predicate<Menu>() {
            @Override
            public boolean test(Menu menu) {
                if (menu.getParentId().equals(0))
                    return false;
                return true;
            }
        });
    }
    /**
     * @Description: 把传来的menu放到menuMap对应的父菜单中
     * @Param: [menuMap, menu]
@@ -218,7 +268,7 @@
     * @Author: 陈凯裕
     * @Date: 2021/5/6
     */
    private void combinationParentChildrenMenus(Map<Integer, Menu> menuMap, Menu menu) {
    private void putMenuToParentMenu(Map<Integer, Menu> menuMap, Menu menu) {
        Integer parentId = menu.getParentId();
        Menu parentMenu = menuMap.get(parentId);
        if (!ObjectUtils.isEmpty(parentMenu)) {
@@ -245,7 +295,7 @@
            menu.setChildren(new ArrayList<>());//初始化集合
        }
        for (Menu menu : menus) {
            combinationParentChildrenMenus(menuMap, menu);
            putMenuToParentMenu(menuMap, menu);
        }
        Menu menu = menuMap.get(id);
        return menu;
@@ -273,7 +323,7 @@
    /**
     * @Description: 递归获取菜单的id放入集合中
     * @Description: 递归获取菜单以及children的id放入集合中
     * @Param: [menu, ids]
     * @return: void
     * @Author: 陈凯裕
@@ -289,4 +339,22 @@
        }
    }
    /**
     * @Description: 获取menu菜单中的最底层菜单添加到menus中
     * @Param: [menu, menus]
     * @return: void
     * @Author: 陈凯裕
     * @Date: 2021/5/13
     */
    private void getNotParentMenu(Menu menu, List<Menu> menus) {
        if (ObjectUtils.isEmpty(menu.getChildren())) {
            menus.add(menu);
        } else {
            List<Menu> children = menu.getChildren();
            for (Menu child : children) {
                getNotParentMenu(child, menus);
            }
        }
    }
}
screen-manage/src/main/resources/mapper/ManageMenuMapper.xml
@@ -32,7 +32,7 @@
        join
        manage_role_menu mrm
        on
        mm.`id` = mrm.`menu_id` and mm.`is_delete`=0
        mm.`id` = mrm.`menu_id` and mrm.`is_delete`=0
        join
        manage_role mr
        on
screen-manage/src/main/resources/mapper/MenuMapper.xml
@@ -15,4 +15,25 @@
                    <result column="is_delete" property="isDelete" />
        </resultMap>
    <sql id="Base_Column_List">
        m.id,m.name,m.url,m.icon,m.parent_id,m.order,m.create_time,m.update_time,m.is_delete
    </sql>
    <select id="getMenusByGroupId" resultMap="BaseResultMap">
      SELECT
        <include refid="Base_Column_List"></include>
      FROM
        menu m
      JOIN
        group_menu gm
      ON
        gm.`menu_id` = m.`id` AND gm.`is_delete` = 0
      JOIN
        `group` g
      ON
        g.`id` = gm.`group_id` AND g.`is_delete` = 0 AND g.`id` = #{value}
      WHERE
        m.`is_delete` = 0;
    </select>
</mapper>