|
|
@@ -10,6 +10,7 @@ import (
|
|
|
"io"
|
|
|
"net/http"
|
|
|
"os"
|
|
|
+ "path/filepath"
|
|
|
|
|
|
"go.uber.org/zap"
|
|
|
)
|
|
|
@@ -79,12 +80,35 @@ func GetAlarmSnapshot(sn, logTime string) error {
|
|
|
defer os.RemoveAll(tempDir) // 程序结束时清理临时目录
|
|
|
|
|
|
for _, info := range snapshotList {
|
|
|
+ snapFileName := filepath.Join(tempDir, info.FileName)
|
|
|
// 下载快照文件
|
|
|
- if err = files.DownloadFile(info.FileUrl, tempDir+"/"+info.FileName); err != nil {
|
|
|
+ if err = files.DownloadFile(info.FileUrl, snapFileName); err != nil {
|
|
|
+ zap.L().Error("快照文件下载失败。", zap.String("err", err.Error()))
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
+ // 创建解压目标文件夹
|
|
|
+ snapDir := filepath.Join(tempDir, fmt.Sprintf("AlarmSnapshot_%d", info.Id))
|
|
|
+ if err = files.CheckAndCreateDir(snapDir); err != nil {
|
|
|
+ zap.L().Error("文件夹创建失败", zap.String("err", err.Error()))
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 解压包文件
|
|
|
+ if err = files.AutoExtract(snapFileName, snapDir); err != nil {
|
|
|
+ zap.L().Error("解压快照包失败", zap.String("err", err.Error()))
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 包文件有两个版本:
|
|
|
+ // 1 - 包中文件内容为字符串,直接读取即可
|
|
|
+ // 2 - 包中数据为16进制数据,须配合VID/PID表解析
|
|
|
+
|
|
|
+ // 判断包类型
|
|
|
+ // TODO
|
|
|
+
|
|
|
// 解析文件并写入数据库
|
|
|
+
|
|
|
}
|
|
|
|
|
|
return nil
|