V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lxbuuilx
V2EX  ›  Java

请教大佬一个问题,我们现在对接了多个渠道的供应商,但是每家供应商的地址库都不一样,怎么设计程序兼容?

  •  
  •   lxbuuilx · 297 天前 · 2344 次点击
    这是一个创建于 297 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们现在主要是有京东和天猫做供应商,两家的地址库不一样,用户在我们平台下单选地址经常出现京东能下载,天猫不能下载的情况。大佬们有没有经验,怎么处理好这种情况。感谢

    17 条回复    2024-02-01 17:39:03 +08:00
    lifei6671
        1
    lifei6671  
       297 天前
    内部程序要有标准,对接外部统一加一个适配层来转接。这样你将来的产品理论上可以通过适配层对接无数个第三方,而第三方变动你只需要修改适配层就行。
    lxbuuilx
        2
    lxbuuilx  
    OP
       297 天前
    @lifei6671 但是第三方的地址是怎么和内部的标准库做关联关系呢
    lifei6671
        3
    lifei6671  
       297 天前
    @lxbuuilx 适配器层啊。就是充电器转接头一样。将第三方的接口输入输出转换为你内部标准库的输入输出啊。
    twing37
        4
    twing37  
       297 天前
    自己做一套数据结构,即领域模型,通过适配器、转换器请求第三方,转成你的,也就是防腐层。一句话:把第三方接口数据转成自己的再去服务。
    kneo
        5
    kneo  
       297 天前 via Android
    这种简单的业务有啥好问的,你是 ifelse 不会写还是数据库不会连?
    rabbbit
        6
    rabbbit  
       297 天前
    “京东能下载,天猫不能下载的情况”
    下载还是下单?
    mmx12138
        7
    mmx12138  
       297 天前
    没有什么是一个中间层解决不了的 如果有 那就再加一个
    rabbbit
        8
    rabbbit  
       297 天前
    一开始的想法是下单的话就自己维护一套地址库,然后转换成淘宝和京东的。
    https://refactoringguru.cn/design-patterns/adapter

    不过一想咋转是个问题, 淘宝和京东都需要选到街道或镇,人工维护差别?
    zhengwenk
        9
    zhengwenk  
       297 天前
    地址还是有共性的,省市区,街道,门牌号。 无非每家的命名或者结构不一致。需要有一个中间层来做第三方和你们自己地址库的映射规则。
    lxbuuilx
        10
    lxbuuilx  
    OP
       297 天前
    @rabbbit 都需要维护到街道层,主要纠结点就是不知道怎么转
    lxbuuilx
        11
    lxbuuilx  
    OP
       297 天前
    抱歉,我没说清楚,是下单不是下载。并且主要纠结的问题点是每家在相同地址的名称都不一样,省、市这两级的地址名称基本上一样,很好处理。但是到了区的时候,基本上每家地址都有对不上的地方,这个时候只能人工去关系匹配。想问一下区的映射能做成系统来匹配吗,少用人工去匹配。比如京东上有一个地址是“甘肃省(省级)嘉峪关市(市级)嘉峪关市(区级)雄关街道(街道级)广汇花园” ,京东把嘉峪关市当作了区级地址。天猫上这个地址就是‘甘肃省(省级)嘉峪关市(市级)雄关街道(区级)+详细地址’,这种情况怎么去匹配。
    cnhongwei
        12
    cnhongwei  
       296 天前
    直接做映射就行了,比如你的模型是 省-市-区-街道,影射到京东就成了 省-市-市-街道,到天猫还是 省-市-区-街道就行了,就是繁琐一些,但处理一次就好了。
    lxbuuilx
        13
    lxbuuilx  
    OP
       296 天前
    @cnhongwei 我的疑问点是怎么将嘉峪关市(京东)和雄关街道(天猫)认定是同一个地方,想知道除了人工去对,用程序能否去处理?
    cnhongwei
        14
    cnhongwei  
       296 天前
    如果有标准,比如都按国家行政区划编码来处理的,你程序就可以处理,不然只能人工处理。
    Eiden
        15
    Eiden  
       296 天前
    把淘宝的地址库遍历一遍, 再去逆向一下手机京东里面的根据经纬坐标选地址的接口, 用淘宝的坐标离线跑一遍不就能建立对应关系了, 做一遍就行
    lxbuuilx
        16
    lxbuuilx  
    OP
       296 天前
    @cnhongwei 没法按照国家码,京东和淘宝给的地址码都不是国家标准码
    lxbuuilx
        17
    lxbuuilx  
    OP
       296 天前
    @Eiden 这个想法可以,我试试,感谢大佬
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2614 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 04:34 · PVG 12:34 · LAX 20:34 · JFK 23:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.