首先是 controller 层
@PostMapping("/deletes")
public R deleteOneId(@RequestBody ModelAssort modelAssort){
Long oneId=modelAssort.getAssortId();
boolean flag = modelAssortService.deleByOneId(oneId);
if (flag){
return R.ok();
}
return R.fail();
}
servicelmpl层
@Override
public boolean deleByOneId(Long oneId) {
ArrayList<Long> ids = new ArrayList<>();
//先把要删除的一级分类id放入到集合中
ids.add(oneId);
//递归的将一级分类下的id也加入到集合中
this.getIds(ids,oneId);
//批量删除集合中的id
int i = modelAssortMapper.deleteBatchIds(ids);
return i>0;
}
//递归方法
private void getIds(ArrayList<Long> ids, Long oneId) {
//查询二级分类的对象
List<ModelAssort> twoSubjects = modelAssortMapper.selectList(oneId);
//遍历二级分类的对象,把二级分类的id加入到要删除的集合中
for (ModelAssort twoSubject : twoSubjects) {
Long id = twoSubject.getAssortId();
ids.add(id);
//把二级分类的每一个ID,查询它下面的子节点
this.getIds(ids,id);
}
}