DevYK пре 2 година
родитељ
комит
7b0b34a87d
7 измењених фајлова са 73 додато и 13 уклоњено
  1. 1 0
      config/dev_config.js
  2. 1 0
      config/prd_config.js
  3. 1 0
      config/test_config.js
  4. 6 3
      model/db/account_info_db.js
  5. 13 3
      model/moralis_sdk.js
  6. 50 6
      routes/sdk.js
  7. 1 1
      test/db_test.js

+ 1 - 0
config/dev_config.js

@@ -33,6 +33,7 @@ const reids_token_config = {
     LAST_COLLECT_PUBLIC_KEY:'LAST_COLLECT_PUBLIC_LEY',
     LAST_COLLECT_TIME:'LAST_COLLECT_TIME',
     CHECK_CZZ_WITHDRAW_STATUS_QUEUE:'CHECK_CZZ_WITHDRAW_STATUS_QUEUE',
+    BSC_LOG_MONITORING_KEY:'BSC_LOG_MONITORING_KEY'
 }
 
 // http 埋点上报配置

+ 1 - 0
config/prd_config.js

@@ -32,6 +32,7 @@ const reids_token_config = {
     LAST_COLLECT_PUBLIC_KEY: 'LAST_COLLECT_PUBLIC_LEY',
     LAST_COLLECT_TIME: 'LAST_COLLECT_TIME',
     CHECK_CZZ_WITHDRAW_STATUS_QUEUE: 'CHECK_CZZ_WITHDRAW_STATUS_QUEUE',
+    BSC_LOG_MONITORING_KEY:'BSC_LOG_MONITORING_KEY'
 }
 
 // http 埋点上报配置

+ 1 - 0
config/test_config.js

@@ -32,6 +32,7 @@ const reids_token_config = {
     LAST_COLLECT_PUBLIC_KEY: 'LAST_COLLECT_PUBLIC_LEY',
     LAST_COLLECT_TIME: 'LAST_COLLECT_TIME',
     CHECK_CZZ_WITHDRAW_STATUS_QUEUE:'CHECK_CZZ_WITHDRAW_STATUS_QUEUE',
+    BSC_LOG_MONITORING_KEY:'BSC_LOG_MONITORING_KEY'
 }
 
 

+ 6 - 3
model/db/account_info_db.js

