1.实体类
@Data
@TableName("pms_category")
public class CategoryEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 分类id
*/
@TableId
private Long catId;
/**
* 分类名称
*/
private String name;
/**
* 父分类id
*/
private Long parentCid;
/**
* 层级
*/
private Integer catLevel;
/**
* 是否显示[0-不显示,1显示]
*/
@TableLogic(value = "1",delval = "0")
private Integer showStatus;
/**
* 排序
*/
private Integer sort;
/**
* 图标地址
*/
private String icon;
/**
* 计量单位
*/
private String productUnit;
/**
* 商品数量
*/
private Integer productCount;
@TableField(exist = false)
private List<CategoryEntity> childrenList;
}
2.controller代码
@RestController
@RequestMapping("product/category")
public class CategoryController {
@Autowired
private CategoryService categoryService;
/**
* 列表查询树形结构
*/
@LogTime //此注解是我自定义的注解
@RequestMapping("/list")
public R list(){
List<CategoryEntity> list = categoryService.listWithTree();
return R.ok().put("data", list);
}
}
3.service代码
@Override
@SuppressWarnings("java:S1488")
public List<CategoryEntity> listWithTree() {
List<CategoryEntity> list = this.baseMapper.selectList(null);
List<CategoryEntity> levelOne = list.stream().filter(l -> {
return l.getParentCid() == 0;
}).map(m -> {
m.setChildrenList(getChildren(m,list));
return m;
}).sorted(Comparator.comparingInt(o -> (o.getSort() == null ? 0 : o.getSort()))).filter(element->element.getShowStatus()==1).collect(Collectors.toList());
return levelOne;
}
private List<CategoryEntity> getChildren(CategoryEntity categoryEntity,List<CategoryEntity> list) {
return list.stream().filter(l -> l.getParentCid() == categoryEntity.getCatId())
.map(m->{
m.setChildrenList(getChildren(m,list));
return m;
}).sorted(Comparator.comparingInt(o -> (o.getSort() == null ? 0 : o.getSort()))).collect(Collectors.toList());
}
4.返回值R代码
public class R extends HashMap<String, Object> {
private static final long serialVersionUID = 1L;
public R() {
put("code", 0);
put("msg", "success");
}
public static R error() {
return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员");
}
public static R error(String msg) {
return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);
}
public static R error(int code, String msg) {
R r = new R();
r.put("code", code);
r.put("msg", msg);
return r;
}
public static R ok(String msg) {
R r = new R();
r.put("msg", msg);
return r;
}
public static R ok(Map<String, Object> map) {
R r = new R();
r.putAll(map);
return r;
}
public static R ok() {
return new R();
}
public R put(String key, Object value) {
super.put(key, value);
return this;
}
}
总结:此代码出自尚硅谷商城项目