diff --git a/README.md b/README.md index 5bb9e0ef..e023751d 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,3 @@ -## 重点注意事项 - -若依文档对事务注解的描述 [关于事务](https://doc.ruoyi.vip/ruoyi/document/htsc.html#%E4%BA%8B%E5%8A%A1%E7%AE%A1%E7%90%86) 以下对多数据源事务做补充: -* 同一个事务下是无法切换数据源的 -* 禁止 父方法使用 @Transactional 创建事务 子方法使用 @DataSource 切换数据源 -* 正确用法: 子方法单独创建事务 或 父方法使用 @Transactional(propagation = Propagation.REQUIRES_NEW) 为所有子方法创建新事务 - -关于如何使用Tomcat -* 查看ruoyi-framework模块的pom.xml文件,根据注释更改依赖 -* 查看ruoyi-admin模块中的application.yml文件,根据注释更改配置 - -关于如何创建新模块 -* 参考ruoyi-demo模块 -* 需要改动: 父pom 与 admin模块pom - -关于树表生成 -* 直接在mysql表中 添加 parentId orderNum 等字段(根据需要参考 TreeEntity类) -* 代码生成选择树表生成即可 - -关于数据权限 -* @DataScope 注解代码生成仅支持在 Controller list 方法使用 -* 其余方法如要使用 需参考 list 方法实现在 LambdaQueryWrapper 注入数据权限生成的 SQL 语句 - ## 修改RuoYi功能 * ORM框架 使用 Mybatis-Plus 简化CRUD (目前支持单表生成与树表 不支持主子表) @@ -30,6 +7,7 @@ * 代码生成模板 改为适配 Mybatis-Plus 的代码 * 代码生成模板 拆分出Vo,QueryBo,AddBo,EditBo等领域对象 * 项目修改为 maven多环境配置 +* 项目配置修改为 application.yml 统一管理 * swagger 修改为 knife4j * 集成 Hutool 5.X 并重写RuoYi部分功能 * 集成 Feign 接口化管理 Http 请求(如三方请求 支付,短信,推送等) @@ -54,6 +32,28 @@ * 提供了单应用版本[RuoYi-Vue-fast](https://github.com/yangzongzhuan/RuoYi-Vue-fast),Oracle版本[RuoYi-Vue-Oracle](https://github.com/yangzongzhuan/RuoYi-Vue-Oracle),保持同步更新。 * 不分离版本,请移步[RuoYi](https://gitee.com/y_project/RuoYi),微服务版本,请移步[RuoYi-Cloud](https://gitee.com/y_project/RuoYi-Cloud) +## 重点注意事项 + +若依文档对事务注解的描述 [关于事务](https://doc.ruoyi.vip/ruoyi/document/htsc.html#%E4%BA%8B%E5%8A%A1%E7%AE%A1%E7%90%86) 以下对多数据源事务做补充: +* 同一个事务下是无法切换数据源的 +* 禁止 父方法使用 @Transactional 创建事务 子方法使用 @DataSource 切换数据源 +* 正确用法: 子方法单独创建事务 或 父方法使用 @Transactional(propagation = Propagation.REQUIRES_NEW) 为所有子方法创建新事务 + +关于如何使用Tomcat +* 查看ruoyi-framework模块的pom.xml文件,根据注释更改依赖 +* 查看ruoyi-admin模块中的application.yml文件,根据注释更改配置 + +关于如何创建新模块 +* 参考ruoyi-demo模块 +* 需要改动: 父pom 与 admin模块pom + +关于树表生成 +* 直接在mysql表中 添加 parentId orderNum 等字段(根据需要参考 TreeEntity类) +* 代码生成选择树表生成即可 + +关于vue与boot整合部署 +* [前端静态资源如何整合到后端访问](https://doc.ruoyi.vip/ruoyi-vue/other/faq.html#前端静态资源如何整合到后端访问) + ## 内置功能 1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 diff --git a/pom.xml b/pom.xml index 74ccf9d3..4b35d5d3 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ RuoYi-Vue-Plus后台管理系统 - 1.0.1 + 1.0.2 UTF-8 UTF-8 1.8 diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 85007285..6ab30306 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -79,6 +79,10 @@ spring: restart: # 热部署开关 enabled: true + # 与vue整合部署使用 + thymeleaf: + # 将系统模板放置到最前面 否则会与 springboot-admin 页面冲突 + template-resolver-order: 1 application: name: ruoyi-vue-plus boot: diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/AdminServerConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/AdminServerConfig.java index 5fa65c1e..59fed507 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/AdminServerConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/AdminServerConfig.java @@ -1,15 +1,25 @@ package com.ruoyi.framework.config; import de.codecentric.boot.admin.server.config.EnableAdminServer; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration; +import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties; import org.springframework.boot.task.TaskExecutorBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.thymeleaf.dialect.IDialect; +import org.thymeleaf.spring5.ISpringTemplateEngine; +import org.thymeleaf.spring5.SpringTemplateEngine; +import org.thymeleaf.templateresolver.ITemplateResolver; +import java.util.Comparator; +import java.util.LinkedHashSet; +import java.util.Set; import java.util.concurrent.Executor; +import java.util.stream.Collectors; /** * springboot-admin server配置类 @@ -26,4 +36,28 @@ public class AdminServerConfig { public ThreadPoolTaskExecutor applicationTaskExecutor(TaskExecutorBuilder builder) { return builder.build(); } + + /** + * 解决 admin 与 项目 页面的交叉引用 将 admin 的路由放到最后 + * @param properties + * @param templateResolvers + * @param dialects + * @return + */ + @Bean + @ConditionalOnMissingBean(ISpringTemplateEngine.class) + SpringTemplateEngine templateEngine(ThymeleafProperties properties, + ObjectProvider templateResolvers, ObjectProvider dialects) { + SpringTemplateEngine engine = new SpringTemplateEngine(); + engine.setEnableSpringELCompiler(properties.isEnableSpringElCompiler()); + engine.setRenderHiddenMarkersBeforeCheckboxes(properties.isRenderHiddenMarkersBeforeCheckboxes()); + templateResolvers.orderedStream().forEach(engine::addTemplateResolver); + dialects.orderedStream().forEach(engine::addDialect); + Set templateResolvers1 = engine.getTemplateResolvers(); + templateResolvers1 = templateResolvers1.stream() + .sorted(Comparator.comparing(ITemplateResolver::getOrder)) + .collect(Collectors.toCollection(LinkedHashSet::new)); + engine.setTemplateResolvers(templateResolvers1); + return engine; + } } diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json index 58ee98df..c48cb3b5 100644 --- a/ruoyi-ui/package.json +++ b/ruoyi-ui/package.json @@ -1,6 +1,6 @@ { "name": "ruoyi-vue-plus", - "version": "1.0.1", + "version": "1.0.2", "description": "RuoYi-Vue-Plus后台管理系统", "author": "LionLi", "license": "MIT",