/* * 爱组搭 http://aizuda.com 低代码组件化开发平台 * ------------------------------------------ * 受知识产权保护,请勿删除版权申明 */ package com.aizuda.boot.system.service.impl; import com.aizuda.core.api.ApiAssert; import com.aizuda.service.service.BaseServiceImpl; import com.aizuda.boot.system.entity.SysUserRole; import com.aizuda.boot.system.entity.param.AssignRolesParam; import com.aizuda.boot.system.mapper.SysUserRoleMapper; import com.aizuda.boot.system.service.ISysUserRoleService; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 系统用户角色 服务实现类 * * @author 青苗 * @since 2021-11-03 */ @Service public class SysUserRoleServiceImpl extends BaseServiceImpl implements ISysUserRoleService { @Transactional(rollbackFor = Exception.class) @Override public boolean assignRoles(AssignRolesParam assignRolesParam) { // 删除历史 List userIds = assignRolesParam.getUserIds(); this.removeByUserIds(userIds); if (CollectionUtils.isEmpty(assignRolesParam.getRoleIds())) { // 无需分配角色 return true; } // 批量新增 List sysUserRoleList = new ArrayList<>(); userIds.forEach(userId -> sysUserRoleList.addAll(assignRolesParam.getRoleIds().stream() .map(roleId -> { SysUserRole sysUserRole = new SysUserRole(); sysUserRole.setUserId(userId); sysUserRole.setRoleId(roleId); return sysUserRole; }).collect(Collectors.toList()))); return super.saveBatch(sysUserRoleList); } private boolean removeByUserIds(List userIds) { return super.remove(Wrappers.lambdaQuery().in(SysUserRole::getUserId, userIds)); } @Override public boolean updateById(SysUserRole sysUserRole) { ApiAssert.isEmpty(sysUserRole.getId(), "主键不存在无法更新"); return super.updateById(sysUserRole); } @Override public List listRoleIdsByUserId(Long userId) { List sysUserRoleList = super.list(Wrappers.lambdaQuery() .select(SysUserRole::getRoleId).eq(SysUserRole::getUserId, userId)); return CollectionUtils.isEmpty(sysUserRoleList) ? null : sysUserRoleList.stream().map(t -> t.getRoleId()) .collect(Collectors.toList()); } @Override public boolean existRelByRoleId(Long roleId) { return lambdaQuery().eq(SysUserRole::getRoleId, roleId).count() > 0; } }