| /** | 
|  * Copyright (c) 2018 人人开源 All rights reserved. | 
|  * | 
|  * https://www.renren.io | 
|  * | 
|  * 版权所有,侵权必究! | 
|  */ | 
|   | 
| package com.zt.modules.sys.service; | 
|   | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.zt.common.constant.CacheKey; | 
| import com.zt.common.constant.Constant; | 
| import com.zt.common.service.BaseService; | 
| import com.zt.common.utils.CacheUtils; | 
| import com.zt.core.context.UserContext; | 
| import com.zt.modules.sys.dao.SysRoleMenuDao; | 
| import com.zt.modules.sys.dto.RoleDto; | 
| import com.zt.modules.sys.model.SysRoleMenu; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
|   | 
| import java.util.List; | 
| import java.util.stream.Collectors; | 
|   | 
| /** | 
|  * 角色与菜单对应关系 | 
|  * | 
|  * @author hehz | 
|  */ | 
| @Service | 
| public class SysRoleMenuService extends BaseService<SysRoleMenuDao, SysRoleMenu> { | 
|   | 
|     @Autowired | 
|     private SysRoleUserService sysRoleUserService; | 
|   | 
|     @Transactional(rollbackFor = Exception.class) | 
|     public void saveOrUpdate(Long roleId, List<Long> menuIdList) { | 
|         List<SysRoleMenu> list = menuIdList.stream().map(menuId -> new SysRoleMenu(roleId, menuId)) | 
|                 .collect(Collectors.toList()); | 
|         this.saveRelatedDatas("role_id", roleId, "menu_id", list); | 
|   | 
|         CacheUtils.removeAll(Constant.Cache.TOKEN);// 清理用户权限缓存 | 
|     } | 
|   | 
|     /** | 
|      * 根据角色ID,获取菜单ID列表 | 
|      */ | 
|     public List<Long> getRoleMenuIds(Long roleId) { | 
|         List<Long> list = baseDao.getByRoleId(roleId).stream().map(d -> d.getMenuId()).collect(Collectors.toList()); | 
|         return list; | 
|     } | 
|   | 
|     /** | 
|      * 根据角色id,删除角色菜单关系 | 
|      * | 
|      * @param roleIds | 
|      *            角色ids | 
|      */ | 
|     @Transactional(rollbackFor = Exception.class) | 
|     public void deleteByRoleIds(Long[] roleIds) { | 
|         this.deleteLogic(baseDao.selectList(new QueryWrapper<SysRoleMenu>().lambda() | 
|                 .in(SysRoleMenu::getRoleId, roleIds))); | 
|   | 
|         CacheUtils.removeAll(Constant.Cache.TOKEN);// 清理用户权限缓存 | 
|     } | 
|   | 
|     /** | 
|      * 根据菜单id,删除角色菜单关系 | 
|      * | 
|      * @param menuId | 
|      *            菜单id | 
|      */ | 
|     @Transactional(rollbackFor = Exception.class) | 
|     public void deleteByMenuId(Long menuId) { | 
|         baseDao.delete(new QueryWrapper<SysRoleMenu>().lambda().eq(SysRoleMenu::getMenuId, menuId)); | 
|   | 
|         CacheUtils.removeAll(Constant.Cache.TOKEN);// 清理用户权限缓存 | 
|     } | 
|   | 
|     public List<SysRoleMenu> roleMenu() { | 
|         List<RoleDto> roles = sysRoleUserService.getUserRoles(UserContext.getUser().getId()); | 
|         List<SysRoleMenu> sysRoleMenu = null; | 
|         for (RoleDto role : roles) { | 
|             RoleDto roleDto = new RoleDto(); | 
|             roleDto.setId(role.getId()); | 
|              sysRoleMenu = baseDao.roleMenu(roleDto); | 
|         } | 
|         return sysRoleMenu; | 
|     } | 
|   | 
| } |