package com.xcong.farmer.cms.modules.system.service.Impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xcong.farmer.cms.common.response.Result; import com.xcong.farmer.cms.modules.system.dto.AdminAddMenuDto; import com.xcong.farmer.cms.modules.system.dto.AdminDeleteDto; import com.xcong.farmer.cms.modules.system.dto.AdminMenuDto; import com.xcong.farmer.cms.modules.system.dto.AdminUpdateMenuDto; import com.xcong.farmer.cms.modules.system.entity.MenuEntity; import com.xcong.farmer.cms.modules.system.entity.RoleMenuEntity; import com.xcong.farmer.cms.modules.system.entity.UserEntity; import com.xcong.farmer.cms.modules.system.entity.UserRoleEntity; import com.xcong.farmer.cms.modules.system.mapper.MenuMapper; import com.xcong.farmer.cms.modules.system.mapper.RoleMenuMapper; import com.xcong.farmer.cms.modules.system.service.IMenuService; import com.xcong.farmer.cms.modules.system.util.LoginUserUtil; import com.xcong.farmer.cms.modules.system.vo.AdminMenuVo; import com.xcong.farmer.cms.modules.system.vo.AdminSeeMenuInfoVo; import com.xcong.farmer.cms.modules.system.vo.AdminUserMenuVo; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.collection.CollUtil; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; @Service @Slf4j public class MenuServiceImpl extends ServiceImpl implements IMenuService { @Resource private RoleMenuMapper roleMenuMapper; @Override public Result getMenuInPage(AdminMenuDto adminMenuDto) { Page page = new Page<>(adminMenuDto.getPageNum(), adminMenuDto.getPageSize()); UserEntity userlogin = LoginUserUtil.getLoginUser(); MenuEntity menuEntity = new MenuEntity(); menuEntity.setParentId(MenuEntity.PARENTID_DEFAULT); // menuEntity.setBelongId(userlogin.getBelongId()==null?UserEntity.USER_BELONG_TOP:userlogin.getBelongId()); IPage list = this.baseMapper.selectAdminMenuVoInPage(page,menuEntity); List records = list.getRecords(); if(CollUtil.isNotEmpty(records)){ for(AdminMenuVo adminMenuVo : records){ Long id = adminMenuVo.getId(); QueryWrapper objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("parent_id",id); List menuEntities = this.baseMapper.selectList(objectQueryWrapper); List adminMenuVoChilds = new ArrayList<>(); if(CollUtil.isNotEmpty(menuEntities)){ for(MenuEntity menuEntityChild : menuEntities){ AdminMenuVo child = new AdminMenuVo(); child.setId(menuEntityChild.getId()); child.setMenuName(menuEntityChild.getMenuName()); child.setMenuType(menuEntityChild.getMenuType()); child.setRouteUrl(menuEntityChild.getRouteUrl()); child.setOrderNum(menuEntityChild.getOrderNum()); child.setCreateTime(menuEntityChild.getCreateTime()); adminMenuVoChilds.add(child); } } adminMenuVo.setChild(adminMenuVoChilds); } } return Result.ok(list); } @Override @Transactional public Result addMenu(AdminAddMenuDto adminAddMenuDto) { UserEntity userlogin = LoginUserUtil.getLoginUser(); String menuName = adminAddMenuDto.getMenuName(); Integer menuType = adminAddMenuDto.getMenuType(); MenuEntity menuEntity = new MenuEntity(); menuEntity.setMenuName(menuName); menuEntity.setMenuType(menuType); Long parentId = adminAddMenuDto.getParentId(); if(ObjectUtil.isEmpty(parentId)){ menuEntity.setParentId(MenuEntity.PARENTID_DEFAULT); }else{ menuEntity.setParentId(parentId); } Integer orderNum = adminAddMenuDto.getOrderNum(); if(ObjectUtil.isNotEmpty(orderNum)){ menuEntity.setOrderNum(orderNum); } String routeUrl = adminAddMenuDto.getRouteUrl(); if(StrUtil.isNotEmpty(routeUrl)){ menuEntity.setRouteUrl(routeUrl); } this.baseMapper.insert(menuEntity); return Result.ok("新增成功"); } @Override @Transactional public Result deleteMenu(Long id) { MenuEntity menuEntity = this.baseMapper.selectById(id); if(ObjectUtil.isEmpty(menuEntity)){ return Result.fail("菜单不存在"); } QueryWrapper objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("parent_id",id); List menuEntities = this.baseMapper.selectList(objectQueryWrapper); if(CollUtil.isNotEmpty(menuEntities)){ return Result.fail("请先清空它的二级菜单"); } this.baseMapper.deleteById(id); roleMenuMapper.deleteByMenuId(id); return Result.ok("删除成功"); } @Override public Result seeMenuInfo(Long id) { MenuEntity menuEntity = this.baseMapper.selectById(id); if(ObjectUtil.isEmpty(menuEntity)){ return Result.fail("菜单不存在"); } AdminSeeMenuInfoVo adminSeeMenuInfoVo = new AdminSeeMenuInfoVo(); adminSeeMenuInfoVo.setId(id); adminSeeMenuInfoVo.setMenuName(menuEntity.getMenuName()); adminSeeMenuInfoVo.setMenuType(menuEntity.getMenuType()); adminSeeMenuInfoVo.setRouteUrl(menuEntity.getRouteUrl()); adminSeeMenuInfoVo.setOrderNum(menuEntity.getOrderNum()); adminSeeMenuInfoVo.setParentId(menuEntity.getParentId()); return Result.ok(adminSeeMenuInfoVo); } @Override @Transactional public Result updateMenu(AdminUpdateMenuDto adminUpdateMenuDto) { Long id = adminUpdateMenuDto.getId(); MenuEntity menuEntity = this.baseMapper.selectById(id); if(ObjectUtil.isEmpty(menuEntity)){ return Result.fail("菜单不存在"); } String menuName = adminUpdateMenuDto.getMenuName(); menuEntity.setMenuName(menuName); Integer menuType = adminUpdateMenuDto.getMenuType(); menuEntity.setMenuType(menuType); String routeUrl = adminUpdateMenuDto.getRouteUrl(); if(StrUtil.isNotEmpty(routeUrl)){ menuEntity.setRouteUrl(routeUrl); } Integer orderNum = adminUpdateMenuDto.getOrderNum(); if(ObjectUtil.isNotEmpty(orderNum)){ menuEntity.setOrderNum(orderNum); } Long parentId = adminUpdateMenuDto.getParentId(); if(ObjectUtil.isEmpty(parentId)){ menuEntity.setParentId(MenuEntity.PARENTID_DEFAULT); }else{ menuEntity.setParentId(parentId); } this.baseMapper.updateById(menuEntity); return Result.ok("更新成功"); } @Override @Transactional public Result delObjs(AdminDeleteDto adminDeleteDto) { String ids = adminDeleteDto.getIds(); if(StrUtil.isNotEmpty(ids)){ String[] menuIds = ids.split(StringPool.COMMA); for(String menuIdStr : menuIds){ Long menuId = Long.valueOf(menuIdStr); QueryWrapper objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("parent_id",menuId); this.baseMapper.delete(objectQueryWrapper); this.baseMapper.deleteById(menuId); roleMenuMapper.deleteByMenuId(menuId); } } return Result.ok("删除成功"); } @Override public Result getMenuInList() { UserEntity userlogin = LoginUserUtil.getLoginUser(); List records = this.baseMapper.selectAdminMenuVoInListByParentId(MenuEntity.PARENTID_DEFAULT); if(CollUtil.isNotEmpty(records)){ for(AdminMenuVo adminMenuVo : records){ Long id = adminMenuVo.getId(); QueryWrapper objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("parent_id",id); List menuEntities = this.baseMapper.selectList(objectQueryWrapper); List adminMenuVoChilds = new ArrayList<>(); if(CollUtil.isNotEmpty(menuEntities)){ for(MenuEntity menuEntityChild : menuEntities){ AdminMenuVo child = new AdminMenuVo(); child.setId(menuEntityChild.getId()); child.setMenuName(menuEntityChild.getMenuName()); child.setMenuType(menuEntityChild.getMenuType()); child.setRouteUrl(menuEntityChild.getRouteUrl()); child.setOrderNum(menuEntityChild.getOrderNum()); child.setCreateTime(menuEntityChild.getCreateTime()); adminMenuVoChilds.add(child); } } adminMenuVo.setChild(adminMenuVoChilds); } } if(CollUtil.isNotEmpty(records)){ for(AdminMenuVo adminMenuVo : records){ List child = adminMenuVo.getChild(); if(CollUtil.isNotEmpty(child)){ List menuIds = new ArrayList<>(); for(AdminMenuVo adminMenuVoChild : child){ Long id = adminMenuVoChild.getId(); menuIds.add(id); } List adminMenuVoByOrderNum = this.baseMapper.selectAdminMenuVoOrderByOrderNum(menuIds); adminMenuVo.setChild(adminMenuVoByOrderNum); } } } return Result.ok(records); } }