文章目录

  • 背景
  • 思路
  • 实战
    • 1.引入jar包
    • 2.测试使用
    • 3.项目中使用

背景

最近有个需求,需要使用查询手机号归属地,进行客户地区统计分析。

思路

  • 方案1
    首先想到的是找第三方的api接口,直接根据手机号调用. 网上有很多,比如360的。
    弊端: 这些有的收费的,有的个数限制的,而且批量查询调的确是很费劲的。

  • 方案2
    想到能不能找到一个手机号归属地的数据库字典,比如excel等。我们保存到自己的数据库或服务器中,去一行行解析呢。的确网上也是有这种方案的。
    弊端: 自己维护数据库字典,自己写的查询效率不知如何。

  • 方案3:
    感谢大神们的分享精神,找到一个开源项目,他直接给把字典和查询给封装成了jar包,打到了maven中央仓库,我们只要引用jar就可以了。顺着这个思路,找到了网上有很多实现,都是基于那位大神的项目做得封装。比如java 的,go语言的,python等。
    https://gitee.com/oss/phonedata?_from=gitee_search

实战

本人就基于第三种方案实现。具体看下面的方式:

1.引入jar包

 <dependency><groupId>me.ihxq.projects</groupId><artifactId>phone-number-geo</artifactId><version>1.0.9-202108</version>
</dependency>

