344 Star 1.7K Fork 1.3K

唛盟开源 / 唛盟后端开发底座mdp-core

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

唛盟-mdp

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

gitee star github star

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

快速导航 唛盟-mdp

📢 简介唛盟低代码开发平台mdp-lcode

唛盟低代码开发平台简称唛盟或者mdp. 唛盟旨在为企业开发业务系统提供一整套解决方案,唛盟具有高效率、低代码、功能丰富等特点。企业可以在唛盟工程之上,加入更多其它业务功能;也可以以唛盟作为模板,创建新的工程,用于开发其它业务。使用唛盟构建应用,您不用考虑多租户、登录、统一认证中心、权限、菜单管理、系统管理、公共组件、公共api、代码冗余、数据字典、图片库、文件库、智能表单、工作流、微服务互相调用、全局跟踪定位bug、多主键crud,复杂sql查询等各种问题,这些问题的解决方案都作为扩展功能内置唛盟工程中了。
💪给你一个使用唛盟的理由:代码大量减少、开发so easy、前后端MIT协议、全部开源、永久免费
💪唛盟生态遵循 “一个底座+N个专业子系统” 的架构,基于同一个底座的各个专业子系统可以任意组合形成一个大的业务系统
一个底座: mdp-core
N个专业子系统: 低代码mdp-lcode系统及账户管理mdp-sys第三方支付登录等mdp-tpa统一认证中心mdp-oauth2内容管理mdp-arc工作流mdp-workflow短信mdp-sms代码生成器mdp-code研发项目管理xm即时通讯mdp-im财务ac协同办公oa
上述专业子系统全部开源

📢工程介绍

⚠️工程分类:主体工程、基础配套工程、高级配套工程、拓展应用工程、辅助开发工具五大类。
主体工程:本系统业务工程,用于书写本系统相关的业务代码;
基础配套工程:业务工程运行所需的必要工程;如开发底座,系统管理相关功能包
高级配套工程:高级应用,比如需要将业务工程接入oauth2环境、将业务工程发布到cloud环境,才需要下载安装高级配套工程
拓展应用工程: 基于唛盟低代码平台拓展的应用工程,其后端可以单体发布,也可以以微服务方式发布,也可以打成jar被唛盟其它应用引入
辅助开发工具:指开发用到的一些工具

⚠️工程命名规范:业务名称+工程属性
工程属性如下:
-ui: 页面工程
-web: pc端运行的浏览器工程
-backend: 后端服务
-app: 安卓、ios等原生app工程
-uniapp: 基于uniapp开发的应用
-minapp: 小程序
-cloud: 微服务cloud环境
-oauth2: 统一认证中心
-bootstrap: 打包部署工程

唛盟主体工程

唛盟属于前后端严格分离的一套系统,分为前端工程、后端工程两部分

基础配套工程

  • mdp-core 必须先安装
    该工程作为所有后端的公共封装,不包含任何的业务功能,仅作为后端系统的技术底座,包含一些公共工具、服务类抽象、dao层抽象等。

高级配套工程

  • mdp-cloud-backend 非必须
    该工程作为spring cloud的扩展工程,如果需要将系统发布到spring cloud环境,需要下载该工程重新打包,不包含任何的业务功能,仅作为后端接入cloud环境使用

  • mdp-oauth2-backend 非必须
    该工程为统一认证中心,作为spring oauth2的扩展工程,如果需要将系统接入oauth2环境,需要下载该工程重新打包,该工程实现分布式单点登陆;支持微信、支付宝、短信、账户密码等多种登陆方式

开发辅助工具

  • mdp-code-generator 非必须 代码生成器
    生成代码两种方式,
    一、使用代码生成器本地工程,好处是代码可以直接覆盖到本地业务工程,避免复制黏贴出错。
    二、如果不需要本地生成代码,也可以在低代码平台在线生成。在线生成代码

拓展应用工程点我跳转到拓展工程列表

  • 拓展应用工程: 基于唛盟低代码平台拓展的应用工程,其后端可以单体发布,也可以以微服务方式发布,也可以打成jar被唛盟其它应用引入

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

  • 团队中缺乏企业级前后端分离的开发底座,需要在各种框架中进行摸索、整合。
  • 重复造轮子现象严重、浪费人力、对开发者经验要求过高。
  • 缺乏统一的开发模式,缺乏公共组件的抽取和共享机制,导致业务代码混乱不堪、代码臃肿、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+ nodejs版本v14.16.1,node的版本不要太高 你的本地环境需要安装 nodegit。我们的技术栈基于 ES2015+vuevue-router and element-ui,提前了解和学习这些知识会对使用本项目有很大的帮助。 更详细的说明请查看 mdp-lcode-ui-web

开发

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

# 安装依赖
npm install

# 启动服务
npm run dev

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

发布

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

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

后端

⚠️注意:所谓后端一般指java单体应用、微服务等 更详细的开发部署请查看 mdp-lcode-backend

初始化开发环境

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

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

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

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

开发

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

构建

# 编译构建基础库(如果有修改) 进入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/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

MIT License Copyright (c) 2018-present 广州擎勤网络科技有限公司 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

多功能、高效率、低代码的前后端一体化、智能化的开发平台 展开 收起
Java 等 3 种语言
MIT
取消

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/maimengcloud/mdp-core.git
git@gitee.com:maimengcloud/mdp-core.git
maimengcloud
mdp-core
唛盟后端开发底座mdp-core
master

搜索帮助