需求:通常数据库存的是用户id,但是用户输入的模糊的名称string类型,要是想匹配用户的话
操作:先获取系统所有的用户list,然后再遍历list,通过contain匹配用户名称,收集符合的用户id,就可以得到一个list<Integer> 的用户id集合。
本系统用户集合是map,key是用户id,value是用户实体类
先获取用户map
/**
* 调用远程接口获取用户集合
* @param
* @return
*/
public Map<String, SysUser> userList() {
R<Map<String, SysUser>> userAll = remoteUserService.getUserAll();
if (userAll.getCode() != HttpStatus.SUCCESS) {
throw new CheckedException("获取目录树失败,msg:" + userAll.getMsg());
}
return userAll.getData();
}
再收集value集合后,去遍历value对象类,收集id集合
/**
* 通过用户名模糊匹配用户idList
*/
public List<Integer> pattern(String peopleName){
//调远程接口获取用户list;
Map<String, SysUser> sysUserMap = userList();
List<SysUser> sysUserList = new ArrayList<>();
//收集用户值list
Collection<SysUser> values = sysUserMap.values();
Iterator<SysUser> it2 = values.iterator();
while(it2.hasNext()) {
sysUserList.add(it2.next());
}
List<Integer> list = patternUser(sysUserList, peopleName);
return list;
}
//模糊匹配用户id
private List<Integer> patternUser(List<SysUser> sysUserList,String peopleName){
List<Integer> userId = new ArrayList<>();
for (SysUser sysUser : sysUserList){
String nickName = sysUser.getNickName();
if (nickName.contains(peopleName)){
userId.add(Math.toIntExact(sysUser.getUserId()));
}
}
return userId;
}