2.测试使用

 @Testpublic void testPhone(){PhoneNumberLookup phoneNumberLookup1 = new PhoneNumberLookup();String province = phoneNumberLookup1.lookup("13565403278").map(PhoneNumberInfo::getAttribution).map(Attribution::getProvince).orElse("未知");log.info(province);PhoneNumberLookup phoneNumberLookup = new PhoneNumberLookup();PhoneNumberInfo found = phoneNumberLookup.lookup("13565403278").orElseThrow(RuntimeException::new);found.getNumber(); // 18798896741found.getAttribution().getProvince(); // 贵州found.getAttribution().getCity(); // 贵阳found.getAttribution().getZipCode(); // 550000found.getAttribution().getAreaCode(); // 0851found.getIsp(); // ISP.CHINA_MOBILElog.info(JSON.toJSONString(found));}

运行结果如下:

3.项目中使用

比如我有个小需求,根据用户登录过app的手机号,进行数据大屏展示。就可以直接这样用。

  /** * 1.查询当日登录过用户* 2.基于当日登录用户的手机号,获取手机号对应的归属地* 返回数据结果*/@Overridepublic  List<PhoneProvinceDTO>  statisticsUserMap() {//获取今日日期String day = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));//获取今日登陆过的 所有用户手机号List<String> todayLoginUserPhones = this.baseMapper.getTodayLoginUserPhones(day);List<PhoneProvinceDTO> list = new ArrayList<>();todayLoginUserPhones.parallelStream().forEach(item -> {PhoneProvinceDTO phoneProvinceDTO = new PhoneProvinceDTO();//调用手机号归属地的工具方法PhoneNumberLookup phoneNumberLookup = new PhoneNumberLookup();String province = phoneNumberLookup.lookup(item).map(PhoneNumberInfo::getAttribution).map(Attribution::getProvince).orElse("未知");phoneProvinceDTO.setProvince(province);list.add(phoneProvinceDTO);});if (CollectionUtils.isEmpty(list)){return Collections.emptyList();}//分组统计今日登陆过的 省份人数Map<String, List<PhoneProvinceDTO>> groupMap = list.parallelStream().collect(Collectors.groupingBy(PhoneProvinceDTO::getProvince));//定义返回的集合对象List<PhoneProvinceDTO> resultList = new ArrayList<>();groupMap.forEach((k, v) -> {PhoneProvinceDTO dto = new PhoneProvinceDTO();int size = v.size();dto.setProvince(k);dto.setCount(size);resultList.add(dto);});if (CollectionUtils.isEmpty(resultList)){return Collections.emptyList();}//重写了Comparable 进行倒序排序Collections.sort(resultList);return resultList;}


这样就直接拿到了所有的登录人省份,进行数据分析了!!!

特别提醒

目前:这个手机号库是21年8月份更新,如果后续更新了,跟着替换下jar的版本即可。如果等不及,也可以继续找最新的手机号库源,定时同步,自己封装sprinboot-start奥,然后调用奥。


开通了个微信公众号:
搜索: 怒放de每一天
后续可能不定时推送相关文章,期待和大家一起成长!!


大功告成,完!

手机号归属地查询实例相关推荐

  1. 手机号归属地 mysql脚本_示例演示手机号归属地查询功能

    示例演示手机号归属地查询功能(调用webservice接口) 1,新建java项目,创建包 2,点击项目名称创建web service->web service client 3,选择JAX-W ...

  2. 批量手机号归属地查询

    批量手机号归属地查询 使用Python进行批量手机号归属地查询 使用Python进行批量手机号归属地查询 程序代码: import requests import re import xlwt imp ...

  3. php 手机号归属地 dat,GitHub - china-qd/phonedata: 手机号码归属地信息库、手机号归属地查询 phone.dat 最后更新:2020年04月...

    手机号码归属地信息库.手机号归属地查询 这可能是github上能找到的最新最全的中国境内手机号归属地信息库 基于GO语言实现,使用二分查找法. 归属地信息库文件大小:4,040,893 字节 归属地信 ...

  4. java 手机号归属地查询

    根据手机号码查询归属地.运营商我们引用google的libphonenumber包,libphonenumber是用于解析.格式化.存储和校验电话号码的Java.C++或JavaScript类库. 依 ...

  5. 携号转网手机号归属地查询

    携号转网实时手机号归属地查询接口API,可以使用以下http地址免费测试(请求号码需更换): https://gw.qxt800.com/qxt_test?mobile=13972565391

  6. jQuery-链接api实现星座运势和手机号归属地查询

    连接api  做一个星座运势查询. <!DOCTYPE html> <html lang="en"> <head><meta charse ...

  7. 如何使用免费手机号归属地查询API快速获取手机号归属地,两种方法【源码可用】

    福利彩蛋:没有好玩的API接口?上百款免费接口等你来 一.通过手机号码归属地接口查询 根据手机号码(段),查询手机号码归属地信息,如省份 .城市.运营商 简单快捷,根据个人需求进行开发 接口请求流程: ...

  8. java手机号归属地查询

    java手机号归属地查询 Maven 依赖 代码实现: 测试结果: 官方项目地址:https://github.com/google/libphonenumber/tree/master/java/l ...

  9. yii2 跨域请求配置_手机号归属地查询 API 接口调用请求

    手机号归属地查询 API 接口在网上已经很多且大都封装成了 API 供别人调用.支持前台跨域请求,以GET方式提交即可.手机号归属地查询 API 接口可以查询手机的归属地详细信息,你可以选择调用本站的 ...

  10. 调用阿里API实现手机号归属地查询

    调用阿里API实现手机号归属地查询 1.作者介绍 2.号码归属地介绍 2.1 什么是手机号码归属地? 2.2 为什么需要手机号码归属地? 2.3 手机号码归属地查询对个人的运用 3.调用阿里API实现 ...

最新文章

  1. python学习笔记(开课介绍1)
  2. 【数据挖掘】决策树 分类 ( 抽取分类规则 | 过拟合 | 剪枝 | 先剪 | 后剪 | 连续数值离散化 | 最优化分点 | 增益率选择划分属性 )
  3. iOS之深入解析少见却神奇的NSProxy类的多种使用
  4. first network error, wait for 15 seconds
  5. css3动画结束捕捉事件整理
  6. 燃料电池仿真模型燃料电池仿真模型,本模型基于Cruise软件和 Simulink软件共同搭建完成
  7. 基于vue3.0全家桶H5模板
  8. STL之字符串类模板 string(一)、C++ string类库简介
  9. Proe转Solidworks
  10. 技术分享 | ClickHouse StarRocks 使用经验分享
  11. 多场景项目实战 (总结有点多今天)
  12. 计算机实验word,实验六计算机基础——word段落设置
  13. 吾征:通过认知智能技术把中医的“望闻问切”搬上互联网 | 百万人学AI评选
  14. 计算机丢失sspicli,MS16-047:SAM 和 LSAD 远程协议安全更新程序说明:2016 年 4 月 12 日...
  15. 他山之石,可以攻玉篇
  16. 酷狗音乐快速转换MP3格式的方法
  17. iris-session梳理
  18. c盘那些文件可以删除
  19. Android Studio 舞台,StudioLive 32SC 32通道数字调音台
  20. 证据加密(witness encryption)

热门文章

  1. 3G.处女座和小姐姐(三)(C++)
  2. 计算机鼠标双击怎么,电脑鼠标双击变成属性的解决方法
  3. 单片机的C语言应用程序设计实训教程,单片机的c语言程序设计实训
  4. 如何通过电影种子名选择合适的电影
  5. BIM族库下载——Revit配景族
  6. ZooKeeper 会话的秘密 快偷偷过来瞧一瞧!!!
  7. Java如何给ServerSocket绑定指定IP地址
  8. 计算机考试系统客户端网址,[中学]计算机基础测评系统考试客户端操作步骤.doc...
  9. Ajax 超完整教程
  10. 淘宝主营类目占比对店铺有哪些影响