GIS缓存结构
2021-07-07 11:46:29 0 举报
AI智能生成
GIS业务流程与缓存
作者其他创作
大纲/内容
GisLocAreaQueryExport
locateByArea
(行政区域定位门店)
(行政区域定位门店)
业务逻辑
构造查询缓存Key
venderId:一级地址id:二级地址id:三级地址id:四级地址id
定位 过滤
定位
获取缓存对应数据
scopeMap
key
:分割的最后一位为shopType
过滤
过滤行政区域围栏
通过shopType进行过滤
反序列化
反序列化围栏
jimDBField
venderId:ShopId:ScopeSeq:ShopType
商家id:门店id:围栏序号:门店来源
jimDBValue
bussinessType:shoppruirity
业务类型:门店优先级
有多组数据
有可能只有优先级?
行政区域围栏过滤
根据bussinessType业务类型进行过滤
分堆
按门店分堆
areaVenderShopInfoMap
key
venderId
shopInfoList
排序
门店优先级
返回
按商家分堆 有序门店集合
locateShopArea
(查找商家下门店覆盖行政区域)
(查找商家下门店覆盖行政区域)
业务流程
查询商家下覆盖地址
查caffeine
查jimdb回源缓存
返回
按商家分堆 门店地址集合
locateByAreaGlobal
(国际化_行政区域定位门店)
(国际化_行政区域定位门店)
locateByArea
coverageByAreaGlobal
(四级地址是否在指定门店覆盖范围内)
(四级地址是否在指定门店覆盖范围内)
业务流程
校验行政区域是否覆盖门店
GisLocQueryExport findShopInfoByVenderId
(根据坐标查询指定商家店铺)
locateVenderByCoordinate
(根据坐标查找相对应站点(包括自营和POP站点))
(根据坐标查询指定商家店铺)
locateShopsByCoordinate
(根据坐标查找店铺)
(根据坐标查找店铺)
配送模型切量逻辑
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
value:geohashMap
value:geohashMap
value通过 :分割不同数据
6:围栏模型
10:第一位为geohash长度
0:商家id
1:门店id
batchLocateShopsByCoordinates
(根据坐标列表批量查找店铺信息)
(根据坐标列表批量查找店铺信息)
(根据坐标查找相对应站点(包括自营和POP站点))
locate
(根据坐标、商家集合、商家来源查找相对应站点(包括自营和POP站点)
,支持商家、商家来源过滤并排序)
(根据坐标、商家集合、商家来源查找相对应站点(包括自营和POP站点)
,支持商家、商家来源过滤并排序)
业务流程
查询坐标经纬度下所有对应门店
反序列化处理门店 过滤 门店分类 业务类型
查询自提模型围栏(如果入参有)
分堆
按门店分堆
JDStock.gqm.dq.shopHeapMonitor
按商家分堆
JDStock.gqm.dq.venderIdHeapMonitor
排序
商家优先级
时效
门店优先级
距离
缓存key
ZT:venderId:geohash
查询自提模型围栏
coverage
(坐标是否在指定门店覆盖范围内)
(坐标是否在指定门店覆盖范围内)
业务流程
过滤重复门店
处理非法坐标入参
去重
校验有效性
过滤非法门店入参
非法门店入参集合
构建查询缓存key集合
venderId:shopId:shopType
处理异常门店入参
处理有效坐标门店
从Caffeine或者Jimdb中获取门店详细信息
key为
处理查询结果
遍历多个围栏 只要坐标在其中一个围栏里就反true
缓存key
venderId:shopId:shopType
customizeLocate
(根据坐标定位站点 支持定制化查询及返回)
(根据坐标定位站点 支持定制化查询及返回)
业务流程
查询入参坐标下所有配送门店
geohash 长度从8递减到6 循环三次获取数据
根据mapkey过滤数据 门店id集合 商家id集合
A: shopIdList
门店id集合
B:venderIdList
商家集合
C:shopCategoryList
门店分类集合
D:businessModelList
业务类型
LOC
ZT
配送
查询门店分类
降级逻辑
只查询入参中二级分类对应门店
计算坐标点门店覆盖信息
缓存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:返回所有商家下的门店。
geoHashValueMap
数据结构
sceneVerification
shopScopeKeyList
对应索引位置为固定数据
0:商家
1:门店
未处理的为shopId(门店Id)
如果未处理完的集合包含 geoHashMap的key 则将未处理的shopId存入sceneAResultSet
未处理的为venderId(商家id)
如果未处理完的集合包含 geoHashMap的key 则将未处理的venderId存入sceneBResultSet
查看围栏
为空直接continue
未处理的为shopCategory(门店分类)
任一二级分类能匹配成功,一级分类结束计算,返回存在门店
未处理的为BusinessTypeModel(业务类型)
其他
直接返回
反序列化处理配送门店 过滤 门店分类 业务类型
围栏标签过滤
一级分类找到对应二级分类
降级开关开启 只查询入参中二级分类对应门店
入参对应二级分类
为空返回定位不到门店
过滤门店分类
二级分类集合是否包含定位到的围栏
入参业务类型不为空 则过滤业务类型
命中业务类型
命中业务类型集合标签
返回过滤后数据
查询自提模型围栏
geoHash:6位(固定)geohash编码坐标
缓存key
ZT:venderId:geoHash
序列化自提围栏
反序列化围栏
解析JIMDB Field Value
Field
venderId:ShopId:ScopeSeq:ShopType
商家ID:门店ID:围栏序号:门店来源
Value
围栏类型:
shopScopeMarkList 按顺序存值 按顺序取值(++value)
分堆
排序
定制返回结果
locateSpecifyModel
(指定模型定位,支持自定义结果返回)
(指定模型定位,支持自定义结果返回)
业务流程
初始化上下文入参
查询坐标经纬度下所有门店,包含loc,自提,配送
反序列化处理配送门店 过滤 门店分类 业务类型
分堆
排序
定制返回结果
sceneVerification
(场景校验,根据坐标、门店id集合,商家id集合、门店分类集合,
门店业务类型+门店查询模型集合查找相对应业务维度是否存在符合的门店
支持自定义结果返回)
(场景校验,根据坐标、门店id集合,商家id集合、门店分类集合,
门店业务类型+门店查询模型集合查找相对应业务维度是否存在符合的门店
支持自定义结果返回)
coverageGlobal
(坐标是否在指定门店覆盖范围内-国际化接口)
(坐标是否在指定门店覆盖范围内-国际化接口)
coverage
locateSpecifyModelGlobal
(指定模型定位-国际化接口
根据坐标、商家集合、商家来源查找相对应站点(包括自营和POP站点),支持商家、商家来源过滤
结果按照按照站点来源的优先度,以及与站点坐标的距离(从近到远)对结果排序
支持自定义结果返回)
(指定模型定位-国际化接口
根据坐标、商家集合、商家来源查找相对应站点(包括自营和POP站点),支持商家、商家来源过滤
结果按照按照站点来源的优先度,以及与站点坐标的距离(从近到远)对结果排序
支持自定义结果返回)
locateSpecifyModel
0 条评论
下一页