@Override
    @Transactional(rollbackFor = Exception.class)
    public String delete(final List<String> ids) {
        // select plugin id.
        List<PluginDO> plugins = this.pluginMapper.selectByIds(ids);
        if (CollectionUtils.isEmpty(plugins)) {
            return AdminConstants.SYS_PLUGIN_ID_NOT_EXIST;
        }
        Optional<PluginDO> exist = plugins.stream()
                .filter(value -> Objects.nonNull(this.namespacePluginRelMapper.selectByPluginId(value.getId())))
                .findAny();
        if (exist.isPresent()) {
            return AdminConstants.NAMESPACE_PLUGIN_NOT_DELETE;
        }
        // delete plugins.
        if (this.pluginMapper.deleteByIds(ListUtil.map(plugins, PluginDO::getId)) > 0) {
            // publish deleted event. synchronously delete and link data[selector,rule,condition,resource]
            pluginEventPublisher.onDeleted(plugins);
        }
        return StringUtils.EMPTY;
    }
delete plugins.

@param ids primary key.
@return rows
shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PluginServiceImpl.java