diff --git a/api/camera.go b/api/camera.go index 407c7e3..2fd6b47 100644 --- a/api/camera.go +++ b/api/camera.go @@ -1,8 +1,11 @@ package api import ( - "changeme/cameraFunc" - "changeme/util/response" + "changeme/internal/logic/cameraFunc" + "changeme/internal/logic/util/response" + "fmt" + "strings" + "sync" "github.com/gogf/gf/v2/net/ghttp" ) @@ -44,4 +47,50 @@ func DownLoadCameraJpg(r *ghttp.Request) { } response.SusJson(true, r, "下载成功") } +} + +func DownLoadAllCameraJpg(r *ghttp.Request) { + fileType := r.Get("file_type").String() + ids := r.Get("ids").String() + if ids == "" { + response.FailJson(true, r, "参数错误") + return + } + arrIds := strings.Split(ids, ",") + arrDeviceId := []string{ + "11", "12", "14", "22", "23", "32", "34", "42", "43", "52", "54", "62", + "63", "71", "72", "74", "82", "83", "92", "94", "102", "103", "112", + "114", "122", "123", + } + arrFail := make([]string, 0) + var wg sync.WaitGroup + var mu sync.Mutex + + // 控制并发数,限制最大并发goroutine数量 + sem := make(chan struct{}, 26) // 限制并发数为10 + + for _, id := range arrIds { + for _, deviceId := range arrDeviceId { + wg.Add(1) + go func(id, deviceId string) { + defer wg.Done() + + // 控制并发数 + sem <- struct{}{} + defer func() { <-sem }() + + err := cameraFunc.DownLoadCameraJpgByFtp(id, deviceId, fileType) + if err != nil { + mu.Lock() + arrFail = append(arrFail, fmt.Sprintf("%s_%s-error-%s", id, deviceId, err.Error())) + mu.Unlock() + } + }(id, deviceId) + } + } + + // 等待所有goroutine完成 + wg.Wait() + // 所有下载成功 + response.SusJson(true, r, "下载成功",arrFail) } \ No newline at end of file diff --git a/api/master_control.go b/api/master_control.go index 4becfeb..e547bad 100644 --- a/api/master_control.go +++ b/api/master_control.go @@ -1,8 +1,8 @@ package api import ( - "changeme/masterFunc" - "changeme/util/response" + "changeme/internal/logic/masterFunc" + "changeme/internal/logic/util/response" "github.com/gogf/gf/v2/net/ghttp" ) diff --git a/api/take_photo.go b/api/take_photo.go index f7774d4..19b80a4 100644 --- a/api/take_photo.go +++ b/api/take_photo.go @@ -1,9 +1,9 @@ package api import ( - "changeme/db" - "changeme/model" - "changeme/util/response" + "changeme/internal/logic/db" + "changeme/internal/logic/util/response" + "changeme/internal/model" "github.com/gogf/gf/v2/net/ghttp" ) diff --git a/cameraFunc/cameraFtp.go b/internal/logic/cameraFunc/cameraFtp.go similarity index 100% rename from cameraFunc/cameraFtp.go rename to internal/logic/cameraFunc/cameraFtp.go diff --git a/db/db.go b/internal/logic/db/db.go similarity index 99% rename from db/db.go rename to internal/logic/db/db.go index 42c3aa9..da789da 100644 --- a/db/db.go +++ b/internal/logic/db/db.go @@ -1,7 +1,7 @@ package db import ( - "changeme/model" + "changeme/internal/model" "database/sql" "errors" "fmt" diff --git a/initFunc/checkDevice.go b/internal/logic/initFunc/checkDevice.go similarity index 100% rename from initFunc/checkDevice.go rename to internal/logic/initFunc/checkDevice.go diff --git a/initFunc/checkVersionUpdate.go b/internal/logic/initFunc/checkVersionUpdate.go similarity index 100% rename from initFunc/checkVersionUpdate.go rename to internal/logic/initFunc/checkVersionUpdate.go diff --git a/initFunc/checkWebView.go b/internal/logic/initFunc/checkWebView.go similarity index 100% rename from initFunc/checkWebView.go rename to internal/logic/initFunc/checkWebView.go diff --git a/initFunc/setupCert.go b/internal/logic/initFunc/setupCert.go similarity index 100% rename from initFunc/setupCert.go rename to internal/logic/initFunc/setupCert.go diff --git a/initFunc/startPiVideo.go b/internal/logic/initFunc/startPiVideo.go similarity index 100% rename from initFunc/startPiVideo.go rename to internal/logic/initFunc/startPiVideo.go diff --git a/initFunc/studioAuthorization.go b/internal/logic/initFunc/studioAuthorization.go similarity index 100% rename from initFunc/studioAuthorization.go rename to internal/logic/initFunc/studioAuthorization.go diff --git a/initFunc/wailsJson.go b/internal/logic/initFunc/wailsJson.go similarity index 100% rename from initFunc/wailsJson.go rename to internal/logic/initFunc/wailsJson.go diff --git a/masterFunc/masterFtp.go b/internal/logic/masterFunc/masterFtp.go similarity index 100% rename from masterFunc/masterFtp.go rename to internal/logic/masterFunc/masterFtp.go diff --git a/util/response/response.go b/internal/logic/util/response/response.go similarity index 100% rename from util/response/response.go rename to internal/logic/util/response/response.go diff --git a/model/db_model.go b/internal/model/db_model.go similarity index 100% rename from model/db_model.go rename to internal/model/db_model.go diff --git a/main.go b/main.go index 0178a90..dd8118d 100644 --- a/main.go +++ b/main.go @@ -2,7 +2,7 @@ package main import ( "changeme/api" - "changeme/initFunc" + "changeme/internal/logic/initFunc" "context" "embed" "strings" @@ -57,8 +57,9 @@ func main() { AppMenu := menu.NewMenu() SubMenu := AppMenu.AddSubmenu("工具") SubMenu.AddText("刷新", keys.CmdOrCtrl("F5"), func(_ *menu.CallbackData) { + // runtime.Reload(app.ctx) runtime.WindowReloadApp(app.ctx) - }) + }) // Create application with options @@ -119,6 +120,7 @@ func HttpServer(){ s.BindHandler("/update_take_photo",api.UpdateDbData) s.BindHandler("/delete_take_photo",api.DeleteDbData) s.BindHandler("/download_camera_jpg",api.DownLoadCameraJpg) + s.BindHandler("/download_all_camera_jpg",api.DownLoadAllCameraJpg) s.BindHandler("/download_master_jpg",api.DownLoadMasterJpg) s.SetPort(8383)