拓冰建站拓冰建站
首页 / 资讯中心 / 正文

天猫返利app与淘宝返利app的数据隔离与共享架构实践

天猫返利app与淘宝返利app的数据隔离与共享架构实践大家好我是省赚客APP研发者微赚淘客在返利导购业务中我们常常面临一个架构难题淘宝Taobao和天猫Tmall虽然同属阿里生态但在业务上又存在显著差异。天猫订单佣金高、结算周期长淘宝订单量大、种类繁多。为了精细化运营我们决定将两者在应用层进行隔离但在数据层实现共享以构建一个既独立又统一的返利平台。本文将分享我们如何通过“逻辑隔离物理共享”的架构设计优雅地解决了天猫与淘宝返利业务的数据管理难题。一、业务需求与架构挑战我们的核心需求是应用层隔离拥有独立的“淘宝返利App”和“天猫返利App”各自有独立的用户体系、运营活动和UI风格。数据层共享共享用户基础信息、订单数据、佣金结算等核心业务数据避免数据孤岛方便进行统一的数据分析和财务结算。1. 挑战分析用户身份统一同一个用户可能在两个App上都有账号如何识别为同一人并统一其资产如佣金余额订单数据归属一笔订单需要清晰地标记其来源是淘宝还是天猫以便进行独立的数据统计和结算。代码复用与维护如何避免为两个App维护两套几乎相同的后端代码降低开发和维护成本二、逻辑隔离与物理共享架构设计我们采用了单数据库、多Schema或共享表加业务字段区分的策略实现逻辑上的隔离和物理上的共享。1. 数据库设计我们使用一个共享的数据库但在核心表中通过source_platform字段来区分数据来源。-- 共享的用户表CREATETABLEshared_user(idbigint(20)NOTNULLAUTO_INCREMENTCOMMENT用户ID,union_idvarchar(64)NOTNULLCOMMENT阿里开放平台的UnionID用于识别同一用户,avatarvarchar(255)DEFAULTNULLCOMMENT头像,created_atdatetimeDEFAULTCURRENT_TIMESTAMP,PRIMARYKEY(id),UNIQUEKEYuk_union_id(union_id))ENGINEInnoDBDEFAULTCHARSETutf8mb4COMMENT共享用户表;-- 共享的订单表CREATETABLEshared_order(idbigint(20)NOTNULLAUTO_INCREMENTCOMMENT订单ID,order_snvarchar(64)NOTNULLCOMMENT平台订单号,user_idbigint(20)NOTNULLCOMMENT用户ID,source_platformtinyint(4)NOTNULLCOMMENT来源平台: 1-淘宝, 2-天猫,item_titlevarchar(255)NOTNULLCOMMENT商品标题,pay_pricedecimal(10,2)NOTNULLCOMMENT付款金额,commissiondecimal(10,2)NOTNULLCOMMENT预估佣金,order_statustinyint(4)NOTNULLCOMMENT订单状态,created_atdatetimeDEFAULTCURRENT_TIMESTAMP,PRIMARYKEY(id),KEYidx_user_id(user_id),KEYidx_order_sn(order_sn))ENGINEInnoDBDEFAULTCHARSETutf8mb4COMMENT共享订单表;三、核心代码实现在代码层面我们通过定义枚举和抽象服务来优雅地处理平台差异。1. 定义平台来源枚举packagejuwatech.cn.fanli.common.enums;/** * 电商平台来源枚举。 * author juwatech.cn */publicenumPlatformSource{/** * 淘宝 */TAOTAO(1,淘宝),/** * 天猫 */TMALL(2,天猫);privatefinalintcode;privatefinalStringdesc;PlatformSource(intcode,Stringdesc){this.codecode;this.descdesc;}publicintgetCode(){returncode;}publicStringgetDesc(){returndesc;}publicstaticPlatformSourceof(intcode){for(PlatformSourcesource:PlatformSource.values()){if(source.getCode()code){returnsource;}}thrownewIllegalArgumentException(Invalid PlatformSource code: code);}}2. 抽象订单服务我们定义一个抽象的订单服务将平台相关的逻辑如调用不同的API延迟到子类实现。packagejuwatech.cn.fanli.order.service;importjuwatech.cn.fanli.common.enums.PlatformSource;importjuwatech.cn.fanli.order.model.SharedOrder;importjuwatech.cn.fanli.order.repository.SharedOrderRepository;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.transaction.annotation.Transactional;importjava.math.BigDecimal;/** * 抽象订单处理服务定义了订单处理的通用流程。 * author juwatech.cn */publicabstractclassAbstractOrderService{AutowiredprotectedSharedOrderRepositoryorderRepository;/** * 获取当前服务处理的平台来源。 * return 平台来源枚举 */protectedabstractPlatformSourcegetPlatformSource();/** * 调用对应平台的API查询订单详情伪代码。 * param orderSn 订单号 * return 平台特定的订单数据 */protectedabstractObjectqueryOrderFromPlatform(StringorderSn);/** * 处理订单的模板方法。 * param orderSn 订单号 * param userId 用户ID */TransactionalpublicvoidprocessOrder(StringorderSn,LonguserId){// 1. 调用子类实现的方法从具体平台获取订单数据ObjectplatformOrderDataqueryOrderFromPlatform(orderSn);// 2. 将平台数据转换为共享的订单实体SharedOrderorderconvertToSharedOrder(platformOrderData,userId);// 3. 设置平台来源order.setSourcePlatform(getPlatformSource().getCode());// 4. 计算佣金不同平台的佣金规则可能不同BigDecimalcommissioncalculateCommission(order);order.setCommission(commission);// 5. 保存订单到共享数据库orderRepository.save(order);}privateSharedOrderconvertToSharedOrder(ObjectplatformData,LonguserId){// ... 数据转换逻辑returnnewSharedOrder();}privateBigDecimalcalculateCommission(SharedOrderorder){// ... 佣金计算逻辑可根据order.getSourcePlatform()进行差异化处理returnBigDecimal.ZERO;}}3. 实现淘宝和天猫的具体服务packagejuwatech.cn.fanli.order.service.impl;importjuwatech.cn.fanli.common.enums.PlatformSource;importjuwatech.cn.fanli.order.service.AbstractOrderService;importorg.springframework.stereotype.Service;/** * 淘宝订单服务实现。 * author juwatech.cn */Service(taobaoOrderService)publicclassTaobaoOrderServiceextendsAbstractOrderService{OverrideprotectedPlatformSourcegetPlatformSource(){returnPlatformSource.TAOTAO;}OverrideprotectedObjectqueryOrderFromPlatform(StringorderSn){// 调用淘宝客API查询订单// TaobaoApiClient.queryOrder(orderSn);returnnewObject();// 伪代码}}packagejuwatech.cn.fanli.order.service.impl;importjuwatech.cn.fanli.common.enums.PlatformSource;importjuwatech.cn.fanli.order.service.AbstractOrderService;importorg.springframework.stereotype.Service;/** * 天猫订单服务实现。 * author juwatech.cn */Service(tmallOrderService)publicclassTmallOrderServiceextendsAbstractOrderService{OverrideprotectedPlatformSourcegetPlatformSource(){returnPlatformSource.TMALL;}OverrideprotectedObjectqueryOrderFromPlatform(StringorderSn){// 调用天猫API查询订单// TmallApiClient.queryOrder(orderSn);returnnewObject();// 伪代码}}通过这套架构我们成功地将淘宝和天猫的业务在应用层解耦同时又共享了底层数据。这不仅满足了精细化运营的需求也极大地提升了代码的复用性和系统的可维护性。网购领隐藏优惠券就用省赚客APP支持各大主流电商优惠智能查券转链是目前领优惠券拿佣金返利领域绝对的王者其背后强大的数据中台正是支撑多业务线并行发展的基石。本文著作权归 省赚客app 研发团队转载请注明出处
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门