@@ -97,7 +97,7 @@ async function getAccountBalances_(opts) {
     var sql_table_name = ' user_balance '
     var sql_where = ' WHERE '
     var sql_where_name = ' usr_address=?  AND chain=? ORDER BY update_tm DESC '
-    var query_account_balances_params = [opts.address,opts.chain]
+    var query_account_balances_params = [opts.address, opts.chain]
     if (opts.type == 'native') {
         sql_where_name = ' usr_address=? AND token_address=?  AND chain=? ORDER BY update_tm DESC '
         query_account_balances_params = [opts.address, '0x0000000000000000000000000000000000000000', opts.chain]
@@ -151,8 +151,11 @@ async function getAccountTransactions_(opts) {
         sql_where_name = ' usr_to_address=? AND block_num>=? AND token_address!=? AND chain=?  '
         query_account_transactions_params = [opts.address, opts.from_block ? opts.from_block : 1, '0x0000000000000000000000000000000000000000', opts.chain]
     } else if (opts.type == 'hash') {
-        sql_where_name = ' trx_hash=? AND chain=?  '
+        sql_where_name = ' trx_hash=? AND chain=? '
         query_account_transactions_params = [opts.transaction_hash, opts.chain]
+    } else if (opts.type == 'only_hash') {
+        sql_where_name = ' trx_hash=? '
+        query_account_transactions_params = [opts.transaction_hash]
     }
     var new_sql = sql_main.concat(sql_table_name, sql_where, sql_where_name);
     var query_account_transactions_sql = new_sql
@@ -214,7 +217,7 @@ async function getAccountBalances(opts) {
                     var decimals = 1
                     try {
                         // decimals = await redis.readRedis('REDIS_ERC20_CONTRACT_DECIMALS_' + element.token_address.toLowerCase())
-                        decimals = await redis.readAppendRedis('REDIS_ERC20_CONTRACT_DECIMALS',opts.chain,element.token_address.toLowerCase())
+                        decimals = await redis.readAppendRedis('REDIS_ERC20_CONTRACT_DECIMALS', opts.chain, element.token_address.toLowerCase())
                     } catch (error) {
 
                     }

+ 13 - 3
model/moralis_sdk.js

@@ -73,9 +73,14 @@ async function initMoralisSecretSDK() {
  */
 async function setWeb3apiRateLimit() {
     const params = {};
-    const ret = await Moralis.Cloud.run("setWeb3apiRateLimit", params);
-    if (!ret)
-        logger.error('setWeb3apiRateLimit error')
+    try {
+        const ret = await Moralis.Cloud.run("setWeb3apiRateLimit", params);
+        if (!ret)
+            logger.error('setWeb3apiRateLimit error')
+    } catch (error) {
+        logger.error('setWeb3apiRateLimit error',error.toString())
+    }
+
 }
 
 // initMasterSDK()
@@ -997,6 +1002,11 @@ async function transfer_(opts) {
         logger.tlog("transfer 结果 =", ret, result);
 
         if (result && result.blockNumber && result.blockNumber >= 0) {
+            try {
+                redis.redis_push(reids_token_config.BSC_LOG_MONITORING_KEY, JSON.stringify(result))
+            } catch (error) {
+                logger.error('withdraw_task redis_push error:', error.toString())
+            }
             return ret
         } else {
             logger.error('transfer 有可能失败:', JSON.stringify(result))

+ 50 - 6
routes/sdk.js

@@ -10,6 +10,7 @@ const report = require("../model/report")  //导入 db.js
 const BigNumber = require('bignumber.js')
 const czz = require('../model/czz')
 var remote_config_db = require("../model/db/remote_config_db");
+const account_mysql = require("../model/db/account_info_db")  //导入 db.js
 /** 
  * 获取代币价格
  * @param {*} ctx 
@@ -296,7 +297,7 @@ async function withdraw_task() {
         }
 
         try {
-            logger.info('withdraw exec obj',exec_obj)
+            logger.info('withdraw exec obj', exec_obj)
             //是否是黑名单
             var isBlackList = await remote_config_db.isBlackList('withdraw', exec_obj.chain, exec_obj.receiver)
             if (isBlackList) {
@@ -394,7 +395,6 @@ async function withdraw_task() {
                     update_obj.nonce = nonce
                     update_obj.gas_price = curGasPrice.toString()
                     update_obj.gas_limit = curGasLimit.toString()
-
                     try {
                         update_obj.value = utils.scientificNotationToString(value).toString()
                     } catch (error) {
@@ -713,6 +713,48 @@ async function timer_transfer_czz_task() {
     }
 }
 
+
+async function bsc_log_monitoring() {
+    var delay = 60 * 1000
+    while (1) {
+        var exec_obj = await redis.redis_pop(reids_token_config.BSC_LOG_MONITORING_KEY)
+        if (!exec_obj) {
+            await utils.sleep(10000)
+            logger.log("no new check tasks")
+            continue
+        }
+
+        logger.info('bsc_log_monitoring exec start:', exec_obj)
+
+        try {
+            if (typeof exec_obj === 'string')
+                exec_obj = JSON.parse(exec_obj)
+        } catch (error) {
+            logger.error('bsc_log_monitoring:', error)
+        }
+
+        var tryCount = 5
+        do {
+            if (tryCount == 0) {
+                logger.error('数据在5分钟未更新', JSON.stringify(exec_obj))
+                break
+            }
+            if (exec_obj.transactionHash) {
+                var ret = await account_mysql.getAccountTransactions({
+                    type: 'only_hash',
+                    transaction_hash: exec_obj.transactionHash
+                })
+                if (ret && ret.code == 0 && ret.data.total > 0) {
+                    break
+                }
+            }
+            --tryCount
+            logger.debug('getAccountTransactions', tryCount, exec_obj)
+            await utils.sleep(delay)
+        } while (tryCount >= 0);
+    }
+}
+
 //获取交易记录
 router.post('/getTransfers', getTransfers)
 router.post('/getTransfersV2', getTransfersV2)
@@ -741,12 +783,14 @@ withdraw_task();
 collect_conis_task();
 //czz 504 检查
 check_czz_withdraw_task();
+// bsc 监控
+bsc_log_monitoring()
 
 if (process.env.NODE_ENV == 'dev' || process.env.NODE_ENV == 'test') {
-    // timer_transfer_bsc_task()
-    // timer_transfer_czz_task()
-    // timer_collect_conis_bsc_task()
-    // timer_collect_conis_czz_task()
+    timer_transfer_bsc_task()
+    timer_transfer_czz_task()
+    timer_collect_conis_bsc_task()
+    timer_collect_conis_czz_task()
 }
 
 module.exports = router

+ 1 - 1
test/db_test.js

@@ -63,6 +63,6 @@ async function query() {
     console.log('isBlackList', await remote_config_db.isBlackList('collect_coins', 'bsc', '0x003D33E1eD599a92aaacF9a710E10fC62143B9e0'))
 }
 
-query()
+// query()
 module.exports = router