package cn.lili.modules.permission.serviceimpl; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.security.enums.UserEnums; import cn.lili.modules.permission.entity.dos.Role; import cn.lili.modules.permission.mapper.RoleMapper; import cn.lili.modules.permission.service.DepartmentRoleService; import cn.lili.modules.permission.service.RoleMenuService; import cn.lili.modules.permission.service.RoleService; import cn.lili.modules.permission.service.UserRoleService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * 角色业务层实现 * * @author Chopper * @since 2020/11/17 3:50 下午 */ @Service public class RoleServiceImpl extends ServiceImpl implements RoleService { /** * 部门角色 */ @Autowired private DepartmentRoleService departmentRoleService; /** * 用户权限 */ @Autowired private UserRoleService userRoleService; @Autowired private RoleMenuService roleMenuService; @Autowired private Cache cache; @Override public List findByDefaultRole(Boolean defaultRole) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("default_role", true); return baseMapper.selectList(queryWrapper); } @Override @Transactional(rollbackFor = Exception.class) public void deleteRoles(List roleIds) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("role_id", roleIds); if (departmentRoleService.count(queryWrapper) > 0) { throw new ServiceException(ResultCode.PERMISSION_DEPARTMENT_ROLE_ERROR); } if (userRoleService.count(queryWrapper) > 0) { throw new ServiceException(ResultCode.PERMISSION_USER_ROLE_ERROR); } //删除角色 this.removeByIds(roleIds); //删除角色与菜单关联 roleMenuService.remove(queryWrapper); cache.vagueDel(CachePrefix.USER_MENU.getPrefix(UserEnums.MANAGER)); cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.MANAGER)); } }