结果显示批量生成快递地址网址:http://poi.moyutime.cn/我们公司经常需要生成快递地址。我把这个功能单独提取出来做了一个网站(查询免费,下载收费,介意的请勿点击)。这样以后如果我们需要生成快递地址,只需要下载即可,不再需要运行命令行。如果你也需要的朋友可以看看。不缺钱的朋友可以找我,价格优惠,发货即时。囊肿和我一样害羞,所以继续往下看,说说我的想法。看看它是否对你有帮助。前提是有些公司,尤其是像我们这样的电子商务公司,经常需要生成虚假的快递地址来进行系统测试。几天前,我们团队开发了一个送货系统,需要一个假的快递地址。而且不是一个,是几千个,而且还要求精确到区。当我第一次听到这个要求时,我惊呆了。但是作为一个8年研发的老手,转眼就想到了解决办法。经过一天的折腾,终于完美的做出来了。思路其实思路很简单。要生成快递地址,我们首先需要知道全国各个社区的地址。有了社区地址,我们随机生成账号、姓名、手机号,组成快递地址。社区的地址也很容易获得。高德地图、腾讯地图、百度地图都提供了相应的接口。这里我以高德地图为例来说明我的方法。开发1、获取全国所有小区地址,首先在高德地图开放平台注册账号,创建应用。创建一个应用程序并添加一个密钥。我开发的是web端,所以这里我选择【Web端(JSAPI)】,大家可以根据自己的需要选择不同的类型。添加之后,我们得到了一个高德地图为我们生成的key。拿到这个key之后,我们就可以调用高德提供的API了。因为我们选择了网络服务。所以我们的api文档是【WebServiceAPI】查看文档搜索社区,我们需要调用的api是【SearchPOI】查看接口我们要调用的接口是这个://restapi.amap.com/v3/place/text?key=Yourkey&keywords=community&types=120000&city=110101&children=1&offset=20&page=1&extensions=base&citylimit=true参数如下key:刚刚生成的key。keywords:搜索关键词,我们是搜索一个社区,所以填写社区类型:poi类型,社区的poi类型为120000。如果想查看其他类型,可以点击POI分类码城市:这里你可以填写cityname或者citycode或者Adcode,为了更准确的结果,我们选择填写adcode。110101是北京市东城区的adcode。其他地方的adcodes请参考下面的城市代码表。offset:每页记录数,默认20条,最大25条。我用的默认值20page:当前页数,默认1citylimit:只返回指定城市数据。请求结果返回的结果中,count为项目总数,pois数组包含各区的详细信息。因为我们的offset设置为20,所以一次请求只能返回20条cell数据。我们先把这些数据存到我们的数据库中,方便以后调用。如果要遍历所有的cell,需要通过改变page参数,使用循环多次请求接口。这个很简单,我就不展开了。获取区域内所有小区数据后。我们遍历城市代码表中的所有地区,就可以得到全国所有地区的数据。高德一个账号每天可以免费请求5000次。借了很多账号,终于搞定了。我使用的数据库是mongodb。存储在数据库中的结构如下。总共有大约380,000条数据。生成随机建筑编号、单元编号和帐号。一个完整的快递地址通常需要包括用户的楼号、单元号和帐号。数字。我们可以使用Math.random()随机生成它。为了让数据看起来不至于太离谱,我们随机生成1-16层,单元在1-4之间随机生成。代码如下://生成随机单元号functionrandomUnitNum(){//楼号1-16随机生成//单元1-4之间随机生成//账号[1-6]0[1-6]returnrandomNum(1,16)+'floor'+randomNum(1,4)+'unit'+randomNum(1,6)+'0'+randomNum(1,6)+'number';}代码到生成一个随机电话号码如下:/***生成一个随机电话号码*@return*/functionrandomPhoneNum(){constpreNumList=[131,135,137,139,151,150,189,136,186,187、152、138、180];constrNum=randomNum(0,12);constafNum=randomNum(13221010,98241249);returnString(preNumList[rNum])+String(afNum);}生成随机名称代码如下:/***随机生成用户名*@return返回随机生成的用户名*/functionrandomUserName(){constxStr='陈琳黄张丽王五刘才杨许政谢宏国秋增廖来许周也素壮录江何小罗高周也素壮录江何小罗高盘建主中鹏友展胡石申玉律梁昭彦科翁伟孙代范方宋邓杜甫侯曹雪丁卓玛阮东唐文澜江师古姬尧联丰欧城唐皇天康姜王白邹佑武仲李土公晏韩源今通路下六图少';constfemaleStr='嘉琼归地叶碧露雅齐景颜千秋山沙金黛青青亭焦万贤金英璐瑶燕北万一何丹容美君秦蕊薇静孟兰园园艺园艺园艺永青从兰春雨月赵冰冷婉明玉玺凝心飘语樱符云柔竹雾宁笑欢笑风云飞寒意雅意客机疏影荔枝,美,美,婉,美,美,美,静,美,珠,翠雅,芝玉屏,红玲、香、烟菜、春菊、琴珍、丽兰、凤姐、梅林、素云莲、甄嬛、雪容、爱梅、下香月、樱园、烟蕊凡佳';constmaleStr='道长入林有见、表伯承先敬强群、心国、国、乐、成、歌、恩、厚、磊、民、之朋友,裕和,浙江,超豪,政府,谦虚,奇实轮汉浪博鸿雁若明彭斌梁东伟齐克伦祥许彭泽陈陈氏建家立德树当太圣雄陈俊官策腾卫纲永义军丰强军平保东文会李明永健实光义兴良海山仁波宁贵福盛隆元国圣学相财发诚康兴广天大安延中茂武新李庆飞滨抚顺新紫街南荣风行红';constallNameStr=femaleStr+maleStr;constran=randomNum(0,10);让mingStr='';if(ran<1){//名字是2个字符mingStr=allNameStr[randomNum(0,allNameStr.length)];}else{mingStr=allNameStr[randomNum(0,allNameStr.length)]+allNameStr[randomNum(0,allNameStr.length)];}returnxStr[randomNum(0,xStr.length)-1)]+mingStr;}生成一个快递地址通过上面的步骤,我们得到了我们想要的所有数据通过这些数据,我们要生成一个快递地址,就是不太容易。到目前为止,我们已经开发了这个需求。一个完整的数据结构如下:
