UniMax 项目升级版本 V4.5 -> V5.0

Tips: 此为 V4.5 升级到 V5.0 的操作记录,仅供参考。现在最新的产品版本请咨询技术中心(不确定是否为 V5.1.3)。

文档:UniMaxFPS 平台版本升级记录(v4-v5)….

链接:http://note.youdao.com/noteshare?id=d8882095064293a0b635686b1ffb878c&sub=FA014DEA5EAC4B059684181D7F99EDE8

Epichust-UniMaxFPS 版本升级记录(V4.5 -> V5.0)

–@ acted by yuanbao at 20210301

1 背景

UniMaxFPS 产品是在 UniMax V4.5 基础上根据排程业务做的一版产品,已有部分功能。

波总提出要升级依赖到 5.0。

调整的目标依赖平台和产品版本分别为:

  • 平台版本:4.0.3.19
  • 产品版本:5.0.0.3-SNAPSHOT

代码地址:

数据库:

2 后端调整步骤

2.1 改 POM 文件

调整 pom 中对平台、产品的依赖的版本,有些依赖以 V5 的为准,UniMaxFPS 中有两个自身的工具依赖:

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.10</version>
</dependency>
<dependency>
	<groupId>cn.hutool</groupId>
	<artifactId>hutool-all</artifactId>
	<version>5.5.1</version>
</dependency>

tips:注意不要重复依赖。

附 pom 文件: pom.xml

2.2 更新下载依赖包后拷贝

maven clean
maven install

tips:由于加密系统,本人是使用虚拟机里的 maven/svn 进行镜像文件、代码的同步。同步后,需要将相关内容拷贝至虚拟机以外的本地磁盘中,注意主要拷贝 com/epichust/ 下的 UniMax-A 和 mestarl 两个文件夹下对应版本的文件夹拷贝至本地,不要弄错文件夹,不要有遗漏。
另外,拷贝前最好对文件夹进行一次解密申请,避免拷贝的是加密的 war 包文件等。(已踩坑)

2.3 拷贝 WEN-INF/ 下的 web.xml 和 jar 包

拷贝 web.xml 文件替换,修改其中关于项目名称的内容。

拷贝 lib/ 下的低代码工具 jar 包。

2.4 修改 applicationContext-security.xml 文件

平台登录跳转拦截验证改为 token 方式,需要修改之前的设置,否则 vue 前端登录无法获取对应格式的响应。

做法:拷贝 V5 中的 applicationContext-security.xml 文件替换。

附该 xml 文件:applicationContext-security.xml

2.5 redis 相关设置

之前的操作,已经可以实现 maven 成功打出 war 包。

启动服务时,报错:

redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect timed out

解决:

把依赖包中的 spring-jedis.xml 文件拷贝到项目的 spring/ 下,查看 xml 文件内容决定是否要设置密码。注释掉即不设置密码

20210301185416

修改本地的 redis.properties 配置文件,根据是否要密码决定是否保留 redis.pass=123456 这一行,增加 redis.testWhileIdle=true 等变量(建议直接拷贝文件内容)。然后启动对应版本(是否带密码)的 redis。

附文件:spring-jedis.xml | redis.properties

tips:到此,个人建议重启一次电脑,防止 IDEA 相关设置导致 maven 依赖问题。(自己踩坑,依赖 v5,服务也确实启动成功了,然而部分服务没有走 v5 的,也有可能是 tomcat 设置问题。)

2.6 数据库调整

1> activiti 版本升级,4.5 产品的 activiti 为 5.15.1,v5.0 的为 5.22.0.0

image-20210304115604125

2> 菜单表增加字段 menu_type_flag

脚本如下:

-- Add/modify columns 
alter table MTS_MENU add menu_type_flag VARCHAR2(32);
-- Add comments to the columns 
comment on column MTS_MENU.menu_type_flag
 is '菜单标识(区分产品/项目)';

3 前端 VUE

3.1 修改.babelrc 文件

注释掉其中 modules:false 这一行。前端项目可正常启动。nginx 配置启动参考另一个笔记。

附 nginx 配置文件:nginx-fps.conf | 1-nginx_start- 启动 Nginx - fps.bat

