简介
项目介绍
主数据平台(master-data-platform),简称MDP、mddata。是聚合全域单点登录中心、基础数据治理平台、统一开放接口平台于一体的企业级通用底层开发框架。
平台由拥有十多年一线项目经验的研发人员匠心沉淀打磨,架构成熟稳健、开箱即用、扩展灵活。既可作为企业内部标准化数字化基础底座,也十分适合个人承接外包项目快速落地,能够助力零基础、经验不足的开发人员规范项目架构、快速提升综合开发能力。
平台提供全场景标准化单点登录对接方案,支持业务接口规范化优雅对外输出,并自动配套生成标准接口文档;同时具备完整主数据全生命周期管理能力,实现基础数据统一维护、订阅分发、变更广播、跨系统数据互通共享。
核心能力
统一单点登录、OAuth2.0 授权登录、组织用户权限管理、第三方应用申请与准入审核、多系统应用快速对接、主数据标准化治理、主数据订阅消费、数据事件广播、跨应用接口互通调用、接口全流程台账管理与可视化查看、全域系统统一参数配置等。
架构优势
一套源码同时兼容单体架构、微服务架构双部署模式:
项目初期业务体量较小,可直接使用单体架构轻量化快速上线;后期业务扩容、系统升级时,无需进行大规模代码重构改造,即可平滑无缝切换为微服务架构,大幅降低架构迭代成本。
平台适用场景
- 作为企业统一技术底座,在框架基础上快速新建、迭代各类业务应用;
- 依托原生单点登录能力,低成本、高效率整合企业存量历史业务系统,实现全平台账号统一、身份统一、权限互通。
项目组成
目前mdp内置了3个应用,分别是工作台,控制台,开发者平台。
MDP 主数据平台内置工作台、管理控制台、开发者平台三套独立应用,角色权限分级隔离,分别适配普通用户、系统管理员、第三方开发者三类使用场景。

