Kaynağa Gözat

update confirm

Eric0718 2 yıl önce
ebeveyn
işleme
ce37a916ea
2 değiştirilmiş dosya ile 22 ekleme ve 18 silme
  1. 6 5
      blockchain/contract.go
  2. 16 13
      blockchain/scan.go

+ 6 - 5
blockchain/contract.go

@@ -109,11 +109,12 @@ func checkClaim(engine *xorm.Engine, addr, hash, sign string, amount float64) er
 		if err != nil {
 			return err
 		}
-	}
-	tx.State = 1
-	_, err = engine.ID(hash).Cols("hash").Update(&tx)
-	if err != nil {
-		return err
+	} else {
+		tx.State = 1
+		_, err = engine.ID(hash).Cols("hash").Update(&tx)
+		if err != nil {
+			return err
+		}
 	}
 	return nil
 }

+ 16 - 13
blockchain/scan.go

@@ -171,57 +171,60 @@ func confirmClaimedTxs() {
 		}
 		for _, t := range txs {
 			go func(tx models.ClaimedTxs) {
+				interval := 0
 				for {
 					time.Sleep(time.Second * 5)
-					if mark > (CONFIRMINTERVAL / 5) {
+					if interval > (CONFIRMINTERVAL / 5) {
 						var ui models.UserInfo
 						_, err := dbUtil.Engine.Id(tx.Hash).Get(&ui)
 						if err != nil {
-							break
+							mark = tx.Id - 1
+							return
 						}
 						ui.AvailableClaim += tx.Amount
 						ui.TotalClaimed -= tx.Amount
 						_, err = dbUtil.Engine.ID(tx.Addr).Cols("total_claimed,available_claim").Update(&ui)
 						if err != nil {
-							break
+							mark = tx.Id - 1
+							return
 						}
 
 						tx.Droped = 1
 						_, err = dbUtil.Engine.ID(tx.Hash).Cols("droped").Update(&tx)
 						if err != nil {
-							break
+							mark = tx.Id - 1
+							return
 						}
-						break
+						return
 					}
 					ptx, err := ktoClient.GetTxByHash(context.Background(), &pb.ReqTxByHash{Hash: tx.Hash})
 					if err != nil {
-						mark++
+						interval++
 						continue
 					}
 					if ptx.Code != 0 {
-						mark++
+						interval++
 						continue
 					}
 					ftx, err := transaction.DeserializeFinishedTransaction(ptx.Data)
 					if err != nil {
-						mark++
+						interval++
 						continue
 					}
 					//pending tx
 					if ftx.BlockNum == 0 {
-						mark++
+						interval++
 						continue
 					}
 
 					tx.State = 1
-					_, err = dbUtil.Engine.ID(tx.Hash).Cols("droped").Update(&tx)
+					_, err = dbUtil.Engine.ID(tx.Hash).Cols("state").Update(&tx)
 					if err != nil {
-						break
+						mark = tx.Id - 1
 					}
+					return
 				}
 			}(t)
 		}
-
 	}
-
 }