7.1 KiB
7.1 KiB
Tasks: WVP-Platform 迁移到 viewsh-module-video
Change ID: add-video-module-wvp-migration
Branch: feature/video-module
Phase 0: 前置检查
- T0.1
扫描 WVP 源码中的 Java 21 特性— 已完成,无 Java 21 专有语法,仅isBlank()(Java 11),风险消除 - T0.2 确认 WVP feature 分支的当前状态和内容
Phase 1: 代码搬迁与包结构调整
- T1.1 从
C:\workspace\java17\wvp-platform复制目标目录到 video-server- 复制
gb28181/、media/、aiot/、streamProxy/、streamPush/、vmanager/、service/、common/、utils/ - 复制
storager/(含 RedisCatchStorageImpl,被 67 个文件引用) - 复制
conf/中保留的配置类(SipConfig、MediaConfig、UserSetting、redis、websocket、ThreadPool、Schedule、CivilCodeFileConf、VersionConfig)
- 复制
- T1.2 全局替换包名
com.genersoft.iot.vmp→com.viewsh.module.video - T1.3 删除不迁移的文件
conf/security/全部conf/ftpServer/全部conf/MybatisConfig.javaconf/SpringDocConfig.javavmanager/user/全部jt1078/全部- UserMapper、RoleMapper、UserApiKeyMapper
- User.java、Role.java、LoginUser.java、JwtUser.java
- VManageBootstrap.java
- T1.4 复制资源文件
civilCode.csv(行政区划数据)
Phase 2: pom.xml 依赖补充 + 配置文件整合(可并行)
- T2.1 在
viewsh-module-video-server/pom.xml添加必须依赖- jain-sip-ri 1.3.0-91
- dom4j
- okhttp
- okhttp-digest 3.1.1
- bouncycastle bcprov-jdk18on 1.78.1
- fastjson2 + fastjson2-extension-spring6(不是 spring5)
- 不引入 pagehelper-spring-boot-starter
- T2.2 添加按需依赖
- paho.mqttv5 1.2.5
- jts-core 1.18.2
- cos_api 5.6.227(AI 截图)
- T2.3 在
viewsh-dependencies/pom.xml注册新依赖版本管理 - T2.4 在 application.yaml 中添加 SIP/Media/UserSettings/AI 配置段
- T2.5 在 application-local.yaml 中配置独立 video 数据库连接(
aiot-video) - T2.6 配置
spring.main.allow-circular-references=true(已有,确认保留)
Phase 3: RedisTemplate 隔离(必须在编译修复前完成)
- T3.1 改造 WVP 的
RedisTemplateConfig,Bean 名改为videoRedisTemplate(不覆盖框架默认 Bean) - T3.2 WVP 内部所有
@Autowired RedisTemplate的地方加@Qualifier("videoRedisTemplate")(涉及 30+ 文件:RedisRpcConfig、RedisCatchStorageImpl 等)
Phase 4: 多租户配置
- T4.1 在 application.yaml 配置多租户忽略表
viewsh: tenant: ignore-tables: - wvp_media_server不需要自定义基类,业务表 DO 直接继承
TenantBaseDO,共享表 DO 继承BaseDO
Phase 5: 按域迭代 — 编译修复 + ORM 改造(合并执行)
Phase 3/4 原本分开的编译修复和 ORM 改造合并为一个阶段,按业务域迭代推进,每个域完成后做一次 mvn compile 验证。
5.1 GB28181 域(核心,最先做)
- T5.1.1 修复 gb28181/ 编译错误(认证引用、用户引用、JT1078 引用)
- T5.1.2 DO 改造:Device/DeviceChannel/Platform/PlatformChannel/CommonGroup/CommonRegion/DeviceAlarm/DeviceMobilePosition → 加 @TableName、继承 TenantBaseDO
- T5.1.3 Mapper 改造:DeviceMapper、DeviceChannelMapper、PlatformMapper、PlatformChannelMapper、GroupMapper、RegionMapper、CommonGBChannelMapper、DeviceAlarmMapper、DeviceMobilePositionMapper → 继承 BaseMapperX,复杂 SQL 保留 @Select
- T5.1.4
mvn compile验证 gb28181 域
5.2 Media + Storager 域
- T5.2.1 修复 media/ 和 storager/ 编译错误
- T5.2.2 DO 改造:MediaServer(继承 BaseDO,无租户)、StreamInfo、CloudRecord/RecordPlan/RecordPlanItem(继承 TenantBaseDO)
- T5.2.3 Mapper 改造:MediaServerMapper、CloudRecordServiceMapper、RecordPlanMapper
- T5.2.4
mvn compile验证 media + storager 域
5.3 StreamProxy + StreamPush 域
- T5.3.1 修复编译错误
- T5.3.2 DO + Mapper 改造:StreamProxy、StreamPush
- T5.3.3
mvn compile验证
5.4 AI 域
- T5.4.1 修复 aiot/ 编译错误
- T5.4.2 DO 改造:AiAlert/AiAlgorithm/AiAlgoTemplate/AiRoi/AiRoiAlgoBind/AiCameraSnapshot/AiConfigLog/AiEdgeDevice
- T5.4.3 Mapper 改造(全部低复杂度)
- T5.4.4
mvn compile验证 AI 域
5.5 Vmanager + Service + Common 域
- T5.5.1 修复 vmanager/(去掉 user/)、service/、common/ 编译错误
- T5.5.2
mvn compile全量验证通过
5.6 硬删除改逻辑删除(跨域)
- T5.6.1 全局搜索
@Delete和DELETE FROM,将 39 处硬删除改为 BaseMapperX 的deleteById()/delete(wrapper) - T5.6.2 排查通道同步、级联取消共享等场景,确认逻辑删除后的业务语义正确
5.7 Service 层分页适配(跨域)
- T5.7.1 PageHelper.startPage() → MyBatis Plus Page + selectPage()
- T5.7.2 PageInfo → PageResult
Phase 6: 认证与安全整合
- T6.1 更新 SecurityConfiguration,放行 Hook 和公开路径
/index/hook/**→ permitAll(ZLM 回调)/video/device/query/snap/**→ permitAll(设备快照)/video/sse/**→ permitAll(SSE 推送)
- T6.2 Controller 中用户获取方式替换
- WVP SecurityUtils → viewsh SecurityFrameworkUtils
- T6.3 删除 WVP 的
user-settings.interface-authentication逻辑
Phase 7: Controller 路径适配
- T7.1 所有 Controller 移到
controller/admin/包下 - T7.2 调整 @RequestMapping 路径
/api/device/*→/video/device/*/api/gb28181/*→/video/gb28181/*/api/common/channel/*→/video/channel/*/api/ai/*→/video/ai/*
- T7.3 Hook 回调 Controller 保持
/index/hook/*路径,网关加透传路由
Phase 8: 数据库迁移
- T8.1 编写
aiot-video数据库初始化 SQL- 基于 WVP
数据库/2.7.4/初始化-mysql-2.7.4.sql - 去掉 user/role/api_key 表和 jt1078 表
- 业务表加
tenant_id BIGINT NOT NULL DEFAULT 0(多租户) - 共享表(wvp_media_server)不加 tenant_id
- 每张表加
creator VARCHAR(64) DEFAULT '',updater VARCHAR(64) DEFAULT '' create_time/update_time字段类型统一为DATETIME- 每张表加
deleted BIT(1) NOT NULL DEFAULT 0(逻辑删除) - 含唯一索引的表(device、device_channel、platform、media_server、stream_proxy、stream_push、common_group、common_region),将
deleted加入联合唯一索引
- 基于 WVP
- T8.2 导入 AI 模块表(从
数据库/aiot/初始化-mysql-aiot.sql) - T8.3 编写初始化数据(默认媒体服务器配置等)
Phase 9: 验证与收尾
- T9.1
mvn compile全量编译通过 - T9.2 VideoServerApplication 启动成功,SIP 端口监听正常
- T9.3 Swagger 文档可访问
- T9.4 网关路由验证
- T9.5 SIP 设备注册测试
- T9.6 提交并整理 commit history