| 应用 | 后端项目名 | 前端项目名 | 备注 |
|---|---|---|---|
| 工作台 | md-workbench,简称mdw | web-workbench | 又名用户中心。面向普通终端用户使用。 |
| 控制台 | md-console,简称mdc | web-console | 又名后台管理,面向管理员,负责权限配置、应用审核、主数据管控、全局系统运维。 |
| 开发者平台 | md-open,简称mdo | web-open | 又名开放平台,用于第三方应用接入、接口申请调试、在线文档查看、跨系统接口对接。 |
演示环境
- 工作台:http://workbench.mddata.top
- 控制台:http://console.mddata.top
- 开发者平台:http://open.mddata.top
- 账号密码:
- 运维管理员账号密码:ops_admin/admin
- 开发者管理员账号密码:open_admin/admin
- 企业管理员账号密码:admin/admin
项目工程
| 名称 | 项目名 | 备注 |
|---|---|---|
| 工具类 | mdp-core | 后端工具类 |
| Java后端 | mdp-platform | 后端业务代码,支持单体架构和微服务架构 |
| SDK | mdp-sdk | 提供给第三方调用的SDK |
| Web端 | mdp-web-vben | 基于vue-admin-vben 5.x开发。 |
| App端 | mdp-app | 规划中... |
注意:App目前尚未开发
技术简介
MDP 主数据平台基于 Java17、SpringBoot、SpringCloud、Vue3、Ant-Design-Vue、Vue-Vben-Admin 等主流技术栈构建,定位为企业级标准化软件开发基础框架,兼顾稳定性、扩展性与易用性,为企业级应用开发提供一站式技术底座。
后端技术栈
- 服务注册&发现和配置中心:
Alibaba Nacos&Zookeeper - 服务消费:
Spring Cloud OpenFeign&DUBBO - 负载均衡:
Spring Cloud Loadbalancer - 服务熔断&降级&限流:
Alibaba Sentinel - API 网关:
Spring Cloud Gateway - 服务监控:
Spring Boot Admin - 链路跟踪:
Skywalking - 分布式事务:
Seata - 数据库:
Postgresql,MySQL,Oracle和达梦... - 数据缓存:
Redis - 持久层框架:
Mybatis Flex+druid - JSON 序列化:
Jackson&Fastjson2 - 文件服务:使用
x-file-storage,支持本地存储、云 OSS、Minio、RustFS等所有主流的对象存储均支持。 - 在线文档:
knife4j+smart-doc - 日志中心:
ELK - 认证、登录:
sa-token - 外部集成:
JustAuth,WxJava,Sms4j、aj-captcha、easy-captcha、ip2region、oshi - 工具类:
hutool、guava、lombok、
Web端技术栈
- 基于 vue-vben-admin 5.x 最新版框架二次开发
- 基础框架:Pnpm、Vue 3、Vite 8、Typescript、Pinia 3、Vue-router 5、Axios、vue-i18n
- Turbo Repo:规范且标准的大仓架构,使用pnpm+monorepo+turbo工程管理模式,提供企业级开发规范
- 代码规范:Oxfmt、Oxlint、ESLint、Stylelint、Publint、CSpell
- UI:Shadcn-UI、ant-design-vue、vxe-table、vxe-pc-ui、tailwindcss
- 图表:echarts
- 表单校验:zod、vee-validate、zod-defaults、@vee-validate/zod
- 其他:dayjs、lodash
工程代码结构
后端主工程
.
├── md-api # 对外接口模块
│ ├── api-controller
│ ├── api-pojo
│ ├── api-service
│ └── pom.xml
├── md-build # 工程bom定义
│ ├── checkstyle.xml # 代码规范检查配置文件
│ ├── pom.xml
│ └── suppressions.xml # 代码规范忽略配置文件
├── md-console # 控制台 模块
│ ├── console-controller # 控制层:存放controller,负责请求转发
│ ├── console-dao # 持久层:存放mapper,负责操作数据库
│ ├── console-facade # 接口层:存放facade,负责适配单体架构和微服务架构,跨模块调用时使用
│ ├── console-pojo # 实体层:存放dto、query、vo、实体类
│ ├── console-service # 业务层:存放service,负责业务代码编写
│ └── pom.xml
├── md-gateway # 网关模块
│ ├── pom.xml
│ ├── sop-gateway-server
│ └── zookeeper-server
├── md-open # 开放平台 模块
│ ├── open-controller
│ ├── open-dao
│ ├── open-facade
│ ├── open-pojo
│ ├── open-service
│ ├── pom.xml
│ └── README.md
├── md-public # 公共模块
│ ├── md-cache-key # 缓存key
│ ├── md-common-config # 公共配置类
│ ├── md-common-dao # 公共持久层
│ ├── md-common-pojo # 公共实体层
│ ├── md-enumeration-scanning # 枚举扫描模块
│ └── pom.xml
├── md-server # 启动层 模块
│ ├── boot-server
│ └── pom.xml
├── md-workbench # 工作台 模块
│ ├── pom.xml
│ ├── workbench-controller
│ ├── workbench-dao
│ ├── workbench-facade
│ ├── workbench-pojo
│ └── workbench-service
├── pom.xml
└── src
└── main
├── filters # 编译时使用的环境变量
│ ├── config-dev.properties
│ ├── config-prod.properties
│ ├── config-sop.properties
│ ├── config-test.properties
│ └── README.md
└── resources # 项目部署所需的脚本文件
└── server_run.sh后端工具类
.
├── checkstyle.xml # 代码规范检查配置文件
├── md-all
│ ├── md-all-boot # 单体架构所有的工具类
│ ├── md-all-cloud # 微服务架构所有的工具类
│ └── pom.xml
├── md-annotation # 注解
│ ├── pom.xml
│ └── src
├── md-bom # bom定义
│ └── pom.xml
├── md-boot # springboot公共配置
│ ├── pom.xml
│ └── src
├── md-cache-starter # redis缓存封装
│ ├── pom.xml
│ └── src
├── md-captcha-starter # 验证码
│ ├── md-graphic-captcha-starter
│ ├── md-slider-captcha-starter
│ └── pom.xml
├── md-codegen # 代码生成器
│ ├── pom.xml
│ └── src
├── md-core # 核心
│ ├── pom.xml
│ └── src
├── md-db # 数据库相关
│ ├── pom.xml
│ └── src
├── md-db-mybatis-flex # mybatis-flex相关
│ ├── pom.xml
│ └── src
├── md-db-uid # 雪花id
│ ├── pom.xml
│ ├── README.md
│ └── src
├── md-echo-starter # 回显
│ ├── pom.xml
│ └── src
├── md-log-starter # 日志
│ ├── pom.xml
│ └── src
├── md-mvc-flex # spring web 相关
│ ├── pom.xml
│ └── src
├── md-openapi3-starter # openapi文档
│ ├── pom.xml
│ └── src
├── md-parent # pom父类
│ └── pom.xml
├── md-sa-token # sa-token二次封装
│ ├── pom.xml
│ ├── README.md
│ ├── sa-token-oauth2-client
│ ├── sa-token-oauth2-client-starter
│ ├── sa-token-sso-client
│ ├── sa-token-sso-client-starter
│ ├── sa-token-sso-core
│ ├── sa-token-sso-server
│ └── sa-token-sso-server-starter
├── md-scan-starter # Controller接口扫描
│ ├── pom.xml
│ └── src
├── md-sop-support # 开放平台工具类
│ ├── pom.xml
│ ├── sop-service-support
│ └── sop-spring-boot-starter
├── md-util # 工具类
│ ├── pom.xml
│ └── src
├── md-validator-starter #表单校验
│ ├── pom.xml
│ └── src
├── md-xss-starter # xss攻击
│ ├── pom.xml
│ └── src
├── pom.xml
└── suppressions.xml # 代码规范忽略配置文件后端SDK
.
├── mdp-sdk-core # sdk工具类封装
│ ├── pom.xml
│ └── src
├── mdp-simple-sdk # 对外提供的 业务sdk
│ ├── pom.xml
│ ├── README.md
│ └── src
├── pom.xmlWeb端工程
.
├── README.md # 项目说明文档
├── apps # 项目应用目录
│ ├── backend-mock # 后端模拟服务应用
│ ├── web-antd # 基于 Ant Design Vue 的前端应用
│ ├── web-antdv-next # 基于 Ant Design Vue Next 的前端应用
│ ├── web-ele # 基于 Element Plus 的前端应用
│ ├── web-naive # 基于 Naive UI 的前端应用
│ └── web-tdesign # 基于 TDesign 的前端应用
├── cspell.json # CSpell 配置文件
├── docs # 项目文档目录
├── eslint.config.mjs # ESLint 配置文件
├── lefthook.yml # Git Hook 配置文件
├── internal # 内部工具目录
│ ├── lint-configs # 代码检查配置
│ │ ├── commitlint-config # Commitlint 配置
│ │ ├── eslint-config # ESLint 配置
│ │ ├── oxfmt-config # Oxfmt 配置
│ │ ├── oxlint-config # Oxlint 配置
│ │ └── stylelint-config # Stylelint 配置
│ ├── node-utils # Node.js 工具
│ ├── tsconfig # 通用 tsconfig 配置
│ └── vite-config # 通用 Vite 配置
├── oxfmt.config.ts # Oxfmt 配置入口
├── oxlint.config.ts # Oxlint 配置文件
├── package.json # 项目依赖配置
├── packages # 项目包目录
│ ├── @core # 核心包
│ │ ├── base # 基础包
│ │ │ ├── design # 设计相关
│ │ │ ├── icons # 图标
│ │ │ ├── shared # 共享
│ │ │ └── typings # 类型定义
│ │ ├── composables # 组合式 API
│ │ ├── preferences # 偏好设置
│ │ └── ui-kit # UI 组件集合
│ │ ├── layout-ui # 布局 UI
│ │ ├── menu-ui # 菜单 UI
│ │ ├── shadcn-ui # shadcn UI
│ │ └── tabs-ui # 标签页 UI
│ ├── constants # 常量
│ ├── effects # 副作用相关包
│ │ ├── access # 访问控制
│ │ ├── plugins # 第三方大型依赖插件
│ │ ├── common-ui # 通用 UI
│ │ ├── hooks # 组合式 API
│ │ ├── layouts # 布局
│ │ └── request # 请求
│ ├── icons # 图标
│ ├── locales # 国际化
│ ├── preferences # 偏好设置
│ ├── stores # 状态管理
│ ├── styles # 样式
│ ├── types # 类型定义
│ └── utils # 工具
├── playground # 演示目录
├── pnpm-lock.yaml # pnpm 锁定文件
├── pnpm-workspace.yaml # pnpm 工作区配置文件
├── scripts # 脚本目录
│ ├── deploy # 部署相关脚本
│ ├── turbo-run # Turbo 运行脚本
│ └── vsh # VSH 脚本
├── stylelint.config.mjs # Stylelint 配置文件
├── turbo.json # Turbo 配置文件
├── vben-admin.code-workspace # VS Code 工作区配置文件
└── vitest.config.ts # Vitest 配置文件