diff --git a/README.md b/README.md
index 5afd26d43..45efbab12 100644
--- a/README.md
+++ b/README.md
@@ -12,12 +12,13 @@ WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的开箱即用的网
流媒体服务基于@夏楚 ZLMediaKit [https://github.com/ZLMediaKit/ZLMediaKit](https://github.com/ZLMediaKit/ZLMediaKit)
播放器使用@dexter jessibuca [https://github.com/langhuihui/jessibuca/tree/v3](https://github.com/langhuihui/jessibuca/tree/v3)
-前端页面基于@Kyle MediaServerUI [https://gitee.com/kkkkk5G/MediaServerUI](https://gitee.com/kkkkk5G/MediaServerUI) 进行修改.
+播放器使用@Numberwolf-Yanlong h265web.js [https://github.com/numberwolf/h265web.js](https://github.com/numberwolf/h265web.js)
+前端页面基于vue-admin-template构建 [https://github.com/PanJiaChen/vue-admin-template?tab=readme-ov-file](https://github.com/PanJiaChen/vue-admin-template?tab=readme-ov-file)
# 应用场景:
支持浏览器无插件播放摄像头视频。
支持国标设备(摄像机、平台、NVR等)设备接入
-支持非国标(onvif, rtsp, rtmp,直播设备等等)设备接入,充分利旧。
+支持rtsp, rtmp,直播设备设备接入,充分利旧。
支持国标级联。多平台级联。跨网视频预览。
支持跨网网闸平台互联。
@@ -29,19 +30,31 @@ ZLM使用文档 [https://github.com/ZLMediaKit/ZLMediaKit](https://github.com/ZL
# 付费社群
[](https://t.zsxq.com/0d8VAD3Dm)
> 收费是为了提供更好的服务,也是对作者更大的激励。加入星球的用户三天后可以私信我留下微信号,我会拉大家入群。加入三天内不满意可以直接自行推出,星球会直接退款给大家。
-> 星球还提供了基于主线master分支的打包, 会随时更新。
-# gitee同步仓库
+> 星球还提供了包括闭源的全功能试用包, 会随时更新。
+
+# gitee仓库
https://gitee.com/pan648540858/wvp-GB28181-pro.git
# 截图
-
-
-
-
-
-
-
+
+
+ 登录页面 |
+ 首页 |
+
+
+ 分屏播放 |
+ 国标设备列表 |
+
+
+ 行政区划管理 |
+ 业务分组管理 |
+
+
+ 录制计划 |
+ 平台信息 |
+
+
# 功能特性
- [X] 集成web界面
@@ -117,10 +130,10 @@ https://gitee.com/pan648540858/wvp-GB28181-pro.git
- [X] 支持国标信令集群
-# 非开源的内容
-- [X] ONVIF设备的接入,支持点播,云台控制,国标级联点播,自动点播。试用安装包以及使用教程: [知识星球](https://t.zsxq.com/10WAnH2MP),没有使用时间限制,需要源码可以星球私信我或者邮箱联系。
+# 闭源内容
+- [X] ONVIF设备的接入,支持点播,云台控制,国标级联点播,自动点播。
- [X] 支持部标1078+808协议,支持点播,云台控制,录像回放,位置上报,自动点播。
-- [X] 支持国标28181-2022协议,支持巡航轨迹查询,PTZ精准控制,存储卡格式化,设备软件升级,OSD配置,h265+aac,支持辅码流,录像倒放等。具体的功能列表可在[知识星球](https://t.zsxq.com/18GXkpkqs)查看,试用安装包: [知识星球](https://t.zsxq.com/UJ6V3),没有使用时间限制,需要源码可以星球私信我或者邮箱联系。
+- [X] 支持国标28181-2022协议,支持巡航轨迹查询,PTZ精准控制,存储卡格式化,设备软件升级,OSD配置,h265+aac,支持辅码流,录像倒放等。
# 授权协议
@@ -131,19 +144,14 @@ https://gitee.com/pan648540858/wvp-GB28181-pro.git
[知识星球](https://t.zsxq.com/0d8VAD3Dm)专栏列表:,
- [使用入门系列一:WVP-PRO能做什么](https://t.zsxq.com/0dLguVoSp)
-有偿技术支持,请发送邮件到648540858@qq.com
+有偿技术支持,一对一开发辅导,闭源内容合作请发送邮件到648540858@qq.com咨询
# 致谢
感谢作者[夏楚](https://github.com/xia-chu) 提供这么棒的开源流媒体服务框架,并在开发过程中给予支持与帮助。
-感谢作者[dexter langhuihui](https://github.com/langhuihui) 开源这么好用的WEB播放器。
-感谢作者[Kyle](https://gitee.com/kkkkk5G) 开源了好用的前端页面
+感谢作者[dexter langhuihui](https://github.com/langhuihui)和[Numberwolf-Yanlong](https://github.com/numberwolf/h265web.js) 开源这么好用的WEB播放器。
感谢各位大佬的赞助以及对项目的指正与帮助。包括但不限于代码贡献、问题反馈、资金捐赠等各种方式的支持!以下排名不分先后:
[lawrencehj](https://github.com/lawrencehj) [Smallwhitepig](https://github.com/Smallwhitepig) [swwhaha](https://github.com/swwheihei)
[hotcoffie](https://github.com/hotcoffie) [xiaomu](https://github.com/nikmu) [TristingChen](https://github.com/TristingChen)
[chenparty](https://github.com/chenparty) [Hotleave](https://github.com/hotleave) [ydwxb](https://github.com/ydwxb)
[ydpd](https://github.com/ydpd) [szy833](https://github.com/szy833) [ydwxb](https://github.com/ydwxb) [Albertzhu666](https://github.com/Albertzhu666)
[mk1990](https://github.com/mk1990) [SaltFish001](https://github.com/SaltFish001)
-
-同时感谢JetBrains对开源项目的支持,本项目使用IntelliJ IDEA开发与调试:
-
-
diff --git a/doc/_content/ability/_media/img_16.png b/doc/_content/ability/_media/img_16.png
index 5a27be09b..3564dd0e6 100644
Binary files a/doc/_content/ability/_media/img_16.png and b/doc/_content/ability/_media/img_16.png differ
diff --git a/doc/_content/ability/_media/img_17.png b/doc/_content/ability/_media/img_17.png
index 483d522a3..588628602 100644
Binary files a/doc/_content/ability/_media/img_17.png and b/doc/_content/ability/_media/img_17.png differ
diff --git a/doc/_content/ability/_media/img_19.png b/doc/_content/ability/_media/img_19.png
index 5cf2d42a1..f5242af2a 100644
Binary files a/doc/_content/ability/_media/img_19.png and b/doc/_content/ability/_media/img_19.png differ
diff --git a/doc/_content/ability/_media/img_21.png b/doc/_content/ability/_media/img_21.png
index 19c7762ab..560e2a745 100644
Binary files a/doc/_content/ability/_media/img_21.png and b/doc/_content/ability/_media/img_21.png differ
diff --git a/doc/_content/ability/_media/img_22.png b/doc/_content/ability/_media/img_22.png
index f6aa8c4cf..b48e15cfa 100644
Binary files a/doc/_content/ability/_media/img_22.png and b/doc/_content/ability/_media/img_22.png differ
diff --git a/doc/_content/ability/_media/img_23.png b/doc/_content/ability/_media/img_23.png
index 91be357ef..8e1f454e5 100644
Binary files a/doc/_content/ability/_media/img_23.png and b/doc/_content/ability/_media/img_23.png differ
diff --git a/doc/_content/ability/channel.md b/doc/_content/ability/channel.md
index adfe0ee76..36dda2b31 100644
--- a/doc/_content/ability/channel.md
+++ b/doc/_content/ability/channel.md
@@ -8,15 +8,18 @@
左侧树结构为行政区划结构, 通过数据鼠标右键可以操作,包括: 刷新节点,新建节点,编辑节点,删除节点,添加设备(
可以将某个国标设备下的通道全部添加道某一个节点下),移除设备(可以将某个国标设备下的通道全部从这个节点移除)
-右侧伪通道列表, 对于非国标接入的设备只有配置了国标编号后才可以在这里进行操作, 添加状态选择"未添加"可以进行添加操作,选择"
-已添加"进行移除操作
-
+右侧伪通道列表, 对于非国标接入的设备只有配置了国标编号后才可以在这里进行操作。
+选择左侧的节点后,可以点击右侧的“添加通道”, 选择需要的通道添加到改节点下,如果找不到通道, 可以选择“异常挂载通道”,点击清理后重新回来选择。
+
## 业务分组
左侧树结构为业务分组结构, 通过数据鼠标右键可以操作,包括: 刷新节点,新建节点,编辑节点,删除节点,添加设备(
可以将某个国标设备下的通道全部添加道某一个节点下),移除设备(可以将某个国标设备下的通道全部从这个节点移除)
业务分组下不能挂载设备,所以没有选择该节点的单选框.
-右侧伪通道列表, 对于非国标接入的设备只有配置了国标编号后才可以在这里进行操作, 添加状态选择"未添加"可以进行添加操作,选择"
-已添加"进行移除操作
-
\ No newline at end of file
+右侧为通道列表, 对于非国标接入的设备只有配置了国标编号后才可以在这里进行操作。
+
+选择左侧的节点后,可以点击右侧的“添加通道”, 选择需要的通道添加到改节点下。
+如果找不到通道, 可以选择“异常挂载通道”,点击清理后重新回来选择。
+注意,根资源组下的那一级为业务分组类型不可以直接挂载设备,需要继续建立节点,后续的节点的都是虚拟组织类型, 就可以挂载通道了。
+
diff --git a/doc/_content/ability/cloud_record.md b/doc/_content/ability/cloud_record.md
index 716a614fe..14beff766 100644
--- a/doc/_content/ability/cloud_record.md
+++ b/doc/_content/ability/cloud_record.md
@@ -2,7 +2,7 @@
# 云端录像
-
+
云端录像是对录制在zlm服务下的录像文件的管理,录像的文件路径默认在ZLM/www/record下。
- 国标设备是否录像: 可以再WVP的配置中user-settings.record-sip设置为true那么每次点播以及录像回放都会录像;
diff --git a/doc/_content/ability/node_manager.md b/doc/_content/ability/node_manager.md
index ec39a6b2e..a8d6b10b1 100644
--- a/doc/_content/ability/node_manager.md
+++ b/doc/_content/ability/node_manager.md
@@ -2,7 +2,7 @@
# 节点管理
-
+
WVP支持单个WVP多个ZLM的方案来扩展WVP的视频并发能力,并发点播是因为带宽和性能的原因,单个ZLM节点能支持的路数有限,所以WVP增加了ZLM集群来扩展并发并且保证ZLM的高可用。
diff --git a/doc/_content/introduction/_media/img.png b/doc/_content/introduction/_media/img.png
index 48f8d8e48..fa03cd8d8 100644
Binary files a/doc/_content/introduction/_media/img.png and b/doc/_content/introduction/_media/img.png differ
diff --git a/doc/_content/introduction/compile.md b/doc/_content/introduction/compile.md
index 038eb315e..a1e5a8925 100644
--- a/doc/_content/introduction/compile.md
+++ b/doc/_content/introduction/compile.md
@@ -87,9 +87,9 @@ git clone https://github.com/648540858/wvp-GB28181-pro.git
### 5.2 编译前端页面
```shell script
-cd wvp-GB28181-pro/web_src/
+cd wvp-GB28181-pro/web/
npm --registry=https://registry.npmmirror.com install
-npm run build
+npm npm run build:prod
```
编译如果报错, 一般都是网络问题, 导致的依赖包下载失败
diff --git a/doc/_content/introduction/config.md b/doc/_content/introduction/config.md
index ea4c7c786..7beec143a 100644
--- a/doc/_content/introduction/config.md
+++ b/doc/_content/introduction/config.md
@@ -44,15 +44,12 @@ wvp支持多种数据库,包括Mysql,Postgresql,金仓等,配置任选
```yaml
spring:
- dynamic:
- primary: master
- datasource:
- master:
- type: com.zaxxer.hikari.HikariDataSource
- driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true
- username: root
- password: root123
+ datasource:
+ type: com.zaxxer.hikari.HikariDataSource
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true
+ username: root
+ password: root123
```
#### 2.1.3 Postgresql数据库配置
@@ -61,14 +58,12 @@ spring:
```yaml
spring:
- dynamic:
- primary: master
- datasource:
- type: com.zaxxer.hikari.HikariDataSource
- driver-class-name: org.postgresql.Driver
- url: jdbc:postgresql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true
- username: root
- password: 12345678
+ datasource:
+ type: com.zaxxer.hikari.HikariDataSource
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true
+ username: root
+ password: 12345678
pagehelper:
helper-dialect: postgresql
@@ -80,14 +75,13 @@ pagehelper:
```yaml
spring:
- dynamic:
- primary: master
- datasource:
- type: com.zaxxer.hikari.HikariDataSource
- driver-class-name: com.kingbase8.Driver
- url: jdbc:kingbase8://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=utf8
- username: root
- password: 12345678
+ datasource:
+ type: com.zaxxer.hikari.HikariDataSource
+ driver-class-name: com.kingbase8.Driver
+ url: jdbc:kingbase8://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=utf8
+ username: root
+ password: 12345678
+
pagehelper:
helper-dialect: postgresql
diff --git a/doc/_content/introduction/deployment.md b/doc/_content/introduction/deployment.md
index 755c4297a..28dc8d69b 100644
--- a/doc/_content/introduction/deployment.md
+++ b/doc/_content/introduction/deployment.md
@@ -41,19 +41,7 @@ nohup ./MediaServer -d -m 3 &
### 前后端分离部署
-前后端部署目前在最新的版本已经支持,请使用3月15日之后的版本部署
-前端编译后的文件在`src/main/resources/static`中,将此目录下的文件部署。
-WVP默认开启全部接口支持跨域。部署前端文件到WEB容器,并将访问的地址设置为WVP的地址即可。
-**配置前端服务器**
-
-1. 在`src/main/resources/static/static/js/config.js`下配置服务器的地址,也就是wvp服务的地址
-
-```javascript
-window.baseUrl = "http://xxx.com:18080"
-```
-
-`这里的地址是需要客户电脑能访问到的,因为请求是客户端电脑发起,与代理不同`
-[接入设备](./_content/ability/device.md)
+前端基于 [vue-admin-template](https://github.com/PanJiaChen/vue-admin-template/blob/master/README-zh.md) 构建, 参考这儿即可。
### 默认账号和密码
diff --git a/doc/_media/1.png b/doc/_media/1.png
new file mode 100644
index 000000000..827a925f5
Binary files /dev/null and b/doc/_media/1.png differ
diff --git a/doc/_media/2.png b/doc/_media/2.png
index 28d74b2dc..d84b41cc5 100644
Binary files a/doc/_media/2.png and b/doc/_media/2.png differ
diff --git a/doc/_media/3-1.png b/doc/_media/3-1.png
deleted file mode 100644
index 0e62c36e4..000000000
Binary files a/doc/_media/3-1.png and /dev/null differ
diff --git a/doc/_media/3-2.png b/doc/_media/3-2.png
deleted file mode 100644
index c75cef908..000000000
Binary files a/doc/_media/3-2.png and /dev/null differ
diff --git a/doc/_media/3-3.png b/doc/_media/3-3.png
deleted file mode 100644
index 3943a5277..000000000
Binary files a/doc/_media/3-3.png and /dev/null differ
diff --git a/doc/_media/3.png b/doc/_media/3.png
index 913d29490..318e461c7 100644
Binary files a/doc/_media/3.png and b/doc/_media/3.png differ
diff --git a/doc/_media/4.png b/doc/_media/4.png
new file mode 100644
index 000000000..32ccf477d
Binary files /dev/null and b/doc/_media/4.png differ
diff --git a/doc/_media/5.png b/doc/_media/5.png
new file mode 100644
index 000000000..30eccc3f0
Binary files /dev/null and b/doc/_media/5.png differ
diff --git a/doc/_media/6.png b/doc/_media/6.png
new file mode 100644
index 000000000..bceeea383
Binary files /dev/null and b/doc/_media/6.png differ
diff --git a/doc/_media/7.png b/doc/_media/7.png
new file mode 100644
index 000000000..9301e9e94
Binary files /dev/null and b/doc/_media/7.png differ
diff --git a/doc/_media/8.png b/doc/_media/8.png
new file mode 100644
index 000000000..ee98ad437
Binary files /dev/null and b/doc/_media/8.png differ
diff --git a/doc/_media/index.png b/doc/_media/index.png
deleted file mode 100644
index 46fe99bb2..000000000
Binary files a/doc/_media/index.png and /dev/null differ
diff --git a/doc/_sidebar.md b/doc/_sidebar.md
index d1f500c4b..4b28de907 100644
--- a/doc/_sidebar.md
+++ b/doc/_sidebar.md
@@ -10,7 +10,7 @@
* [推流列表](_content/ability/push.md)
* [拉流代理](_content/ability/proxy.md)
* [云端录像](_content/ability/cloud_record.md)
- * [节点管理](_content/ability/node_manger.md)
+ * [节点管理](_content/ability/node_manager.md)
* [通道管理](_content/ability/channel.md)
* [国标级联](_content/ability/cascade2.md)
* **流程与原理**
diff --git a/install.sh b/install.sh
new file mode 100644
index 000000000..3d76cf1d7
--- /dev/null
+++ b/install.sh
@@ -0,0 +1,57 @@
+#! /bin/sh
+
+WORD_DIR=$(cd $(dirname $0); pwd)
+SERVICE_NAME="wvp"
+
+# 检查是否为 root 用户
+if [ "$(id -u)" -ne 0 ]; then
+ echo "提示: 建议使用 root 用户执行此脚本,否则可能权限不足!"
+ read -p "继续?(y/n) " -n 1 -r
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
+ exit 1
+ fi
+ echo
+fi
+
+# 当前目录直接搜索(不含子目录)
+jar_files=(*.jar)
+
+if [ ${#jar_files[@]} -eq 0 ]; then
+ echo "当前目录无 JAR 文件!"
+ exit 1
+fi
+
+# 遍历结果
+for jar in "${jar_files[@]}"; do
+ echo "找到 JAR 文件: $jar"
+done
+
+# 写文件
+# 生成 Systemd 服务文件内容
+SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
+cat << EOF | sudo tee "$SERVICE_FILE" > /dev/null
+[Unit]
+Description=${SERVICE_NAME}
+After=syslog.target
+
+[Service]
+User=$USER
+WorkingDirectory=${WORD_DIR}
+ExecStart=java -jar ${jar_files}
+SuccessExitStatus=143
+Restart=on-failure
+RestartSec=10s
+Environment=SPRING_PROFILES_ACTIVE=prod
+
+[Install]
+WantedBy=multi-user.target
+EOF
+
+# 重载 Systemd 并启动服务
+sudo systemctl daemon-reload
+sudo systemctl enable "$SERVICE_NAME"
+sudo systemctl start "$SERVICE_NAME"
+
+# 验证服务状态
+echo "服务已安装!执行以下命令查看状态:"
+echo "sudo systemctl status $SERVICE_NAME"
diff --git a/pom.xml b/pom.xml
index a53cd8947..c2958ae22 100644
--- a/pom.xml
+++ b/pom.xml
@@ -372,6 +372,7 @@
2.7.2
true
+ true
@@ -422,6 +423,7 @@
**/application.yml
**/application-*.yml
**/local.jks
+ **/install.sh
@@ -441,6 +443,7 @@
application.yml
application-*.yml
+ install.sh
diff --git a/src/main/java/com/genersoft/iot/vmp/common/StatisticsInfo.java b/src/main/java/com/genersoft/iot/vmp/common/StatisticsInfo.java
new file mode 100644
index 000000000..8d7ab2817
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/common/StatisticsInfo.java
@@ -0,0 +1,97 @@
+package com.genersoft.iot.vmp.common;
+
+import lombok.Data;
+
+/**
+ * 统计信息
+ */
+@Data
+public class StatisticsInfo {
+
+ private long id;
+
+ /**
+ * ID
+ */
+ private String deviceId;
+
+ /**
+ * 分支
+ */
+ private String branch;
+
+ /**
+ * git提交版本ID
+ */
+ private String gitCommitId;
+
+ /**
+ * git地址
+ */
+ private String gitUrl;
+
+ /**
+ * 构建版本
+ */
+ private String version;
+
+ /**
+ * 操作系统名称
+ */
+ private String osName;
+
+ /**
+ * 是否是docker环境
+ */
+ private Boolean docker;
+
+ /**
+ * 架构
+ */
+ private String arch;
+
+ /**
+ * jdk版本
+ */
+ private String jdkVersion;
+
+ /**
+ * redis版本
+ */
+ private String redisVersion;
+
+ /**
+ * sql数据库版本
+ */
+ private String sqlVersion;
+
+ /**
+ * sql数据库类型, mysql/postgresql/金仓等
+ */
+ private String sqlType;
+
+ /**
+ * 创建时间
+ */
+ private String time;
+
+ @Override
+ public String toString() {
+ return "StatisticsInfo{" +
+ "id=" + id +
+ ", deviceId='" + deviceId + '\'' +
+ ", branch='" + branch + '\'' +
+ ", gitCommitId='" + gitCommitId + '\'' +
+ ", gitUrl='" + gitUrl + '\'' +
+ ", version='" + version + '\'' +
+ ", osName='" + osName + '\'' +
+ ", docker=" + docker +
+ ", arch='" + arch + '\'' +
+ ", jdkVersion='" + jdkVersion + '\'' +
+ ", redisVersion='" + redisVersion + '\'' +
+ ", sqlVersion='" + sqlVersion + '\'' +
+ ", sqlType='" + sqlType + '\'' +
+ ", time='" + time + '\'' +
+ '}';
+ }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/CivilCodeFileConf.java b/src/main/java/com/genersoft/iot/vmp/conf/CivilCodeFileConf.java
index 28e68fb3d..15dd874a3 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/CivilCodeFileConf.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/CivilCodeFileConf.java
@@ -23,7 +23,7 @@ import java.nio.file.Files;
*/
@Slf4j
@Configuration
-@Order(value=14)
+@Order(value=15)
public class CivilCodeFileConf implements CommandLineRunner {
@Autowired
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/CloudRecordTimer.java b/src/main/java/com/genersoft/iot/vmp/conf/CloudRecordTimer.java
index 652853bb0..cf4fff31c 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/CloudRecordTimer.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/CloudRecordTimer.java
@@ -1,6 +1,7 @@
package com.genersoft.iot.vmp.conf;
+import com.genersoft.iot.vmp.conf.exception.ControllerException;
import com.genersoft.iot.vmp.media.bean.MediaServer;
import com.genersoft.iot.vmp.media.service.IMediaServerService;
import com.genersoft.iot.vmp.service.bean.CloudRecordItem;
@@ -59,11 +60,14 @@ public class CloudRecordTimer {
// TODO 后续可以删除空了的过期日期文件夹
for (CloudRecordItem cloudRecordItem : cloudRecordItemList) {
String date = new File(cloudRecordItem.getFilePath()).getParentFile().getName();
- boolean deleteResult = mediaServerService.deleteRecordDirectory(mediaServerItem, cloudRecordItem.getApp(),
- cloudRecordItem.getStream(), date, cloudRecordItem.getFileName());
- if (deleteResult) {
- log.warn("[录像文件定时清理] 删除磁盘文件成功: {}", cloudRecordItem.getFilePath());
- }
+ try {
+ boolean deleteResult = mediaServerService.deleteRecordDirectory(mediaServerItem, cloudRecordItem.getApp(),
+ cloudRecordItem.getStream(), date, cloudRecordItem.getFileName());
+ if (deleteResult) {
+ log.warn("[录像文件定时清理] 删除磁盘文件成功: {}", cloudRecordItem.getFilePath());
+ }
+ }catch (ControllerException ignored) {}
+
}
result += cloudRecordServiceMapper.deleteList(cloudRecordItemList);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/SpringDocConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/SpringDocConfig.java
index 338924ca5..903257308 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/SpringDocConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/SpringDocConfig.java
@@ -30,6 +30,7 @@ public class SpringDocConfig {
Contact contact = new Contact();
contact.setName("pan");
contact.setEmail("648540858@qq.com");
+
return new OpenAPI()
.components(new Components()
.addSecuritySchemes(JwtUtils.HEADER, new SecurityScheme()
@@ -37,7 +38,11 @@ public class SpringDocConfig {
.bearerFormat("JWT")))
.info(new Info().title("WVP-PRO 接口文档")
.contact(contact)
- .description("开箱即用的28181协议视频平台")
+ .description("开箱即用的28181协议视频平台。
" +
+ "1. 打开http://127.0.0.1:18080/doc.html#/1.%20全部/用户管理/login_1," +
+ " 登录成功后返回AccessToken。
" +
+ "2. 填写到AccessToken到参数值 http://127.0.0.1:18080/doc.html#/Authorize/1.%20全部
" +
+ "后续接口就可以直接测试了")
.version("v3.1.0")
.license(new License().name("Apache 2.0").url("http://springdoc.org")));
}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/StatisticsInfoTask.java b/src/main/java/com/genersoft/iot/vmp/conf/StatisticsInfoTask.java
new file mode 100644
index 000000000..c558681f1
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/conf/StatisticsInfoTask.java
@@ -0,0 +1,98 @@
+package com.genersoft.iot.vmp.conf;
+
+import com.alibaba.fastjson2.JSON;
+import com.genersoft.iot.vmp.common.StatisticsInfo;
+import com.genersoft.iot.vmp.utils.DateUtil;
+import com.genersoft.iot.vmp.utils.GitUtil;
+import com.genersoft.iot.vmp.utils.SystemInfoUtils;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.data.redis.connection.RedisConnection;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.sql.DataSource;
+import java.io.File;
+import java.sql.DatabaseMetaData;
+import java.util.Objects;
+
+@Component
+@Order(value=100)
+@Slf4j
+public class StatisticsInfoTask implements CommandLineRunner {
+
+ @Autowired
+ private GitUtil gitUtil;
+
+ @Autowired
+ private RedisTemplate