From 8a9e52baf680d1db5f232b4405c30af91709debf Mon Sep 17 00:00:00 2001 From: xudawei Date: Mon, 6 May 2024 11:00:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AD=97=E5=85=B8=E6=A8=A1?= =?UTF-8?q?=E5=9D=97-=E5=A2=9E=E5=8A=A0=E6=89=B9=E9=87=8F=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dictionary/api/DictionaryApi.java | 11 +++++- .../api/request/QueryByBatchDictTypeReq.java | 30 ++++++++++++++++ .../dictionary/api/request/QueryDictReq.java | 31 +++++++++++++++++ .../response/QueryByBatchDictTypeResp.java | 30 ++++++++++++++++ .../controller/DictionaryController.java | 22 ++++++++++++ .../server/service/DictionaryService.java | 8 +++++ .../service/impl/DictionaryServiceImpl.java | 34 +++++++++++++++---- 7 files changed, 159 insertions(+), 7 deletions(-) create mode 100644 dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/request/QueryByBatchDictTypeReq.java create mode 100644 dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/request/QueryDictReq.java create mode 100644 dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/response/QueryByBatchDictTypeResp.java diff --git a/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/DictionaryApi.java b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/DictionaryApi.java index 94b25ba3..a70d3cd8 100644 --- a/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/DictionaryApi.java +++ b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/DictionaryApi.java @@ -1,6 +1,7 @@ package cn.axzo.nanopart.dictionary.api; import cn.axzo.framework.domain.web.result.ApiPageResult; +import cn.axzo.nanopart.dictionary.api.request.QueryByBatchDictTypeReq; import cn.axzo.nanopart.dictionary.api.request.QueryByDictTypeReq; import cn.axzo.nanopart.dictionary.api.response.QueryByDictTypeResp; import org.springframework.cloud.openfeign.FeignClient; @@ -8,6 +9,8 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import javax.validation.Valid; +import java.util.List; +import java.util.Map; /** * 字典相关 api @@ -20,9 +23,15 @@ import javax.validation.Valid; public interface DictionaryApi { /** - * 分页查询banner + * 分页查询 */ @PostMapping("/api/dictionary/page") ApiPageResult queryByType(@RequestBody @Valid QueryByDictTypeReq req); + /** + * 通过dictType批量查询 + */ + @PostMapping("/api/dictionary/batchQuery") + Map> queryByBatchType(@RequestBody @Valid QueryByBatchDictTypeReq req); + } diff --git a/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/request/QueryByBatchDictTypeReq.java b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/request/QueryByBatchDictTypeReq.java new file mode 100644 index 00000000..be0c49b0 --- /dev/null +++ b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/request/QueryByBatchDictTypeReq.java @@ -0,0 +1,30 @@ +package cn.axzo.nanopart.dictionary.api.request; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * @author xudawei + * @date 2024/4/29 + */ +@Data +@Builder +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class QueryByBatchDictTypeReq { + /** + * 字典类型 + */ + @NotEmpty(message = "dictTypeList is blank") + private List dictTypes; + + +} diff --git a/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/request/QueryDictReq.java b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/request/QueryDictReq.java new file mode 100644 index 00000000..adfd8c87 --- /dev/null +++ b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/request/QueryDictReq.java @@ -0,0 +1,31 @@ +package cn.axzo.nanopart.dictionary.api.request; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + * @author xudawei + * @date 2024/5/6 + */ +@Data +@Builder +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class QueryDictReq { + + /** + * 字典类型集合 + */ + private List dictTypes; + + /** + * 字典key + */ + private String dictKey; +} diff --git a/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/response/QueryByBatchDictTypeResp.java b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/response/QueryByBatchDictTypeResp.java new file mode 100644 index 00000000..63230bb1 --- /dev/null +++ b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/response/QueryByBatchDictTypeResp.java @@ -0,0 +1,30 @@ +package cn.axzo.nanopart.dictionary.api.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + * @author xudawei + * @date 2024/4/29 + */ +@Data +@Builder +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class QueryByBatchDictTypeResp { + + /** + * 类型 + */ + private String dictType; + /** + * 集合 + */ + private List dataList; +} diff --git a/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/controller/DictionaryController.java b/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/controller/DictionaryController.java index ff804114..c6405082 100644 --- a/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/controller/DictionaryController.java +++ b/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/controller/DictionaryController.java @@ -2,7 +2,9 @@ package cn.axzo.nanopart.dictionary.server.controller; import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.nanopart.dictionary.api.DictionaryApi; +import cn.axzo.nanopart.dictionary.api.request.QueryByBatchDictTypeReq; import cn.axzo.nanopart.dictionary.api.request.QueryByDictTypeReq; +import cn.axzo.nanopart.dictionary.api.request.QueryDictReq; import cn.axzo.nanopart.dictionary.api.request.QueryPageDictReq; import cn.axzo.nanopart.dictionary.api.response.QueryByDictTypeResp; import cn.axzo.nanopart.dictionary.server.domain.Dictionary; @@ -10,6 +12,7 @@ import cn.axzo.nanopart.dictionary.server.service.DictionaryService; import cn.axzo.pokonyan.dao.converter.PageConverter; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.google.common.collect.Maps; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -17,6 +20,9 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 字典 @@ -36,4 +42,20 @@ public class DictionaryController implements DictionaryApi { Page page = dictionaryService.page(BeanUtil.copyProperties(req, QueryPageDictReq.class)); return ApiPageResult.ok(PageConverter.convert(page, record -> BeanUtil.toBean(record, QueryByDictTypeResp.class))); } + + /** + * 通过dictType批量查询 + */ + @Override + public Map> queryByBatchType(@RequestBody @Valid QueryByBatchDictTypeReq req) { + List list = dictionaryService.query(BeanUtil.copyProperties(req, QueryDictReq.class)); + Map> map = list.stream().collect(Collectors.groupingBy(Dictionary::getDictType, Collectors.toList())); + + Map> resultMap = Maps.newHashMap(); + map.forEach((dictType, dictList) -> { + List respList = BeanUtil.copyToList(dictList, QueryByDictTypeResp.class); + resultMap.put(dictType, respList); + }); + return resultMap; + } } diff --git a/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/service/DictionaryService.java b/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/service/DictionaryService.java index 9f7f0a94..3b959b16 100644 --- a/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/service/DictionaryService.java +++ b/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/service/DictionaryService.java @@ -1,15 +1,23 @@ package cn.axzo.nanopart.dictionary.server.service; +import cn.axzo.nanopart.dictionary.api.request.QueryDictReq; import cn.axzo.nanopart.dictionary.api.request.QueryPageDictReq; import cn.axzo.nanopart.dictionary.server.domain.Dictionary; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; + /** * @author xudawei * @date 2024/4/29 */ public interface DictionaryService { + /** + * 列表查询 + */ + List query(QueryDictReq req); + /** * 分页查询 */ diff --git a/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/service/impl/DictionaryServiceImpl.java b/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/service/impl/DictionaryServiceImpl.java index c6258309..c61d9f0e 100644 --- a/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/service/impl/DictionaryServiceImpl.java +++ b/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/service/impl/DictionaryServiceImpl.java @@ -1,5 +1,6 @@ package cn.axzo.nanopart.dictionary.server.service.impl; +import cn.axzo.nanopart.dictionary.api.request.QueryDictReq; import cn.axzo.nanopart.dictionary.api.request.QueryPageDictReq; import cn.axzo.nanopart.dictionary.server.domain.Dictionary; import cn.axzo.nanopart.dictionary.server.mapper.DictionaryDao; @@ -9,9 +10,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import java.util.List; import java.util.Objects; /** @@ -23,14 +27,31 @@ import java.util.Objects; @RequiredArgsConstructor public class DictionaryServiceImpl extends ServiceImpl implements DictionaryService { + + /** + * 列表查询 + */ + @Override + public List query(QueryDictReq req) { + if (StringUtils.isBlank(req.getDictKey()) && CollectionUtils.isEmpty(req.getDictTypes())) { + return Lists.newArrayList(); + } + LambdaQueryWrapper queryWrapper = buildLambdaQueryWrapper(StringUtils.EMPTY, req.getDictKey(), req.getDictTypes()); + return this.list(queryWrapper); + } + /** * 分页查询 */ @Override public Page page(QueryPageDictReq req) { - LambdaQueryWrapper pageLambdaQueryWrapper = buildPageLambdaQueryWrapper(req); + if (StringUtils.isBlank(req.getDictKey()) && StringUtils.isBlank(req.getDictType())) { + return new Page<>(req.getPageNumber(), req.getPageSize(), 0); + } - Page dictionaryPage = page(new Page<>(req.getPageNumber(), req.getPageSize()), pageLambdaQueryWrapper); + LambdaQueryWrapper pageLambdaQueryWrapper = buildLambdaQueryWrapper(req.getDictType(), req.getDictKey(), Lists.newArrayList()); + + Page dictionaryPage = this.page(new Page<>(req.getPageNumber(), req.getPageSize()), pageLambdaQueryWrapper); if (Objects.isNull(dictionaryPage) || dictionaryPage.getTotal() == 0) { return new Page<>(req.getPageNumber(), req.getPageSize(), 0); } @@ -40,13 +61,14 @@ public class DictionaryServiceImpl extends ServiceImpl buildPageLambdaQueryWrapper(QueryPageDictReq req) { + private LambdaQueryWrapper buildLambdaQueryWrapper(String dictType, String dictKey, List dictTypes) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); return lambdaQueryWrapper - .like(StringUtils.isNotEmpty(req.getDictType()), Dictionary::getDictType, req.getDictType()) - .eq(Objects.nonNull(req.getDictKey()), Dictionary::getDictKey, req.getDictKey()) + .like(StringUtils.isNotEmpty(dictType), Dictionary::getDictType, dictType) + .in(!CollectionUtils.isEmpty(dictTypes), Dictionary::getDictType, dictTypes) + .eq(StringUtils.isNotEmpty(dictKey), Dictionary::getDictKey, dictKey) .eq(Dictionary::getIsDelete, 0) - .orderByDesc(Dictionary::getCreateAt); + .orderByDesc(Dictionary::getOrderBy); } }