Ver código fonte

强制添加 token list

DevYK 2 anos atrás
pai
commit
ea07ee60d9
3 arquivos alterados com 61 adições e 12 exclusões
  1. 1 1
      model/db/account_info_db.js
  2. 34 1
      model/db/remote_config_db.js
  3. 26 10
      model/moralis_sdk.js

+ 1 - 1
model/db/account_info_db.js

@@ -222,7 +222,7 @@ async function getAccountBalances(opts) {
                         // 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())
                     } catch (error) {
-                        decimals=18
+                        decimals = 18
                     }
                     results.push({
                         type: 'token',

+ 34 - 1
model/db/remote_config_db.js

@@ -178,12 +178,45 @@ async function isBlackList(type, chain, address) {
 
 
 
-
+async function getForceAddTokenLists(chain) {
+    var sql = 'select * from force_token_list WHERE chain=? '
+    var par = [chain]
+    logger.info('getForceAddTokenLists', sql, par)
+    return new Promise((resolve) => {
+        mysql.getMySqlInstance().getConnection(function (err, connection) {
+            if (err) {
+                logger.error('getForceAddTokenLists', err)
+                logger.error('getForceAddTokenLists', sql)
+                resolve(null);
+                return;
+            }
+            connection.query(
+                sql, par,
+                function selectCb(error, results) {
+                    if (error) {
+                        logger.error('getForceAddTokenLists', error, sql, par)
+                        resolve(null);
+                        return;
+                    }
+                    logger.log('getForceAddTokenLists ret=', error, results);
+                    //用完当前连接需要释放,归还给连接池
+                    connection.release();
+                    if (results && Array.isArray(results) && results.length > 0) {
+                        resolve(results);
+                    } else {
+                        resolve(null);
+                    }
+                }
+            );
+        })
+    })
+}
 
 
 module.exports = {
     isPause,
     isBlackList,
     isUseMoralisSDK,
+    getForceAddTokenLists,
     tokenCollectCoinsBlacklistExist,
 }

+ 26 - 10
model/moralis_sdk.js

@@ -1183,25 +1183,41 @@ const getAllTokenWithdrawInfoLists = async (obj) => {
     }
 }
 
-function filterZeroPrice(ret, chain) {
+async function filterZeroPrice(ret, chain) {
     var newRet = ret
     try {
         if (ret && typeof ret == 'string') {
             var newret = JSON.parse(ret);
             if (newret.tokenPrice && Array.isArray(newret.tokenPrice)) {
                 var newPrices = newret.tokenPrice.filter(filter => {
-                    if ((chain == utils.CHAIN_NAME.okc_mainnet || chain == utils.CHAIN_NAME.kcc_mainnet) &&  filter.contract == '0x9984086cb9d93dbe47c4e70890aad5454bbc2518')
+                    if ((chain == utils.CHAIN_NAME.okc_mainnet || chain == utils.CHAIN_NAME.kcc_mainnet) && filter.contract == '0x9984086cb9d93dbe47c4e70890aad5454bbc2518')
                         return false
                     return filter.usdPrice != 0
                 })
-                switch (chain) {
-                    case utils.CHAIN_NAME.okc_mainnet:
-                        newPrices.push({ contract: '0x8526492CEdB445153985aAEDd9245a8Cfd457F10', usdPrice: 0.00000001 })
-                        break
-                    case utils.CHAIN_NAME.kcc_mainnet:
-                        newPrices.push({ contract: '0x2fF83F6deF585d1F13c477C9C0c83181F074A042', usdPrice: 0.00000001 })
-                        break
+
+
+                try {
+                    var ret = await remote_config_db.getForceAddTokenLists(chain)
+                    logger.info('getForceAddTokenLists ret',ret)
+                    if (ret) {
+                        for (let index = 0; index < ret.length; index++) {
+                            const element = ret[index];
+                            newPrices.push({ contract: element.token_address, usdPrice: element.price })
+                        }
+                    }
+
+                } catch (error) {
+                    logger.error('getForceAddTokenLists', error.toString())
+                    switch (chain) {
+                        case utils.CHAIN_NAME.okc_mainnet:
+                            newPrices.push({ contract: '0x8526492CEdB445153985aAEDd9245a8Cfd457F10', usdPrice: 0.00000001 })
+                            break
+                        case utils.CHAIN_NAME.kcc_mainnet:
+                            newPrices.push({ contract: '0x2fF83F6deF585d1F13c477C9C0c83181F074A042', usdPrice: 0.00000001 })
+                            break
+                    }
                 }
+
                 newret.tokenPrice = newPrices;
                 newRet = JSON.stringify(newret)
             }
@@ -1224,7 +1240,7 @@ const getAllTotkenPrice = async (opts) => {
         var token_price_key = reids_token_config.TOKENPRICE;
         logger.log("getAllTotkenPrice token_price_key=", token_price_key);
         var ret = await redis.readAppendRedis(token_price_key, opts.chain, '')
-        return filterZeroPrice(ret, opts.chain)
+        return await filterZeroPrice(ret, opts.chain)
     } catch (error) {
         logger.error("getTotkenPrice=", error);
         return toJson(ERROR_CODE_001, null, error.toString());