1 Star 0 Fork 1.3K

懵懂的鸟 / 唛盟后端开发底座mdp-core

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 23.39 KB
一键复制 编辑 原始数据 按行查看 历史
Admin 提交于 2023-11-24 16:03 . 升级2.0.0-更新文档相关地址

唛盟-mdp

唛盟-mdp:多功能、高效率、低代码的前后端一体化、智能化的开发平台

gitee star github star

👉 https://maimengcloud.com/lcode/m1 👈

快速导航 唛盟-mdp

😭 日常开发中,您是否有以下痛点?

  • 团队中缺乏企业级前后端分离的开发底座,需要在各种框架中进行摸索、整合。
  • 重复造轮子现象严重、浪费人力、对开发者经验要求过高。
  • 缺乏统一的开发模式,缺乏公共组件的抽取和共享机制,导致业务代码混乱不堪、代码臃肿、bug多、维护困难
  • 缺乏统一的足够灵活的权限管理机制,开发人员不得不写一堆的权限代码混入业务代码中,前端权限、后端权限控制混乱不堪
  • 缺乏统一的能够覆盖前后端的、满足前后端分离的代码生成器,代码模板无法按企业现状进行重新编辑、修改
  • 缺乏统一的编程规范,或者具有书面编程规范,难以贯彻落实到开发中,代码还是五花八门
  • 缺乏统一的元数据(数据字典)管理机制,前后的数据共享调用困难,下拉列表数据混乱不堪
  • 缺乏统一的流程管理机制,要想进行流程类业务开发非常困难
  • 缺乏统一的国际化机制,国际化实施困难,不得不针对各种语言发布多个版本,无法解决后端国际化、前端国际化等问题
  • 缺乏统一的微服务、分布式系统整合机制,微服务互相调用、微服务的权限管理困难
  • 缺乏统一的认证中心,单点登录实施困难
  • 缺乏统一的支付整合机制,接入微信、支付宝、paypal等困难
  • 缺乏项目管理工具,项目计划、任务委派、质量管理、需求管理、持续集成等完全没概念
  • 让 唛盟-mdp 来帮你解决这些痛点吧!然而,这些只是 唛盟-mdp 解决的最基础的功能。

