意义
在常见的电商、新闻、社交网站等,合理运用运营成本才能最大化输出自己的产品,其中最常见的功能就有针对不同访问热度的城市制定不同的运营手段,因此我们掌握用户城市分布情况至关重要。
pc端与移动端不同,无法依托手机自带的gps定位到用户所在城市,只能通过ip来进行判断所在地理位置。
根据ip获取城市的方式
淘宝、新浪等常年提供根据ip获取城市的接口,但是隔一段时间会出现接口地址更改的情况,也有一定的限流
开源纯真ip库:不断迭代更新ip库内容,一般场景下足以使用,自主可控。(下载qqwry.dat库)
思路
首先需要获取用户请求的ip地址,我们对该方法进行简单封装:
![](https://img.haomeiwen.com/i16391256/55b94e2ada8c3ad3.png)
封装纯真ip的解析工具,根据ip获取请求地址所在城市,github有大量实现版本,我们这里不做赘述,具体代码见文末源码
![](https://img.haomeiwen.com/i16391256/9ef77bd29912606c.png)
自定义拦截器,对用户的登录请求进行拦截,在此处判断请求ip所在城市,并进行计数。我们这里只是简单逻辑的说明,在生产上时应该用redis来存放计数,并且专门提供一个rest接口来推送当前各城市访问数量情况,再由前端配合,隔一段时间发起一次请求,例如隔一小时请求一次该rest接口,从而进行前端数据的展示。
![](https://img.haomeiwen.com/i16391256/e87496b5b91cd3bf.png)
注册自定义的拦截器
![](https://img.haomeiwen.com/i16391256/aa5d04ae69cd2896.png)
登录controller模拟逻辑,注意:如果想看效果图需要自己写线程用不同的虚拟ip进行访问url,从而达到在不同城市访问接口的效果。
![](https://img.haomeiwen.com/i16391256/763388fb89949de8.png)
最终效果
![](https://img.haomeiwen.com/i16391256/5f9ea0e9a473d9a9.png)
获取前后端源码
关注我私信回复“666”即可免费获取源码地址
网友评论