GisLocAreaQueryExport
locateByArea<br>(行政区域定位门店)
业务逻辑
构造查询缓存Key
venderId:一级地址id:二级地址id:三级地址id:四级地址id
反序列化
反序列化围栏
jimDBField
venderId:ShopId:ScopeSeq:ShopType
商家id:门店id:围栏序号:门店来源
jimDBValue
bussinessType:shoppruirity
业务类型:门店优先级<br>
有多组数据
有可能只有优先级?
行政区域围栏过滤
根据bussinessType业务类型进行过滤
分堆
按门店分堆
areaVenderShopInfoMap
key
venderId
shopInfoList
locateShopArea<br>(查找商家下门店覆盖行政区域)
业务流程<br>
查询商家下覆盖地址
查caffeine
查jimdb回源缓存
locateByAreaGlobal<br>(国际化_行政区域定位门店)<br>
locateByArea
coverageByAreaGlobal<br>(四级地址是否在指定门店覆盖范围内)
GisLocQueryExport
<strike>findShopInfoByVenderId<br>(根据坐标查询指定商家店铺)</strike><br>
locateShopsByCoordinate<br>(根据坐标查找店铺)<br>
配送模型切量逻辑
v2:(geohash)(geohash长度)
UMP Key
计算围栏数量区间
JDStock.gqm.dq.scopeSizeMonitor.GeoHash_(geohash长度)
计算POP自提占比
JDStock.gqm.dq.popPickUpSizeMonitor.GeoHash_(geohash长度)
计算坐标下每个商家命中POP自提门店数量区间
JDStock.gqm.dq.venderPickUpSizeMonitor.GeoHash_(geohash长度)
返回值
List<GisShopInfo>
缓存key
key:geohash<br>value:geohashMap<br>
value通过 :分割不同数据
6:围栏模型
10:第一位为geohash长度
0:商家id
1:门店id
batchLocateShopsByCoordinates<br><span style="font-size: inherit;">(根据坐标列表批量查找店铺信息)</span><br>
<strike>locateVenderByCoordinate<br>(根据坐标查找相对应站点(包括自营和POP站点))</strike><br>
locate<br>(根据坐标、商家集合、商家来源查找相对应站点(包括自营和POP站点)<br>,支持商家、商家来源过滤并排序)<br>
业务流程
查询坐标经纬度下所有对应门店
反序列化处理门店 过滤 门店分类 业务类型
查询自提模型围栏(如果入参有)
分堆
按门店分堆
JDStock.gqm.dq.shopHeapMonitor
按商家分堆
JDStock.gqm.dq.venderIdHeapMonitor
缓存key
ZT:venderId:geohash
查询自提模型围栏
coverage<br>(坐标是否在指定门店覆盖范围内)<br>
业务流程
过滤重复门店
过滤非法门店入参
非法门店入参集合
构建查询缓存key集合
venderId:shopId:shopType
处理异常门店入参
处理有效坐标门店
从Caffeine或者Jimdb中获取门店详细信息
key为
处理查询结果
遍历多个围栏 只要坐标在其中一个围栏里就反true
缓存key
venderId:shopId:shopType
customizeLocate<br>(根据坐标定位站点 支持定制化查询及返回)
业务流程
查询入参坐标下所有配送门店
geohash 长度从8递减到6 循环三次获取数据
根据mapkey过滤数据 门店id集合 商家id集合
A: shopIdList
门店id集合
C:shopCategoryList
门店分类集合
计算坐标点门店覆盖信息
缓存key
prefix 为 LOC、ZT、v2(配送)
prefix:geohash
geohash.lengh()-1
获取三个geohash范围的数据
根据方法维度,业务维度等各种维度进行业务逻辑处理
locateSpecifyModel || customizeLocate
根据商家ID白名单 黑名单过滤
传venderId,传venderIdBlack:返回venderId剔除掉venderIdBlack后剩余部分商家下的门店。
传入venderId,不传venderIdBlack:返回venderId中商家下的门店。
不传venderId,传入venderIdBlack:返回除了venderIdBlack后剩余商家下的门店。
不传venderId,不传venderIdBlack:返回所有商家下的门店。
sceneVerification
未处理的为shopId(门店Id)
如果未处理完的集合包含 geoHashMap的key 则将未处理的shopId存入sceneAResultSet
未处理的为venderId(商家id)
如果未处理完的集合包含 geoHashMap的key 则将未处理的venderId存入sceneBResultSet
未处理的为shopCategory(门店分类)
任一二级分类能匹配成功,一级分类结束计算,返回存在门店
未处理的为BusinessTypeModel(业务类型)
反序列化处理配送门店 过滤 门店分类 业务类型
围栏标签过滤
一级分类找到对应二级分类
降级开关开启 只查询入参中二级分类对应门店
入参业务类型不为空 则过滤业务类型
命中业务类型
命中业务类型集合标签
返回过滤后数据
查询自提模型围栏
geoHash:6位(固定)geohash编码坐标
缓存key
ZT:venderId:geoHash
序列化自提围栏
反序列化围栏
解析JIMDB Field Value
Field
venderId:ShopId:ScopeSeq:ShopType<br>
商家ID:门店ID:围栏序号:门店来源
Value
围栏类型:<br>
shopScopeMarkList 按顺序存值 按顺序取值(++value)<br>
分堆
排序
定制返回结果
locateSpecifyModel<br>(指定模型定位,支持自定义结果返回)
业务流程
初始化上下文入参
查询坐标经纬度下所有门店,包含loc,自提,配送
反序列化处理配送门店 过滤 门店分类 业务类型
分堆
排序
定制返回结果
sceneVerification<br>(场景校验,根据坐标、门店id集合,商家id集合、门店分类集合,<br>门店业务类型+门店查询模型集合查找相对应业务维度是否存在符合的门店<br>支持自定义结果返回)<br>
coverageGlobal<br>(坐标是否在指定门店覆盖范围内-国际化接口)
coverage
locateSpecifyModelGlobal<br>(指定模型定位-国际化接口<br>根据坐标、商家集合、商家来源查找相对应站点(包括自营和POP站点),支持商家、商家来源过滤<br>结果按照按照站点来源的优先度,以及与站点坐标的距离(从近到远)对结果排序<br>支持自定义结果返回)<br>
locateSpecifyModel