3.2 基础:挂菜单,三个基础菜单的导入

分别是:用户管理、菜单定义、角色管理

insert into MTS_MENU (GID, NAME, TARGET, REL, IS_RELOAD, IS_EXPAND, IS_EXTERNAL, HREF, SEQUENCE, WIDTH, HEIGHT, PARENT_ID, TRANSACTION_CODE, TRANSACTION_CODE_DESC, EXTENDED_FIELD1, EXTENDED_FIELD2, CREATE_DATE, CREATE_ID, MODIFY_DATE, MODIFY_ID, LV, SYSTEM_FLAG, IS_DELETE, IS_ACTIVE, DELETED, DATA_ROLE, DATA_ROLE1, DATA_ROLE2, UDA1C, UDA1N, UDA2C, UDA2N, UDA3C, UDA3N, UDA4C, UDA4N, UDA5C, UDA5N, UDA1, UDA2, UDA3, UDA4, UDA5, MENU_TYPE_FLAG)
values ('402883fa422cc13701422ce35be3yb01', '用户管理vue', 'navTab', 'pmbbUser', 'true', 'false', 'true', 'umasysmanage/requestControl/pmbbUser', 1, 800, 480, '4028b8813a4991fe013a49cb313b0011', null, null, 'taglib-ui-desktop-icon-usermanagement', null, to_date('04-03-2021 14:09:27', 'dd-mm-yyyy hh24:mi:ss'), 'yuanbao', to_date('04-03-2021 14:09:27', 'dd-mm-yyyy hh24:mi:ss'), 'yuanbao', 2, 'SYSTEM', 0, 0, null, '-1', '-1', '0', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);

insert into MTS_MENU (GID, NAME, TARGET, REL, IS_RELOAD, IS_EXPAND, IS_EXTERNAL, HREF, SEQUENCE, WIDTH, HEIGHT, PARENT_ID, TRANSACTION_CODE, TRANSACTION_CODE_DESC, EXTENDED_FIELD1, EXTENDED_FIELD2, CREATE_DATE, CREATE_ID, MODIFY_DATE, MODIFY_ID, LV, SYSTEM_FLAG, IS_DELETE, IS_ACTIVE, DELETED, DATA_ROLE, DATA_ROLE1, DATA_ROLE2, UDA1C, UDA1N, UDA2C, UDA2N, UDA3C, UDA3N, UDA4C, UDA4N, UDA5C, UDA5N, UDA1, UDA2, UDA3, UDA4, UDA5, MENU_TYPE_FLAG)
values ('402883fa422cc13701422ce35be3yb03', '角色管理vue', 'navTab', 'role', 'true', 'false', 'true', 'umasysmanage/requestControl/role', 1, 800, 480, '4028b8813a4991fe013a49cb313b0011', null, null, 'taglib-ui-desktop-icon-usermanagement', null, to_date('04-03-2021 14:09:27', 'dd-mm-yyyy hh24:mi:ss'), 'yuanbao', to_date('04-03-2021 14:09:27', 'dd-mm-yyyy hh24:mi:ss'), 'yuanbao', 2, 'SYSTEM', 0, 0, null, '-1', '-1', '0', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);

insert into MTS_MENU (GID, NAME, TARGET, REL, IS_RELOAD, IS_EXPAND, IS_EXTERNAL, HREF, SEQUENCE, WIDTH, HEIGHT, PARENT_ID, TRANSACTION_CODE, TRANSACTION_CODE_DESC, EXTENDED_FIELD1, EXTENDED_FIELD2, CREATE_DATE, CREATE_ID, MODIFY_DATE, MODIFY_ID, LV, SYSTEM_FLAG, IS_DELETE, IS_ACTIVE, DELETED, DATA_ROLE, DATA_ROLE1, DATA_ROLE2, UDA1C, UDA1N, UDA2C, UDA2N, UDA3C, UDA3N, UDA4C, UDA4N, UDA5C, UDA5N, UDA1, UDA2, UDA3, UDA4, UDA5, MENU_TYPE_FLAG)
values ('402883fa422cc13701422ce35be3yb02', '菜单定义vue', 'navTab', 'menu', 'true', 'false', 'true', 'umasysmanage/menuSettings/menu', 1, 800, 480, '4028b8813a4991fe013a49cb313b0011', null, null, 'taglib-ui-desktop-icon-usermanagement', null, to_date('04-03-2021 14:09:27', 'dd-mm-yyyy hh24:mi:ss'), 'yuanbao', to_date('04-03-2021 14:09:27', 'dd-mm-yyyy hh24:mi:ss'), 'yuanbao', 2, 'SYSTEM', 0, 0, null, '-1', '-1', '0', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);

