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);
}
}