forked from rzdata/demo-empty
API测试
This commit is contained in:
parent
2ebeb0976b
commit
d1f7563cce
@ -20,7 +20,7 @@ public class GetReq<T> {
|
||||
public IPage<T> into() {
|
||||
Page<T> page = new Page<>();
|
||||
page.setSize(pageSize);
|
||||
page.setCurrent(pageNum - 1);
|
||||
page.setCurrent(pageNum);
|
||||
if (orderBy != null) {
|
||||
page.addOrder(this.asc ? OrderItem.asc(orderBy) : OrderItem.desc(orderBy));
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ public class DictController {
|
||||
* @return 字典类型列表(分页)
|
||||
*/
|
||||
@GetMapping("/type")
|
||||
public IPage<Dict> getDictTypePage(@RequestParam GetDictTypeListReq req) {
|
||||
public IPage<Dict> getDictTypePage(GetDictTypeListReq req) {
|
||||
return dictService.getDictTypePage(req);
|
||||
}
|
||||
|
||||
@ -83,6 +83,16 @@ public class DictController {
|
||||
return dictService.getDictByType(type);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取字典数据
|
||||
* @param type 字典类型
|
||||
* @return 字典数据(树形结构)
|
||||
*/
|
||||
@GetMapping("/data/{type}/tree")
|
||||
public List<Dict> getDictDataTree(@PathVariable String type) {
|
||||
return dictService.getDictByTypeAsTree(type);
|
||||
}
|
||||
|
||||
@DeleteMapping("{id}")
|
||||
public void deleteDict(@PathVariable String id) {
|
||||
dictService.deleteDict(Collections.singleton(id));
|
||||
|
@ -29,6 +29,30 @@ public class DictService {
|
||||
return dictRepository.findByTypeOrderBySortAsc(type);
|
||||
}
|
||||
|
||||
protected List<Dict> getDictByTypeAsTree(String type) {
|
||||
List<Dict> dictList = dictRepository.findByTypeOrderBySortAsc(type);
|
||||
Set<String> idSet = dictList.parallelStream()
|
||||
.map(Dict::getId)
|
||||
.collect(Collectors.toSet());
|
||||
List<Dict> root = dictList.parallelStream()
|
||||
.filter(dict -> !idSet.contains(dict.getParentId()))
|
||||
.toList();
|
||||
List<Dict> increment = root;
|
||||
while (!increment.isEmpty()) {
|
||||
for (Dict dict : increment) {
|
||||
List<Dict> children = dictList.parallelStream()
|
||||
.filter(d -> Objects.equals(d.getParentId(), dict.getId()))
|
||||
.toList();
|
||||
dict.setChildren(children);
|
||||
}
|
||||
increment = increment.parallelStream()
|
||||
.map(Dict::getChildren)
|
||||
.flatMap(List::stream)
|
||||
.toList();
|
||||
}
|
||||
return root;
|
||||
}
|
||||
|
||||
protected void updateDict(Dict dict) {
|
||||
Dict exist = dictRepository.get().selectById(dict.getId());
|
||||
if (exist == null) {
|
||||
@ -40,7 +64,7 @@ public class DictService {
|
||||
dictRepository.get().updateById(dict);
|
||||
// 如果是字典类 则需要更新该类下所有值的type字段
|
||||
if (Objects.equals(exist.getParentId(), Dict.ROOT.getId())) {
|
||||
dictRepository.updateType(exist.getType(), dict.getType());
|
||||
dictRepository.updateType(exist.getValue(), dict.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
@ -58,7 +82,7 @@ public class DictService {
|
||||
Set<String> childIds = children.parallelStream()
|
||||
.map(Dict::getId)
|
||||
.collect(Collectors.toSet());
|
||||
List<Dict> grandchildren = getDictTreeTopDown(childIds, level);
|
||||
List<Dict> grandchildren = getDictTreeTopDown(childIds, level - 1);
|
||||
for (Dict child : children) {
|
||||
List<Dict> grandchild = grandchildren.parallelStream()
|
||||
.filter(g -> Objects.equals(g.getParentId(), child.getId()))
|
||||
|
@ -35,10 +35,14 @@ public class DictRepository extends BaseRepository<Dict, DictMapper> {
|
||||
public List<Dict> findByParentIdIn(Collection<String> parentId) {
|
||||
return this.get().selectList(new LambdaQueryWrapper<Dict>()
|
||||
.in(Dict::getParentId, parentId)
|
||||
.orderByAsc(Dict::getSort)
|
||||
);
|
||||
}
|
||||
|
||||
public IPage<Dict> getDictTypePage(GetDictTypeListReq req) {
|
||||
return this.get().selectPage(req.into(), new LambdaQueryWrapper<>());
|
||||
return this.get().selectPage(req.into(), new LambdaQueryWrapper<Dict>()
|
||||
.eq(Dict::getParentId, Dict.ROOT.getId())
|
||||
.orderByAsc(Dict::getSort)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -21,3 +21,11 @@ spring:
|
||||
max-lifetime: 1800000
|
||||
liquibase:
|
||||
change-log: classpath:/db/changelog/db.changelog-master.yaml
|
||||
mybatis-plus:
|
||||
configuration:
|
||||
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
|
||||
logging:
|
||||
level:
|
||||
root: info
|
||||
net.rzdata: debug
|
||||
com.baomidou.example.mapper: debug
|
||||
|
Loading…
x
Reference in New Issue
Block a user