12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 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;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author 何超
- * @since 2022-08-22
- */
- @Service
- public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IRoleService {
- @Autowired
- RoleMenuMapper roleMenuMapper;
- @Autowired
- IMenuService menuService;
- @Transactional
- @Override
- public void setRoleMenu(Integer roleId, List<Integer> menuIds) {
- //QueryWrapper<RoleMenu> queryWrapper = new QueryWrapper<>();
- //queryWrapper.eq("role_id", roleId);
- //roleMenuMapper.delete(queryWrapper);
- // 先删除当前角色id所有的绑定关系
- roleMenuMapper.deleteByRoleId(roleId);
- // 再把前端传过来的菜单id数组绑定到当前的这个角色id上去
- List<Integer> 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<Integer> getRoleMenu(Integer roleId) {
- return roleMenuMapper.selectByRoleId(roleId);
- }
- }
|