feat(sync): 实现MQ消息队列用户同步功能
- 添加RabbitMQ相关配置,支持消息确认与回退机制 - 新增统一消息实体SyncMessage,支持多种同步事件类型 - 实现RabbitMQ消息生产者RabbitMQSyncProducer,包含回调处理和用户同步消息发送 - 实现用户同步消息消费者UserSyncConsumer,支持消息重试和死信队列处理 - UserSyncService新增Map参数方法,适配MQ消息同步调用 - QrLoginServiceImpl改用MQ消息异步同步用户数据,替代原直接调用方式 - 应用配置新增RabbitMQ连接配置及MQ开关开关控制 - 前端接口和组件调整,支持扫码登录绑定手机号及跳转逻辑完善
This commit is contained in:
@@ -17,6 +17,31 @@
|
||||
3. **页面跳转逻辑**:登录成功/绑定成功后跳转到/console
|
||||
4. **API调用更新**:适应新的响应字段格式
|
||||
|
||||
### 前端代码已完成的修改
|
||||
1. **API接口修改**:
|
||||
- 更新QRLoginStatusResult接口,新增nextAction、redirectUrl、successMessage、needBindPhone等字段
|
||||
- 修改checkQRLoginStatus函数,使用真实后端API调用
|
||||
- 新增bindPhoneForQrLogin函数,处理绑定手机号API调用
|
||||
- 修改generateQRLoginToken函数,使用真实后端API调用
|
||||
|
||||
2. **状态管理修改**:
|
||||
- 更新auth store接口,添加bindPhoneForQRLogin方法
|
||||
- 修改checkQRStatus方法,支持新的返回字段处理
|
||||
- 添加绑定手机号处理逻辑
|
||||
|
||||
3. **组件修改**:
|
||||
- 创建BindPhone组件:用于处理需要绑定手机号的场景
|
||||
- 修改QRLogin组件:支持根据nextAction显示不同UI,自动处理绑定手机号流程
|
||||
- 组件现在可以正确处理:
|
||||
- nextAction: 'bind_phone' → 显示绑定手机号表单
|
||||
- nextAction: 'redirect' → 自动跳转到/console
|
||||
- needBindPhone: true → 显示绑定提示
|
||||
|
||||
4. **完整流程支持**:
|
||||
- 用户扫码登录 → 后端返回nextAction: 'bind_phone' → 前端显示绑定手机号页面
|
||||
- 用户输入手机号和验证码 → 调用绑定手机号API → 绑定成功后自动登录并跳转/console
|
||||
- 用户已有手机号 → 后端返回nextAction: 'redirect' → 前端自动跳转到/console
|
||||
|
||||
### 后端修改完成
|
||||
1. **QrLoginStatusResponse新增字段**:
|
||||
- nextAction: 下一步操作指示
|
||||
@@ -39,3 +64,39 @@
|
||||
### 目的
|
||||
确保用户数据同步到 websopy 时,手机号字段已有值,避免无效的缓存数据。
|
||||
|
||||
|
||||
## MQ消息队列实现 (02:40)
|
||||
|
||||
### 创建的文件
|
||||
1. **SyncMessage.java** - 统一消息实体
|
||||
- 位置: `com.gxwebsoft.common.mq.message`
|
||||
- 支持 USER_SYNC, TENANT_SYNC 等消息类型
|
||||
- 支持 CREATE, UPDATE, DELETE 事件类型
|
||||
|
||||
2. **SyncMessageProducer.java** - 消息生产者接口
|
||||
- 位置: `com.gxwebsoft.common.mq.producer`
|
||||
- 预留抽象层,便于将来切换到RocketMQ
|
||||
|
||||
3. **RabbitMQConfig.java** - RabbitMQ配置类
|
||||
- 位置: `com.gxwebsoft.common.mq.config`
|
||||
- 定义交换机、队列、死信队列
|
||||
- 配置JSON序列化
|
||||
|
||||
4. **RabbitMQSyncProducer.java** - RabbitMQ生产者实现
|
||||
- 位置: `com.gxwebsoft.common.mq.producer.impl`
|
||||
- 实现确认回调和Return回调
|
||||
|
||||
5. **UserSyncConsumer.java** - 用户同步消费者
|
||||
- 位置: `com.gxwebsoft.common.mq.consumer`
|
||||
- 监听用户同步消息,调用UserSyncService同步到websopy
|
||||
- 支持重试机制和死信队列
|
||||
|
||||
### 修改的文件
|
||||
1. **pom.xml** - 添加 spring-boot-starter-amqp 依赖
|
||||
2. **UserSyncService.java** - 添加Map参数的重载方法
|
||||
3. **QrLoginServiceImpl.java** - 改用MQ发送消息
|
||||
4. **application.yml** - 添加RabbitMQ配置
|
||||
|
||||
### 使用方式
|
||||
配置 `sync.mq.enabled: false` 可临时禁用MQ,回退到原有直接同步方式。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user