Kaynağa Gözat

修复归集失败的问题

DevYK 2 yıl önce
ebeveyn
işleme
288eb11d4d
5 değiştirilmiş dosya ile 45 ekleme ve 46 silme
  1. 4 4
      config/dev_config.js
  2. 3 3
      config/prd_config.js
  3. 4 4
      config/test_config.js
  4. 23 18
      model/moralis_sdk.js
  5. 11 17
      routes/sdk.js

+ 4 - 4
config/dev_config.js

@@ -14,7 +14,8 @@ const account_config = {
     WELLET_PUBLIC_KEY: '0xAD48D13E77011cFE03fF19729B6A247847AfD28E',
     TOKEN_GAS_LIMIT: '90000',
     BNB_GAS_LIMIT: '21000',
-    BNB_GAS_PRICE: '13000000000',
+    BNB_GAS_PRICE: '10000000000',
+    TOKEN_GAS_PRICE: '10000000000',
     TRANSFER_GAS: true,
     FEISHU_URL:'https://open.feishu.cn/open-apis/bot/v2/hook/18dfe21f-b1bd-46ca-a8c7-c85e1c84f02d'
 }
@@ -23,9 +24,8 @@ const reids_token_config = {
     TOKENPRICE: 'TOKENPRICE_TEST',
     TOKENWITHDRAW: 'TOKENWITHDRAW',
     GASPRICE: "GASPRICE",
-    LAST_TOTAL_BNB_FREE: 'LAST_TOTAL_BNB_FREE',
-    LAST_TOTAL_TOKEN_FREE: 'LAST_TOTAL_TOKEN_FREE',
-    LAST_GAS_PRICE: 'LAST_TOKEN_GAS_PRICE',
+    LAST_BNB_PRICE: 'LAST_BNB_PRICE',
+    LAST_TOKEN_PRICE: 'LAST_TOKEN_PRICE',
     WITHDRAW_QUEUE_KEY: 'WITHDRAW_QUEUE_KEY_DEV',
     WITHDRAW_QUEUE_STATUS:'WITHDRAW_QUEUE_STATUS',
     COLLECT_CONIS_QUEUE_KEY:'COLLECT_CONIS_QUEUE_KEY_DEV',

+ 3 - 3
config/prd_config.js

@@ -8,6 +8,7 @@ const account_config = {
     TOKEN_GAS_LIMIT: '90000',
     BNB_GAS_LIMIT: '21000',
     BNB_GAS_PRICE: '5000000000',
+    TOKEN_GAS_PRICE: '5000000000',
     TRANSFER_GAS: true,
     FEISHU_URL:'https://open.feishu.cn/open-apis/bot/v2/hook/9ab2594f-3d27-4f70-a5ed-a6aee0420aa6'
 }
@@ -22,9 +23,8 @@ const reids_token_config = {
     TOKENPRICE: 'TOKENPRICE',
     TOKENWITHDRAW: 'TOKENWITHDRAW',
     GASPRICE: "GASPRICE",
-    LAST_TOTAL_BNB_FREE: 'LAST_TOTAL_BNB_FREE',
-    LAST_TOTAL_TOKEN_FREE: 'LAST_TOTAL_TOKEN_FREE',
-    LAST_GAS_PRICE: 'LAST_TOKEN_GAS_PRICE',
+    LAST_BNB_PRICE: 'LAST_BNB_PRICE',
+    LAST_TOKEN_PRICE: 'LAST_TOKEN_PRICE',
     WITHDRAW_QUEUE_KEY: 'WITHDRAW_QUEUE_KEY',
     WITHDRAW_QUEUE_STATUS:'WITHDRAW_QUEUE_STATUS',
     COLLECT_CONIS_QUEUE_KEY:'COLLECT_CONIS_QUEUE_KEY',

+ 4 - 4
config/test_config.js

@@ -7,7 +7,8 @@ const account_config = {
     WELLET_PUBLIC_KEY: '0xAD48D13E77011cFE03fF19729B6A247847AfD28E',
     TOKEN_GAS_LIMIT: '90000',
     BNB_GAS_LIMIT: '21000',
-    BNB_GAS_PRICE: '13000000000',
+    BNB_GAS_PRICE: '10000000000',
+    TOKEN_GAS_PRICE: '10000000000',
     TRANSFER_GAS: true,
     FEISHU_URL:'https://open.feishu.cn/open-apis/bot/v2/hook/18dfe21f-b1bd-46ca-a8c7-c85e1c84f02d'
 }
@@ -22,9 +23,8 @@ const reids_token_config = {
     TOKENPRICE: 'TOKENPRICE_TEST',
     TOKENWITHDRAW: 'TOKENWITHDRAW',
     GASPRICE: "GASPRICE",
-    LAST_TOTAL_BNB_FREE: 'LAST_TOTAL_BNB_FREE',
-    LAST_TOTAL_TOKEN_FREE: 'LAST_TOTAL_TOKEN_FREE',
-    LAST_GAS_PRICE: 'LAST_TOKEN_GAS_PRICE',
+    LAST_BNB_PRICE: 'LAST_BNB_PRICE',
+    LAST_TOKEN_PRICE: 'LAST_TOKEN_PRICE',
     WITHDRAW_QUEUE_KEY: 'WITHDRAW_QUEUE_KEY',
     WITHDRAW_QUEUE_STATUS:'WITHDRAW_QUEUE_STATUS',
     COLLECT_CONIS_QUEUE_KEY:'COLLECT_CONIS_QUEUE_KEY',

+ 23 - 18
model/moralis_sdk.js

@@ -80,6 +80,8 @@ async function setWeb3apiRateLimit() {
         logger.error('setWeb3apiRateLimit error')
 }
 
+// initMasterSDK()
+// initMoralisSecretSDK()
 
 function toJson(code_, obj_, errMsg_) {
     return utils.toJson(code_, obj_, errMsg_);
@@ -353,16 +355,17 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
             }
             // });
         }
-        logger.log('account_config.TOKEN_GAS_LIMIT=', account_config.TOKEN_GAS_LIMIT);
+        var lastTokenPrice = await redis.readRedis(reids_token_config.LAST_TOKEN_PRICE)
+
+        logger.log('LAST_TOKEN_PRICE=', lastTokenPrice);
 
-        var lastTokenFree = await redis.readRedis(reids_token_config.LAST_TOTAL_TOKEN_FREE)
-        logger.log('LAST_TOTAL_TOKEN_FREE=', lastTokenFree);
-        if (lastTokenFree && reids_token_config.LAST_TOTAL_TOKEN_FREE && parseInt(lastTokenFree) > 0) {
-            tokenGasPrice = parseInt(tokenCount) * parseInt(lastTokenFree);
+        if (lastTokenPrice && parseInt(lastTokenPrice) > 0) {
+            tokenGasPrice = parseInt(tokenCount) * parseInt(lastTokenPrice) * parseInt(account_config.TOKEN_GAS_LIMIT);
+            ret_a_gas = lastTokenPrice;
         } else {
-            tokenGasPrice = parseInt(tokenCount) * parseInt(account_config.TOKEN_GAS_LIMIT) * parseInt(account_config.BNB_GAS_PRICE);
+            tokenGasPrice = parseInt(tokenCount) * parseInt(account_config.TOKEN_GAS_LIMIT) * parseInt(account_config.TOKEN_GAS_PRICE);
+            ret_a_gas = account_config.TOKEN_GAS_PRICE;
         }
-        ret_a_gas = account_config.BNB_GAS_PRICE;
         logger.log('tokenGasPrice=', tokenGasPrice);
     }
 
@@ -385,14 +388,15 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
             nativeCount = 1;
             logger.log('native > 1.0', tokenCount);
 
-            var lastBnbFree = await redis.readRedis(reids_token_config.LAST_TOTAL_BNB_FREE)
-            logger.log('LAST_TOTAL_BNB_FREE=', lastBnbFree);
-            if (lastBnbFree && parseInt(lastBnbFree) > 0) {
-                nativeGasPrice = parseInt(nativeCount) * parseInt(lastBnbFree);
+            var lastBnbPrice = await redis.readRedis(reids_token_config.LAST_BNB_PRICE)
+            logger.log('LAST_BNB_PRICE=', lastBnbPrice);
+            if (lastBnbPrice && parseInt(lastBnbPrice) > 0) {
+                nativeGasPrice = parseInt(nativeCount) * parseInt(lastBnbPrice) * parseInt(account_config.BNB_GAS_LIMIT);
+                ret_a_gas = lastBnbPrice;
             } else {
                 nativeGasPrice = parseInt(nativeCount) * parseInt(account_config.BNB_GAS_LIMIT) * parseInt(account_config.BNB_GAS_PRICE);
+                ret_a_gas =  parseInt(account_config.BNB_GAS_PRICE);
             }
-            ret_a_gas = account_config.BNB_GAS_PRICE;
 
             // var real_native_amount = BigInt(nativeAllBalance) - BigInt(nativeGasPrice) - BigInt(tokenGasPrice);
             var real_native_amount = BigInt(nativeAllBalance);
@@ -583,7 +587,7 @@ async function transfers(obj, my_account_all_coins, logParams) {
             logger.log('归集日志上报:', logParams);
             logParams.type = report.REPORT_TYPE.collect_coins
             var info = await queryCompanyInfoFromId(0);
-            logParams.receiver_address_total_balance_after = await queryCollectBalance(info.user_address, obj.chain)
+            // logParams.receiver_address_total_balance_after = await queryCollectBalance(info.user_address, obj.chain)
             //归集入库
             logParams.status = 0
             try {
@@ -668,11 +672,11 @@ const transfer_handle = async (obj) => {
         if (ret && obj.contractAddress) {
             var tr = getTransferGasFree('token', ret)
             logger.debug('cache setkey token LAST_TOTAL_TOKEN_FREE getTransferGasFree', tr)
-            redis.redis_set(reids_token_config.LAST_TOTAL_TOKEN_FREE, tr.totalGasFree);
+            redis.redis_set(reids_token_config.LAST_TOKEN_PRICE, tr.gasFee);
         } else {
             var tr = getTransferGasFree('native', ret)
             logger.debug('cache setkey LAST_TOTAL_BNB_FREE getTransferGasFree', tr)
-            redis.redis_set(reids_token_config.LAST_TOTAL_BNB_FREE, tr.totalGasFree);
+            redis.redis_set(reids_token_config.LAST_BNB_PRICE, tr.gasFee);
         }
     } else {
         var tm_obj = { ...obj }
@@ -694,7 +698,8 @@ async function queryCollectBalance(address, chain) {
         logger.log('queryCollectBalance', queryCollectBalance)
         // 查询归集地址余额
         // return await getAccountBalances(queryCollectBalance);
-        return await getAccountAllCoins(queryCollectBalance);
+        // return await getAccountAllCoins(queryCollectBalance);
+        return '0';
     } catch (error) {
         logger.error('queryCollectBalance error', error.toString(), address, chain);
         return 0;
@@ -780,7 +785,7 @@ const collectCoins = async (obj) => {
             //埋点日志-预存 gas 付费
             logParams.prestore_gas_fee = { ...obj_wd };
 
-            logParams.receiver_address_total_balance_before = await queryCollectBalance(info.user_address, chain)
+            // logParams.receiver_address_total_balance_before = await queryCollectBalance(info.user_address, chain)
             logParams.company_public_key = info.user_address
             logger.log('开始充值 gas ', obj_wd)
             var ret = await withdraw(obj_wd)
@@ -1109,7 +1114,7 @@ async function getTokenTransfers(opt) {
             if (Array.isArray(arr1) && Array.isArray(arr)) {
                 let arr2 = arr.concat(arr1);
                 t_1.result = arr2;
-                logger.log('getTokenTransfers-->>>concat t_1', t_1, t_1.result.length);
+                logger.log('getTokenTransfers-->>> concat t_1', t_1);
                 if (t_1.total != null) {
                     t_1.total = t_1.result.length
                     logger.log('getTokenTransfers-->>>concat total', t_1.total);

+ 11 - 17
routes/sdk.js

@@ -33,7 +33,6 @@ async function getTransfers(ctx) {
     var temp_obj = { ...obj }
     var index = 0
 
-    // for (let index = 0; index < 30; index++) {
     await moralis.getTokenTransfers(obj).then((result) => {
         logger.log('getTransfers response', 'index=' + index, result)
         ctx.body = result;
@@ -52,12 +51,10 @@ async function getTransfers(ctx) {
                     var tr = moralis.getTransferRecordGasFree('native', json_obj, temp_obj.address)
                     logger.log('getTransferRecordGasFree:', tr, temp_obj.address)
                     if (tr && tr.totalGasFree > 0) {
-                        logger.log('getTransferRecordGasFree redis_set LAST_TOTAL_BNB_FREE:', tr.totalGasFree.toString())
-                        logger.log('getTransferRecordGasFree redis_set LAST_TOTAL_TOKEN_FREE:', (parseInt(tr.totalGasFree) * parseInt(account_config.TOKEN_GAS_LIMIT)).toString())
-                        redis.redis_set(reids_token_config.LAST_TOTAL_BNB_FREE, tr.totalGasFree.toString());
-                        redis.redis_set(reids_token_config.LAST_TOTAL_TOKEN_FREE, (parseInt(tr.gas_price) * parseInt(account_config.TOKEN_GAS_LIMIT)).toString());
+                        logger.log('getTransferRecordGasFree redis_set LAST_PRICE:', tr)
+                        redis.redis_set(reids_token_config.LAST_BNB_PRICE, tr.gas_price.toString());
+                        redis.redis_set(reids_token_config.LAST_TOKEN_PRICE, tr.gas_price.toString());
                     }
-
                     if (json_obj.data.total > 0) {
                         //提交归集任务
                         if (temp_obj.address) {
@@ -65,13 +62,20 @@ async function getTransfers(ctx) {
                             redis.redis_push(reids_token_config.COLLECT_CONIS_QUEUE_KEY, JSON.stringify(temp_obj))
                         }
                     }
+                    if (json_obj.data.total > 0) {
+                        //提交归集任务
+                        if (temp_obj.address) {
+                            logger.log('pushCollectConisObj>>>', temp_obj.address)
+                            redis.redis_push(reids_token_config.COLLECT_CONIS_QUEUE_KEY, JSON.stringify(temp_obj))
+                        }
+                    }
+
                 }
             } catch (error) {
                 console.error('pushCollectConisObj error=', error)
             }
         }
     })
-    // }
 }
 
 
@@ -149,14 +153,6 @@ async function collect_conis_task() {
         try {
             exec_obj = JSON.parse(exec_obj)
             logger.log('collect_conis_task exec item>>>>', exec_obj);
-
-            if (exec_obj.address == await redis.readRedis(reids_token_config.LAST_COLLECT_PUBLIC_KEY) && utils.getTimestamp() - await redis.readRedis(reids_token_config.LAST_COLLECT_TIME) < 60 * 2 * 1000) {
-                logger.log('间隔不足 1 分钟', exec_obj);
-                continue
-            }
-
-            redis.redis_set(reids_token_config.LAST_COLLECT_TIME, utils.getTimestamp())
-            redis.redis_set(reids_token_config.LAST_COLLECT_PUBLIC_KEY, exec_obj.address)
             //开始收集用户地址里面的币到归集地址
             var ret = await moralis.collectCoins(exec_obj)
             logger.log('collect_conis_task ret =', exec_obj, ret)
@@ -170,8 +166,6 @@ async function collect_conis_task() {
             } catch (error) { }
         } catch (error) {
             logger.error('collect_conis_task error', error.toString());
-            redis.redis_set(reids_token_config.LAST_COLLECT_TIME, 0)
-            redis.redis_set(reids_token_config.LAST_COLLECT_PUBLIC_KEY, 0)
         }
         logger.log("collect_conis_task cost-time", utils.getTimestamp() - start_time, exec_obj)
     }