有个需求,可以根据一个用户查询到他底下的所有下级,下级的下级,下级的下级的下级…,原理就是调用递归方法不断往下查询下属,代码很简单(其实如果可以By用户等级,代码可以更简单,就是取消queryUsersByLevel中的for循环,直接调用getAllUsers就OK了).
@RequestMapping(value = "queryUsersByLevel/{userId}", method = RequestMethod.GET, produces = {
"application/json;charset=UTF-8" })
@ResponseBody
public List<User> queryUsersByLevel(@PathVariable("userId") String userId) {
List<User> users = userService.queryUsersByBossNo(userId);
if(!StringUtil.isCollectionEmpty(users)){
for(User user:users){
User u = getAllUsers(user);
if(u != null)
user.sub_users = u.sub_users;
}
}
return users;
}
private User getAllUsers(User user) {
List<User> users = userService.queryUsersByBossNo(user.user_id);
if(!StringUtil.isCollectionEmpty(users)){
for(User u:users){
User u1 = getAllUsers(u);
if(u1 != null)
u.sub_users = u1.sub_users;
}
user.sub_users = users;
return user;
}
return null;
}
实体类:
public class User{
public List<User> sub_users;
public String user_name;
public String user_id;
public String org_id;
public String boss_no;
public String boss_level;
}