# 低代码开发平台-唛盟lcode后端 **Repository Path**: quanwenz/mdp-lcode-backend ## Basic Information - **Project Name**: 低代码开发平台-唛盟lcode后端 - **Description**: 低代码开发平台-唛盟lcode旨在为企业开发业务系统提供一整套解决方案,唛盟具有高效率、低代码、功能丰富等特点。使用唛盟构建应用,您不用考虑多租户、登录、统一认证中心、权限、菜单管理、系统管理、公共组件、公共api、代码冗余、数据字典、图片库、文件库、智能表单、工作流、微服务互相调用、全局跟踪定位bug、多主键crud,复杂sql查询等各种问题,这些问题的解决方案都作为扩展功能内置 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1369 - **Created**: 2024-05-10 - **Last Updated**: 2024-05-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

logo

唛盟(mdp-lcode):多功能、高效率、低代码的前后端一体化、智能化的开发工具

gitee star

👉 https://maimengcloud.com 👈

>⚠️注意:本工程属于唛盟低代码平台的后端服务工程 ## 快速导航 - [唛盟-后端开发底座](https://gitee.com/maimengcloud/mdp-core) - [前端组件](https://gitee.com/maimengcloud/mdp-lcode-ui-web) - [后端服务](https://gitee.com/maimengcloud/mdp-lcode-backend) - [体验环境](https://maimengcloud.com/lcode/m1/) 登陆界面上选择演示账号登陆或者直接扫码登陆,无须注册 - 相关教程b站上搜素[唛盟9哥教你撸前后端代码](https://www.bilibili.com/video/BV111421S72r/?spm_id_from=333.337.search-card.all.click&vd_source=93be23d03863773d50b81112985b9237) ## 📢 简介[唛盟低代码开发平台mdp-lcode](/) 唛盟低代码开发平台简称唛盟或者mdp. 唛盟旨在为企业开发业务系统提供一整套解决方案,唛盟具有高效率、低代码、功能丰富等特点。企业可以在唛盟工程之上,加入更多其它业务功能;也可以以唛盟作为模板,创建新的工程,用于开发其它业务。使用唛盟构建应用,您不用考虑多租户、登录、统一认证中心、权限、菜单管理、系统管理、公共组件、公共api、代码冗余、数据字典、图片库、文件库、智能表单、工作流、微服务互相调用、全局跟踪定位bug、多主键crud,复杂sql查询等各种问题,这些问题的解决方案都作为扩展功能内置唛盟工程中了。 💪给你一个使用唛盟的理由:代码大量减少、开发so easy、前后端MIT协议、全部开源、永久免费 ## 📢工程介绍 >⚠️工程分类:主体工程、基础配套工程、高级配套工程、辅助开发工具四大类。 > 主体工程:本系统业务工程,用于书写本系统相关的业务代码; > 基础配套工程:业务工程运行所需的必要工程;如开发底座,系统管理相关功能包 > 高级配套工程:高级应用,比如需要将业务工程接入oauth2环境、将业务工程发布到cloud环境,才需要下载安装高级配套工程 > 辅助开发工具:指开发用到的一些工具 >⚠️工程命名规范:业务名称+工程属性 > 工程属性如下: > -ui: 页面工程 > -web: pc端运行的浏览器工程 > -backend: 后端服务 > -app: 安卓、ios等原生app工程 > -uniapp: 基于uniapp开发的应用 > -minapp: 小程序 > -cloud: 微服务cloud环境 > -oauth2: 统一认证中心 > -bootstrap: 打包部署工程 ### 唛盟主体工程 唛盟属于前后端严格分离的一套系统,分为前端工程、后端工程两部分 - [mdp-lcode-ui-web](https://gitee.com/maimengcloud/mdp-lcode-ui-web) 唛盟的前端工程,以vue.js为主 - [mdp-lcode-backend](https://gitee.com/maimengcloud/mdp-lcode-backend) 唛盟的后端工程,java语言为主 ### 基础配套工程 - [mdp-core 必须](https://gitee.com/maimengcloud/mdp-core) 该工程作为所有后端的公共封装,不包含任何的业务功能,仅作为后端系统的技术底座,包含一些公共工具、服务类抽象、dao层抽象等。 ### 高级配套工程 - [mdp-cloud-backend 非必须](https://gitee.com/maimengcloud/mdp-cloud-backend) 该工程作为spring cloud的扩展工程,如果需要将系统发布到spring cloud环境,需要下载该工程重新打包,不包含任何的业务功能,仅作为后端接入cloud环境使用 - [mdp-oauth2-backend 非必须](https://gitee.com/maimengcloud/mdp-oauth2-backend) 该工程为统一认证中心,作为spring oauth2的扩展工程,如果需要将系统接入oauth2环境,需要下载该工程重新打包,该工程实现分布式单点登陆;支持微信、支付宝、短信、账户密码等多种登陆方式 ### 开发辅助工具 - [mdp-code-generator 非必须](https://gitee.com/maimengcloud/mdp-code-generator) 代码生成器 生成代码两种方式, 一、使用代码生成器本地工程,好处是代码可以直接覆盖到本地业务工程,避免复制黏贴出错。 二、如果不需要本地生成代码,也可以在低代码平台在线生成。[在线生成代码](https://maimengcloud.com/lcode/m1/#/mdp/lcode/gen) ## 💪 内置功能 ``` 角色权限 ├── 角色管理 => 角色crud、分配菜单、分配权限 ├── 权限定义 => 权限crud ├── 菜单管理 => 菜单(按钮)crud、分配菜单(按钮)给角色、 ├── 模块管理 => 模块crud ├── 已开模块 => 查看企业(个人)已开通的模块 组织管理 ├── 机构管理 => 企业信息维护、管理员维护、账户信息维护、企业产品维护、 ├── 用户管理 => 用户的crud、分配岗位、分配部门、重置密码、邀请 ├── 部门管理 => 部门curd、分配岗位到部门、查看部门用户 ├── 公司管理 => 公司curd(超级管理员使用) ├── 岗位管理 => 岗位curd、分配角色到岗位、岗位人员查看 ├── 注销审核 => 审核用户的注销申请 平台管理 ├── 平台配置 => 配置平台的信息 ├── 个人认证审核 => 审核个人的实名认证请求 ├── 企业认证审核 => 审核企业的实名认证请求 元数据管理 ├── 字典管理 => 数据字典的crud ├── 列表维护 => 下拉列表数据项的crud ├── 参数定义 => 公共系统参数的crud 审批中心 ├── 待执行 => 我的待执行任务查询、任务执行 ├── 日历任务 => 我的待执行任务查询、任务执行 ├── 发起流程 => 发起流程 审批监控 ├── 我发起的流程 => 查询我发起的流程 ├── 我监控的流程 => 查询我监控的流程、催办 ├── 我参与的流程 => 查询我参与过的流程 流程模型 ├── 流程编辑器 => 在线流程编辑器 ├── 模型发布 => 流程模型发布 ├── 模型设置 => 设置流程与智能表单的关联、模型的启动条件、审批人、权限等 低代码 ├── 表单中心 => 智能表单的门户 ├── 表单设计 => 进行智能表单设计、权限设置、在线查看源代码等 ├── 数据录入、查询 => 查询表单已录入的数据 ├── 代码生成器 => 在线生成crud的前端页面代码(表单、表格、api),后端代码(控制层、服务层、dao层代码),前后端0修改即可正常运行 ``` ## ⌨ 技术栈 spring boot + spring cloud + mybatis plus + flowable(可选) ## 💻 样例项目 - [低代码平台] (https://maimengcloud.com/lcode/m1/) - [系统管理] (https://maimengcloud.com/sys/m1/) - [协同办公] (https://maimengcloud.com/oa/m1/) - [项目管理] (https://maimengcloud.com/xm/m1/) - [流程管理] (https://maimengcloud.com/workflow/m1/) ## ⚙ 快速开始 ### 环境要求 数据库版本mysql8,jdk版本java-8-openjdk-amd64,redis版本3.0.6 ### 开发 ```bash # 克隆开发底座项目 git clone https://gitee.com/maimengcloud/mdp-core.git # 安装开发底座依赖 mvn install # 克隆oauth2项目(非必须) git https://gitee.com/maimengcloud/mdp-oauth2-backend # 安装oauth2依赖 mvn install # 克隆cloud项目(非必须) git https://gitee.com/maimengcloud/mdp-cloud-backend # 安装cloud依赖 mvn install # 克隆lcode项目 git clone https://gitee.com/maimengcloud/mdp-lcode-backend.git # 安装lcode依赖 mvn install # 导入数据库脚本 # 1.创建wf库 如果不想用工作流,可忽略创建wf库,找到相关脚本,导入相关表到wf数据库中,如果已创建,该步忽略 [wf.sql](https://gitee.com/maimengcloud/mdp-workflow-backend/blob/master/sql/wf.sql) # 2.创建lcode库,导入相关脚本,如果已导入过,则忽略该步骤 [lcode.sql](./mdp-lcode/sql/lcode.sql) # 配置数据库链接 + redis 链接(需要提前准备数据库及redis环境) [application-dev.yml](./mdp-lcode/src/main/resources/application-dev.yml) # 启动服务 ⚠注意启动类放在test下面, 找到并运行[LcodeApplication.java](./mdp-lcode/src/test/java/com/mdp/LcodeApplication.java) ``` 访问端口 http://localhost:7014 ### 发布 #### 服务器的目录结构 假设工作空间为/home/m1/ ``` /hom/m1/ ├── start-service => 唛盟一键启停脚本存放目录 ├── config => spring boot的外置配置文件存放目录 ├── lib => jar包存放目录 ├── conf => 其它配置文件存放目录 ├── consul => consul安装目录 ├── logs => 唛盟日志存放目录 ├── backup-log => 日志备份存放目录 ├── arcfile => 唛盟内容素材上传下载访问的目录(素材存放目录) ├── bin => 一些公共脚本目录,如日志定时清理脚本、微服务注销脚本 ``` #### 构建 ```bash # 构建 在mdp-lcode-backend下执行 mvn instal ``` #### 发布及启停服务 ```bash # 部署 指部署jar包到nexus私服,如果企业没有nexus私服,则忽略此步骤 在mdp-lcode-backend下执行 mvn deploy # 手工发布到测试环境或者生产环境 如果是单体应用则拷贝并推送到服务器上[mdp-lcode-bootstrap-2.0.0-RELEASE.jar](./mdp-lcode-bootstrap/target/mdp-lcode-bootstrap-2.0.0-RELEASE.jar) 如果是微服务则拷贝并推送到服务器上[mdp-lcode-cloud-bootstrap-2.0.0-RELEASE.jar](./mdp-lcode-cloud-bootstrap/target/mdp-lcode-cloud-bootstrap-2.0.0-RELEASE.jar) # 启动应用(单体、cloud对jar包的引用不同,需要根据情况修改下脚本bootstrap-mdp-lcode-00.sh,默认是单体)初次部署把./start-service/bootstrap-mdp-lcode-00.sh拷贝到服务器上 sh bootstrap-mdp-lcode-00.sh ``` ### 接入统一认证中心 1.如果部署了统一认证中心,需要做配置更改。 统一认证中心相关的配置项: ```properties mdp.jwt.connect-oauth2-server=true|false 如果不需要对接统一认证中心,connect-oauth2-server设为false,则对jwt token的解析将采用HS256算法解密,默认为true mdp.oauth2.server.uri=统一认证中心的访问地址 如http://127.0.0.1:7000,如果是cloud环境下可以设置为http://oauth2server ``` ```yaml mdp: jwt: connect-oauth2-server: true oauth2: server: uri: http://127.0.0.1:7000 ``` 2.本地起的后端服务pom.xml文件需要引入[mdp-oauth2-client](https://gitee.com/maimengcloud/mdp-oauth2-backend/tree/master/mdp-oauth2-client) 或者[mdp-oauth2-client-cloud](https://gitee.com/maimengcloud/mdp-oauth2-backend/tree/master/mdp-oauth2-client-cloud) ,如果没有该jar包,请下载[mdp-oauth2-backend](https://gitee.com/maimengcloud/mdp-oauth2-backend) 到本地执行下mvn install即可 单体应用下: ```xml com.mdp mdp-oauth2-client ``` cloud环境下 ```xml com.mdp mdp-oauth2-client-cloud ``` #### 场景1 开发时,登录时对接统一认证中心进行登录,本地起了部分后端服务 此场景下,本地起的后端服务需要配置以下几个选项,让本地后端服务对jwt令牌的解析验证调用统一认证中心,否则会报令牌错误。 ```properties mdp.jwt.connect-oauth2-server=true mdp.oauth2.server.uri=统一认证中心的访问地址 ``` #### 场景2 生产测试环境 此场景下配置根场景1一致 ### 接入spring cloud 唛盟提供了完整的部署例子[mdp-lcode-cloud-bootstrap](./mdp-lcode-cloud-bootstrap) #### 1 下载[mdp-cloud-backend](https://gitee.com/maimengcloud/mdp-cloud-backend)并安装 #### 2 在*-cloud-bootstrap/pom.xml文件中添加cloud客户端的引用 ```xml com.mdp mdp-cloud-starter ${mdp.version} ``` #### 3 需要在配置文件中配置spring.cloud*相关的配置项。 1. spring cloud如何配置以官方文档为准 2. 唛盟相关的有以下几个配置项需要做特殊处理 ```properties # 网关地址 如果接入cloud,指cpringcloud的gate服务的访问地址 http://gate,如果不接入cloud,这里填写nginx的地址,或者注释掉 mdp.api-gate= http://gate # 统一认证中心的访问地址 如http://127.0.0.1:7000,如果是cloud环境下可以设置为http://oauth2server mdp.oauth2.server.uri= http://oauth2server ``` #### 4 打包部署 注意,部署的是*-cloud-bootstrap*.jar包,对应的一键启停脚本也需要做部分修改。具体例子查看[bootstrap-mdp-lcode-00.sh](./start-service/bootstrap-mdp-lcode-00.sh)) ### 异构目录下如何加载唛盟包 唛盟的java代码统一在com.mdp下,异构目录下如何加载唛盟的spring bean 假设企业的业务包在com.ipcm下 有两种办法: 1. 把启动类置于com下。 2. 在**Application.java同目录下创建AutoConfig.java ```java /** * 要使用mdp平台功能,必须 扫码com.mdp包 * 一些默认公共配置 */ @ComponentScan(basePackages={"com.mdp"}) @Configuration public class AutoConfig { } ``` ### 服务端多语言支持 服务端支持多语言0编码切换,主要涉及以下内容 #### 1 配置文件 在配置文件application-*.yml中指定语言 ```yaml mdp: # 站点语言类型cn\en等 site-type: cn ``` #### 2 语言包 [msgtpl.properties](./mdp-lcode/src/main/resources/msgtpl.properties) 格式为: mdp.msg.tpl.${tipscode}@${mdp.site-type}=消息内容 举例如下: ```properties mdp.msg.tpl.tipscode1@cn=%s先生/女士,你好,恭喜获得奖励¥ %s mdp.msg.tpl.tipscode1@en=Hello %s, congratulations on receiving a reward of ¥ %s ``` ${tipscode}来自以下几种地方: 1.[BizException.java](https://gitee.com/maimengcloud/mdp-core/blob/master/mdp-utils/src/main/java/com/mdp/core/err/BizException.java)抛出的异常,唛盟框架会自动匹配语言 ```java throw new BizException(LangTips.errMsg("tipscode1","%s先生/女士,你好,恭喜获得奖励¥ %s","陈天天","1000")); ``` 2. 控制层返回结果后,唛盟框架会自动做语言切换,前端会收到已切换的消息 ```java @RequestMapping(value="/list",method=RequestMethod.GET) public Result list(){ return Result.ok("tipscode1","%s先生/女士,你好,恭喜获得奖励¥ %s","陈天天","1000"); } ``` ### 🔔️ 特别提醒 mdp 3.0 版本已经开始规划更新了,尽请期待新版本的诞生吧 ## 🚀 基于mdp框架拓展的开源项目 >⚠️ 注意:以下拓展的框架或者子系统,由mdp开源团队基于项目经验进行总结抽取,可用可不用,可以以jar包方式合并到现有工程进行发布,也可单独发布成单体应用、微服务应用 - 第三方支付框架,整合了微信支付、支付宝支付、paypal支付 1. [mdp-tpa-backend](https://gitee.com/maimengcloud/mdp-tpa-backend) 后端 - 即时通讯框架 1. [mdp-im-uniapp](https://gitee.com/maimengcloud/mdp-im-uniapp) 前端app 2. [mdp-im-web](https://gitee.com/maimengcloud/mdp-im-web) 前端浏览器 3. [mdp-im-backend](https://gitee.com/maimengcloud/mdp-im-backend) 后端 - 统一认证中心框架 2. [mdp-oauth2-backend](https://gitee.com/maimengcloud/mdp-oauth2-backend) 后端 - 微服务框架 1. [mdp-cloud-backend](https://gitee.com/maimengcloud/mdp-cloud-backend) 后端 - 工作流管理子系统 1. [mdp-lcode-ui-web](https://gitee.com/maimengcloud/mdp-lcode-ui-web) 前端 2. [mdp-workflow-modeler-ui-web](https://gitee.com/maimengcloud/mdp-workflow-modeler-ui-web) 流程编辑器 3. [mdp-workflow-backend](https://gitee.com/maimengcloud/mdp-workflow-backend) 后端 - 低代码平台 1. [mdp-lcode-ui-web](https://gitee.com/maimengcloud/mdp-lcode-ui-web) 前端 2. [mdp-lcode-backend](https://gitee.com/maimengcloud/mdp-lcode-backend) 后端 - 内容管理子系统 1. [mdp-arc-ui-web](https://gitee.com/maimengcloud/mdp-arc-ui-web) 前端 2. [mdp-arc-backend](https://gitee.com/maimengcloud/mdp-arc-backend) 后端 - 短信子系统 1. [mdp-sms-ui-web](https://gitee.com/maimengcloud/mdp-sms-ui-web) 前端 2. [mdp-sms-backend](https://gitee.com/maimengcloud/mdp-sms-backend) 后端 - 项目管理子系统 1. [xm-crowd-ui-web](https://gitee.com/maimengcloud/xm-crowd-ui-web) 前端众包 2. [xm-ui-web](https://gitee.com/maimengcloud/xm-ui-web) 前端管理端 3. [xm-backend](https://gitee.com/maimengcloud/xm-backend) 后端 - 财务管理子系统 1. [ac-core-ui-web](https://gitee.com/maimengcloud/ac-core-ui-web) 前端管理端 2. [ac-backend](https://gitee.com/maimengcloud/ac-backend) 后端 ## 💯 实践案例 1. [低代码平台](https://maimengcloud.com/lcode/m1/) 1. [系统管理](https://maimengcloud.com/sys/m1/) 2. [协同办公](https://maimengcloud.com/oa/m1/) 3. [唛盟众包-网页](https://maimengcloud.com) 3. [项目管理-网页](https://maimengcloud.com/xm/m1/) 4. 项目管理-小程序 drawing 5. [流程管理](https://maimengcloud.com/workflow/m1/) ### 项目分支说明 | 分支 | 说明 | |--------|-----------------------------------------------| | master | 主分支,受保护分支,此分支不接受 PR。在 dev 分支后经过测试没问题后会合并到此分支。 | | dev | 开发分支,接受 PR,PR 请提交到 dev 分支。 | ## 🐞 交流讨论 、反馈 BUG、提出建议等 1. 快扫描下方左侧微信二维码和我们一起交流讨论吧!(备注 唛盟-xm 进群) drawing 2. 唛盟微信公众号查看一些基础教程 drawing 3. 反馈 BUG、提出建议,欢迎新建:[issues](https://gitee.com/maimengcloud/mdp-lcode-ui-web/issues),开发人员会不定时查看回复。 4. 参与贡献,请查看[贡献指南](#🔨贡献指南)。 ## 💲 打赏 **感谢所有赞赏以及参与贡献的小伙伴,你们的支持是我们不断更新前进的动力!微信扫一扫,赏杯咖啡呗!** drawing ## 🔔商务合作 序号|合作项目| 详细介绍 | 费用说明| ----------------------|------------|----------------------|-----| 1.| 打赏获得赞助商名额| 在赞助商列表展示(添加微信沟通) |不限额度| 2.| 新组件开发| 提供组件扩展、优化服务 |视复杂程度而定| 3.| 开发问题解答|如果使用该产品遇到棘手问题需要解决,添加微信进行沟通解决 |免费| 4.| 开发培训|提供开发流程介绍、技术介绍、功能介绍、部署流程介绍,仅限线上培训 |加微信详聊| 5.| 扩展问题解答|如果需要使用该产品进行自有业务系统研发,需要我方提供意见建议,我方收取一定费用后提供相应服务 |加微信详聊| 6.| 广告合作|广告位(精品项目推荐、赞助商展位) |加微信沟通|