菜单绑定角色:

insert into MTS_ROLE_MENU (MENU_ID, ROLE_ID)
values ('402883fa422cc13701422ce35be3yb01', '4028b8813cfa74c5013cfaa4c27f0005');

insert into MTS_ROLE_MENU (MENU_ID, ROLE_ID)
values ('402883fa422cc13701422ce35be3yb02', '4028b8813cfa74c5013cfaa4c27f0005');

insert into MTS_ROLE_MENU (MENU_ID, ROLE_ID)
values ('402883fa422cc13701422ce35be3yb03', '4028b8813cfa74c5013cfaa4c27f0005');

数据维护后,需要清理浏览器的缓存

方式 :F12 -> Application ->Storage 下 清理 local storage 和 session storage 的缓存。

3.3 操作权限问题

要求:权限表新增一条数据名称为 SYSTEM_ADMIN

** 原因:** 前端操作更改调用接口如果是 sys* 的,要求有这个权限,否则操作无效。

img

垂直越权的限制

image-20210304162526604

解决

  1. MTS_AUTHORITY 表插入一条名称为 SYSTEM_ADMIN 的数据
  2. MTS_ROLE_AUTHORITY 表插入一条数据,绑定 SYSTEM_ADMIN 的角色编码和 SYSTEM_ADMIN 的权限。

sql 脚本如下:

insert into MTS_AUTHORITY (GID, NAME, RESOURCE_ID, TYPE, CREATE_DATE, CREATE_ID, MODIFY_DATE, MODIFY_ID, IS_DELETE, IS_ACTIVE, DELETED, DATA_ROLE, DATA_ROLE1, DATA_ROLE2, UDA1C, UDA1N, UDA2C, UDA2N, UDA3C, UDA3N, UDA4C, UDA4N, UDA5C, UDA5N, UDA1, UDA2, UDA3, UDA4, UDA5)
values ('4028b8813cfa74c5013cfa89e4440001', 'SYSTEM_ADMIN', null, null, to_date('18-10-2012 13:00:00', 'dd-mm-yyyy hh24:mi:ss'), 'root', to_date('18-10-2012 13:00:00', 'dd-mm-yyyy hh24:mi:ss'), 'root', 0, 0, null, '-1', '-1', '0', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);

insert into MTS_ROLE_AUTHORITY (ROLE_ID, AUTHORITY_ID)
values ('4028b8813cfa74c5013cfaa423b00004', '4028b8813cfa74c5013cfa89e4440001');

踩坑:

IDEA 有关:

此前已有 V4,我是复制了整个文件夹后命名为 UniMaxFPS-V5。

坑 1:后台服务启动后,前端调用后台服务,服务返回请求结果不对。

原因:依赖问题,仍然依赖的是 V4.5,不能成功依赖 V5.0,有些服务没有按 5.0 的方式走,需要删除相关配置,重新更新依赖。

坑 2:后台在依赖产品中设置断点如 homeController.class 中,断点调试无法进入断点。

原因:发现依赖的包中该类应该被解压放到 overlays 文件夹中,而此时该文件夹为空,取的 class 类为外部库 External Libraries 中的,这样导致的问题。

尝试解决:关闭 IDEA 删除项目文件下.idea、overlays、target 文件夹和.iml 文件,启动 IDEA 重新构建,maven 更新。
还是不能到这些 class 类的断点处,可到断点的方法上。其他类断点正常。

V5 前端 -VUE 笔记请查看:V5 前端笔记

0 打赏
打赏 2 积分后可见