| .trae/rules | ||
| .vscode | ||
| bin | ||
| datai-admin | ||
| datai-common | ||
| datai-framework | ||
| datai-models | ||
| datai-plugins | ||
| datai-scenes | ||
| datai-system | ||
| .gitignore | ||
| LICENSE | ||
| pom.xml | ||
| README.md | ||
| ry.bat | ||
| ry.sh | ||
Datai - Salesforce 集成系统
项目概述
Datai 是一个基于若依Geek框架构建的企业级管理系统,采用模块化架构设计,提供可扩展的插件和场景模块。系统集成了 Salesforce 平台,支持多种 API 交互方式,实现数据同步、认证管理和元数据处理等核心功能。
当前实现状态:项目目前专注于从 Salesforce 源系统同步数据到本地数据库,包括元数据管理、批量数据同步、实时数据同步等功能。
技术栈
| 技术 | 版本 | 说明 |
|---|---|---|
| Java | 21 / 22 | 根项目使用 Java 21,Salesforce 模块使用 Java 22 |
| Spring Boot | 3.5.7 | 核心框架 |
| MyBatis | 3.5.16 | 持久层框架 |
| MySQL | 8.3.0 | 关系型数据库 |
| PostgreSQL | 42.7.7 | 关系型数据库 |
| Knife4j | 4.5.0 | API 文档工具 |
| Druid | 1.2.27 | 数据库连接池 |
| Maven | - | 构建工具 |
| Salesforce Partner API | 0.0.1 | Salesforce SOAP API 客户端 |
| Salesforce Pub/Sub Client | 0.2.21 | Salesforce CDC 实时同步客户端 |
| Apache Avro | 1.11.3 | 数据序列化格式 |
| Fastjson | 2.0.58 | JSON 解析器 |
| JWT | 0.12.6 | Token 生成与解析 |
| PageHelper | 2.1.1 | 分页插件 |
项目结构
datai/
├── datai-admin/ # 管理后台启动模块
├── datai-framework/ # 框架核心模块
├── datai-system/ # 系统管理模块
├── datai-common/ # 通用工具模块
├── datai-scenes/ # 场景模块
│ ├── datai-scene-salesforce/ # Salesforce 集成场景
│ │ ├── datai-salesforce-auth/ # 认证相关模块
│ │ ├── datai-salesforce-common/ # 通用工具和常量
│ │ ├── datai-salesforce-integration/ # 核心集成模块
│ │ ├── datai-salesforce-setting/ # 配置管理模块
│ │ └── datai-salesforce-starter/ # 启动器模块
│ ├── datai-scene-auth/ # 认证场景
│ │ ├── datai-auth-common/ # 认证通用模块
│ │ ├── datai-auth-starter/ # 认证启动器
│ │ ├── datai-oauth-justauth/ # JustAuth OAuth
│ │ ├── datai-oauth-wx/ # 微信 OAuth
│ │ ├── datai-tfa-email/ # 邮箱双因子认证
│ │ └── datai-tfa-phone/ # 手机双因子认证
│ ├── datai-scene-pay/ # 支付场景
│ │ ├── datai-pay-common/ # 支付通用模块
│ │ ├── datai-pay-starter/ # 支付启动器
│ │ ├── datai-pay-alipay/ # 支付宝支付
│ │ ├── datai-pay-wx/ # 微信支付
│ │ └── datai-pay-sqb/ # 收钱吧支付
│ └── datai-scene-file/ # 文件场景
│ ├── datai-file-common/ # 文件通用模块
│ ├── datai-file-starter/ # 文件启动器
│ ├── datai-file-local/ # 本地文件存储
│ ├── datai-file-minio/ # MinIO 文件存储
│ └── datai-file-aliyun-oss/ # 阿里云 OSS 文件存储
├── datai-plugins/ # 插件模块
│ ├── datai-plugins-starter/ # 插件启动器
│ ├── datai-mybatis-plus/ # MyBatis Plus 插件
│ ├── datai-cache-redis/ # Redis 缓存插件
│ ├── datai-cache-ehcache/ # Ehcache 缓存插件
│ ├── datai-rabbitmq/ # RabbitMQ 消息队列插件
│ ├── datai-websocket/ # WebSocket 插件
│ ├── datai-netty/ # Netty 网络插件
│ └── datai-atomikos/ # Atomikos 分布式事务插件
└── datai-models/ # 模型模块
├── datai-models-starter/ # 模型启动器
├── datai-quartz/ # Quartz 定时任务
├── datai-form/ # 表单管理
├── datai-message/ # 消息管理
├── datai-generator/ # 代码生成器
├── datai-online/ # 在线用户
└── datai-flowable/ # 工作流
核心功能
Salesforce 集成模块(当前实现)
提供与 Salesforce 源系统的数据集成解决方案,支持从 Salesforce 同步数据到本地数据库。
认证管理
- 多种登录方式: OAuth2、SessionId、CLI、Legacy Credential
- 会话管理: 登录会话的创建、查询和销毁
- 历史记录: 登录历史记录的查询和统计
数据同步(源系统 → 本地)
- Bulk API v1/v2: 批量数据同步,支持大规模数据导入导出
- Partner API: SOAP API 数据交互,支持 CRUD 操作
- REST API: RESTful API 数据交互
- CDC 实时同步: Change Data Capture 实时数据同步
元数据管理
- 对象管理: Salesforce 对象的查询、同步和结构创建
- 字段管理: 对象字段的查询和管理
- Picklist 管理: Picklist 值的查询和管理
- Lookup 过滤器: Lookup 过滤器的查询和管理
批次管理
- 批次创建: 创建数据同步批次
- 批次数据插入: 将本地数据插入到 Salesforce,保存返回 ID
- 批次数据更新: 使用保存的 ID 更新 Salesforce 数据
- 批次重试: 失败批次的重试机制
- 批次历史: 批次操作历史记录
实时同步
- Pub/Sub API: Salesforce Event Bus 实时数据订阅
- 事件处理: CDC 事件的接收和处理
- 数据同步: 实时数据同步到本地数据库
- 服务管理: 实时同步服务的启动、停止和重启
监控日志
- API 调用日志: Salesforce API 调用记录和统计
- 同步日志: 数据同步操作日志
- 速率限制监控: Salesforce API 速率限制监控
- 实时同步日志: CDC 实时同步日志
开发计划
1. 数据推送到目标 Salesforce 系统
- 目标系统认证: 支持目标 Salesforce 系统的多种认证方式
- 数据推送: 支持将本地数据批量推送到目标 Salesforce 系统
- 双向同步: 实现源系统 → 本地 → 目标系统的数据流转
- 数据映射: 支持源系统和目标系统之间的字段映射
- 推送监控: 数据推送任务的监控和日志记录
2. 源 Salesforce 系统文件下载
- 文件元数据: 获取 Salesforce 附件和文档的元数据信息
- 文件下载: 支持批量下载 Salesforce 中的文件(Attachment、Document、ContentVersion)
- 文件存储: 支持本地存储、MinIO、阿里云 OSS 等多种存储方式
- 文件同步: 文件与数据的关联同步
- 下载监控: 文件下载任务的监控和进度追踪
3. User 权限同步集成系统
- 权限元数据: 同步 Salesforce User、Profile、PermissionSet、Role 等权限相关对象
- 权限映射: 将 Salesforce 权限映射到系统用户权限
- 数据权限控制: 基于用户权限控制数据访问范围
- 权限同步: 实时同步用户权限变更
- 权限审计: 权限变更的审计日志
4. 集成可视化报表插件
- 报表设计器: 可视化拖拽式报表设计器,支持自定义报表布局
- 数据源配置: 支持从本地数据库和 Salesforce 系统配置数据源
- 图表组件: 提供丰富的图表类型(柱状图、折线图、饼图、表格等)
- 数据筛选: 支持动态筛选条件和参数化查询
- 报表导出: 支持导出为 PDF、Excel、图片等多种格式
- 报表分享: 支持报表分享和权限控制
- 实时刷新: 支持报表数据的实时刷新和定时更新
- 报表模板: 提供常用报表模板,快速生成标准报表
认证场景模块
- OAuth 集成: JustAuth 和微信 OAuth 登录
- 双因子认证: 邮箱和手机双因子认证
- 用户管理: OAuth 用户信息管理
文件场景模块
- 本地存储: 本地文件系统存储
- MinIO 存储: MinIO 对象存储
- 阿里云 OSS: 阿里云对象存储服务
- 文件管理: 文件上传、下载和管理
插件模块
- MyBatis Plus: MyBatis 增强工具
- Redis 缓存: Redis 分布式缓存
- Ehcache 缓存: Ehcache 本地缓存
- RabbitMQ: 消息队列中间件
- WebSocket: WebSocket 实时通信
- Netty: Netty 网络框架
- Atomikos: 分布式事务管理
模型模块
- Quartz: 定时任务调度
- 表单管理: 动态表单生成和管理
- 消息管理: 系统消息管理
- 代码生成器: 代码自动生成工具
- 在线用户: 在线用户管理
- 工作流: Flowable 工作流引擎
快速开始
环境要求
- JDK 21+
- Maven 3.6+
- MySQL 8.3.0+ 或 PostgreSQL 42.7.7+
- Redis(可选,用于缓存)
配置说明
关键配置项
| 配置项 | 默认值 | 说明 |
|---|---|---|
| server.port | 8080 | 服务端口 |
| datai.profile | D:/datai/uploadPath | 文件上传路径 |
| datai.fileServer | local | 文件服务类型(local/minio/oss) |
| datai.fileMaxSize | 50 | 文件上传最大大小(MB) |
| spring.cache.type | redis | 缓存类型(redis/jcache) |
| token.expireTime | 1440 | Token 有效期(分钟) |
| pagehelper.helperDialect | mysql | 数据库方言 |
启用配置文件
application-druid.yml: 数据库连接池配置application-file.yml: 文件服务配置application-auth.yml: 认证配置application-pay.yml: 支付配置application-plugins.yml: 插件配置application-model.yml: 模型配置application-apidoc.yml: API 文档配置
构建项目
mvn clean install
运行项目
cd datai-admin
mvn spring-boot:run
启动成功后,访问:
- 应用地址: http://localhost:8080
- API 文档: http://localhost:8080/doc.html
文档
项目规则
项目采用基于单一真源 (Single Source of Truth) 的 Workflow,所有项目相关文档和决策均集中在 docs/ 目录中。
Salesforce 模块文档
详细文档请参考 Salesforce 集成模块文档中心
- 唯一入口: datai-scene-salesforce/docs/index.md
- 架构看板: datai-scene-salesforce/docs/Authentication.canvas
- 接口文档: datai-scene-salesforce/docs/api-docs/
文档目录
- 需求文档: datai-scenes/datai-scene-salesforce/docs/requirements/
- 设计文档: datai-scenes/datai-scene-salesforce/docs/design/
- 架构决策: datai-scenes/datai-scene-salesforce/docs/decisions/adr/
- 提示词库: datai-scenes/datai-scene-salesforce/docs/prompts/
- 会话记录: datai-scenes/datai-scene-salesforce/docs/sessions/
- 变更日志: datai-scenes/datai-scene-salesforce/docs/changelog/
贡献指南
请参考 CONTRIBUTING.md 了解如何参与项目贡献。
变更日志
请参考 CHANGELOG.md 查看项目变更记录。
许可证
本项目基于若依Geek框架开发,遵循相应的开源许可证。