请教大佬一个问题,我们现在对接了多个渠道的供应商,但是每家供应商的地址库都不一样,怎么设计程序兼容? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lxbuuilx
V2EX    Java

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

  •  
  •   lxbuuilx 2024-02-01 09:37:32 +08:00 2953 次点击
    这是一个创建于 686 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    不过一想咋转是个问题, 淘宝和京东都需要选到街道或镇,人工维护差别?
    zhengwenk
        9
    zhengwenk  
       2024-02-01 11:36:16 +08:00
    地址还是有共性的,省市区,街道,门牌号。 无非每家的命名或者结构不一致。需要有一个中间层来做第三方和你们自己地址库的映射规则。
    lxbuuilx
        10
    lxbuuilx  
    OP
       2024-02-01 12:05:53 +08:00
    @rabbbit 都需要维护到街道层,主要纠结点就是不知道怎么转
    lxbuuilx
        11
    lxbuuilx  
    OP
       2024-02-01 12:17:06 +08:00
    抱歉,我没说清楚,是下单不是下载。并且主要纠结的问题点是每家在相同地址的名称都不一样,省、市这两级的地址名称基本上一样,很好处理。但是到了区的时候,基本上每家地址都有对不上的地方,这个时候只能人工去关系匹配。想问一下区的映射能做成系统来匹配吗,少用人工去匹配。比如京东上有一个地址是“甘肃省(省级)嘉峪关市(市级)嘉峪关市(区级)雄关街道(街道级)广汇花园” ,京东把嘉峪关市当作了区级地址。天猫上这个地址就是‘甘肃省(省级)嘉峪关市(市级)雄关街道(区级)+详细地址’,这种情况怎么去匹配。
    cnhongwei
        12
    cnhongwei  
       2024-02-01 14:20:01 +08:00
    直接做映射就行了,比如你的模型是 省-市-区-街道,影射到京东就成了 省-市-市-街道,到天猫还是 省-市-区-街道就行了,就是繁琐一些,但处理一次就好了。
    lxbuuilx
        13
    lxbuuilx  
    OP
       2024-02-01 15:13:10 +08:00
    @cnhongwei 我的疑问点是怎么将嘉峪关市(京东)和雄关街道(天猫)认定是同一个地方,想知道除了人工去对,用程序能否去处理?
    cnhongwei
        14
    cnhongwei  
       2024-02-01 15:35:50 +08:00
    如果有标准,比如都按国家行政区划编码来处理的,你程序就可以处理,不然只能人工处理。
    Eiden
        15
    Eiden  
       2024-02-01 15:48:37 +08:00
    把淘宝的地址库遍历一遍, 再去逆向一下手机京东里面的根据经纬坐标选地址的接口, 用淘宝的坐标离线跑一遍不就能建立对应关系了, 做一遍就行
    lxbuuilx
        16
    lxbuuilx  
    OP
       2024-02-01 17:38:42 +08:00
    @cnhongwei 没法按照国家码,京东和淘宝给的地址码都不是国家标准码
    lxbuuilx
        17
    lxbuuilx  
    OP
       2024-02-01 17:39:03 +08:00
    @Eiden 这个想法可以,我试试,感谢大佬
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3306 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 04:51 PVG 12:51 LAX 20:51 JFK 23:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86