| | |
| | | return false; |
| | | } |
| | | |
| | | List<Long> sidList = fixedList.stream() |
| | | .map(DingtalkInfo::getSid) |
| | | List<String> sidList = fixedList.stream() |
| | | .map(DingtalkInfo::getPhone) |
| | | .collect(Collectors.toList()); |
| | | |
| | | List<String> userIdList = getDingtalkUserIdListBySids(sidList); |
| | | List<String> userIdList = getDingtalkUserIdListByPhones(sidList); |
| | | |
| | | if (userIdList == null || userIdList.isEmpty()) { |
| | | log.warn("没有有效的钉钉用户ID"); |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | private List<String> getDingtalkUserIdListByPhones(List<String> phoneList) { |
| | | try { |
| | | if (phoneList == null || phoneList.isEmpty()) { |
| | | return new ArrayList<>(); |
| | | } |
| | | |
| | | // 去重 |
| | | phoneList = phoneList.stream().distinct().collect(Collectors.toList()); |
| | | |
| | | // 根据sid查询DingtalkInfo |
| | | List<DingtalkInfo> list = baseMapper.selectList( |
| | | new LambdaQueryWrapper<DingtalkInfo>().in(DingtalkInfo::getPhone, phoneList) |
| | | ); |
| | | |
| | | if (list == null || list.isEmpty()) { |
| | | return new ArrayList<>(); |
| | | } |
| | | |
| | | // 使用stream流过滤出list中dingtalkId为空的数据 |
| | | List<DingtalkInfo> emptyDingtalkIdList = list.stream() |
| | | .filter(info -> !StringUtils.hasText(info.getDingtalkId())) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // 如果存在为空的数据就通过钉钉的接口获取,为dingtalkId赋值,并且更新数据库 |
| | | if (!emptyDingtalkIdList.isEmpty()) { |
| | | String accessToken = simpleExample.getAccessToken(); |
| | | |
| | | for (DingtalkInfo info : emptyDingtalkIdList) { |
| | | if (StringUtils.hasText(info.getPhone())) { |
| | | try { |
| | | // 通过手机号获取钉钉用户ID |
| | | com.dingtalk.api.response.OapiV2UserGetbymobileResponse response = |
| | | simpleExample.getOapiV2UserGetbymobileResponse(info.getPhone(), accessToken); |
| | | |
| | | if (response != null && response.getResult() != null) { |
| | | info.setDingtalkId(response.getResult().getUserid()); |
| | | // 更新数据库 |
| | | updateById(info); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("获取钉钉用户ID失败,手机号:{}", info.getPhone(), e); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 不存在为空的数据或者处理完空数据后,返回所有有效的dingtalkId列表 |
| | | return list.stream() |
| | | .map(DingtalkInfo::getDingtalkId) |
| | | .filter(StringUtils::hasText) |
| | | .distinct() |
| | | .collect(Collectors.toList()); |
| | | } catch (Exception e) { |
| | | log.error("获取钉钉用户列表失败", e); |
| | | return new ArrayList<>(); |
| | | } |
| | | } |
| | | |
| | | private OapiMessageCorpconversationAsyncsendV2Response sendMessage(String userIdListStr, String message) throws Exception { |
| | | |
| | | String accessToken = simpleExample.getAccessToken(); |