😁 为什么要使用 唛盟-mdp

  • 完全开源、永久免费的企业级开发底座

    1. 使用mdp能够带来开发效率的大幅提升,代码行数大幅减少,质量提升明显
    2. 使用mdp能够大幅度降低对开发人员的经验要求,大幅度降低人力成本
    3. mdp对各种开源组件进行了融合改进,提供了针对企业开发中各种问题的最佳解决方案
    4. 企业使用一套开源软件即同时拥有前端开发框架及后端开发框架
  • 统一的开发模式

    1. 前后端分离
    2. 前后端都分别进行了技术组件、业务组件的抽取、共享,企业可以进行再提炼、抽象,形成更多的公共组件,对后续开发形成强力的支撑作用
  • 足够灵活的权限管理机制

    1. 前端提供统一的按钮级别的权限判断接口、提供路由菜单的权限控制机制
    2. 后端实现api接口的自动注册、自动审核
    3. 基于岗位-部门-角色-菜单及按钮-后端api-人员 6要素的权限管理机制,可以0编程实现绝大多数的权限需求
  • 基于领域驱动设计(DDD)的框架及代码生成器

    1. 代码生成器覆盖前端、后端,支持任意时刻的重新生成,支持命令行、开发工具插件、在线三种方式生成代码,生成的代码可以0编程使用
    2. 代码生成器代码模板可以按企业现状进行修改、满足不断发展、持续改进的需求
    3. 支持多个表一次性生成,也就是可以一次性生成几十到几百张表的增删改查功能,而开发人员仅需要填写表名即可完成
  • 提供完整的编程规范说明

    1. mdp的框架提供了完备的接口说明、组件说明、组件使用场景等
    2. mdp维护团队提供在线支持,及时解答、解决开发者使用过程中的问题
  • 提供强大的元数据(数据字典)管理机制

    1. 内置了元数据管理模块,并实现了元数据的分布式缓存、客户端缓存、元数据分发、缓存清理等
    2. 开发者在客户端、任意微服务中、任意单体应用中可以快速获取元数据
    3. 元数据的调用效率等同于调用本地map缓存,几乎可以忽略使用元数据的性能开销问题
  • 整合了最新版本的强大的flowable工作流引擎

    1. 基于mdp框架重新开发了流程中心、任务中心、流程的发布、上下架等功能
    2. 提供分布式环境下的流程调用、流程整合问题的解决方案
    3. 提供在线流程设计器,并整合了mdp的权限机制
  • 提供强大的国际化解决方案

    1. 前后端均支持分别进行国际化
    2. 多语言的支持与业务代码完全解耦,彻底解决硬编码进行语言切换的问题
  • 整合了强大的微服务框架

    1. mdp平台任意组件均同时支持微服务环境、单体应用环境运行,开发人员开发的时候可以以单体应用的方式开发,然后以微服务方式发布到生产、测试环境
    2. 提供微服务的治理
  • 强大的DAO层

    1. 支持基于xml文件的sql编写
    2. 支持无xml方式的数据访问
    3. 支持多主键(对mybatis plus进行升级,解决了多主键、多表联合查询等问题)
    4. 支持多数据源,通过备注实现数据源切换
    5. 支持前端构建任意复杂的查询条件并提供对应的最佳实践,支持前端输入框输入>,=,*,$IS NULL,$IN,$NOT IN等运算操作符,支持前端通过 or and 连接符构建任意复杂的条件表达式
  • 强大的web ui

    1. 提供好用好看的ui组件库
    2. 提供页面高级查询功能、可以组装任意复杂的查询条件
    3. 提供针对元数据(数据字典)的引用、针对任意表的引用的组件库
    4. 提供导入、导出等基础功能
    5. 提供按钮权限判断接口、
    6. 提供动态菜单功能
  • 提供自定义表单解决方案

    1. 自定义表单设计
    2. 表单展现
    3. 表单数据管理
    4. 自定义表单与工作流整合使用
    5. 自定义表单发布成普通菜单
  • 整合了微信支付、支付宝支付、paypal支付

    1. 提供支付、订单、支付通知底层框架,可以快速整合各种支付功能
    2. 整合了微信支付功能,进行配置文件更新即可使用
    3. 整合了支付宝支付功能,进行配置文件更新即可使用
    4. 整合了paypal支付,进行配置文件更新即可使用
  • 整合了oauth2.0框架

    1. 提供oauth2.0的整体框架,构建统一认证中心、单点登录等不再是难事
    2. 整合了微信、支付宝、手机验证码、账户密码等登录方式

⌨ 技术栈 唛盟-mdp

  • 前端 vue全局桶 + element-ui + axios

  • 后端 spring boot + spring cloud + spring security + mybatis plus + JWT + flowable

💻 样例项目 唛盟-mdp

⚙ 快速开始 唛盟-mdp

前序准备

⚠️注意:开发mdp应用,一般涉及以下四个项目,需要提前下载到对应的开发环境中

  • mdp-core 属于mdp基础java库,不写业务代码,一般由公司架构师团队管控,仅作为企业的底层抽象及公共工具类库.如果企业不打算用mdp作为企业研发底座,而是一次性使用,此工程可以不下载,使用官方发行版即可
  • mdp-lcode-backend 属于构建于mdp-core上的业务系统,包含一般业务系统的基础功能,若需要添加功能,应在此项目上添加具体业务模块,或者复制形成新的业务系统,比如oa-backend等
  • mdp-lcode-ui-web 属于mdp的前端项目,其所有后端服务由mdp-lcode-backend提供,若需要添加功能,应在此项目上添加具体业务模块,或者复制该项目形成新的业务系统,比如oa-ui-web
  • mdp-code-generator 代码生成器负责把前端代码创建到mdp-lcode-ui-web中,把后端代码创建到mdp-lcode-backend中

前端

⚠️注意:该项目使用 element-ui@2.3.0+ 版本,所以最低兼容 vue@2.5.0+ 你的本地环境需要安装 nodegit。我们的技术栈基于 ES2015+vuevue-router and element-ui,提前了解和学习这些知识会对使用本项目有很大的帮助。

