原商城系统IP查询流程
- 请求/block/iplookupAjax 获取省份名称
- /block/iplookupAjax内调用 IClient::getLocal()请求http://ipservice.suning.com/ipQuery.do得到省市区名称(这个接口不准确,慢经常1秒以上),返回
- 请求/block/searchProvince查找与iWebShop系统匹配的地区
本插件 可提高ip识别精确度,减少2次网络请求(省去1,2步骤)提高产品详情页加载速度。
插件下载
使用方法
1、 首先复制本目录ip2region,到plugins/插件目录下
2、 修改 /public/javascript/products.js
的 this.initLocalArea
函数
/**
* @brief 根据接口获取当前所在地的运费
*/
this.initLocalArea = function()
{
//根据接口返回的数据查找与iWebShop系统匹配的地区
$.getJSON(creatUrl("block/searchProvince"),{'random':Math.random},function(json)
{
if(json.flag == 'success')
{
//计算各个配送方式的运费
_self.delivery(json.area_id,json.area_name);
}
});
//绑定地区选择按钮事件
$('[name="areaSelectButton"]').bind("click",function(){
var provinceId = $(this).attr('value');
var provinceName = $(this).text();
_self.delivery(provinceId,provinceName);
});
}
3、 修改 /controllers/block.php
的 searchProvince
函数
/**
* @brief 根据IP查询 area_id , area_name
*/
public function searchProvince()
{
//大卫 2018年11月21日
$classfile = IWeb::$app->getBasePath().'plugins/ip2region/Ip2Region.php';
require_once($classfile);
$ip2region = new Ip2Region();
$info = $ip2region->btreeSearch( IClient::getIp() );
$areas_info = NULL;
if( $info['city_id']!=0 ){
$area_id = substr($info['city_id'],0,2).'0000'; //取字符串前2位(省份编码),然后补齐0000
$tb_areas = new IModel('areas');
$areas_info = $tb_areas->getObj('parent_id = 0 and area_id = "'.$area_id.'"','area_name');
}
$result = array('flag' => 'fail','area_id' => 0);
if($areas_info)
{
$result = array('flag' => 'success','area_id' => $area_id,'area_name'=>$areas_info['area_name'],'data'=>$info);
}
echo JSON::encode($result);
}
版权属于:大卫科技Blog
本文链接:https://www.iyuu.cn/archives/14/
转载时须注明出处
自己留名。OωO