| /** | 
|  * 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.sys.model.SysUser; | 
| import com.zt.modules.sys.dao.SysRoleUserDao; | 
| import com.zt.modules.sys.dto.RoleDto; | 
| import com.zt.modules.sys.dto.UserDto; | 
| import com.zt.modules.sys.model.SysRoleUser; | 
| import org.springframework.stereotype.Service; | 
|   | 
| import java.util.List; | 
| import java.util.stream.Collectors; | 
|   | 
| /** | 
|  * 角色用户关系 | 
|  * | 
|  * @author hehz | 
|  * @since 1.0.0 | 
|  */ | 
| @Service | 
| public class SysRoleUserService extends BaseService<SysRoleUserDao, SysRoleUser> { | 
|   | 
|     /** | 
|      * 用户角色列表 | 
|      * | 
|      * @param userId | 
|      *            用户ID | 
|      */ | 
|     public List<RoleDto> getUserRoles(Long userId) { | 
|         return baseDao.getUserRoles(userId); | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 角色用户列表 | 
|      * | 
|      * @param roleId | 
|      *            角色ID | 
|      */ | 
|     public List<SysUser> getRoleUsers(Long roleID) { | 
|         return baseDao.getRoleUsers(roleID); | 
|     } | 
|     /** | 
|      * 角色用户列表 | 
|      * | 
|      * @param roleId | 
|      *            角色ID | 
|      */ | 
|     public List<SysRoleUser> getSingleRoleUsers(Long roleID,Long userID) { | 
|         return baseDao.getSingleRoleUsers(roleID,userID); | 
|     } | 
|   | 
|     /** | 
|      * 保存用户角色 | 
|      * | 
|      * @param userId | 
|      * @param roleIdList | 
|      */ | 
|     public void saveOrUpdate(Long userId, List<Long> roleIdList) { | 
|         List<SysRoleUser> list = roleIdList.stream().map(roleId -> new SysRoleUser(roleId, userId)) | 
|                 .collect(Collectors.toList()); | 
|         this.saveRelatedDatas("user_id", userId, "role_id", list); | 
|   | 
|         CacheUtils.removeAll(Constant.Cache.TOKEN);// 清理用户权限缓存 | 
|     } | 
|   | 
|     /** | 
|      * 根据角色ids,删除角色用户关系 | 
|      * | 
|      * @param roleIds | 
|      *            角色ids | 
|      */ | 
|     public void deleteByRoleIds(Long[] roleIds) { | 
|         baseDao.delete(new QueryWrapper<SysRoleUser>().lambda().in(SysRoleUser::getRoleId, roleIds)); | 
|   | 
|         CacheUtils.removeAll(Constant.Cache.TOKEN);// 清理用户权限缓存 | 
|     } | 
|   | 
|     /** | 
|      * 根据用户id,删除角色用户关系 | 
|      * | 
|      * @param userIds | 
|      *            用户ids | 
|      */ | 
|     public void deleteByUserIds(Long[] userIds) { | 
|         baseDao.delete(new QueryWrapper<SysRoleUser>().lambda().in(SysRoleUser::getUserId, userIds)); | 
|   | 
|         CacheUtils.removeAll(Constant.Cache.TOKEN);// 清理用户权限缓存 | 
|     } | 
|   | 
|     public  void  addRoleUser(Long roleId,List<Long> userIds){ | 
|         List<SysUser> list =  baseDao.getRoleUsers(roleId); | 
|         List<SysRoleUser> sysRoleUsers = userIds.stream().map(userId -> new SysRoleUser(roleId, userId)).collect(Collectors.toList()); | 
|         for (SysRoleUser data : sysRoleUsers) { | 
|             if(list.stream().filter(p-> p.getId().equals(data.getUserId())).count()==0){ | 
|                 data.setDelete(false); | 
|                 baseDao.insert(data); | 
|             } | 
|             else { | 
|                 data.setDelete(false); | 
|                 baseDao.updateById(data); | 
|             } | 
|         } | 
|         CacheUtils.remove(Constant.Cache.TOKEN, CacheKey.TOKEN_PERMISSIONS);// 清理用户权限缓存 | 
|     } | 
| } |