开发

# 克隆项目
git clone https://gitee.com/maimengcloud/mdp-lcode-ui-web.git

# 安装依赖
npm install

# 建议不要用cnpm安装 会有各种诡异的bug 可以通过如下操作解决 npm 下载速度慢的问题
npm install --registry=https://registry.npm.taobao.org

# 启动服务
npm run dev

浏览器访问 http://localhost:8015

发布

# 构建测试环境
npm run build:sit

# 构建生成环境
npm run build:prod

后端

⚠️注意:所谓后端一般指java单体应用、微服务等

初始化开发环境

# 克隆底层框架
git clone https://gitee.com/maimengcloud/mdp-core.git

# 编译构建基础库 进入mdp-core根目录 
mvn install

# 克隆项目
git clone https://gitee.com/maimengcloud/mdp-lcode-backend.git

# 安装数据库 在数据库创建adm用户,找到 mdp-lcode-backend/mdp-lcode/database/adm_*.sql
将 adm.*.sql导入到数据库中,并到mdp-lcode/src/main/resources/application-dev.yml修改数据源相关用户名,密码,连接地址等

开发

# 运行spring boot项目 找到mdp-lcode-backend/mdp-lcode/src/test/java/com/mdp/SysApplication.java
运行 SysApplication

构建

# 编译构建基础库(如果有修改) 进入mdp-core根目录 
mvn install

# 构建发布包 切换到 mdp-lcode-backend/下,执行下面命令,成功后在 mdp-lcode-bootstrap及mdp-lcode-cloud-bootstrap下都会有jar输出
mvn install

发布

⚠️注意:bootstrap-mdp-lcode.sh 一般在mdp-lcode-backend/mdp-lcode-bootstrap/bin/start-service/下

# 将jar包发布到maven服务器 切换到 mdp-core/下
mvn deploy

# 将jar包发布到maven服务器 切换到 mdp-lcode-backend/下
mvn deploy

# 如果是单体运用,将mdp-lcode-backend/mdp-lcode-bootstrap/mdp-lcode-bootstrap-2.0.0-RELEASE.jar拷贝到目标服务器
sh bootstrap-mdp-lcode.sh
# 如果是微服务环境,将mdp-lcode-backend/mdp-lcode-cloud-bootstrap/mdp-lcode-bootstrap-2.0.0-RELEASE.jar拷贝到目标服务器
sh bootstrap-mdp-lcode.sh

🔔️ 特别提醒

mdp 3.0 版本已经开始规划更新了,尽请期待新版本的诞生吧

🗒️ 版本更新日志

升级前必看:CHANGELOG.md

🛠️ 整体架构 唛盟-mdp

mdp框架经过无数项目的洗礼,对经常遇到的问题的解决办法抽象形成公共模块,以下模块默认内置于底层框架中,

✅ 前端ui框架以mdp-lcode-ui-web作为项目模板,提供以下组件库:

⚠️ 注意:ui库基于elementui进行改造

mdp-dialog 弹框,可以把任意页面装配成弹框,无须定义多余的变量及函数

mdp-table 表格,内置了增、删、改、查、高级查询、重置查询、导出、列配置、分页、批量编辑等功能、内置了对按钮权限的控制机制

mdp-select 下拉列表,支持对数据字典、元数据的引用,支持对任意小表表格数据的引用,支持参数化加载后台数据,对后台加载的数据进行缓存

mdp-select-table 超大表格下拉列表,与mdp-select相比,该组件具有分页查询功能

mdp-select-user 用户选择下拉列表,与mdp-select-table组件类似,仅仅针对用户的头像做了特殊处理

mdp-input 输入框

mdp-date 日期

mdp-daterange 区间日期

mdp-number 数字输入

mdp-hi-query 高级查询,可以由用户自定义任意复杂的查询条件

mdp-table-configs 表格配置,用于控制表格的列显示与否

mdp-transfer 穿梭框

mdp-images 图片库,支持图片的上传下载、上传后的统一管理、共享

mdp-rich-text 富文本编辑器,整合了mdp-images作为插件

