一般在系统中使用二字母国家码来表示国家/地区信息,如CN、US。
可以定义为country/region。
强制所有业务流量入口(APP、web)都需要携带国家参数。 基于国家做机房路由。且有了国家,才能做业务逻辑,比如外卖业务,知道国家才知道展示哪个国家的商家和商品。
国家码生成
1、强制 国家码country统一通过i18n-open-api服务来计算生成
保证国家信息收敛、计算正确
国家可以通过用户手机定位来获取,也可以让用户从支持的国家列表中选择国家。
2、强制 国家码country不允许为空;除去App首次安装启动到未定位前,不允许兜底。
如果兜底错误,会引发支付错误、结算异常、数据隔离错误等异常,国家参数缺失直接阻塞。 唯一兜底情况: App首次安装启动到未定位前,使用手机系统所在国家进行兜底。
国家码传递
1、强制 国家码country放在网络通参中进行全链路传递,前端放在http header中,后端放在trace中。
方便业务获取国家信息,做逻辑处理
国家码存储
1、强制 国家码country统一使用ISO 3166标准的国家二字母码来表示,varchar(5)存储。
全局统一,方便业务处理
2、建议 所有表都存储国家码country字段。
方便做数据迁移
国家码使用
1、 建议 优先从业务数据实体中获取国家信息,没有再用通参中的国家信息。
用户端:从订单获取国家码。
商家端:从订单获取国家码,没订单用门店的国家码。
骑手端:从运单获取国家码,没运单用骑手工作国家。
司机端:从订单获取国家码,没订单用司机工作国家。