diff --git a/dictionary/.gitignore b/dictionary/.gitignore new file mode 100644 index 00000000..549e00a2 --- /dev/null +++ b/dictionary/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/dictionary/dictionary-api/.gitignore b/dictionary/dictionary-api/.gitignore new file mode 100644 index 00000000..549e00a2 --- /dev/null +++ b/dictionary/dictionary-api/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/dictionary/dictionary-api/pom.xml b/dictionary/dictionary-api/pom.xml new file mode 100644 index 00000000..cf047bca --- /dev/null +++ b/dictionary/dictionary-api/pom.xml @@ -0,0 +1,42 @@ + + + 4.0.0 + + dictionary + cn.axzo.nanopart + ${revision} + ../pom.xml + + dictionary-api + jar + dictionary-api + + + 2.0.0-SNAPSHOT + 2.0.0-SNAPSHOT + + + + + cn.axzo.framework + axzo-consumer-spring-cloud-starter + + + + com.alibaba + fastjson + + + org.jetbrains + annotations + 13.0 + compile + + + org.projectlombok + lombok + + + + 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 new file mode 100644 index 00000000..f5a1a1cf --- /dev/null +++ b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/DictionaryApi.java @@ -0,0 +1,38 @@ +package cn.axzo.nanopart.dictionary.api; + +import cn.axzo.framework.domain.web.result.ApiPageResult; +import cn.axzo.framework.domain.web.result.ApiResult; +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; +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 + * + * @author xudawei + * @version 1.0 + * @date 2024/04/29 + */ +@FeignClient(name = "nanopart", url = "${axzo.service.nanopart:http://nanopart:8080}") +public interface DictionaryApi { + + /** + * 分页查询 + */ + @PostMapping("/api/dictionary/page") + ApiPageResult queryByType(@RequestBody @Valid QueryByDictTypeReq req); + + /** + * 通过dictType批量查询 + */ + @PostMapping("/api/dictionary/batchQuery") + ApiResult>> 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..f091c1f7 --- /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 = "dictTypes is blank") + private List dictTypes; + + +} diff --git a/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/request/QueryByDictTypeReq.java b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/request/QueryByDictTypeReq.java new file mode 100644 index 00000000..20aab97f --- /dev/null +++ b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/request/QueryByDictTypeReq.java @@ -0,0 +1,37 @@ +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; + +/** + * @author xudawei + * @date 2024/4/29 + */ +@Data +@Builder +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class QueryByDictTypeReq { + /** + * 字典类型 + */ + @NotBlank(message = "dictType is blank") + private String dictType; + + /** + * 页码 + */ + private Integer pageNumber; + + /** + * 每页条数 + */ + private Integer pageSize; + +} 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/request/QueryPageDictReq.java b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/request/QueryPageDictReq.java new file mode 100644 index 00000000..85b9b705 --- /dev/null +++ b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/request/QueryPageDictReq.java @@ -0,0 +1,40 @@ +package cn.axzo.nanopart.dictionary.api.request; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * @author xudawei + * @date 2024/4/29 + */ +@Data +@Builder +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class QueryPageDictReq { + + /** + * 字典类型 + */ + private String dictType; + + /** + * 字典key + */ + private String dictKey; + + /** + * 页码 + */ + private Integer pageNumber; + + /** + * 每页条数 + */ + private Integer pageSize; + +} 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-api/src/main/java/cn/axzo/nanopart/dictionary/api/response/QueryByDictTypeResp.java b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/response/QueryByDictTypeResp.java new file mode 100644 index 00000000..04e6cda9 --- /dev/null +++ b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/response/QueryByDictTypeResp.java @@ -0,0 +1,39 @@ +package cn.axzo.nanopart.dictionary.api.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * @author xudawei + * @date 2024/4/29 + */ +@Data +@Builder +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class QueryByDictTypeResp { + + /** + * 类型 + */ + private String dictType; + + /** + * 字典key + */ + private String dictKey; + + /** + * 值 + */ + private String dictValue; + + /** + * 排序 + */ + private Integer orderBy; +} diff --git a/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/response/QueryDictResp.java b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/response/QueryDictResp.java new file mode 100644 index 00000000..694e7cd7 --- /dev/null +++ b/dictionary/dictionary-api/src/main/java/cn/axzo/nanopart/dictionary/api/response/QueryDictResp.java @@ -0,0 +1,60 @@ +package cn.axzo.nanopart.dictionary.api.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * @author xudawei + * @date 2024/4/29 + */ +@Data +@Builder +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class QueryDictResp { + + /** + * 主键 + */ + private Long id; + + /** + * 类型 + */ + private String dictType; + + /** + * 字典key + */ + private String dictKey; + + /** + * 值 + */ + private String dictValue; + + /** + * 排序 + */ + private Integer orderBy; + + /** + * 是否删除:0否,1是 + */ + private String isDelete; + + /** + * 创建人 + */ + private String createBy; + + /** + * 更新人 + */ + private String updateBy; + +} diff --git a/dictionary/dictionary-api/src/main/resources/application.properties b/dictionary/dictionary-api/src/main/resources/application.properties new file mode 100644 index 00000000..06a4f580 --- /dev/null +++ b/dictionary/dictionary-api/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=dictionary-api diff --git a/dictionary/dictionary-api/src/test/java/cn/axzo/nanopart/dictionary/api/DictionaryApiApplicationTests.java b/dictionary/dictionary-api/src/test/java/cn/axzo/nanopart/dictionary/api/DictionaryApiApplicationTests.java new file mode 100644 index 00000000..0a9fc4d4 --- /dev/null +++ b/dictionary/dictionary-api/src/test/java/cn/axzo/nanopart/dictionary/api/DictionaryApiApplicationTests.java @@ -0,0 +1,13 @@ +package cn.axzo.nanopart.dictionary.api; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class DictionaryApiApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/dictionary/dictionary-server/.gitignore b/dictionary/dictionary-server/.gitignore new file mode 100644 index 00000000..549e00a2 --- /dev/null +++ b/dictionary/dictionary-server/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/dictionary/dictionary-server/pom.xml b/dictionary/dictionary-server/pom.xml new file mode 100644 index 00000000..2fad0795 --- /dev/null +++ b/dictionary/dictionary-server/pom.xml @@ -0,0 +1,76 @@ + + + 4.0.0 + + dictionary + cn.axzo.nanopart + ${revision} + ../pom.xml + + cn.axzo.nanopart + dictionary-server + jar + dictionary-server + + + + cn.axzo.framework + axzo-web-spring-boot-starter + + + cn.axzo.framework + axzo-spring-cloud-starter + + + cn.axzo.framework + axzo-consumer-spring-cloud-starter + + + cn.axzo.framework + axzo-processor-spring-boot-starter + + + + cn.axzo.framework + axzo-mybatisplus-spring-boot-starter + + + + cn.axzo.framework + axzo-swagger-yapi-spring-boot-starter + + + + com.alibaba + druid-spring-boot-starter + + + cn.hutool + hutool-all + + + + cn.axzo.framework + axzo-logger-spring-boot-starter + + + + org.redisson + redisson-spring-boot-starter + + + + cn.axzo.pokonyan + pokonyan + + + + cn.axzo.nanopart + dictionary-api + ${revision} + + + + + 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 new file mode 100644 index 00000000..ec3a38d6 --- /dev/null +++ b/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/controller/DictionaryController.java @@ -0,0 +1,74 @@ +package cn.axzo.nanopart.dictionary.server.controller; + +import cn.axzo.framework.domain.web.result.ApiPageResult; +import cn.axzo.framework.domain.web.result.ApiResult; +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; +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; +import org.springframework.util.CollectionUtils; +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; + +/** + * 字典 + * @author xudawei + * @date 2024/4/29 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +public class DictionaryController implements DictionaryApi { + + @Autowired + private DictionaryService dictionaryService; + + @Override + public ApiPageResult queryByType(@RequestBody @Valid QueryByDictTypeReq req) { + Page page = dictionaryService.page(BeanUtil.copyProperties(req, QueryPageDictReq.class)); + return ApiPageResult.ok(PageConverter.convert(page, record -> BeanUtil.toBean(record, QueryByDictTypeResp.class))); + } + + /** + * 通过dictType批量查询 + */ + @Override + public ApiResult>> queryByBatchType(@RequestBody @Valid QueryByBatchDictTypeReq req) { + List list = dictionaryService.query(BeanUtil.copyProperties(req, QueryDictReq.class)); + if (CollectionUtils.isEmpty(list)) { + return ApiResult.ok(); + } + Map> map = list.stream().collect(Collectors.groupingBy(Dictionary::getDictType, Collectors.toList())); + return ApiResult.ok(this.buildDictTypeMap(map)); + } + + /** + * 构建QueryByDictTypeResp集合Map + */ + private Map> buildDictTypeMap(Map> map) { + Map> resultMap = Maps.newHashMap(); + if (!CollectionUtils.isEmpty(map)) { + 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/domain/Dictionary.java b/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/domain/Dictionary.java new file mode 100644 index 00000000..478d5872 --- /dev/null +++ b/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/domain/Dictionary.java @@ -0,0 +1,62 @@ +package cn.axzo.nanopart.dictionary.server.domain; + +import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * 应用版本信息 + * + * @author xudawei + * @date 2024/4/29 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "nanopart_dictionary", autoResultMap = true) +public class Dictionary extends BaseEntity { + + /** + * 类型 + */ + @TableField(value = "dict_type") + private String dictType; + + /** + * 字典key + */ + @TableField(value = "dict_key") + private String dictKey; + + /** + * 值 + */ + @TableField(value = "dict_value") + private String dictValue; + + /** + * 排序:倒序,值越大越靠前 + */ + @TableField(value = "order_by") + private Integer orderBy; + + /** + * 创建人 + */ + @TableField(value = "create_by") + private Long createBy; + + /** + * 更新人 + */ + @TableField(value = "update_by") + private Long updateBy; + +} diff --git a/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/mapper/DictionaryDao.java b/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/mapper/DictionaryDao.java new file mode 100644 index 00000000..5d24efa0 --- /dev/null +++ b/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/mapper/DictionaryDao.java @@ -0,0 +1,15 @@ +package cn.axzo.nanopart.dictionary.server.mapper; + +import cn.axzo.nanopart.dictionary.server.domain.Dictionary; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2024/4/5 11:02 + */ +@Mapper +public interface DictionaryDao extends BaseMapper { + +} 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 new file mode 100644 index 00000000..3b959b16 --- /dev/null +++ b/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/service/DictionaryService.java @@ -0,0 +1,26 @@ +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); + + /** + * 分页查询 + */ + Page page(QueryPageDictReq 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 new file mode 100644 index 00000000..c61d9f0e --- /dev/null +++ b/dictionary/dictionary-server/src/main/java/cn/axzo/nanopart/dictionary/server/service/impl/DictionaryServiceImpl.java @@ -0,0 +1,74 @@ +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; +import cn.axzo.nanopart.dictionary.server.service.DictionaryService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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; + +/** + * @author xudawei + * @date 2024/4/29 + */ +@Slf4j +@Service +@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) { + if (StringUtils.isBlank(req.getDictKey()) && StringUtils.isBlank(req.getDictType())) { + return new Page<>(req.getPageNumber(), req.getPageSize(), 0); + } + + 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); + } + return dictionaryPage; + } + + /** + * 构建分页查询条件 + */ + private LambdaQueryWrapper buildLambdaQueryWrapper(String dictType, String dictKey, List dictTypes) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); + return lambdaQueryWrapper + .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::getOrderBy); + } + +} diff --git a/dictionary/dictionary-server/src/main/resources/application.properties b/dictionary/dictionary-server/src/main/resources/application.properties new file mode 100644 index 00000000..497cc90f --- /dev/null +++ b/dictionary/dictionary-server/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=dictionary-server diff --git a/dictionary/dictionary-server/src/test/java/cn/axzo/nanopart/dictionary/server/DictionaryServerApplicationTests.java b/dictionary/dictionary-server/src/test/java/cn/axzo/nanopart/dictionary/server/DictionaryServerApplicationTests.java new file mode 100644 index 00000000..143cc9e6 --- /dev/null +++ b/dictionary/dictionary-server/src/test/java/cn/axzo/nanopart/dictionary/server/DictionaryServerApplicationTests.java @@ -0,0 +1,13 @@ +package cn.axzo.nanopart.dictionary.server; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class DictionaryServerApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/dictionary/pom.xml b/dictionary/pom.xml new file mode 100644 index 00000000..1a53b51f --- /dev/null +++ b/dictionary/pom.xml @@ -0,0 +1,62 @@ + + + 4.0.0 + + cn.axzo.nanopart + nanopart + ${revision} + ../pom.xml + + dictionary + dictionary + pom + + + dictionary-api + dictionary-server + + + + + + + + org.springframework.boot + spring-boot-starter + + + + + org.projectlombok + lombok + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + cn.axzo.nanopart + banner-api + 2.0.0-SNAPSHOT + + + + + + + + + axzo + axzo repository + https://nexus.axzo.cn/repository/axzo/ + + + + diff --git a/nanopart-server/pom.xml b/nanopart-server/pom.xml index bd73e00f..92d8fba2 100644 --- a/nanopart-server/pom.xml +++ b/nanopart-server/pom.xml @@ -109,6 +109,18 @@ 2.0.0-SNAPSHOT + + cn.axzo.nanopart + dictionary-server + 2.0.0-SNAPSHOT + + + + cn.axzo.nanopart + dictionary-api + 2.0.0-SNAPSHOT + + cn.axzo.nanopart op-api diff --git a/pom.xml b/pom.xml index a0d66562..bd2e3eed 100644 --- a/pom.xml +++ b/pom.xml @@ -33,6 +33,7 @@ job op banner + dictionary