唛盟(mdp-lcode vue3 ):多功能、高效率、低代码(支持0代码) 前后端一体化、智能化的开发工具
唛盟低代码开发平台简称唛盟或者mdp. 👉唛盟-总体介绍
唛盟旨在为企业开发业务系统提供一整套解决方案,唛盟具有高效率、低代码、支持0代码、功能丰富等特点。企业可以在唛盟工程之上,加入更多其它业务功能;也可以以唛盟作为模板,创建新的工程,用于开发其它业务。使用唛盟构建应用,您不用考虑多租户、登录、统一认证中心、权限、菜单管理、系统管理、公共组件、公共api、代码冗余、数据字典、图片库、文件库、智能表单、工作流、微服务互相调用、全局跟踪定位bug、多主键crud,复杂sql查询等各种问题,这些问题的解决方案都作为扩展功能内置唛盟工程中了。
💪给你一个使用唛盟的理由:代码大量减少、开发so easy、前后端MIT协议、全部开源、永久免费
💪唛盟生态遵循 “一个底座+N个专业子系统” 的架构,基于同一个底座的各个专业子系统可以任意组合形成一个大的业务系统。👉聊聊唛盟生态1+n架构
唛盟子系统 | 说明 | 版本 |
---|---|---|
低代码、0代码 | 低代码、0代码框架 | 3.0.0 |
账户、权限、组织管理 | 账户、权限、组织管理,支持多租户 | 3.0.0 |
数据模型 | 表结构设计、表数据增删改查等ddl、dml操作,在线执行sql等 | 3.0.0 |
第三方支付登录等 | 微信支付、支付宝支付、paypal支付、第三方登录 | 3.0.0 |
统一认证中心 | 短信、微信、账号登录 | 3.0.0 |
统一流程中心 | 审批、代办、设计流程、监控流程等 | 3.0.0 |
短信 | 群发消息 | 3.0.0 |
代码生成器 | 自动生成前后端代码 | 3.0.0 |
研发项目管理 | 产品管理、需求管理、任务计划、迭代、测试、效能等 | 3.0.0 |
即时通讯 | 即时通讯、消息、聊天 | 3.0.0 |
财务 | 财务子系统,凭证、报销、会计记账、成本、结算 等 | 3.0.0 |
协同办公 | 办公用品、会议、车辆、资产、档案、用印、采购、绩效等功能 | 3.0.0 |
框架 | 说明 | 版本 |
---|---|---|
Vue | Vue 框架 | 3.3.8 |
Vite | 开发与构建工具 | 4.5.0 |
Element Plus | Element Plus | 2.4.2 |
TypeScript | JavaScript 的超集 | 5.2.2 |
pinia | Vue 存储库 替代 vuex5 | 2.1.7 |
vueuse | 常用工具集 | 10.6.1 |
vue-i18n | 国际化 | 9.6.5 |
vue-router | Vue 路由 | 4.2.5 |
unocss | 原子 css | 0.57.4 |
iconify | 在线图标库 | 3.1.1 |
wangeditor | 富文本编辑器 | 5.1.23 |
form-create | 表单引擎+表单设计器 | vue3版 |
框架 | 说明 | 版本 |
---|---|---|
spring boot | spring boot 框架 | 2.4.1 |
mybatis plus | 数据库操作框架 | 3.5.3.1 |
spring security | 安全框架 | 2.1.7 |
jsqlparse | sql解析引擎 | 4.7+ |
swagger | 接口说明框架 | 2.2.8 |
logback | 日志框架 | 1.2.3 |
jexl13 | 表达式引擎 | 3.1 |
flowable | 流程引擎-可换 | 6.4.2 |
spring cloud | cloud框架-可换 | 2020.0.0 |
spring cloud consul | cloud框架-可换 | 1.10+ |
spring cloud consul | cloud框架-可换 | 1.10+ |
spring oauth2 | 统一认证中心-可换 | 5.2.2 |
前端
推荐 VS Code 开发,配合插件如下:
插件名 | 功能 |
---|---|
node.js | node.js 建议 21.1.0 + |
pnpm | 类似npm的构建工具 最新版即可 |
nvm | node版本管理工具,多版本之间切换很好用 最新版即可 |
TypeScript Vue Plugin (Volar) | 用于 TypeScript 的 Vue 插件 |
Vue Language Features (Volar) | Vue3.0 语法支持 |
unocss | unocss for vscode |
Iconify IntelliSense | Iconify 预览和搜索 |
i18n Ally | 国际化智能提示 |
Stylelint | Css 格式化 |
Prettier | 代码格式化 |
ESLint | 脚本代码检查 |
DotENV | env 文件高亮 |
ruoyi-vue-pro | 前端流程ui基于若依修改 |
后端
插件名 | 功能 |
---|---|
idea | java 开发工具 社区版、企业版都可 |
唛盟所有子系统从前端到后端提供ai支持能力
完全开源、永久免费的企业级开发底座
统一的开发模式
足够灵活的权限管理机制
基于领域驱动设计(DDD)的框架及代码生成器
提供完整的编程规范说明
提供强大的元数据(数据字典)管理机制
整合了最新版本的强大的flowable工作流引擎
提供强大的国际化解决方案
整合了强大的微服务框架
强大的DAO层
强大的web ui
提供自定义表单解决方案,具有0代码0延时发布一个新功能的能力
整合了微信支付、支付宝支付、paypal支付
整合了oauth2.0框架
功能 | 描述 |
---|---|
机构管理 | 企业信息维护、管理员维护、账户信息维护、企业产品维护、 |
用户管理 | 用户的crud、分配岗位、分配部门、重置密码、邀请 |
部门管理 | 部门curd、分配岗位到部门、查看部门用户 |
公司管理 | 公司curd(超级管理员使用) |
岗位管理 | 岗位curd、分配角色到岗位、岗位人员查看 |
注销审核 | 审核用户的注销申请 |
功能 | 描述 |
---|---|
个人信息 | 基本信息、邮箱、手机、企业绑定、微信绑定等 |
我的消息 | 接收个人私信、公告等 |
登录日志 | 查询我的登录日志 |
功能 | 描述 |
---|---|
角色管理 | 角色crud、分配菜单、分配权限 |
权限定义 | 权限crud |
菜单管理 | 菜单(按钮)crud、分配菜单(按钮)给角色、 |
模块管理 | 模块crud |
已开模块 | 查看企业(个人)已开通的模块 |
功能 | 描述 |
---|---|
平台配置 | 配置平台的信息 |
个人认证审核 | 审核个人的实名认证请求 |
企业认证审核 | 审核企业的实名认证请求 |
功能 | 描述 |
---|---|
字典管理 | 数据字典的crud |
列表维护 | 下拉列表数据项的crud |
参数定义 | 公共系统参数的crud |
功能 | 描述 |
---|---|
模型中心 | 模型的crud |
表格结构 | 表结构预览、表结构修改、表的字段维护等 |
表格数据 | 表的业务数据crud等 |
数据集市 | 可以快速构造查询sql,提供给外部接口、智能表单、数据分析等使用 |
创建数据集 | 数据集的设计、保存、预览数据等 |
支持mdp-ui组件的拖拉拽,支持表单0编码0耗时发布形成一个新的功能
功能 | 描述 |
---|---|
表单中心 | 表单列表,权限管理,数据查阅等 |
创建表单 | 表单设计、预览 |
功能 | 描述 |
---|---|
附件库 | 附件上传、预览、权限配置等 |
图片库 | 图片上传、预览、删除等 |
图标库 | 图标的预览、选用等 |
功能 | 描述 |
---|---|
我的订单 | 订单查看、管理、打折促销等 |
购买产品 | 下单购买应用 |
增购人数 | 增加企业人数 |
续费 | 到期续费 |
功能 | 描述 |
---|---|
邀请管理 | 查询、管理我发起的邀请 |
我邀请的用户 | 查询我邀请的用户列表 |
第三方用户查询 | 查询第三方账户信息 |
功能 | 描述 |
---|---|
流程编辑器 | 在线流程编辑器 |
模型发布 | 流程模型发布 |
模型设置 | 设置流程与智能表单的关联、模型的启动条件、审批人、权限等 |
功能 | 描述 |
---|---|
待执行 | 我的待执行任务查询、任务执行 |
日历任务 | 我的待执行任务查询、任务执行 |
发起流程 | 发起流程 |
功能 | 描述 |
---|---|
我发起的流程 | 查询我发起的流程 |
我监控的流程 | 查询我监控的流程、催办 |
我参与的流程 | 查询我参与过的流程 |
功能 | 描述 |
---|---|
代码生成器 | 在线生成crud的前端页面代码(表单、表格、api),后端代码(控制层、服务层、dao层代码),前后端0修改即可正常运行 |
mdp封装了几十个ui组件,使用mdp-ui与不使用mdp-ui的区别:写100行代码还是写1行代码的区别,代码量的减少立竿见影
⚠️注意:先行体验一把mdp-ui组件效果预览
找到main.ts 添加下面代码
//mdp-ui 基础组件
import MdpComponents from '@/components/mdp-ui/index.js'
//mdp-ui-ext拓展的组件
import MdpUiExtComponents from '@/components/mdp-ui-ext/index.js'
//唛盟公共api
import MdpPubApi from "@/api/mdp_pub";
const app = createApp(App)
app.use(MdpComponents)
app.use(MdpUiExtComponents)
app.config.globalProperties.$mdp=MdpPubApi
弹框,可以把任意页面装配成弹框,无须定义多余的变量及函数
表格,内置了增、删、改、查、高级查询、重置查询、导出、列配置、分页、批量编辑等功能、内置了对按钮权限的控制机制
功能非常强大,懂的都懂。
下拉列表,支持对数据字典、元数据的引用,支持对任意小表表格数据的引用,支持参数化加载后台数据,对后台加载的数据进行缓存
超大表格下拉列表,与mdp-select相比,该组件具有分页查询功能
用户选择下拉列表,与mdp-select-table组件类似,仅仅针对用户的头像做了特殊处理
输入框
日期
区间日期
数字输入
高级查询,可以由用户自定义任意复杂的查询条件
表格配置,用于控制表格的列显示与否
看板 多维度洞察数据
懒加载树,自由拖拽,调整上下级关系手到擒来
分栏布局,比起el-row,更优秀更简洁,更灵活
穿梭框
文档、文章目录树
智能表单相关组件
自动扩展字段信息
图片库,图片的增删改查、上传、下载
图片选择器,支持图片的上传下载、上传后的统一管理、共享
部门选择,支持树状机构,异步加载,支持分页查询,任意大数据量
附件库,支持附件的上传下载、上传后的统一管理、共享
文档、文章目录树选择器
标签库,支持标签的统一管理、共享
元数据管理库、支持元数据的crud
元数据管理库-列表数据组件、支持列表数据的crud
富文本编辑器,整合了mdp-select-image作为插件
公共api总入口,注册到vue全局函数中,可以在页面中任意地方直接使用,公共api总入口,如需要添加公共api,请在此文件添加
为mdp框架核心的与后端交互的api,自动注册为全局公共函数,可通过$mdp.xxx调用,可改,但不要新增,删除任何一个api.
为mdp扩展的组件与后端交互的api,自动注册为全局公共函数,可通过$mdp.xxx调用,可改,但不要新增,删除任何一个api.
为mdp扩展的组件与后端交互的api,自动注册为全局公共函数,可通过$mdp.xxx调用,可改,可新增必要的api.
前端工程的一些公共配置项,主要配置每一类api对接哪个后端微服务 根据不同的环境,需要修改部分内容。mdp_config配置项已与vue3工程公共配置打通,vue3依赖于VIET_*的全局配置项,因此,vue3及更高版本之后应该以VITE的配置为准,详细查阅 env.d.ts
# 固定网址
VITE_FIXED_DOMAIN=https://www.maimengcloud.com
# 开源项目地址
VITE_OPEN_SOURCE_LINK=https://gitee.com/qingqinkj218/collections/375320
# 微信开放平台 appid
VITE_WXOPEN_APPID=wx2671d5db8346b6fc
#
# 说明: VITE_CTX_# 为定义唛盟各个子系统的context;
# context指向子系统的微服务名称,spring.application.name
#
# 1. 用于前端请求路径前缀映射,
# 前端页面一般部署在 ./{VITE_CONTEXT}/{VITE_UI_VERSION?}
#
# 2. api导航到对应子系统等
# api一般按以下格式规范组装 ./{VITE_API_BASE_PATH}/{VITE_API_VERSION}/{VITE_CONTEXT}
#
# 登录相关,如果后端启用oauth2,则返回 oauth2client ,如果后端不启用oauth2,后端账户使用mdp-lcode服务,则返回 lcode ,如果使用mdp-sys提供服务,则返回sys
VITE_CTX_LOGIN=oauth2client
# 项目管理子系统
VITE_CTX_XM=xm
# 工作流子系统,由于flowable启动限制,目前不支持jar集成到lcode,需要单独部署
VITE_CTX_WF=workflow
# 低代码子系统
VITE_CTX_LCODE=lcode
# 内容管理子系统
VITE_CTX_ARC=arc
# 数据模型 由lcode接管
VITE_CTX_DM=lcode
# 协同办公
VITE_CTX_OA=oa
# 系统管理,目前由lcode接管
VITE_CTX_SYS=lcode
# 智能表单,目前由lcode接管
VITE_CTX_FORM=lcode
# 商城-面向消费用户端
VITE_CTX_MALL=mall
# 商城管理端
VITE_CTX_MALLM=mallm
# 即时通讯
VITE_CTX_IM=im
# 短信
VITE_CTX_SMS=sms
# 唛盟内置的应用购买模块订单 目前由lcode接管
VITE_CTX_MO=lcode
# 众包 目前由xm接管
VITE_CTX_CROWD=xm
# 第三方集成系统
VITE_CTX_TPA=tpa
<el-button @click="$mdp.xxxApi()"/>
//选项式
this.$mdp.xxxApi()
//组合式 由于没有this,需要在顶部引入proxy
const {proxy}: any = getCurrentInstance()
proxy.$mdp.xxxApi()
<el-table v-adaptive="{bottomOffset:30}"/>
<el-table v-adaptive/>
⚠️注意:该项目使用 element plus 版本,所以最低兼容 vue@3.0+ nodejs版本v21.1.0
⚠️注意:强烈建议一定要用pnpm
// 全局安装
npm install pnpm -g
//查看源
pnpm config get registry
//切换淘宝源
pnpm config set registry https://registry.npmmirror.com/
// 使用
pnpm install 包 // 安装依赖
当前项目属于网页版前端ui项目,后端代码请移步到 mdp-lcode-backend
代码生成器下载 mdp-code-generator 也可以在低代码平台在线生成
# 克隆项目
git clone https://gitee.com/maimengcloud/mdp-lcode-ui-web.git
# 安装依赖
pnpm install
# 启动服务
pnpm run dev
浏览器访问 http://localhost:8015
登录api,对接后台接口有两种方式:
VITE_CTX_LOGIN=oauth2client
VITE_CTX_LOGIN=lcode
内容相关接口默认打包进mdp-lcode,所以内容相关接口可以直接对接lcode即可,如果内容相关的服务使用独立的第三方开源工程,独立部署,比如直接使用 mdp-arc-backend
VITE_CTX_ARC=arc
# 配置附件上传的接口,如果不配使用arc内置的地址
VITE_UPLOAD_ATT_URL=
# 配置图片上传的接口,如果不配使用arc内置的地址
VITE_UPLOAD_IMAGE_URL=
VITE_CTX_ARC=lcode
# 配置附件上传的接口,如果不配使用arc内置的地址
VITE_UPLOAD_ATT_URL=
# 配置图片上传的接口,如果不配使用arc内置的地址
VITE_UPLOAD_IMAGE_URL=
前后端对接,涉及api/lcode,api/arc,api/oauth2client,api/workflow,api/tpa等开头的api
['/api/lcode']: {//低代码平台
target: 'http://localhost:7014',
ws: false,
changeOrigin: true,
rewrite: (path) => path.replace(new RegExp(`^/api/lcode`), '/'),
},
['/api/oauth2client']: {//登录相关,如果VITE_CTX_LOGIN=lcode,此代理不需要配置,走的是lcode的代理
target: 'localhost:7014',//如果对接统一认证中心,此处应该改为oauth2client的端口,默认对接lcode
ws: false,
changeOrigin: true,
rewrite: (path) => path.replace(new RegExp(`^/api/oauth2client`), '/'),
},
['/api/arc']: {// 图片、文件、标签、分类等,如果VITE_CTX_ARC=lcode,此代理不需要配置,走的是lcode的代理
target: 'localhost:7014',//如果对接arc-backend,此处应该改为arc的端口,默认对接lcode
ws: false,
changeOrigin: true,
rewrite: (path) => path.replace(new RegExp(`^/api/arc`), '/'),
},
['/api/workflow']: {//工作流
target: 'localhost:7080',
ws: false,
changeOrigin: true,
rewrite: (path) => path.replace(new RegExp(`^/api/workflow`), '/'),
},
['/api/tpa']: {//第三方微信、支付宝登录,支付,二维码等
target: 'localhost:7012',
ws: false,
changeOrigin: true,
rewrite: (path) => path.replace(new RegExp(`^/api/tpa`), '/'),
},
['/api']: {//保底代理
target: 'http://localhost:7014', //不匹配的请求,全部转向lcode
ws: false,
changeOrigin: true,
rewrite: (path) => path.replace(new RegExp(`^/api`), '/'),
},
上述代理实现把以/api/*开头的请求地址(举例/api/lcode/user/list)替换为/user/list,并转发到 http://服务器上的ip:端口 地址
# 构建测试环境
pnpm run build:test
# 构建生产环境
pnpm run build:prod
假设:
# 1.首先登录sit1-static并进入/data/nginx/html/lcode/下
cd /data/nginx/html/lcode/
# 如果有dist.rar需要先删除
rm -rf dist.rar
# 2.执行rz命令,弹框选择本地dist文件上传到sit1-static服务器
rz
# 3.在弹出的目录选择器中进入C:\Users\xxx\IdeaProjects\mdp-lcode-ui-web\dist\目录下
全选所有文件->右键->添加到dist.rar->选中dist.rar->上传到服务器商/data/nginx/html/lcode/目录下
# 4.执行解压缩命令,至此静态资源发布完成
unrar x dist.rar
解压后m1目录下一般有css、fonts、images、img、js、tinymce、favicon.icon、index.html等文件或者文件夹
location ~*/(mk|mallm|arc|im|sms|workflow|oa|ac|audit|xm|tpa|crowd|lcode) {
root /usr/share/nginx/html;
index index.html;
expires 30d;
}
api/xm, api/lcode, api/arc, api/workflow, api/tpa,等api配置,每个都是同样的逻辑
# lcode 低代码相关api
upstream api-gate-lcode {
server 192.168.0.222:7014;
}
location /api/lcode/ {
#proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://api-gate-lcode/;
proxy_connect_timeout 65s;
proxy_send_timeout 65s;
proxy_read_timeout 65s;
proxy_next_upstream_tries 1;
}
# workflow 工作流相关api
upstream api-gate-workflow {
server 192.168.0.222:7080;
}
location /api/workflow/ {
#proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://api-gate-workflow/;
proxy_connect_timeout 65s;
proxy_send_timeout 65s;
proxy_read_timeout 65s;
proxy_next_upstream_tries 1;
}
# arc 内容相关api
upstream api-gate-arc {
# 如果由lcode提供服务,可以指向lcode所在端口7014
server 192.168.0.222:7012;
}
location /api/arc/ {
#proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://api-gate-arc/;
proxy_connect_timeout 65s;
proxy_send_timeout 65s;
proxy_read_timeout 65s;
proxy_next_upstream_tries 1;
}
# xm 项目管理相关api
upstream api-gate-xm {
server 192.168.0.222:7067;
}
location /api/xm/ {
#proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://api-gate-xm/;
proxy_connect_timeout 65s;
proxy_send_timeout 65s;
proxy_read_timeout 65s;
proxy_next_upstream_tries 1;
}
# oauth2client 登录相关api
upstream api-gate-oauth2client {
# 如果由lcode提供服务,可以指向lcode所在端口7014
server 192.168.0.222:7002;
}
location /api/oauth2client/ {
#proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://api-gate-oauth2client/;
proxy_connect_timeout 65s;
proxy_send_timeout 65s;
proxy_read_timeout 65s;
proxy_next_upstream_tries 1;
}
# tpa 第三方微信/支付宝登录、支付等相关api
upstream api-gate-tpa {
server 192.168.0.222:7125;
}
location /api/tpa/ {
#proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://api-gate-tpa/;
proxy_connect_timeout 65s;
proxy_send_timeout 65s;
proxy_read_timeout 65s;
proxy_next_upstream_tries 1;
}
假设 spring cloud gate部署在192.168.0.222,监听6101端口 下面的目标服务器改为cloud gate的地址端口. 注意cloud环境下不需要像单体般每个子系统api单独配置映射关系。因为所有的api都是经过gate再转发的
upstream api-gate {
server 192.168.0.222:6101;
}
location /api/ {
#proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://api-gate/;
proxy_connect_timeout 65s;
proxy_send_timeout 65s;
proxy_read_timeout 65s;
proxy_next_upstream_tries 1;
}
具体以mdp-lcode-backend中发布描述为准
日常查询问题,主要通过查询前后端日志,分析出具体原因,再进行针对性解决。
唛盟平台具有多个子业务系统,每个子业务系统都有独立日志,一个前端请求,可能日志散落在多个日志文件,如何才能凑齐这些日志,进行统一分析交易执行情况,进而定位问题?
答复:唛盟平台在每个请求到达服务端的时候,会检测gloNo是否存在,如果不存在,则会自动创建一个gloNo,并注入到日志上下文中,并打印到每一行代码中,另外请求结束,还会把gloNo返回到前端,如果交易中间涉及调用其他子系统,同样会自动上送gloNo,对方交易子系统同样执行上诉逻辑。因此,可以看见,gloNo是能够把所有日志串联起来的。我们只需要在日志文件目录下执行grep命令即可找出对应日志
操作步骤:
1.下面是典型的唛盟接口返回的数据结果集 gloNo就存放在res.data.tips.gloNo中。
{
"total" : 1,
"data" : [ {
"bizFlowState" : null,
"deptName" : null,
"projectCnt" : 1,
"admUserid" : "4hinb8m16",
"del" : "0",
"budgetNouserAt" : null,
"productName" : "唛盟云-财务系统",
"baselineId" : "2022-01-01-base-01",
}],
"tips" : {
"msg" : "成功",
"gloNo" : "20240312200013556UWJZKV",
"isOk" : true,
"reqNo" : "20240312200013556JM3WKN",
"tipscode" : "ok"
}
}
grep "20240312200013556UWJZKV" *.log
consule 的默认控制台 http://ip:8500/
可以调用/bin/service-deregister.sh进行
可以在crontab中配置定时任务,定时调用bin/clear-log.sh即可完成7天循环自动清理及备份日志
使用举例:
# 打开定时任务编辑器
crontab -e
# 查看定时任务
crontab -l
# 增加定时清理备份日志任务
0 1 * * * /bin/bash /home/mall/bin/clear-log.sh
已发布,停更
已发布,持续改进
预研中
答复:
1.请排查vite.config.ts中的代理是否配置正确,详细配置说明参考前面关于前后端对接的说明;
2.请检查后端服务是否已启动,并查看配置文件关于服务监听端口是否与代理配置的端口一致;
答复:
1.请排查node的版本是否是前面描述的指定版本;
2.请使用nvm进行node版本管理,具体请看 如何切换node.js版本
答复:设置国内镜像
//查看源
pnpm config get registry
//切换淘宝源
pnpm config set registry https://registry.npmmirror.com/
答复:账户为: demo-branch-01 密码为: 888888 演示环境大家切勿自行改密码
答复: 账户为: superAdmin 密码为: 888888 演示环境大家切勿自行改密码
答复: 数据库脚本一般存放在后端工程下的sql/文件夹下 低代码的mdp-lcode-backend/mdp-lcode/sql/lcode.sql
mysql的话,建议character set: utf8mb4, collation: utf8mb4_croatian_ci mysql8以上
答复:因为本地跑不需要cloud环境,cloud相关包是部署到cloud环境才需要的。您可以采取以下两种办法之一解决
3.0以上版本不存在该问题,3.0以下版本按下面办法处理
办法1. 找到根目录下的pom.xm文件,把cloud的模块注释掉
<modules>
<module>mdp-arc-mate</module>
<module>mdp-arc-pub</module>
<module>mdp-sys</module>
<module>mdp-lcode</module>
<module>mdp-lcode-bootstrap</module>
<!-- <module>mdp-lcode-cloud-bootstrap</module> -->
</modules>
办法2. 下载mdp-cloud-backend工程,进行安装
答复:需要的,原因:1.研发管理系统采用低代码中的框架开发,各种组件的使用说明,框架的说明介绍等都是放在低代码平台中。2.研发管理系统中的账户、角色权限、组织、字典、菜单等都是直接采用低代码平台的功能,研发管理系统必须结合低代码平台才能算是一个完整的产品。
答复:请参考以下文章nvm介绍、安装、报错处理以及使用
注意:请用管理员身份打开cmd命令窗口
1.查看本地安装所有版本以及当前使用的版本,有可选参数available,显示所有可下载的版本
nvm list [available]
2.查看到 node 版本后,推荐使用 LTS 中任意一个版本进行安装,命令中版本自定义,例如下
nvm install 21.1.0
3.使用 nvm 进行切换 node 版本使用特定版本
nvm use 21.1.0
答复:唛盟属于企业级开发平台,企业可以用唛盟开发任何业务系统,在企业内部来讲,最终可能演变成1底座+n个专业子系统的最终形态。唛盟采用1+n架构正是由目前大部分企业的这种形态决定的,唛盟为适应1+n的架构做了最佳的工程划分实践,在很多项目实战中获得了巨大成功。1代表核心底座mdp-core,地位非常重要,任何改动有可能影响所有产品的正确运行,一般由架构师团队维护,不建议开放给各个业务组,所以mdp-core有完全独立开来的需要。n代表各个子系统,子系统之间高内聚,低耦合。每个子系统完全可以独立运行的。在管理上,可能每个子系统属于不同的产品团队或者不同的项目团队进行管理。工程包完全独立,方便管理,避免权责不清,互相交叉等问题。
答复:可以的,唛盟设计之初就考虑到了需要具备可合可分的这种灵活性。唛盟采用1+n架构,具体体现为至少有n个jar包,jar包是可以互相引入的,可以在-bootstrap的工程中通过pom引入的方式把他们合并成一个大的发布包。最终发布到服务器的时候,发布一个jar包就可以了。
答复:登录成功后,会对统一流程中心发起一次代办查询,如果未部署流程中心,将代办的请求发送到唛盟官网。由于开发者本地跑产生的token是由lcode颁发,对唛盟官网的请求带上的token将被唛盟官网鉴权不通过,报401.开发者需要检查以下配置:
vite.config.ts proxy是否配置了默认对唛盟官网请求的保底代理,如有,请删除。
如果不需要工作流,将VITE_WF_OPEN设为false,将不再发起代办的请求
以下是需要工作流的情况:
如果需要工作流,请检查vite.config.ts proxy是否配置了对流程中心的请求代理,如果未配置,请查阅流程整合
统一流程中心启动配置项是否将 mdp.jwt.connect-oauth2-server配置为false?
mdp:
jwt:
connect-oauth2-server: false
以上自检查确认后未解决问题,打开浏览器控制台截取交易报送信息及返回信息,联系唛盟客服。
答复:唛盟底座架构及各子系统默认完全剥离redis,采用自研的CacheHKV缓存框架。如果不需要分布式缓程,理论上不需要引入任何第三方缓存框架。但是CacheHKV设计并不是要真正做缓存框架,而是为了开发调试方便,上生产的时候,建议还是引入真正的缓存框架。
答复:
<dependency>
<groupId>com.mdp</groupId>
<artifactId>mdp-boot-starter-redis</artifactId>
</dependency>
答复:可以混用,你可以用CacheHKV put值,通过redis get值,同理,使用redis put值,通过CacheHKV取值也是一样的
答复: 要回答这个问题,首先要理解唛盟菜单的机制。
答复: 前端授权即后台不配制任何菜单,前端也可以按自己的菜单授权逻辑控制菜单的显示也否。
答复: 前端在路由meta.roles配置角色列表,告诉唛盟平台该菜单属于前端授权菜单。需要进行角色判断才能展示 唛盟将会获取当前登录用户的角色列表与菜单上配置的角色列表进行匹配,匹配到任何一个即放行
{
meta:{
roles:['superAdmin','hrrs']
}
}
答复:后端授权指通过后台配置,将菜单按角色分配,达到控制不同角色能看到的菜单不同的目的 前端框架底层将会按后端返回的菜单做以下操作:
答复:后端授权需要前端在路由配置中设置 meta.menu=true
{
meta:{
menu:true
}
}
答复: 如果一个菜单既配置了meta.menu=true,同时配置了meta.roles,那么唛盟底层将以后端授权为准,忽略前端授权
答复: 超级管理员无视任何授权规则,一律放行
答复: 唛盟生态具有多个子系统,每个子系统都是可以导入各自菜单的,因此,势必造成后端菜单扎堆,那么如何进行菜单范围限制呢?
在前端配置全局配置项。设定本应用的模块范围,在设定范围内的动态菜单才允许放行,否则忽略
如果全局配置为空,则默认全部放行
VITE_MODULE_SCOPE=['模块编号1','模块编号2']
分支 | 说明 |
---|---|
master | 主分支,3.0.0+,受保护分支,此分支不接受 PR。在 dev 分支后经过测试没问题后会合并到此分支。 |
3.0.0-RELEASE | 已发布的版本3.0。 |
2.0.0-RELEASE | 已发布的版本2.0。 |
感谢所有赞赏以及参与贡献的小伙伴,你们的支持是我们不断更新前进的动力!微信扫一扫,赏杯咖啡呗!
序号 | 合作项目 | 详细介绍 | 费用说明 |
---|---|---|---|
1. | 打赏获得赞助商名额 | 在赞助商列表展示(添加微信沟通) | 不限额度 |
2. | 新组件开发 | 提供组件扩展、优化服务 | 视复杂程度而定 |
3. | 开发问题解答 | 如果使用该产品遇到棘手问题需要解决,添加微信进行沟通解决 | 免费 |
4. | 开发培训 | 提供开发流程介绍、技术介绍、功能介绍、部署流程介绍,仅限线上培训 | 加微信详聊 |
5. | 扩展问题解答 | 如果需要使用该产品进行自有业务系统研发,需要我方提供意见建议,我方收取一定费用后提供相应服务 | 加微信详聊 |
6. | 广告合作 | 广告位(精品项目推荐、赞助商展位) | 加微信沟通 |
0.1-唛盟-唛盟生态1+n架构无限扩展、丝滑部署、永不下线
8.2.唛盟-后端工程开发-控制层、服务层、dao层开发详细介绍
10.1-唛盟-复杂查询、多主键crud的实现方案、原理解析
⚠️工程分类:主体工程、基础配套工程、高级配套工程、拓展应用工程、辅助开发工具五大类。
主体工程:本系统业务工程,用于书写本系统相关的业务代码;
基础配套工程:业务工程运行所需的必要工程;如开发底座,系统管理相关功能包
高级配套工程:高级应用,比如需要将业务工程接入oauth2环境、将业务工程发布到cloud环境,才需要下载安装高级配套工程
拓展应用工程: 基于唛盟低代码平台拓展的应用工程,其后端可以单体发布,也可以以微服务方式发布,也可以打成jar被唛盟其它应用引入
辅助开发工具:指开发用到的一些工具
⚠️工程命名规范:业务名称+工程属性
工程属性如下:
-ui: 页面工程
-web: pc端运行的浏览器工程
-backend: 后端服务
-app: 安卓、ios等原生app工程
-uniapp: 基于uniapp开发的应用
-minapp: 小程序
-cloud: 微服务cloud环境
-oauth2: 统一认证中心
-bootstrap: 打包部署工程
唛盟属于前后端严格分离的一套系统,分为前端工程、后端工程两部分
mdp-cloud-backend 非必须
该工程作为spring cloud的扩展工程,如果需要将系统发布到spring cloud环境,需要下载该工程重新打包,不包含任何的业务功能,仅作为后端接入cloud环境使用
mdp-oauth2-backend 非必须
该工程为统一认证中心,作为spring oauth2的扩展工程,如果需要将系统接入oauth2环境,需要下载该工程重新打包,该工程实现分布式单点登陆;支持微信、支付宝、短信、账户密码等多种登陆方式
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. Open source ecosystem
2. Collaboration, People, Software
3. Evaluation model