package com.youlai.system.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.youlai.system.common.constant.SystemConstants; import com.youlai.system.common.model.Option; import com.youlai.system.converter.RoleConverter; import com.youlai.system.core.security.service.PermissionService; import com.youlai.system.mapper.SysRoleMapper; import com.youlai.system.model.entity.SysRole; import com.youlai.system.model.entity.SysRoleMenu; import com.youlai.system.model.form.RoleForm; import com.youlai.system.model.query.RolePageQuery; import com.youlai.system.model.vo.RolePageVO; import com.youlai.system.service.SysRoleMenuService; import com.youlai.system.service.SysRoleService; import com.youlai.system.service.SysUserRoleService; import com.youlai.system.util.SecurityUtils; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; /** * 角色业务实现类 * * @author haoxr * @since 2022/6/3 */ @Service @RequiredArgsConstructor public class SysRoleServiceImpl extends ServiceImpl implements SysRoleService { private final SysRoleMenuService roleMenuService; private final SysUserRoleService userRoleService; private final RoleConverter roleConverter; private final PermissionService permissionService; /** * 角色分页列表 * * @param queryParams 角色查询参数 * @return {@link Page} – 角色分页列表 */ @Override public Page getRolePage(RolePageQuery queryParams) { // 查询参数 int pageNum = queryParams.getPageNum(); int pageSize = queryParams.getPageSize(); String keywords = queryParams.getKeywords(); // 查询数据 Page rolePage = this.page(new Page<>(pageNum, pageSize), new LambdaQueryWrapper() .and(StrUtil.isNotBlank(keywords), wrapper -> wrapper.like(StrUtil.isNotBlank(keywords), SysRole::getName, keywords) .or() .like(StrUtil.isNotBlank(keywords), SysRole::getCode, keywords) ) .ne(!SecurityUtils.isRoot(), SysRole::getCode, SystemConstants.ROOT_ROLE_CODE) // 非超级管理员不显示超级管理员角色 ); // 实体转换 return roleConverter.entity2Page(rolePage); } /** * 角色下拉列表 * * @return {@link List