后端底层框架mdp-core

⚠️ 注意:以下模块以spring boot为基础框架

mdp-boot-starter 启动器

mdp-mybatis-enhance 对mybaits+plus的底层扩展

mdp-qx-api 权限底层

mdp-ext-utils 扩展的静态工具类

mdp-ds 多数据源底层

mdp-spring-enhance 对spring底层拓展

mdp-swagger-enhance 接口文档拓展,支持对map类型的接口

mdp-tomcat-enhance 对tomcat的拓展

mdp-meta-client 元数据客户端

mdp-micro-client 微服务客户端

mdp-email-client 邮件客户端

mdp-msg-client 消息客户端,可向im等发消息

mdp-plat-client 平台配置客户端

mdp-products 业务产品的上级pom项目,所有基于mdp的项目,继承该项目

mdp-safe-client 安全相关客户端,获取登录用户的信息,权限判断等

mdp-safe-license 应用的license

mdp-sensitive-word 敏感词过滤

mdp-sms-client 短信客户端

mdp-tpa-client 第三方登录等客户端

mdp-mq mq封装

mdp-audit-log-client 接口调用日志记录

mdp-dev 代码生成器底层

🚀 基于mdp框架拓展的开源项目

⚠️ 注意:以下拓展的框架或者子系统,由mdp开源团队基于项目经验进行总结抽取,可用可不用,可以以jar包方式合并到现有工程进行发布,也可单独发布成单体应用、微服务应用

📝 常见问题、操作说明

💯 实践案例

  1. 系统管理
  2. 协同办公
  3. 唛盟众包-网页
  4. 项目管理-网页
  5. 项目管理-小程序
    drawing
  6. 流程管理

🔨贡献指南

贡献须知

mdp 作为开源项目,离不开社区的支持,欢迎任何人修改和提出建议。贡献无论大小,你的贡献会帮助背后成千上万的使用者以及开发者,你做出的贡献也会永远的保留在项目的贡献者名单中,这也是开源项目的意义所在!

为了保证项目代码的质量与规范,以及帮助你更快的了解项目的结构,请在贡献之前阅读:

贡献步骤

  1. Fork 本仓库。

  2. Fork 后会在你的帐号下多了一个和本仓库一模一样的仓库,把你帐号的仓库 clone 到本地。

    注意替换掉链接中的分支名用户名

    如果是贡献代码,分支名填 dev;如果是贡献文档,分支名填 docs

    git clone -b 分支名 https://gitee.com/用户名/mdp-lcode-ui-web.git
  3. 修改代码/文档,修改后提交上来。

    # 把修改的文件添加到暂存区
    git add .
    # 提交到本地仓库,说明你具体做了什么修改
    git commit -m '填写你做了什么修改'
    # 推送到远程仓库,分支名替换成 dev 或者 docs
    git push origin 分支名
  4. 登录你的仓库,然后会看到一条 PR 请求,点击请求合并,等待管理员把你的代码合并进来。

项目分支说明

分支 说明
master 主分支,受保护分支,此分支不接受 PR。在 dev 分支后经过测试没问题后会合并到此分支。
dev 开发分支,接受 PR,PR 请提交到 dev 分支。

目前用到的主要是 dev 和 docs 分支,接受 PR 修改,其他的分支为归档分支,贡献者可以不用管。

🐞 交流讨论 、反馈 BUG、提出建议等

  1. 快扫描下方左侧微信二维码和我们一起交流讨论吧!(备注 唛盟-mdp 进群)
drawing
  1. 唛盟微信公众号查看一些基础教程
drawing
  1. 反馈 BUG、提出建议,欢迎新建:issues,开发人员会不定时查看回复。
  2. 参与贡献,请查看贡献指南

💲 打赏

感谢所有赞赏以及参与贡献的小伙伴,你们的支持是我们不断更新前进的动力!微信扫一扫,赏杯咖啡呗!
drawing

Java
1
https://gitee.com/mengdongdeniao/mdp-core.git
git@gitee.com:mengdongdeniao/mdp-core.git
mengdongdeniao
mdp-core
唛盟后端开发底座mdp-core
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891