Browse Source

获取交易记录过滤归集手续费

DevYK 2 years ago
parent
commit
2ab3b4525f
6 changed files with 350 additions and 74 deletions
  1. 23 16
      config/dev_config.js
  2. 85 7
      model/db/collect_coins_db.js
  3. 38 1
      model/db/withdraw_db.js
  4. 30 12
      model/moralis_sdk.js
  5. 79 37
      routes/sdk.js
  6. 95 1
      test/db_test.js

+ 23 - 16
config/dev_config.js

@@ -17,8 +17,8 @@ const account_config = {
     BNB_GAS_PRICE: '10000000000',
     BNB_GAS_PRICE: '10000000000',
     TOKEN_GAS_PRICE: '10000000000',
     TOKEN_GAS_PRICE: '10000000000',
     TRANSFER_GAS: true,
     TRANSFER_GAS: true,
-    FEISHU_URL:'https://open.feishu.cn/open-apis/bot/v2/hook/18dfe21f-b1bd-46ca-a8c7-c85e1c84f02d',
-    CZZ_BASEURL:"https://internal-block-payout-test.denet.me",
+    FEISHU_URL: 'https://open.feishu.cn/open-apis/bot/v2/hook/18dfe21f-b1bd-46ca-a8c7-c85e1c84f02d',
+    CZZ_BASEURL: "https://internal-block-payout-test.denet.me",
 }
 }
 
 
 const reids_token_config = {
 const reids_token_config = {
@@ -28,12 +28,12 @@ const reids_token_config = {
     LAST_BNB_PRICE: 'LAST_BNB_PRICE',
     LAST_BNB_PRICE: 'LAST_BNB_PRICE',
     LAST_TOKEN_PRICE: 'LAST_TOKEN_PRICE',
     LAST_TOKEN_PRICE: 'LAST_TOKEN_PRICE',
     WITHDRAW_QUEUE_KEY: 'WITHDRAW_QUEUE_KEY_DEV',
     WITHDRAW_QUEUE_KEY: 'WITHDRAW_QUEUE_KEY_DEV',
-    WITHDRAW_QUEUE_STATUS:'WITHDRAW_QUEUE_STATUS',
-    COLLECT_CONIS_QUEUE_KEY:'COLLECT_CONIS_QUEUE_KEY_DEV',
-    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'
+    WITHDRAW_QUEUE_STATUS: 'WITHDRAW_QUEUE_STATUS',
+    COLLECT_CONIS_QUEUE_KEY: 'COLLECT_CONIS_QUEUE_KEY_DEV',
+    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 埋点上报配置
 // http 埋点上报配置
@@ -46,14 +46,7 @@ const http_log_report_config = {
 // 设置数据库配置文件
 // 设置数据库配置文件
 const db_config = {
 const db_config = {
     // 数据库配置
     // 数据库配置
-    // mysql: {
-    //     DATABASE: 'user_address',   //数据库名称
-    //     TABLENAME: 'user_key_manage',   //表名
-    //     USERNAME: 'root',   //用户名
-    //     PASSWORD: '123456', //密码
-    //     PORT: '3306', //连接的端口
-    //     HOST: '127.0.0.1' //host
-    // },
+
     mysql: {
     mysql: {
         DATABASE: 'denet_chain',   //数据库名称
         DATABASE: 'denet_chain',   //数据库名称
         DATABASE_MY_NODE: 'bnb_block_sync',   //自建 node 存储
         DATABASE_MY_NODE: 'bnb_block_sync',   //自建 node 存储
@@ -66,6 +59,20 @@ const db_config = {
         POOL_SIZE: 5,
         POOL_SIZE: 5,
     },
     },
 
 
+    // 数据库配置
+    // mysql: {
+    //     DATABASE: 'denet_chain',   //数据库名称
+    //     DATABASE_MY_NODE: 'bnb_block_sync',   //自建 node 存储
+    //     TABLENAME: 'user_key_manage',   //表名
+    //     USERNAME: 'denet',   //用户名
+    //     PASSWORD: 'cyber#Together_2022', //密码
+    //     PORT: '3306', //连接的端口
+    //     HOST: 'denet-chain-prod.csi2lctklqzg.us-east-1.rds.amazonaws.com', //host
+    //     OPEN_POOL: true,
+    //     POOL_SIZE: 5,
+
+    // },
+
     // redis: {
     // redis: {
     //     PORT: 6379, // Redis port
     //     PORT: 6379, // Redis port
     //     HOST: "r-bp1ps6my7lzg8rdhwxpi.redis.rds.aliyuncs.com", // Redis host
     //     HOST: "r-bp1ps6my7lzg8rdhwxpi.redis.rds.aliyuncs.com", // Redis host

+ 85 - 7
model/db/collect_coins_db.js

@@ -4,12 +4,86 @@ var { db_config } = require('../../config/config.js')
 const utils = require('../utils.js')
 const utils = require('../utils.js')
 
 
 
 
+
+/**
+ * 查询归集入账总金额和总消耗的 gas fee
+ */
+async function query_collect_total_fee() {
+    var sql = 'select * from collect_coins_manage WHERE status=?'
+    var param = [0]
+    // sql = 'select * from collect_coins_manage'
+    // param=[]
+    return new Promise((resolve) => {
+        mysql.getMySqlInstance().getConnection(function (err, connection) {
+            if (err) {
+                logger.error('query_collect_total_fee', err)
+                logger.error('query_collect_total_fee', sql)
+                resolve(null);
+                return;
+            }
+            connection.query(
+                sql, param,
+                function selectCb(error, results) {
+                    if (error) {
+                        logger.error('query_collect_total_fee', error, sql, param)
+                        resolve(null);
+                        return;
+                    }
+                    logger.log('query_collect_total_fee ret=', error, results);
+                    //用完当前连接需要释放,归还给连接池
+                    connection.release();
+                    resolve({
+                        err: error,
+                        results: results
+                    });
+                }
+            );
+        })
+    })
+}
+
+
+/**
+ * 查询归集的hash
+ */
+async function query_collect_hash(hash) {
+    var sql = 'select * from collect_coins_manage WHERE gas_trx_hash=?'
+    var param = [hash]
+    // sql = 'select * from collect_coins_manage'
+    // param=[]
+    return new Promise((resolve) => {
+        mysql.getMySqlInstance().getConnection(function (err, connection) {
+            if (err) {
+                logger.error('query_collect_total_fee', err)
+                logger.error('query_collect_total_fee', sql)
+                resolve(null);
+                return;
+            }
+            connection.query(
+                sql, param,
+                function selectCb(error, results) {
+                    if (error) {
+                        logger.error('query_collect_total_fee', error, sql, param)
+                        resolve(null);
+                        return;
+                    }
+                    logger.log('query_collect_total_fee ret=', error, results);
+                    //用完当前连接需要释放,归还给连接池
+                    connection.release();
+                    resolve(results
+                    );
+                }
+            );
+        })
+    })
+}
+
 /**
 /**
  * 创建一个归集任务
  * 创建一个归集任务
  * @param {*} opts 
  * @param {*} opts 
  * @returns 
  * @returns 
  */
  */
- async function create_collect_coins_task(opts) {
+async function create_collect_coins_task(opts) {
     logger.log('create_collect_coins_task', opts)
     logger.log('create_collect_coins_task', opts)
 
 
     var balances = opts.addressBalances ? opts.addressBalances : ''
     var balances = opts.addressBalances ? opts.addressBalances : ''
@@ -34,12 +108,14 @@ const utils = require('../utils.js')
 
 
     var user_address = opts.user_address ? opts.user_address : ''
     var user_address = opts.user_address ? opts.user_address : ''
 
 
-    var  chain = opts.chain
+    var chain = opts.chain
+
+    var gas_trx_hash = opts.gas_trx_hash ? opts.gas_trx_hash : ''
 
 
-    var create_withdraw_sql = 'INSERT INTO collect_coins_manage (user_address,balances,transfers,prestore_gas_fee,company_public_key,total_gas_fee,status,create_time,update_time,resposes,error_msg,chain)' +
-        'VALUES(?,?,?,?,?,?,?,?,?,?,?,?)'
-    var  chain = opts.chain
-    var create_withdraw_params = [user_address, JSON.stringify(balances), JSON.stringify(transfers), JSON.stringify(prestore_gas_free), company_public_key, total_gas_fee, status, create_time, update_time, resposes, error_msg ? error_msg : '',chain]
+    var create_withdraw_sql = 'INSERT INTO collect_coins_manage (user_address,balances,transfers,prestore_gas_fee,company_public_key,total_gas_fee,status,create_time,update_time,resposes,error_msg,chain,gas_trx_hash)' +
+        'VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)'
+    var chain = opts.chain
+    var create_withdraw_params = [user_address, JSON.stringify(balances), JSON.stringify(transfers), JSON.stringify(prestore_gas_free), company_public_key, total_gas_fee, status, create_time, update_time, resposes, error_msg ? error_msg : '', chain, gas_trx_hash]
 
 
     logger.log('create_collect_coins_task create_collect_coins_task_sql', create_withdraw_sql, create_withdraw_params);
     logger.log('create_collect_coins_task create_collect_coins_task_sql', create_withdraw_sql, create_withdraw_params);
     return new Promise((resolve) => {
     return new Promise((resolve) => {
@@ -69,7 +145,7 @@ const utils = require('../utils.js')
             );
             );
         })
         })
     })
     })
- }
+}
 
 
 
 
 /**
 /**
@@ -139,4 +215,6 @@ async function update_collect_coins_task(opts) {
 module.exports = {
 module.exports = {
     create_collect_coins_task,
     create_collect_coins_task,
     update_collect_coins_task,
     update_collect_coins_task,
+    query_collect_total_fee,
+    query_collect_hash,
 }
 }

+ 38 - 1
model/db/withdraw_db.js

@@ -90,7 +90,7 @@ function update_withdraw_task(withdraw_id, ret_obj) {
         }
         }
     }
     }
     var update_withdraw_sql = 'update  withdraw_manage SET withdraw_status=?,withdraw_hash=?,nonce=?,update_time=?,gas_price=?,gas_limit=?,value=?,errorMsg=? WHERE withdraw_id=?'
     var update_withdraw_sql = 'update  withdraw_manage SET withdraw_status=?,withdraw_hash=?,nonce=?,update_time=?,gas_price=?,gas_limit=?,value=?,errorMsg=? WHERE withdraw_id=?'
-    
+
     var status = ret_obj.withdraw_status
     var status = ret_obj.withdraw_status
     var hash = ret_obj.withdraw_hash
     var hash = ret_obj.withdraw_hash
     var nonce = ret_obj.nonce
     var nonce = ret_obj.nonce
@@ -172,6 +172,42 @@ function queryWithdrawInfoFromWithdrawId(withdrawId) {
     })
     })
 }
 }
 
 
+
+
+function getWidthdrawTotalFee() {
+    var create_withdraw_sql = 'select * from withdraw_manage WHERE withdraw_status=? AND chain_id=? '
+    var create_withdraw_params = [2, 56]
+    return new Promise((resolve) => {
+        mysql.getMySqlInstance().getConnection(function (err, connection) {
+            if (err) {
+                logger.error('getWidthdrawTotalFee', err)
+                logger.error('getWidthdrawTotalFee', create_withdraw_sql)
+                resolve(null);
+                return;
+            }
+            connection.query(
+                create_withdraw_sql, create_withdraw_params,
+                function selectCb(error, results) {
+                    if (error) {
+                        logger.error('getWidthdrawTotalFee', error, create_withdraw_sql, create_withdraw_params)
+                        resolve(null);
+                        return;
+                    }
+                    logger.log('getWidthdrawTotalFee ret=', error, results);
+                    //用完当前连接需要释放,归还给连接池
+                    connection.release();
+                    if (results && Array.isArray(results) && results.length > 0) {
+                        resolve(results);
+                    } else {
+                        resolve(null);
+                    }
+                }
+            );
+        })
+    })
+}
+
+
 /**
 /**
  * 判断该任务是否存在
  * 判断该任务是否存在
  * @param {*} withdrawId 
  * @param {*} withdrawId 
@@ -222,5 +258,6 @@ module.exports = {
     create_withdraw_task,
     create_withdraw_task,
     update_withdraw_task,
     update_withdraw_task,
     queryWithdrawInfoFromWithdrawId,
     queryWithdrawInfoFromWithdrawId,
+    getWidthdrawTotalFee,
     withdraw_id_exist
     withdraw_id_exist
 }
 }

+ 30 - 12
model/moralis_sdk.js

@@ -78,7 +78,7 @@ async function setWeb3apiRateLimit() {
         if (!ret)
         if (!ret)
             logger.error('setWeb3apiRateLimit error')
             logger.error('setWeb3apiRateLimit error')
     } catch (error) {
     } catch (error) {
-        logger.error('setWeb3apiRateLimit error',error.toString())
+        logger.error('setWeb3apiRateLimit error', error.toString())
     }
     }
 
 
 }
 }
@@ -577,15 +577,15 @@ async function transfers(obj, my_account_all_coins, logParams) {
             } else {
             } else {
                 //缓存当前交易的 gas 费用
                 //缓存当前交易的 gas 费用
                 try {
                 try {
-                    if (ret && ti.contractAddress) {
-                        var tr = getTransferGasFree('token', ret)
-                        // tr.totalGasFree
-                        totalGasFee += parseInt(tr.totalGasFree);
-                    } else {
-                        var tr = getTransferGasFree('native', ret)
-                        // tr.totalGasFree
-                        totalGasFee += parseInt(tr.totalGasFree);
-                    }
+                    // if (ret && ti.contractAddress) {
+                    //     var tr = getTransferGasFree('token', ret)
+                    //     // tr.totalGasFree
+                    //     totalGasFee += parseInt(tr.totalGasFree);
+                    // } else {
+                    //     var tr = getTransferGasFree('native', ret)
+                    //     // tr.totalGasFree
+                    //     totalGasFee += parseInt(tr.totalGasFree);
+                    // }
                     try {
                     try {
                         collects_error.push(JSON.parse(ret).errMsg)
                         collects_error.push(JSON.parse(ret).errMsg)
                     } catch (error) {
                     } catch (error) {
@@ -600,8 +600,8 @@ async function transfers(obj, my_account_all_coins, logParams) {
                 logger.error('start_collectCoins 归集 error=', ret, JSON.stringify(tmp_ti));
                 logger.error('start_collectCoins 归集 error=', ret, JSON.stringify(tmp_ti));
             };
             };
         }
         }
-        //日志埋点-归集全部所花费的 gas 费用
-        logParams.collectCoinsTotalGasFee = totalGasFee.toString();
+
+        logParams.gas_trx_hash = obj.gas_trx_hash
         //日志埋点-归集的响应
         //日志埋点-归集的响应
         logParams.results = collects
         logParams.results = collects
         logParams.collects = JSON.stringify(collects_mysql)
         logParams.collects = JSON.stringify(collects_mysql)
@@ -611,6 +611,8 @@ async function transfers(obj, my_account_all_coins, logParams) {
         if (t_i == my_account_all_coins.transfer_arrays.length) {
         if (t_i == my_account_all_coins.transfer_arrays.length) {
             logger.log('归集日志上报:', logParams);
             logger.log('归集日志上报:', logParams);
             logParams.type = report.REPORT_TYPE.collect_coins
             logParams.type = report.REPORT_TYPE.collect_coins
+            //日志埋点-归集全部所花费的 gas 费用
+            logParams.collectCoinsTotalGasFee = totalGasFee.toString();
             // var info = await queryCompanyInfoFromId(0);
             // 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)
             //归集入库
             //归集入库
@@ -739,6 +741,20 @@ async function queryCollectBalance(address, chain) {
     }
     }
 }
 }
 
 
+/**
+ * 获取提币 hash
+ * @param {*} ret 
+ * @returns 
+ */
+function getWithdrawHash(ret) {
+    try {
+        if (typeof ret === 'string')
+            ret = JSON.parse(ret)
+        return ret.data.hash
+    } catch (error) {
+        return ''
+    }
+}
 
 
 
 
 /**
 /**
@@ -825,6 +841,8 @@ const collectCoins = async (obj) => {
 
 
             if (getTransferCode(ret) != 0) return ret;
             if (getTransferCode(ret) != 0) return ret;
 
 
+            obj.gas_trx_hash = getWithdrawHash(ret)
+
             //todo...
             //todo...
 
 
             var transfer = getTransferGasFree('native', ret)
             var transfer = getTransferGasFree('native', ret)

+ 79 - 37
routes/sdk.js

@@ -11,6 +11,7 @@ const BigNumber = require('bignumber.js')
 const czz = require('../model/czz')
 const czz = require('../model/czz')
 var remote_config_db = require("../model/db/remote_config_db");
 var remote_config_db = require("../model/db/remote_config_db");
 const account_mysql = require("../model/db/account_info_db")  //导入 db.js
 const account_mysql = require("../model/db/account_info_db")  //导入 db.js
+var collect_coins_db = require("../model/db/collect_coins_db");
 /** 
 /** 
  * 获取代币价格
  * 获取代币价格
  * @param {*} ctx 
  * @param {*} ctx 
@@ -91,6 +92,47 @@ async function getTransfers(ctx) {
     })
     })
 }
 }
 
 
+async function getCollectCoinsHash(trx_hash) {
+    var ret = await collect_coins_db.query_collect_hash(trx_hash);
+    if (ret && Array.isArray(ret) && ret.length > 0) {
+        return trx_hash
+    }
+    return ' '
+}
+
+
+async function filterTransfers(result) {
+    try {
+        if (typeof result === 'string') {
+            var ret = JSON.parse(result)
+            if (ret.code == 0 && ret.data.total > 0) {
+                var new_ret = []
+                for (let index = 0; index < ret.data.results.length; index++) {
+                    const element = ret.data.results[index];
+                    if (element.trx_hash == await getCollectCoinsHash(element.trx_hash)) {
+                        logger.debug('element.trx_hash == await getCollectCoinsHash(element.trx_hash)', element)
+                    } else {
+                        new_ret.push(element)
+                    }
+                }
+                return {
+                    code: ret.code,
+                    data: {
+                        total: new_ret.length,
+                        results: new_ret,
+                        errMsg: ''
+                    }
+                }
+            } else {
+                return result
+            }
+        }
+    } catch (error) {
+        logger.error('filterTransfers', JSON.parse(error))
+        return result
+    }
+
+}
 /**
 /**
  * 获取交易记录
  * 获取交易记录
  * @param {*} ctx 
  * @param {*} ctx 
@@ -103,45 +145,47 @@ async function getTransfersV2(ctx) {
     var temp_obj = { ...obj }
     var temp_obj = { ...obj }
     var index = 0
     var index = 0
 
 
-    await moralis.getTokenTransfersV2(obj).then((result) => {
-        logger.log('getTokenTransfersV2 response', 'index=' + index, result)
-        ctx.body = result;
-        if (result) {
-            //提交归集任务 native 能获取到 gas 、token 无法获取到 gas 费
-            try {
-                if (temp_obj.address && moralis.isTransferSucceed(result)) {
-                    var log_obj = { ...obj }
-                    log_obj.results = result
-                    log_obj.type = report.REPORT_TYPE.transfer_record
-                    //埋点日志上报-入金检查
-                    report.logReport(log_obj)
+    var result = await moralis.getTokenTransfersV2(obj)
 
 
-                    var json_obj = JSON.parse(result);
+    // await moralis.getTokenTransfersV2(obj).then((result) => {
+    logger.log('getTokenTransfersV2 response', 'index=' + index, result)
+    ctx.body = await filterTransfers(result);
+    if (result) {
+        //提交归集任务 native 能获取到 gas 、token 无法获取到 gas 费
+        try {
+            if (temp_obj.address && moralis.isTransferSucceed(result)) {
+                var log_obj = { ...obj }
+                log_obj.results = result
+                log_obj.type = report.REPORT_TYPE.transfer_record
+                //埋点日志上报-入金检查
+                report.logReport(log_obj)
 
 
-                    //缓存当前交易的 gas 费用
-                    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)
-                        // 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().toString());
-                        redis.writeAppendRedis(reids_token_config.LAST_BNB_PRICE, temp_obj.chain, '', tr.gas_price.toString());
-                        redis.writeAppendRedis(reids_token_config.LAST_TOKEN_PRICE, temp_obj.chain, '', tr.gas_price.toString());
-                    }
+                var json_obj = JSON.parse(result);
 
 
-                    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))
-                        }
+                //缓存当前交易的 gas 费用
+                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)
+                    // 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().toString());
+                    redis.writeAppendRedis(reids_token_config.LAST_BNB_PRICE, temp_obj.chain, '', tr.gas_price.toString());
+                    redis.writeAppendRedis(reids_token_config.LAST_TOKEN_PRICE, temp_obj.chain, '', tr.gas_price.toString());
+                }
+
+                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)
             }
             }
+        } catch (error) {
+            console.error('pushCollectConisObj error=', error)
         }
         }
-    })
+    }
+    // })
 }
 }
 
 
 
 
@@ -456,7 +500,6 @@ async function withdrawV3(ctx) {
     }
     }
     const obj = ctx.request.body;
     const obj = ctx.request.body;
 
 
-    // for (let index = 0; index < 10; index++) {
     var log_obj = { ...obj }
     var log_obj = { ...obj }
     logger.log('withdrawV3', log_obj)
     logger.log('withdrawV3', log_obj)
     var obj_ = decrypt_withdraw_content(log_obj.content)
     var obj_ = decrypt_withdraw_content(log_obj.content)
@@ -480,7 +523,6 @@ async function withdrawV3(ctx) {
     } else {
     } else {
         return utils.toJson(-2, null, ' withdraw_id not empty.')
         return utils.toJson(-2, null, ' withdraw_id not empty.')
     }
     }
-    // }
 }
 }
 
 
 async function withdrawV3Test(ctx) {
 async function withdrawV3Test(ctx) {
@@ -787,10 +829,10 @@ check_czz_withdraw_task();
 bsc_log_monitoring()
 bsc_log_monitoring()
 
 
 if (process.env.NODE_ENV == 'dev' || process.env.NODE_ENV == 'test') {
 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_bsc_task()
-    timer_collect_conis_czz_task()
+    // timer_collect_conis_czz_task()
 }
 }
 
 
 module.exports = router
 module.exports = router

+ 95 - 1
test/db_test.js

@@ -5,7 +5,9 @@ const mysql = require("../model/db/mysql_db")  //导入 db.js
 const logger = require('../model/logger')
 const logger = require('../model/logger')
 
 
 var remote_config_db = require("../model/db/remote_config_db");
 var remote_config_db = require("../model/db/remote_config_db");
-
+var collect_coins_db = require("../model/db/collect_coins_db");
+var withdraw_db = require("../model/db/withdraw_db");
+const BigNumber = require('bignumber.js')
 router.prefix('/test');
 router.prefix('/test');
 router.post('/set', async (ctx) => {
 router.post('/set', async (ctx) => {
     // const obj = ctx.request.body;
     // const obj = ctx.request.body;
@@ -63,6 +65,98 @@ async function query() {
     console.log('isBlackList', await remote_config_db.isBlackList('collect_coins', 'bsc', '0x003D33E1eD599a92aaacF9a710E10fC62143B9e0'))
     console.log('isBlackList', await remote_config_db.isBlackList('collect_coins', 'bsc', '0x003D33E1eD599a92aaacF9a710E10fC62143B9e0'))
 }
 }
 
 
+
+async function getInfo() {
+    var collect_ret = await collect_coins_db.query_collect_total_fee();
+    var withdraw_ret = await withdraw_db.getWidthdrawTotalFee()
+    // console.error('query_collect_total_fee:', let.results)
+    var total_gas_fee = 0
+    var total_in_coins = []
+    for (let index = 0; index < collect_ret.results.length; index++) {
+        const element = collect_ret.results[index];
+        total_gas_fee += parseInt(element.total_gas_fee)
+    }
+
+    var total_gas_fee2 = 0
+    for (let index = 0; index < withdraw_ret.length; index++) {
+        const element = withdraw_ret[index];
+        if (element.gas_price && element.gas_limit)
+            total_gas_fee2 += (parseInt(element.gas_price) * parseInt(element.gas_limit))
+    }
+
+    console.log('total_gas_pee', total_gas_fee)
+    console.log('total_gas_fee2', total_gas_fee2)
+    console.log('total', total_gas_fee2 + total_gas_fee)
+}
+
+async function getInfo2() {
+    var collect_ret = await collect_coins_db.query_collect_total_fee();
+    var withdraw_ret = await withdraw_db.getWidthdrawTotalFee()
+    // console.error('query_collect_total_fee:', let.results)
+    // var total_gas_fee = 0
+    const total_in_coins = new Map();
+    // for (let index = 0; index < collect_ret.results.length; index++) {
+    //     const element = collect_ret.results[index];
+    //     if(element.chain && element.chain == 'czz')continue
+    //     total_gas_fee += parseInt(element.total_gas_fee)
+    //     if (element.transfers) {
+    //         var opts = JSON.parse(element.transfers)
+    //         for (let index = 0; index < opts.length; index++) {
+    //             const element = opts[index];
+    //             if (total_in_coins.get(element.contractAddress) != null) {
+    //                 var ins = total_in_coins.get(element.contractAddress)
+    //                 ins += BigInt(element.amount)
+    //                 total_in_coins.set(element.contractAddress, ins)
+    //             } else {
+    //                 total_in_coins.set(element.contractAddress, BigInt(element.amount))
+    //             }
+    //             console.log('total_in_coins', element);
+    //         }
+    //         // break
+    //     }
+    // }
+    // console.log('total_in_coins', total_in_coins);
+    // console.log('total_in_coins2', BigInt(100000000000000000000)+BigInt(100000000000000000000));
+
+    var total_gas_fee2 = 0
+    for (let index = 0; index < withdraw_ret.length; index++) {
+        const element = withdraw_ret[index];
+        // if (element.gas_price && element.gas_limit)
+        // total_gas_fee2 += (parseInt(element.gas_price) * parseInt(element.gas_limit))
+        // console.log('total_in_coins', element);
+        if (total_in_coins.get(element.contract_address) != null) {
+            var ins = total_in_coins.get(element.contract_address)
+            ins += BigInt(element.amount)
+            total_in_coins.set(element.contract_address, ins)
+        } else {
+            console.log('total_in_coins price', total_in_coins);
+            total_in_coins.set(element.contract_address, BigInt(element.amount))
+        }
+    }
+    console.log('total_in_coins', total_in_coins);
+
+
+
+    //     console.log('total_gas_pee', total_gas_fee)
+    //     console.log('total_gas_fee2', total_gas_fee2)
+    //     console.log('total', total_gas_fee2 + total_gas_fee)
+}
+
+function getInfo3() {
+    // console.log('1018087452840284941787', 1018087452840284941787 / (10**18))
+
+    // console.log('101000000000000000000', 101000000000000000000 / (10**18) * 0.6476)
+
+    // console.log('64585000000000000000000', 64585000000000000000000 / (10**18) * 0.0005)
+
+    
+    // console.log('1000000000000000', 1000000000000000 / (10**18) * 0.0482)
+    // console.log('2410418338592426908426', 2410418338592426908426 / (10**18) * 0.2074)
+    // console.log('2501561242336020120158', 2501561242336020120158 / (10**18) * 0.2074)
+
+}
+getInfo3()
+// getInfo2()
 // query()
 // query()
 module.exports = router
 module.exports = router