106 lines
3.8 KiB
Markdown
106 lines
3.8 KiB
Markdown
# RuoYi-Vue springboot2 基线迁移实施记录
|
||
|
||
## 本次完成内容
|
||
|
||
- 以 `RuoYi-Vue/springboot2` 为基线覆盖当前仓库的框架层:
|
||
- 根 `pom.xml`
|
||
- `ruoyi-admin`
|
||
- `ruoyi-common`
|
||
- `ruoyi-framework`
|
||
- `ruoyi-generator`
|
||
- `ruoyi-quartz`
|
||
- `ruoyi-system`
|
||
- `ruoyi-ui`
|
||
- `sql` 基础脚本
|
||
- 恢复并接回业务模块与业务页面:
|
||
- `ruoyi-loan-pricing`
|
||
- `ruoyi-ui/src/views/loanPricing`
|
||
- `ruoyi-ui/src/api/loanPricing`
|
||
- `ruoyi-ui/src/router/index.js` 中的业务路由
|
||
- `ruoyi-admin` 中的业务配置
|
||
- 将 `ruoyi-loan-pricing` 从 Boot 3 / Java 17 写法回退到 Boot 2 / Java 8 可编译形态:
|
||
- 移除 `springdoc` 注解和依赖
|
||
- 将 `jakarta.*` 改回 `javax.*`
|
||
- 将 `String.repeat` 改为 Java 8 兼容实现
|
||
- 将模型调用改为模块内 `RestTemplate + form-urlencoded`
|
||
- 补回当前项目的“无 Redis”本地缓存实现:
|
||
- `InMemoryCacheEntry`
|
||
- `InMemoryCacheStats`
|
||
- `InMemoryCacheStore`
|
||
- 本地缓存版 `RedisCache`
|
||
- 本地缓存版 `CacheController`
|
||
- 调整前端业务依赖与脚本:
|
||
- 恢复 `crypto-js`
|
||
- 恢复 `splitpanes`
|
||
- 恢复 `ruoyi-ui/tests` 下 4 个业务测试脚本
|
||
- 恢复项目原有部署辅助脚本:
|
||
- `bin/prod/*.sh`
|
||
- `bin/restart_java_backend*.sh`
|
||
- 修正本地启动所需配置:
|
||
- `logback.xml` 日志目录改为项目内 `logs`
|
||
- `application.yml` 补齐 `swagger`、`redis`、`mybatis`
|
||
- 增加 `ruoyi-loan-pricing` 模块挂载和依赖声明
|
||
|
||
## 验证结果
|
||
|
||
### 后端编译验证
|
||
|
||
已通过:
|
||
|
||
- `export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home && export PATH="$JAVA_HOME/bin:$PATH" && mvn -pl ruoyi-admin -am -DskipTests package`
|
||
- `export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home && export PATH="$JAVA_HOME/bin:$PATH" && mvn -pl ruoyi-admin -am install -DskipTests`
|
||
|
||
### 前端构建验证
|
||
|
||
已通过:
|
||
|
||
- `source ~/.nvm/nvm.sh && nvm use 14.21.3 && npm install`
|
||
- `source ~/.nvm/nvm.sh && nvm use 14.21.3 && npm run build:prod`
|
||
|
||
### 前后端联调验证
|
||
|
||
已验证:
|
||
|
||
- 前端开发服务成功启动于 `http://localhost:1024`
|
||
- 浏览器打开 `http://localhost:1024/login`,页面标题显示为“若依管理系统”
|
||
- 浏览器点击登录后成功进入 `/index`
|
||
- 页面已实际渲染“流程列表”业务页面
|
||
- 通过前端代理访问 `http://localhost:1024/dev-api/captchaImage` 返回:
|
||
- `{"msg":"操作成功","code":200,"captchaEnabled":false}`
|
||
- 源码态后端在 `Java 8 + spring-boot:run` 模式下可启动成功
|
||
- 登录接口可成功返回 token:
|
||
- `POST /login`
|
||
|
||
## 联调中发现的遗留问题
|
||
|
||
浏览器进入系统后,页面出现两条后端错误提示:
|
||
|
||
1. 数据库缺少 `sys_notice_read` 表
|
||
2. `GET /loanPricing/workflow/list` 仍返回 `TooManyResultsException`
|
||
|
||
其中第 1 项已确认当前仓库 SQL 中已有对应建表语句:
|
||
|
||
- `sql/ry_20260330.sql`
|
||
- `sql/loan_pricing_prod_init_20260331.sql`
|
||
|
||
说明当前代码迁移已落地,但联调数据库尚未完全补齐到 `springboot2` 基线所需表结构。
|
||
|
||
第 2 项已经定位到当前运行态仍存在列表查询返回值与 MyBatis 映射结果不一致的问题,表现为:
|
||
|
||
- `GET /loanPricing/workflow/list?pageNum=1&pageSize=10`
|
||
- 返回:`{"msg":"nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 15","code":500}`
|
||
|
||
## 结论
|
||
|
||
本次代码迁移已经完成:
|
||
|
||
- 框架层已切回 `RuoYi-Vue springboot2`
|
||
- 业务模块和业务页面已接回
|
||
- Java 8 / Spring Boot 2 / Vue 2 的编译与构建链路已打通
|
||
- 浏览器已成功进入业务页面与登录链路
|
||
|
||
当前剩余问题集中在:
|
||
|
||
- 联调数据库尚未补齐 `sys_notice_read` 表
|
||
- `workflow/list` 运行态查询仍需继续收口
|