diff --git a/README.md b/README.md index 47c53349..ec3422d8 100644 --- a/README.md +++ b/README.md @@ -419,9 +419,9 @@ pnpm run build:prod #### 发布静态资源到测试\生产环境 ```bash -# 1.首先登录sit1-static并进入/data/nginx/html/lcode/下 +# 1.首先登录sit1-static并进入/data/nginx/html/xm/下 -cd /data/nginx/html/lcode/ +cd /data/nginx/html/xm/ # 如果有dist.rar需要先删除 rm -rf dist.rar @@ -430,7 +430,7 @@ rm -rf dist.rar rz # 3.在弹出的目录选择器中进入C:\Users\xxx\IdeaProjects\xm-ui-web\dist\目录下 -全选所有文件->右键->添加到dist.rar->选中dist.rar->上传到服务器商/data/nginx/html/lcode/目录下 +全选所有文件->右键->添加到dist.rar->选中dist.rar->上传到服务器商/data/nginx/html/xm/目录下 # 4.执行解压缩命令,至此静态资源发布完成 unrar x dist.rar @@ -448,6 +448,25 @@ unrar x dist.rar ``` + +##### xm相关api的映射配置(单体应用方式部署的后端) +``` + upstream api-gate-xm { + server 192.168.0.222:7067; + } + + location /api/m1/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; + } + ##### lcode相关api的映射配置(单体应用方式部署的后端) ``` upstream api-gate-lcode { @@ -571,27 +590,11 @@ crontab -l ### 🔔️ 开发计划与进度情况 #### 3.x.x (当前版本,已完成大部分内容) - -1. 后端底座提供el表达式沙箱环境,支持前端书写表达式上送后端,为0代码,ai的发展提供基础能力! -2. 后端提供无服务,无dao,无实体,无控制层的四无crud通用接口,为实现应用开发部署发布0耗时提供底座能力! -3. 提供数据模型子系统,为在线浏览数据,操作数据实体,构建数据集市提供底座基础!提供前端sql执行、sql结果动态展示等,支持在线修改表结构、在线预览结构信息、在线预览修改表数据等ddl、dml能力 -4. 进一步对ai编程提供一些底座能力 -5. 提供新版智能表单前后端,支持0代码设计、开发、发布一个表单功能(基于formCreate进行魔改),支持0耗时免部署 -6. 提供新版工作流编辑器 -7. 提供智能大屏,智能图表在线构造发布演示基础框架 -8. 提供任意接口任意字段起调ai,java,计算公式等能力 -9. 进一步整合lcode,将基础内容管理、数据模型、工作流、系统管理、应用超市(下单、购买、订单管理全套)整合进lcode -10. 提供docker版本,免编译快速部署(方便非it人士使用) -11. 提供自研单机版内存框架,本地跑不需要集成redis等第三方内存框架,提供redis的适配包,默认打包进bootstrap工程。上线内存管理自动切换到redis -12. 重构mdp-ui、mdp-ui-ext各个组件 -13. 前端公共配置项与VITE公共配置项整合 -14. 提供内置的图标浏览、选用功能 -15. 提供图片库浏览、选择图片、管理图片等功能 -16. 提供附件库浏览、选用、管理等功能 -17. 提供路由配置导入菜单表功能。(免去手工增删改查菜单的麻烦,升级改造调整菜单不再困难) -18. 每个子系统提供单体版、cloud版、oauth2版,版本之间免改代码自由切换。(免去选择困难症) -19. 字典功能、平台配置功能提供配置表动态配置功能,无须改改动表结构即可任意添加配置项,彻底告别加配置犯难症 -20. 字典配置、平台配置支持全面覆盖,无论在ui页面、java后端等提供自动加载、自动分布式分发、同步机制,彻底告别性能忧虑、前后端编码冲突打架的问题 +1. 所有的树状结构支持自由拖动,达到快速调整上下级关系目的 +2. 任务、故事、计划、里程碑、缺陷、测试计划等分别支持动态看板、支持甘特图浏览编辑等 +3. 增加预算管理、成本管理、预算与成本支出比对,任务结算管理等 +4. 立项、预算变更、成本变更等重大节点提供流程审批功能 +5. 进一步整合协同办公系统 #### 4.x.x (下一版本,让我们一起拥抱ai起飞吧) 1. 提供接入大模型能力 @@ -612,163 +615,7 @@ crontab -l ## 📝 常见问题 - -#### 本地前后端对接不上 -答复: -1.请排查[vite.config.ts](vite.config.ts)中的代理是否配置正确,详细配置说明参考前面关于前后端对接的说明; -2.请检查后端服务是否已启动,并查看配置文件关于服务监听端口是否与代理配置的端口一致; - -#### 前端pnpm install出现各种编译错误 -答复: -1.请排查node的版本是否是前面描述的指定版本; -2.请使用nvm进行node版本管理,具体请看 [如何切换node.js版本](#如何切换nodejs版本) - -#### 前端pnpm install时,下载缓慢如何解决 -答复:设置国内镜像 -```js -//查看源 -pnpm config get registry -//切换淘宝源 -pnpm config set registry https://registry.npmmirror.com/ -``` -#### 默认登录账户是什么? -答复:账户为: demo-branch-01 密码为: 888888 -演示环境大家切勿自行改密码 - -#### 超级管理员账户是什么? -答复: 账户为: superAdmin 密码为: 888888 -演示环境大家切勿自行改密码 - -#### 数据库脚本在哪? -答复: 数据库脚本一般存放在后端工程下的sql/文件夹下 -低代码的[xm-backend/xm/sql/lcode.sql](https://gitee.com/maimengcloud/xm-backend/tree/master/xm/sql) - -#### 数据库的编码是什么? -mysql的话,建议character set: utf8mb4, collation: utf8mb4_croatian_ci -mysql8以上 - -#### 为什么后端下载下来cloud的相关包报错 -答复:因为本地跑不需要cloud环境,cloud相关包是部署到cloud环境才需要的。您可以采取以下两种办法之一解决 -办法1. 找到根目录下的pom.xm文件,把cloud的模块注释掉 -```xml - - mdp-arc-mate - mdp-arc-pub - mdp-sys - mdp-lcode - mdp-lcode-bootstrap - - -``` -办法2. 下载[mdp-cloud-backend](https://gitee.com/maimengcloud/mdp-cloud-backend)工程,进行安装 - -#### 我只需要研发管理系统,需要看低代码平台么? -答复:需要的,原因:1.研发管理系统采用低代码中的框架开发,各种组件的使用说明,框架的说明介绍等都是放在低代码平台中。2.研发管理系统中的账户、角色权限、组织、字典、菜单等都是直接采用低代码平台的功能,研发管理系统必须结合低代码平台才能算是一个完整的产品。 - - -#### 如何切换node.js版本 -答复:请参考以下文章[nvm介绍、安装、报错处理以及使用](https://blog.csdn.net/weixin_46864830/article/details/124621343) -注意:请用管理员身份打开cmd命令窗口 -1.查看本地安装所有版本以及当前使用的版本,有可选参数available,显示所有可下载的版本 -```js -nvm list [available] -``` -2.查看到 node 版本后,推荐使用 LTS 中任意一个版本进行安装,命令中版本自定义,例如下 -```js -nvm install 21.1.0 -``` -3.使用 nvm 进行切换 node 版本使用特定版本 -```js -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.开发者需要检查以下配置: -1. [vite.config.ts proxy](vite.config.ts)是否配置了默认对唛盟官网请求的保底代理,如有,请删除。 -2. 如果不需要工作流,将VITE_WF_OPEN设为false,将不再发起代办的请求 -以下是需要工作流的情况: - -3. 如果需要工作流,请检查[vite.config.ts proxy](vite.config.ts)是否配置了对流程中心的请求代理,如果未配置,请查阅[流程整合](#流程编辑器的整合) -4. 统一流程中心启动配置项是否将 mdp.jwt.connect-oauth2-server配置为false? -```properties -mdp: - jwt: - connect-oauth2-server: false -``` -5. 统一流程中心中心的java工程启动项配置是不是未成功?(大部分初学者都是改了配置不生效,属于java工程未正确启动或者未正确编译) - -以上自检查确认后未解决问题,打开浏览器控制台截取交易报送信息及返回信息,联系唛盟客服。 - -### 本地跑单体需要redis吗? -答复:唛盟底座架构及各子系统默认完全剥离redis,采用自研的CacheHKV缓存框架。如果不需要分布式缓程,理论上不需要引入任何第三方缓存框架。但是CacheHKV设计并不是要真正做缓存框架,而是为了开发调试方便,上生产的时候,建议还是引入真正的缓存框架。 -### 引入redis缓存涉不涉及改代码? -答复: -1. 如果CacheHKV提供了足够的api,不涉及改代码,只需要在*-bootstrap打包工程中的pom.xml文件引入唛盟为redis开发的适配包即可。 -```properties - - com.mdp - mdp-boot-starter-redis - -``` -2. 如果CacheHKV提供的api无法满足需求,需要使用redis等第三方框架侵入式到代码中,可以在业务工程中的pom.xml引入mdp-boot-starter-redis,可以像普通的用法一样,绕过CacheHKV,直接使用redis的api. - -### CacheHKV的api能根redis的api混用吗? -答复:可以混用,你可以用CacheHKV put值,通过redis get值,同理,使用redis put值,通过CacheHKV取值也是一样的 - -### 菜单如何授权? -答复: 要回答这个问题,首先要理解唛盟菜单的机制。 -#### 唛盟菜单机制说明: -1. 唛盟菜单是不需要手动创建的,唛盟生态每个子系统内置了菜单自动导入功能,用超级管理登录即可看见 -2. 唛盟菜单同时支持前端配置菜单、后端配置菜单,两者可以混用,唛盟会进行合并形成最终的展示菜单 -3. 当然唛盟也同时支持前端授权、后端授权,两者可以混用,唛盟也会进行交叉授权检查,形成最终展示菜单 -#### 什么是前端授权 -答复: 前端授权即后台不配制任何菜单,前端也可以按自己的菜单授权逻辑控制菜单的显示也否。 -#### 前端授权的逻辑是怎么样的? -答复: 前端在路由meta.roles配置角色列表,告诉唛盟平台该菜单属于前端授权菜单。需要进行角色判断才能展示 -唛盟将会获取当前登录用户的角色列表与菜单上配置的角色列表进行匹配,匹配到任何一个即放行 -```js -{ - meta:{ - roles:['superAdmin','hrrs'] - } -} -``` -#### 什么是后端授权? -答复:后端授权指通过后台配置,将菜单按角色分配,达到控制不同角色能看到的菜单不同的目的 -前端框架底层将会按后端返回的菜单做以下操作: - 1. 前端带有meta.menu=true的路由,如果后端没有返回同名路由,说明该前端路由必须隐藏 - 2. 前端带有meta.menu=true的路由,如后端返回有同名路由,保留前端,剔除后端 - 3. 前端没有meta.menu的路由,默认不做处理,如果后端返回同名,则将后端剔除 - 4. 如果后端返回一个前端没有配置的路由,则需要添加到前端路由中 -#### 后端授权需要前端开发做什么? -答复:后端授权需要前端在路由配置中设置 meta.menu=true -```js -{ - meta:{ - menu:true - } -} -``` -#### 前端授权、后端授权同时配置会如何? -答复: 如果一个菜单既配置了meta.menu=true,同时配置了meta.roles,那么唛盟底层将以后端授权为准,忽略前端授权 -#### 超级管理员的授权问题 -答复: 超级管理员无视任何授权规则,一律放行 - -#### 后端动态菜单返回了其它子系统的菜单,如何解决? - 答复: 唛盟生态具有多个子系统,每个子系统都是可以导入各自菜单的,因此,势必造成后端菜单扎堆,那么如何进行菜单范围限制呢? -1. 在前端配置全局配置项。设定本应用的模块范围,在设定范围内的动态菜单才允许放行,否则忽略 - -2. 如果全局配置为空,则默认全部放行 -```js -VITE_MODULE_SCOPE=['模块编号1','模块编号2'] -``` - + 唛盟xm基于唛盟低代码平台开发,问题都是共性的,请到[唛盟低代码](https://gitee.com/maimengcloud/mdp-lcode-ui-web)查看相关内容 ## 💯 实践案例 1. [低代码平台](https://maimengcloud.com/lcode) @@ -777,7 +624,7 @@ VITE_MODULE_SCOPE=['模块编号1','模块编号2'] 3. [唛盟众包-网页](https://maimengcloud.com) 3. [项目管理-网页](https://maimengcloud.com/xm) 4. 项目管理-小程序 - drawing + drawing 5. [流程管理](https://maimengcloud.com/lcode/) ### 项目分支说明 @@ -791,17 +638,17 @@ VITE_MODULE_SCOPE=['模块编号1','模块编号2'] ## 🐞 交流讨论 、反馈 BUG、提出建议等 1. 快扫描下方左侧微信二维码和我们一起交流讨论吧!(备注 唛盟-mdp 进群) -drawing +drawing 2. 唛盟微信公众号查看一些基础教程 -drawing +drawing -3. 反馈 BUG、提出建议,欢迎新建:[issues](https://gitee.com/maimengcloud/mdp-lcode-ui-web/issues),开发人员会不定时查看回复。 +3. 反馈 BUG、提出建议,欢迎新建:[issues](https://gitee.com/maimengcloud/xm-ui-web/issues),开发人员会不定时查看回复。 4. 参与贡献,请查看[贡献指南](#🔨贡献指南)。 ## 💲 打赏 **感谢所有赞赏以及参与贡献的小伙伴,你们的支持是我们不断更新前进的动力!微信扫一扫,赏杯咖啡呗!** - drawing + drawing ## 🔔商务合作 diff --git a/docs/images/index/mm_logo_big.png b/docs/images/index/mm_logo_big.png new file mode 100644 index 00000000..14bfa549 Binary files /dev/null and b/docs/images/index/mm_logo_big.png differ diff --git a/docs/images/index/mm_pay_coffee.jpg b/docs/images/index/mm_pay_coffee.jpg new file mode 100644 index 00000000..d537c23d Binary files /dev/null and b/docs/images/index/mm_pay_coffee.jpg differ diff --git a/docs/images/index/mm_wx_kf_qrcode.png b/docs/images/index/mm_wx_kf_qrcode.png new file mode 100644 index 00000000..2aa43d69 Binary files /dev/null and b/docs/images/index/mm_wx_kf_qrcode.png differ diff --git a/docs/images/index/mm_wxapp_qrcode.png b/docs/images/index/mm_wxapp_qrcode.png new file mode 100644 index 00000000..0549d0b6 Binary files /dev/null and b/docs/images/index/mm_wxapp_qrcode.png differ diff --git a/docs/images/index/mm_wxpub_qrcode.png b/docs/images/index/mm_wxpub_qrcode.png new file mode 100644 index 00000000..551930c7 Binary files /dev/null and b/docs/images/index/mm_wxpub_qrcode.png differ