From aa4a350da7b4de636cf3544fd1c0574cdf6bfe5c Mon Sep 17 00:00:00 2001 From: chenlin Date: Tue, 22 Oct 2024 11:01:16 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E8=AE=A2=E8=B4=AD=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E5=9B=9E=E8=B0=83=E9=80=9A=E7=9F=A5=E7=9A=84=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/apis/migumanage/migu_notice.go | 28 ++++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/app/admin/apis/migumanage/migu_notice.go b/app/admin/apis/migumanage/migu_notice.go index 5ad4e9c..007c995 100644 --- a/app/admin/apis/migumanage/migu_notice.go +++ b/app/admin/apis/migumanage/migu_notice.go @@ -1,12 +1,14 @@ package migumanage import ( + "errors" "fmt" "github.com/gin-gonic/gin" "github.com/go-admin-team/go-admin-core/logger" "go-admin/app/admin/models" "go-admin/tools" "go-admin/tools/app" + "gorm.io/gorm" "net/http" "time" ) @@ -56,26 +58,28 @@ func (e MiGuDeployService) SubscribeNotice(c *gin.Context) { return } - // 查询订单表是否有记录 var orderInfo models.MgOrder - err = e.Orm.Table("mg_order").Where("external_order_id = ?", orderId).First(&orderInfo).Error - if err != nil && err.Error() != "record not found" { - logger.Errorf("SubscribeNotice query mg_order err:", err.Error()) - app.MiGuNoticeOK(c, "failed") - return - } - - if err.Error() == "record not found" { // 订单表没有记录 - if extData == "" { // 没有返回平台订单号 - logger.Error("extData is null") + for i := 0; i < 3; i++ { + // 查询订单表是否有记录 + err = e.Orm.Table("mg_order").Where("external_order_id = ?", orderId).First(&orderInfo).Error + if err != nil && err.Error() != "record not found" { + logger.Errorf("SubscribeNotice query mg_order err:", err.Error()) app.MiGuNoticeOK(c, "failed") return } + if errors.Is(err, gorm.ErrRecordNotFound) { // 没有查询到记录,循环查询3次 + time.Sleep(800 * time.Millisecond) + } else if err == nil { // 查询到记录,则跳出循环 + break + } + } + + if errors.Is(err, gorm.ErrRecordNotFound) { // 订单表没有记录 // 查询交易流水表 var logInfo models.MgTransactionLog err = e.Orm.Table("mg_transaction_log"). - Where("out_trade_no = ? and verification_code <> ''", extData).First(&logInfo).Error + Where("link_id = ?", orderId).First(&logInfo).Error if err != nil { logger.Errorf("SubscribeNotice query mg_transaction_log err:", err.Error()) app.MiGuNoticeOK(c, "failed")