Skip to content

Commit

Permalink
[type:bugfix] fix namespace bugs (#5799)
Browse files Browse the repository at this point in the history
* [type:bugfix] fix namespace bugs

* [type:bugfix] fix namespace bugs

* [type:bugfix] fix namespace bugs

* [type:bugfix] fix namespace bugs

---------

Co-authored-by: xiaoyu <[email protected]>
  • Loading branch information
Aias00 and yu199195 authored Nov 25, 2024
1 parent 14618d7 commit 3de2c3b
Show file tree
Hide file tree
Showing 8 changed files with 103 additions and 63 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
/**
* this is namespace plugin controller.
*/
@RestApi("/namespacePlugin")
@RestApi("/namespace-plugin")
public class NamespacePluginController implements PagedController<NamespacePluginQueryCondition, NamespacePluginVO> {

private final NamespacePluginService namespacePluginService;
Expand Down Expand Up @@ -230,11 +230,12 @@ public ShenyuAdminResult syncPluginData(@RequestParam("id") final String pluginI
/**
* active plugin snapshot of namespace.
*
* @param namespaceId the namespace id
* @return list
*/
@GetMapping("/snapshot/active")
public ShenyuAdminResult activePluginSnapshot() {
return ShenyuAdminResult.success(namespacePluginService.activePluginSnapshot());
public ShenyuAdminResult activePluginSnapshot(final String namespaceId) {
return ShenyuAdminResult.success(namespacePluginService.activePluginSnapshot(namespaceId));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,18 @@ public ShenyuAdminResult getUserPermissionByToken(@RequestParam(name = "token",
.map(item -> ShenyuAdminResult.success(ShenyuResultMessage.MENU_SUCCESS, item))
.orElseGet(() -> ShenyuAdminResult.error(ShenyuResultMessage.MENU_FAILED));
}

/**
* get menu by namespace.
*
* @param namespaceId namespace id
* @return {@linkplain ShenyuAdminResult}
*/
@GetMapping("/getUserPermissionByNamespace")
public ShenyuAdminResult getUserPermissionByNamespace(@RequestParam(name = "namespaceId", required = false) final String namespaceId) {
PermissionMenuVO permissionMenuVO = permissionService.getPermissionMenu(namespaceId);
return Optional.ofNullable(permissionMenuVO)
.map(item -> ShenyuAdminResult.success(ShenyuResultMessage.MENU_SUCCESS, item))
.orElseGet(() -> ShenyuAdminResult.error(ShenyuResultMessage.MENU_FAILED));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
/**
* this is plugin controller.
*/
@RestApi("/plugin")
@RestApi("/plugin-template")
public class PluginController implements PagedController<PluginQueryCondition, PluginVO> {

private final PluginService pluginService;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,9 +140,10 @@ public interface NamespacePluginService extends PageService<NamespacePluginQuery
/**
* active plugin snapshot.
*
* @param namespaceId the namespaceId
* @return plugin list
*/
List<PluginSnapshotVO> activePluginSnapshot();
List<PluginSnapshotVO> activePluginSnapshot(String namespaceId);

/**
* import plugin data.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,20 +22,24 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.shenyu.admin.exception.ShenyuAdminException;
import org.apache.shenyu.admin.mapper.NamespacePluginRelMapper;
import org.apache.shenyu.admin.mapper.PluginHandleMapper;
import org.apache.shenyu.admin.mapper.PluginMapper;
import org.apache.shenyu.admin.model.dto.PluginDTO;
import org.apache.shenyu.admin.mapper.SelectorMapper;
import org.apache.shenyu.admin.model.dto.NamespacePluginDTO;
import org.apache.shenyu.admin.model.dto.PluginDTO;
import org.apache.shenyu.admin.model.entity.NamespacePluginRelDO;
import org.apache.shenyu.admin.model.entity.PluginDO;
import org.apache.shenyu.admin.model.entity.PluginHandleDO;
import org.apache.shenyu.admin.model.entity.SelectorDO;
import org.apache.shenyu.admin.model.page.CommonPager;
import org.apache.shenyu.admin.model.page.PageResultUtils;
import org.apache.shenyu.admin.model.query.NamespacePluginQuery;
import org.apache.shenyu.admin.model.result.ConfigImportResult;
import org.apache.shenyu.admin.model.vo.NamespacePluginVO;
import org.apache.shenyu.admin.model.vo.PluginHandleVO;
import org.apache.shenyu.admin.model.vo.PluginSnapshotVO;
import org.apache.shenyu.admin.service.PluginHandleService;
import org.apache.shenyu.admin.service.NamespacePluginService;
import org.apache.shenyu.admin.service.PluginHandleService;
import org.apache.shenyu.admin.service.publish.NamespacePluginEventPublisher;
import org.apache.shenyu.admin.transfer.PluginTransfer;
import org.apache.shenyu.admin.utils.ShenyuResultMessage;
Expand All @@ -54,25 +58,33 @@

@Service
public class NamespacePluginServiceImpl implements NamespacePluginService {

private final NamespacePluginRelMapper namespacePluginRelMapper;

private final PluginHandleService pluginHandleService;

private final NamespacePluginEventPublisher namespacePluginEventPublisher;

private final PluginMapper pluginMapper;


private final SelectorMapper selectorMapper;

private final PluginHandleMapper pluginHandleMapper;

public NamespacePluginServiceImpl(final NamespacePluginRelMapper namespacePluginRelMapper,
final PluginHandleService pluginHandleService,
final NamespacePluginEventPublisher namespacePluginEventPublisher,
final PluginMapper pluginMapper) {
final PluginMapper pluginMapper,
final SelectorMapper selectorMapper,
final PluginHandleMapper pluginHandleMapper) {
this.namespacePluginRelMapper = namespacePluginRelMapper;
this.pluginHandleService = pluginHandleService;
this.namespacePluginEventPublisher = namespacePluginEventPublisher;
this.pluginMapper = pluginMapper;
this.selectorMapper = selectorMapper;
this.pluginHandleMapper = pluginHandleMapper;
}

@Override
public NamespacePluginVO findById(final String id) {
return namespacePluginRelMapper.selectById(id);
Expand All @@ -94,7 +106,7 @@ public NamespacePluginVO create(final String namespaceId, final String pluginId)
namespacePluginRelMapper.insertSelective(namespacePluginRelDO);
return namespacePluginRelMapper.selectByPluginIdAndNamespaceId(pluginId, namespaceId);
}

@Override
@Transactional(rollbackFor = Exception.class)
public String update(final NamespacePluginDTO namespacePluginDTO) {
Expand All @@ -107,7 +119,7 @@ public String update(final NamespacePluginDTO namespacePluginDTO) {
}
return ShenyuResultMessage.UPDATE_SUCCESS;
}

@Override
@Transactional(rollbackFor = Exception.class)
public String delete(final List<String> ids) {
Expand All @@ -123,12 +135,12 @@ public String delete(final List<String> ids) {
}
return StringUtils.EMPTY;
}

@Override
public CommonPager<NamespacePluginVO> listByPage(final NamespacePluginQuery namespacePluginQuery) {
return PageResultUtils.result(namespacePluginQuery.getPageParameter(), () -> namespacePluginRelMapper.selectByQuery(namespacePluginQuery));
}

@Override
public List<PluginData> listAll(final String namespaceId) {
return ListUtil.map(namespacePluginRelMapper.selectAllByNamespaceId(namespaceId), PluginTransfer.INSTANCE::mapToData);
Expand All @@ -143,28 +155,19 @@ public List<PluginData> listAll() {
public List<NamespacePluginVO> listByNamespaceId(final String namespaceId) {
return namespacePluginRelMapper.selectAllByNamespaceId(namespaceId);
}

@Override
public List<NamespacePluginVO> listAllData(final String namespaceId) {
Map<String, List<PluginHandleVO>> pluginHandleMap = pluginHandleService.listAllData()
.stream()
.collect(Collectors.groupingBy(PluginHandleVO::getPluginId));

return namespacePluginRelMapper.selectAllByNamespaceId(namespaceId)
.stream()
.filter(Objects::nonNull)
.peek(namespacePluginVO -> {
List<PluginHandleVO> pluginHandleList = Optional
.ofNullable(pluginHandleMap.get(namespacePluginVO.getPluginId()))
.orElse(Lists.newArrayList())
.stream()
// to make less volume of export data
.peek(x -> x.setDictOptions(null))
.collect(Collectors.toList());
namespacePluginVO.setPluginHandleList(pluginHandleList);
}).collect(Collectors.toList());
Map<String, List<PluginHandleVO>> pluginHandleMap = pluginHandleService.listAllData().stream().collect(Collectors.groupingBy(PluginHandleVO::getPluginId));

return namespacePluginRelMapper.selectAllByNamespaceId(namespaceId).stream().filter(Objects::nonNull).peek(namespacePluginVO -> {
List<PluginHandleVO> pluginHandleList = Optional.ofNullable(pluginHandleMap.get(namespacePluginVO.getPluginId())).orElse(Lists.newArrayList()).stream()
// to make less volume of export data
.peek(x -> x.setDictOptions(null)).collect(Collectors.toList());
namespacePluginVO.setPluginHandleList(pluginHandleList);
}).collect(Collectors.toList());
}

@Override
public String enabled(final List<String> ids, final Boolean enabled) {
List<NamespacePluginVO> namespacePluginVOList = namespacePluginRelMapper.selectByIds(ids);
Expand All @@ -189,9 +192,7 @@ public String enabled(final String namespaceId, final List<String> pluginIds, fi
return StringUtils.EMPTY;
}

Map<String, NamespacePluginVO> namespacePluginMap = namespacePluginList
.stream()
.collect(Collectors.toMap(NamespacePluginVO::getPluginId, Function.identity()));
Map<String, NamespacePluginVO> namespacePluginMap = namespacePluginList.stream().collect(Collectors.toMap(NamespacePluginVO::getPluginId, Function.identity()));

List<NamespacePluginVO> updateList = Lists.newArrayList();

Expand All @@ -212,11 +213,35 @@ public String enabled(final String namespaceId, final List<String> pluginIds, fi
}

@Override
public List<PluginSnapshotVO> activePluginSnapshot() {
//todo:Not yet implemented
return null;
public List<PluginSnapshotVO> activePluginSnapshot(final String namespaceId) {
List<NamespacePluginVO> namespacePluginVOList = namespacePluginRelMapper.selectByNamespaceId(namespaceId);

if (CollectionUtils.isEmpty(namespacePluginVOList)) {
return Lists.newArrayList();
}
List<String> pluginIds = namespacePluginVOList.stream().map(NamespacePluginVO::getPluginId).toList();

List<SelectorDO> selectorDOList = selectorMapper.selectAllByNamespaceId(namespaceId);

Map<String, Integer> selectorCountMap = selectorDOList.stream().collect(Collectors.groupingBy(SelectorDO::getPluginId, Collectors.summingInt(x -> 1)));

List<PluginHandleDO> pluginHandleDOList = pluginHandleMapper.selectByPluginIdList(pluginIds);

Map<String, Integer> pluginHandleCountMap = pluginHandleDOList.stream().collect(Collectors.groupingBy(PluginHandleDO::getPluginId, Collectors.summingInt(x -> 1)));

return namespacePluginVOList.stream().map(namespacePluginVO -> {
PluginSnapshotVO pluginSnapshotVO = new PluginSnapshotVO();
pluginSnapshotVO.setId(namespacePluginVO.getPluginId());
pluginSnapshotVO.setName(namespacePluginVO.getName());
pluginSnapshotVO.setConfig(namespacePluginVO.getConfig());
pluginSnapshotVO.setRole(namespacePluginVO.getRole());
pluginSnapshotVO.setSelectorCount(selectorCountMap.getOrDefault(namespacePluginVO.getPluginId(), 0));
pluginSnapshotVO.setHandleCount(pluginHandleCountMap.getOrDefault(namespacePluginVO.getPluginId(), 0));
return pluginSnapshotVO;
}).collect(Collectors.toList());

}

@Override
public ConfigImportResult importData(final List<PluginDTO> pluginList) {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,8 @@
<select id="selectByQuery" parameterType="org.apache.shenyu.admin.model.query.NamespacePluginQuery"
resultType="org.apache.shenyu.admin.model.vo.NamespacePluginVO">
SELECT
npr.id as id,
npr.namespace_id AS namespaceId,
npr.plugin_id AS pluginId,
npr.plugin_id AS id,
npr.config AS config,
npr.sort AS sort,
npr.enabled AS enabled,
Expand Down
Loading

0 comments on commit 3de2c3b

Please sign in to comment.