From 4ca3791590a7bf50222aa5f80e53edf04739108a Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期二, 22 十月 2024 17:20:23 +0800 Subject: [PATCH] fix 1400 post floor farmat --- service/resend.go | 69 +++++++++++++++++++++------------- 1 files changed, 42 insertions(+), 27 deletions(-) diff --git a/service/resend.go b/service/resend.go index 4353c17..6961f45 100644 --- a/service/resend.go +++ b/service/resend.go @@ -1,7 +1,7 @@ package service import ( - "encoding/json" + "gat1400Exchange/client" "gat1400Exchange/config" "gat1400Exchange/models" "gat1400Exchange/pkg/logger" @@ -9,37 +9,52 @@ "gat1400Exchange/vo" ) +var resendTaskRunning bool + func ResendImageData() { + if resendTaskRunning { + return + } + resendTaskRunning = true + defer func() { resendTaskRunning = false }() + var cacheMod models.Cache - cacheItems, _ := cacheMod.FindAll() + total, _ := cacheMod.Count() + if total == 0 { + return + } - for _, c := range cacheItems { - if !SendData([]byte(c.Data), config.ForwardConf.SyncServer) { - logger.Warn("The data resend failed. retry count %d", c.Retry) + logger.Info("Start resend task. cache len:%d", total) - c.Retry = c.Retry + 1 - c.Update() - } else { - c.Delete() - logger.Debug("The data resend successful.") + for i := 0; i < int(total); i++ { + var c models.Cache + err := c.First() + if err != nil { + logger.Error(err.Error()) + return } + if c.Type == "1400-face" { + if client.FaceCapture([]byte(c.Data)) != vo.StatusSuccess { + c.UpdateRetryCount() + logger.Warn("The data resend failed. retry count %d", c.Retry+1) + return + } + } else if c.Type == "1400-person" { + if client.PersonCapture([]byte(c.Data)) != vo.StatusSuccess { + c.UpdateRetryCount() + logger.Warn("The data resend failed. retry count %d", c.Retry+1) + return + } + } else { + if !util.SendData([]byte(c.Data), config.ForwardConf.SyncServer) { + c.UpdateRetryCount() + logger.Warn("The data resend failed. retry count %d", c.Retry+1) + return + } + } + + c.Delete() + logger.Debug("The data resend successful.") } -} - -func SendData(payload []byte, url string) bool { - body, err := util.HttpPost(url, nil, payload) - if err != nil { - logger.Error("Post request failure, url:%s, err:%s", err.Error()) - return false - } - - var rsp vo.SyncServerResponse - err = json.Unmarshal(body, &rsp) - if err != nil { - logger.Error("Can't parse response, url:%s, rsp: %v", url, body) - return false - } - - return rsp.Success } -- Gitblit v1.8.0