增加字典模块-增加批量查询接口
This commit is contained in:
parent
099fdb2fee
commit
8a9e52baf6
@ -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<QueryByDictTypeResp> queryByType(@RequestBody @Valid QueryByDictTypeReq req);
|
||||
|
||||
/**
|
||||
* 通过dictType批量查询
|
||||
*/
|
||||
@PostMapping("/api/dictionary/batchQuery")
|
||||
Map<String, List<QueryByDictTypeResp>> queryByBatchType(@RequestBody @Valid QueryByBatchDictTypeReq req);
|
||||
|
||||
}
|
||||
|
||||
@ -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<String> dictTypes;
|
||||
|
||||
|
||||
}
|
||||
@ -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<String> dictTypes;
|
||||
|
||||
/**
|
||||
* 字典key
|
||||
*/
|
||||
private String dictKey;
|
||||
}
|
||||
@ -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<QueryByDictTypeResp> dataList;
|
||||
}
|
||||
@ -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<Dictionary> page = dictionaryService.page(BeanUtil.copyProperties(req, QueryPageDictReq.class));
|
||||
return ApiPageResult.ok(PageConverter.convert(page, record -> BeanUtil.toBean(record, QueryByDictTypeResp.class)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过dictType批量查询
|
||||
*/
|
||||
@Override
|
||||
public Map<String, List<QueryByDictTypeResp>> queryByBatchType(@RequestBody @Valid QueryByBatchDictTypeReq req) {
|
||||
List<Dictionary> list = dictionaryService.query(BeanUtil.copyProperties(req, QueryDictReq.class));
|
||||
Map<String, List<Dictionary>> map = list.stream().collect(Collectors.groupingBy(Dictionary::getDictType, Collectors.toList()));
|
||||
|
||||
Map<String, List<QueryByDictTypeResp>> resultMap = Maps.newHashMap();
|
||||
map.forEach((dictType, dictList) -> {
|
||||
List<QueryByDictTypeResp> respList = BeanUtil.copyToList(dictList, QueryByDictTypeResp.class);
|
||||
resultMap.put(dictType, respList);
|
||||
});
|
||||
return resultMap;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<Dictionary> query(QueryDictReq req);
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*/
|
||||
|
||||
@ -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<DictionaryDao, Dictionary> implements DictionaryService {
|
||||
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*/
|
||||
@Override
|
||||
public List<Dictionary> query(QueryDictReq req) {
|
||||
if (StringUtils.isBlank(req.getDictKey()) && CollectionUtils.isEmpty(req.getDictTypes())) {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
LambdaQueryWrapper<Dictionary> queryWrapper = buildLambdaQueryWrapper(StringUtils.EMPTY, req.getDictKey(), req.getDictTypes());
|
||||
return this.list(queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*/
|
||||
@Override
|
||||
public Page<Dictionary> page(QueryPageDictReq req) {
|
||||
LambdaQueryWrapper<Dictionary> pageLambdaQueryWrapper = buildPageLambdaQueryWrapper(req);
|
||||
if (StringUtils.isBlank(req.getDictKey()) && StringUtils.isBlank(req.getDictType())) {
|
||||
return new Page<>(req.getPageNumber(), req.getPageSize(), 0);
|
||||
}
|
||||
|
||||
Page<Dictionary> dictionaryPage = page(new Page<>(req.getPageNumber(), req.getPageSize()), pageLambdaQueryWrapper);
|
||||
LambdaQueryWrapper<Dictionary> pageLambdaQueryWrapper = buildLambdaQueryWrapper(req.getDictType(), req.getDictKey(), Lists.newArrayList());
|
||||
|
||||
Page<Dictionary> 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<DictionaryDao, Dictionar
|
||||
/**
|
||||
* 构建分页查询条件
|
||||
*/
|
||||
private LambdaQueryWrapper<Dictionary> buildPageLambdaQueryWrapper(QueryPageDictReq req) {
|
||||
private LambdaQueryWrapper<Dictionary> buildLambdaQueryWrapper(String dictType, String dictKey, List<String> dictTypes) {
|
||||
LambdaQueryWrapper<Dictionary> lambdaQueryWrapper = new LambdaQueryWrapper<Dictionary>();
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user