一键打包生成oem项目exe
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

96 lines
2.4 KiB

package api
import (
"changeme/internal/logic/cameraFunc"
"changeme/internal/logic/util/response"
"fmt"
"strings"
"sync"
"github.com/gogf/gf/v2/net/ghttp"
)
func DownLoadCameraJpg(r *ghttp.Request) {
deviceId := r.Get("device_id").String()
fileType := r.Get("file_type").String()
id := r.Get("id").String()
if deviceId == "" || id == "" {
response.FailJson(true, r,"参数错误")
return
}
if fileType == "" {
err1 := cameraFunc.DownLoadCameraJpgByFtp(id,deviceId,"1")
err2 := cameraFunc.DownLoadCameraJpgByFtp(id,deviceId,"2")
if err1 != nil && err2 != nil {
response.FailJson(true, r,"下载失败",[]string{err1.Error(),err2.Error()})
return
}
if err1 != nil && err2 == nil {
response.FailJson(true, r,"预览图下载失败,高清图下载成功",[]string{err1.Error()})
return
}
if err1 == nil && err2 != nil {
response.FailJson(true, r,"预览图下载成功,高清图下载失败",[]string{err2.Error()})
return
}
response.SusJson(true, r, "下载成功")
}else{
err := cameraFunc.DownLoadCameraJpgByFtp(id,deviceId,fileType)
if err != nil {
response.FailJson(true, r,"下载失败",[]string{err.Error()})
return
}
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)
}