package com.om.service.impl; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.om.entity.po.Menu; import com.om.entity.po.Role; import com.om.entity.po.RoleMenu; import com.om.mapper.RoleMapper; import com.om.mapper.RoleMenuMapper; import com.om.service.IMenuService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.om.service.IRoleService; import java.util.List; /** *

* 服务实现类 *

* * @author 何超 * @since 2022-08-22 */ @Service public class RoleServiceImpl extends ServiceImpl implements IRoleService { @Autowired RoleMenuMapper roleMenuMapper; @Autowired IMenuService menuService; @Transactional @Override public void setRoleMenu(Integer roleId, List menuIds) { //QueryWrapper queryWrapper = new QueryWrapper<>(); //queryWrapper.eq("role_id", roleId); //roleMenuMapper.delete(queryWrapper); // 先删除当前角色id所有的绑定关系 roleMenuMapper.deleteByRoleId(roleId); // 再把前端传过来的菜单id数组绑定到当前的这个角色id上去 List menuIdsCopy = CollUtil.newArrayList(menuIds); for (Integer menuId : menuIds) { Menu menu = menuService.getById(menuId); if (menu.getPid() != null && !menuIdsCopy.contains(menu.getPid())) { // 二级菜单 并且传过来的menuId数组里面没有它的父级id // 那么我们就得补上这个父级id RoleMenu roleMenu = new RoleMenu(); roleMenu.setRoleId(roleId); roleMenu.setMenuId(menu.getPid()); roleMenuMapper.insert(roleMenu); menuIdsCopy.add(menu.getPid()); } RoleMenu roleMenu = new RoleMenu(); roleMenu.setRoleId(roleId); roleMenu.setMenuId(menuId); roleMenuMapper.insert(roleMenu); } } @Override public List getRoleMenu(Integer roleId) { return roleMenuMapper.selectByRoleId(roleId); } }