Browse Source

token 归集address过滤

DevYK 2 years ago
parent
commit
2d9a13c4d9
4 changed files with 86 additions and 8 deletions
  1. 51 0
      model/db/remote_config_db.js
  2. 27 1
      model/moralis_sdk.js
  3. 3 3
      routes/sdk.js
  4. 5 4
      test/db_test.js

+ 51 - 0
model/db/remote_config_db.js

@@ -41,6 +41,56 @@ async function isPause(type) {
     })
 }
 
+
+/**
+ * 是否暂停归集动作
+ */
+async function tokenCollectCoinsBlacklistExist(type, chain, token_address) {
+    var sql = 'select * from blacklist WHERE type=? AND address=? AND status=1 AND chain=? '
+    switch (chain) {
+        case 'bsc_testnet':
+        case 'bsc_mainnet':
+        case 'bsc testnet':
+        case 'bsc mainnet':
+            chain = 'bsc'
+            break
+        case 'czz':
+        case 'CZZ':
+            chain = 'czz'
+            break
+    }
+    var par = [type, token_address, chain]
+    logger.info('getTokenCollectCoinsBlacklist', sql, par)
+    return new Promise((resolve) => {
+        mysql.getMySqlInstance().getConnection(function (err, connection) {
+            if (err) {
+                logger.error('getTokenCollectCoinsBlacklist', err)
+                logger.error('getTokenCollectCoinsBlacklist', sql)
+                resolve(null);
+                return;
+            }
+            connection.query(
+                sql, par,
+                function selectCb(error, results) {
+                    if (error) {
+                        logger.error('getTokenCollectCoinsBlacklist', error, sql, par)
+                        resolve(null);
+                        return;
+                    }
+                    logger.log('getTokenCollectCoinsBlacklist ret=', error, results);
+                    //用完当前连接需要释放,归还给连接池
+                    connection.release();
+                    if (results && Array.isArray(results) && results.length > 0) {
+                        resolve(true);
+                    } else {
+                        resolve(null);
+                    }
+                }
+            );
+        })
+    })
+}
+
 /**
  * 过滤某些地址归集
  * collect_coins
@@ -97,4 +147,5 @@ async function isBlackList(type, chain, address) {
 module.exports = {
     isPause,
     isBlackList,
+    tokenCollectCoinsBlacklistExist,
 }

+ 27 - 1
model/moralis_sdk.js

@@ -13,6 +13,7 @@ const report = require("./report")  //导入 db.js
 const BigNumber = require('bignumber.js')
 const collect_coins_db = require('./db/collect_coins_db')
 const czz = require('./czz')
+var remote_config_db = require("../model/db/remote_config_db");
 
 /* Moralis init code */
 var serverUrl = moralis_config.SERVER_URL;
@@ -78,7 +79,7 @@ async function setWeb3apiRateLimit() {
         if (!ret)
             logger.error('setWeb3apiRateLimit error')
     } catch (error) {
-        logger.error('setWeb3apiRateLimit error',error.toString())
+        logger.error('setWeb3apiRateLimit error', error.toString())
     }
 
 }
@@ -740,6 +741,23 @@ async function queryCollectBalance(address, chain) {
 }
 
 
+async function filterTokenCollectCoins(obj, my_account_all_coins) {
+    if (my_account_all_coins.other && Array.isArray(my_account_all_coins.other) && my_account_all_coins.other.length > 0) {
+        logger.info('oldothers', my_account_all_coins.other)
+        var new_others = []
+        for (let index = 0; index < my_account_all_coins.other.length; index++) {
+            const element = my_account_all_coins.other[index];
+            var exist = await remote_config_db.tokenCollectCoinsBlacklistExist('token_collect', obj.chain, element.token_address)
+            if (exist) {
+                logger.error('token归集黑名单', obj.address, JSON.stringify(element))
+            } else {
+                new_others.push(element)
+            }
+        }
+        my_account_all_coins.other = new_others
+        logger.info('newothers', my_account_all_coins.other)
+    }
+}
 
 /**
  * 用户充币地址的币转移到归集地址
@@ -766,6 +784,14 @@ const collectCoins = async (obj) => {
         return 'getAccountAllCoins error.' + my_account_all_coins
     }
 
+
+    try {
+        await filterTokenCollectCoins(obj, my_account_all_coins)
+    } catch (error) {
+        logger.error('filterTokenCollectCoins error',error.toString())
+    }
+   
+
     //埋点日志-转账之前的充币地址余额
     logParams.addressBalances = { ...my_account_all_coins };
 

+ 3 - 3
routes/sdk.js

@@ -798,10 +798,10 @@ check_czz_withdraw_task();
 bsc_log_monitoring()
 
 if (process.env.NODE_ENV == 'dev' || process.env.NODE_ENV == 'test') {
-    timer_transfer_bsc_task()
-    timer_transfer_czz_task()
+    // timer_transfer_bsc_task()
+    // timer_transfer_czz_task()
     timer_collect_conis_bsc_task()
-    timer_collect_conis_czz_task()
+    // timer_collect_conis_czz_task()
 }
 
 module.exports = router

+ 5 - 4
test/db_test.js

@@ -57,12 +57,13 @@ router.post('/queryUserPrivateKey', async (ctx) => {
 
 
 async function query() {
-    console.log('collect_coins', await remote_config_db.isPause('collect_coins'))
-    console.log('withdraw', await remote_config_db.isPause('withdraw'))
+    // console.log('collect_coins', await remote_config_db.isPause('collect_coins'))
+    // console.log('withdraw', await remote_config_db.isPause('withdraw'))
 
-    console.log('isBlackList', await remote_config_db.isBlackList('collect_coins', 'bsc', '0x003D33E1eD599a92aaacF9a710E10fC62143B9e0'))
+    // console.log('isBlackList', await remote_config_db.isBlackList('collect_coins', 'bsc', '0x003D33E1eD599a92aaacF9a710E10fC62143B9e0'))
+    console.log('getTokenCollectCoinsBlacklist',await remote_config_db.tokenCollectCoinsBlacklistExist('token_collect', 'bsc', '0x8860313deeb10a2863bc05b04b37897044edbda1'))
 }
 
-// query()
+query()
 module.exports = router