红包系统设计:一期:团长将抢红包的连接发送到微信群中,微信群中的用户点击抢红包跳转到橙心优选小程序中;
设计思路:
# 企业微信群红包技术方案 [toc] # 一、业务需求 ## 1.1 项目背景 ## 1.2 产品需求 - [产品PRD](http://wiki.intra.xiaojukeji.com/pages/viewpage.action?pageId=424024008) # 二、需求分析 - 业务划分:配置红包、支付、退款、开红包、我的群红包列表、我的群红包余额、提现、团长群红包列表、团长群红包详情 - 需求问题:红包数量 上限、红包进行时间 下限 上限、群红包进行中定义、红包平分方案有一个红包大一点、抢红包时限定首个用户群 - 技术问题:收银台响应群红包系统退款成功后 必然退款成功吗?提现成功是否一定成功? # 三、详细设计 - 团长群红包支付状态:0-未支付 1-已支付 ## 3.1 系统时序 #### 建红包 ```mermaid sequenceDiagram 团长端->>网关: 校验 网关->>群红包系统: 1 新建团长红包 群红包系统->>群红包系统: 1.1 红包信息写入redis 群红包系统->>收银台: 1.2 调用收银台生成订单 收银台->>群红包系统: 1.2.1 收银台响应订单信息 群红包系统->>收银台: 1.3 调用收银台发起预支付 收银台->>群红包系统: 1.3.1 收银台响应预支付信息 群红包系统-->>团长端: 2 响应团长端预支付信息 团长端->>团长端: 3 唤起微信支付窗口 进行支付 ``` #### 团长支付完成持久化数据 ```mermaid sequenceDiagram 团长端->>群红包系统: 1 团长端成功 调用群红包系统 群红包系统->>群红包系统: 1.1 将团长红包信息持久化到数据库 ``` #### 团长支付成功回调 ```mermaid sequenceDiagram 收银台->>群红包系统: 1 团长支付成功收银台回调 群红包系统->>群红包系统: 1.1 修改支付红包状态为已支付 群红包系统->>群红包系统: 1.2 依据用户红包数量 存储 用户红包金额 到redis的list中 ``` #### 支付红包是否支付完成 #### 是否领取过提现红包 #### 用户领红包 ```mermaid sequenceDiagram 用户端->>网关: 网关->>群红包系统: 1 用户领取红包 传递群红包id 群红包系统->>群红包系统: 1.1 校验用户是否领取过 群红包系统->>群红包系统: 1.2 校验团长红包是否抢完 redis数据 群红包系统->>群红包系统: 1.3 获取用户红包领券权限(查询不到从数据库获取一次) redis数据 群红包系统->>群红包系统: 1.3.1 抢到红包的用户存储数据库 群红包系统->>群红包系统: 1.3.2 将用户id存入redis中抢到的用户 群红包系统->>群红包系统: 1.4 将用户id、红包金额和团长红包id放入mq中 群红包系统-->>用户端: 2 响应用户成功 ``` #### mq打钱 ```mermaid sequenceDiagram mq->>群红包系统: 1 消费红包转账消息 群红包系统->>业务中台: 1.2 调用业务中台给用户发红包 业务中台->>群红包系统: 1.2.1 发红包成功 将用户红包记录放入 用户红包从待发放表移动到历史记录中 ``` #### 定时任务打钱重试 ```mermaid sequenceDiagram 定时任务->>群红包系统: 1 查询用户红包待发放数据 群红包系统->>业务中台: 1.2 调用业务中台给用户发红包 业务中台->>群红包系统: 1.2.1 发红包成功 将用户红包记录放入 用户红包从待发放表移动到历史记录中 ``` #### 定时任务给商户退款 ```mermaid sequenceDiagram 定时任务->>群红包系统: 1 从数据库中便利红包 群红包系统->>群红包系统: 1.1 从redis中查询红包是否抢完 群红包系统->>群红包系统: 1.1.1 抢完 将团长红包从进行中表移动到团长历史红包表中 群红包系统->>群红包系统: 1.1.2 未抢完 查询是否过期,过期: 从数据库中查询 用户红包待发放表和发放历史表中查询红包领取情况 群红包系统->>收银台: 1.2 计算应退款 发起退款 收银台->>群红包系统: 1.3 成功 将团长红包从进行中表移动到团长历史红包表中 ``` #### 我的账户流水列表 ```mermaid sequenceDiagram 用户端->>网关: 网关->>群红包系统: 1 展示用户领取的红包列表 群红包系统->>业务中台: 1.1 查询特定账户群红包列表 群红包系统-->>用户端: 2 响应用户 ``` #### 提现记录 #### 我的群红包余额 ```mermaid sequenceDiagram 用户端->>网关: 网关->>群红包系统: 1 查询用户余额 群红包系统->>业务中台: 1.1 查询特定账户余额 群红包系统-->>用户端: 2 响应用户 ``` #### 提现 ```mermaid sequenceDiagram 用户端->>网关: 网关->>群红包系统: 1 提现 群红包系统->>业务中台: 1.1 提现 业务中台->>群红包系统: 1.2 成功 群红包系统-->>用户端: 2 响应用户 发起提现成功 ``` #### 提现回调 ```mermaid sequenceDiagram 业务中台->>群红包系统: 1 提现成功 回调 群红包系统-->>群红包系统: 1.1 记录提现记录 ``` #### 团长群红包列表 用户头像?团长头像?如何获取 ```mermaid sequenceDiagram 用户端->>网关: 网关->>群红包系统: 1 查询团长群红包列表 群红包系统-->>用户端: 2 响应用户 ``` #### 团长群红包详情 用户头像?团长头像?如何获取 ```mermaid sequenceDiagram 用户端->>网关: 网关->>群红包系统: 1 查询团长群红包详情 群红包系统-->>用户端: 2 响应用户 ```