电商平台积分兑换系统设计

2019-09-19  本文已影响0人  康俊1024

业务需求描述

1.用户在电商平台里通过购买商品、晒单评论可以有不断的积累积分;
2.积累到足够的积分后,可以在电商平台的积分兑换页面中,选择使用自己的积分来兑换礼品。

对业务流程的思考

首先需要一张积分表,专门存储每个用户的积分。

积分表(
  id  int(主键)
  user_id (用户id)
  credit(积分) 
)

继续来看,假设在积分兑换页面,用户选择用自己的2000积分兑换一瓶洗发水,后台的逻辑应该如何设计呢?

积分兑换记录表(
  id  int(主键)
  user_id (用户id)
  exchanged_credit(用于兑换的积分)
  product_id(兑换的商品id)
)
发货申请表(
  id  int(主键)
  type(发货类型,1:购买,2:积分兑换)
  credit_exchange_id(积分兑换表的id)
  product_id(要发货的商品id)//部分发货 全部发货
)

第三方物流配送进度的查询

站在用户的角度考虑一下,你可以在积分兑换表里可以查看到用多少积分兑换了什么商品。但是你兑换商品的物流配送进度,还不能查看得到。所以应该在业务流程里考虑加上对应的物流配送的逻辑。

发货申请表NEW(
  id  int(主键)
  type(发货类型,1:购买,2:积分兑换)
  credit_exchange_id(积分兑换表的id)
  product_id(要发货的商品id)//部分发货 全部发货
  express_no(物流单号)
)

事务的保证

以上业务流程基本捋顺之后,接下来就得考虑涉及到的技术。这种业务系统里一定得有事务的支持。

消息中间件的引入

重试机制的引入

  1. 积分服务发送消息给可靠消息服务,可靠消息服务在消息表中新增记录,然后发送消息到MQ(消息中间件)。
  2. 然后仓储服务消费消息新增发货申请单,如果成功就回调可靠消息服务的一个接口说自己成功了,可靠消息服务就可以更新本地消息表中的记录状态为成功。
  3. 如果仓储服务长时间没通知可靠消息服务自己成功了,可靠消息服务不停的重试再次发送消息。

引入幂等性机制

整体架构

积分兑换系统.png

·

上一篇下一篇

猜你喜欢

热点阅读