feat(sj_1.0.0): 优化查询组配置

This commit is contained in:
opensnail 2024-04-26 17:44:41 +08:00
parent 469e8061d2
commit b980b6706d
2 changed files with 33 additions and 19 deletions

View File

@ -18,6 +18,8 @@ public class GroupConfigResponseVO {
private String namespaceId; private String namespaceId;
private String namespaceName;
private Integer groupStatus; private Integer groupStatus;
private Integer groupPartition; private Integer groupPartition;

View File

@ -1,5 +1,6 @@
package com.aizuda.snailjob.server.web.service.impl; package com.aizuda.snailjob.server.web.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.HashUtil; import cn.hutool.core.util.HashUtil;
import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.ReUtil;
@ -22,9 +23,11 @@ import com.aizuda.snailjob.template.datasource.access.AccessTemplate;
import com.aizuda.snailjob.template.datasource.access.ConfigAccess; import com.aizuda.snailjob.template.datasource.access.ConfigAccess;
import com.aizuda.snailjob.template.datasource.access.TaskAccess; import com.aizuda.snailjob.template.datasource.access.TaskAccess;
import com.aizuda.snailjob.template.datasource.enums.DbTypeEnum; import com.aizuda.snailjob.template.datasource.enums.DbTypeEnum;
import com.aizuda.snailjob.template.datasource.persistence.mapper.NamespaceMapper;
import com.aizuda.snailjob.template.datasource.persistence.mapper.SequenceAllocMapper; import com.aizuda.snailjob.template.datasource.persistence.mapper.SequenceAllocMapper;
import com.aizuda.snailjob.template.datasource.persistence.mapper.ServerNodeMapper; import com.aizuda.snailjob.template.datasource.persistence.mapper.ServerNodeMapper;
import com.aizuda.snailjob.template.datasource.persistence.po.GroupConfig; import com.aizuda.snailjob.template.datasource.persistence.po.GroupConfig;
import com.aizuda.snailjob.template.datasource.persistence.po.Namespace;
import com.aizuda.snailjob.template.datasource.persistence.po.RetryDeadLetter; import com.aizuda.snailjob.template.datasource.persistence.po.RetryDeadLetter;
import com.aizuda.snailjob.template.datasource.persistence.po.RetryTask; import com.aizuda.snailjob.template.datasource.persistence.po.RetryTask;
import com.aizuda.snailjob.template.datasource.persistence.po.SequenceAlloc; import com.aizuda.snailjob.template.datasource.persistence.po.SequenceAlloc;
@ -37,6 +40,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.jdbc.BadSqlGrammarException; import org.springframework.jdbc.BadSqlGrammarException;
@ -53,6 +57,7 @@ import java.sql.SQLException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -65,23 +70,17 @@ import java.util.stream.Collectors;
* @since 1.0.0 * @since 1.0.0
*/ */
@Service @Service
@RequiredArgsConstructor
public class GroupConfigServiceImpl implements GroupConfigService { public class GroupConfigServiceImpl implements GroupConfigService {
@Autowired private final ServerNodeMapper serverNodeMapper;
private ServerNodeMapper serverNodeMapper; private final AccessTemplate accessTemplate;
@Autowired private final SequenceAllocMapper sequenceAllocMapper;
private AccessTemplate accessTemplate;
@Autowired
private SequenceAllocMapper sequenceAllocMapper;
@Autowired
@Lazy @Lazy
private ConfigVersionSyncHandler configVersionSyncHandler; private final ConfigVersionSyncHandler configVersionSyncHandler;
@Autowired private final SystemProperties systemProperties;
private SystemProperties systemProperties; private final JdbcTemplate jdbcTemplate;
@Autowired private final NamespaceMapper namespaceMapper;
private JdbcTemplate jdbcTemplate;
@Autowired
private MybatisPlusProperties mybatisPlusProperties;
@Override @Override
@Transactional @Transactional
@ -315,16 +314,29 @@ public class GroupConfigServiceImpl implements GroupConfigService {
@Override @Override
public List<GroupConfigResponseVO> getAllGroupConfigList(final List<String> namespaceIds) { public List<GroupConfigResponseVO> getAllGroupConfigList(final List<String> namespaceIds) {
if (CollectionUtils.isEmpty(namespaceIds)) {
return new ArrayList<>();
}
ConfigAccess<GroupConfig> groupConfigAccess = accessTemplate.getGroupConfigAccess(); ConfigAccess<GroupConfig> groupConfigAccess = accessTemplate.getGroupConfigAccess();
List<GroupConfig> groupConfigs = groupConfigAccess.list(new LambdaQueryWrapper<GroupConfig>() List<GroupConfig> groupConfigs = groupConfigAccess.list(new LambdaQueryWrapper<GroupConfig>()
.select(GroupConfig::getGroupName, GroupConfig::getNamespaceId) .select(GroupConfig::getGroupName, GroupConfig::getNamespaceId)
.in(GroupConfig::getNamespaceId, namespaceIds)); .in(CollectionUtil.isNotEmpty(namespaceIds), GroupConfig::getNamespaceId, namespaceIds));
return GroupConfigResponseVOConverter.INSTANCE.toGroupConfigResponseVO(groupConfigs); if (CollectionUtils.isEmpty(groupConfigs)) {
return new ArrayList<>();
}
List<Namespace> namespaces = namespaceMapper.selectList(new LambdaQueryWrapper<Namespace>()
.in(Namespace::getUniqueId, groupConfigs.stream().map(GroupConfig::getNamespaceId).collect(Collectors.toList())));
Map<String, String> namespaceMap = namespaces.stream()
.collect(Collectors.toMap(Namespace::getUniqueId, Namespace::getName));
List<GroupConfigResponseVO> groupConfigResponses = GroupConfigResponseVOConverter.INSTANCE.toGroupConfigResponseVO(
groupConfigs);
for (final GroupConfigResponseVO groupConfigResponseVO : groupConfigResponses) {
groupConfigResponseVO.setNamespaceName(namespaceMap.get(groupConfigResponseVO.getNamespaceId()));
}
return groupConfigResponses;
} }
@Override @Override