Browse Source

归集加上response

DevYK 2 năm trước cách đây
mục cha
commit
fda8030751
2 tập tin đã thay đổi với 51 bổ sung11 xóa
  1. 1 1
      config/prd_config.js
  2. 50 10
      model/moralis_sdk.js

+ 1 - 1
config/prd_config.js

@@ -7,7 +7,7 @@ const account_config = {
     WELLET_PUBLIC_KEY: '0xAD48D13E77011cFE03fF19729B6A247847AfD28E',
     TOKEN_GAS_LIMIT: '90000',
     BNB_GAS_LIMIT: '21000',
-    BNB_GAS_PRICE: '6000000000',
+    BNB_GAS_PRICE: '5000000000',
     TRANSFER_GAS: true,
     FEISHU_URL:'https://open.feishu.cn/open-apis/bot/v2/hook/9ab2594f-3d27-4f70-a5ed-a6aee0420aa6'
 }

+ 50 - 10
model/moralis_sdk.js

@@ -89,14 +89,45 @@ function getTransferRecordGasFree(type, obj, address) {
                 if (element.gas_price && element.gas && type == 'native') {//native
                     return {
                         totalGasFree: parseInt(element.gas_price) * parseInt(element.gas),
-                        gas_price: parseInt(element.gas_price)
+                        gas_price: parseInt(element.gas_price),
+                        gas_limit: parseInt(element.gas),
                     }
                 }
             }
         }
     }
     return null;
+}
 
+function changeJsonHexBignumberToString(json) {
+    if (json) {
+        var obj = JSON.parse(json)
+       var code = obj.code;
+        logger.log('changeJsonHexBignumberToString obj=', obj)
+        try {
+            if (obj.data && obj.data.gasPrice && obj.data.gasLimit && obj.data.gasPrice.hex && obj.data.gasLimit.hex) {
+                var curGasPrice = BigNumber(obj.data.gasPrice.hex).toNumber()
+                var curGasLimit = BigNumber(obj.data.gasLimit.hex).toNumber()
+                obj.data.gasPrice.number = curGasPrice.toString()
+                obj.data.gasLimit.number = curGasLimit.toString()
+                logger.log('getTransferGasFree totalGasFree=', curGasPrice, curGasLimit)
+                if (obj.data.value && obj.data.value.hex) {
+                    var value = BigNumber(obj.data.value.hex).toNumber()
+                    logger.log('getTransferGasFree native value=', value)
+                    if (value != 0) {
+                        obj.data.value.number = value.toString()
+                    }
+                }
+            }
+            logger.log('changeJsonHexBignumberToString ret=', obj.data)
+            return JSON.stringify(obj.data)
+        } catch (error) {
+            logger.error('changeJsonHexBignumberToString error',error.toString())
+            return json;
+        }
+    }
+
+    return json;
 }
 
 /**
@@ -115,7 +146,8 @@ function getTransferGasFree(type, json) {
         curGasLimit = account_config.BNB_GAS_LIMIT
     }
     var totalGasFree = parseInt(curGasLimit) * parseInt(curGasPrice);
-
+    var gas_fee
+    var gas_limit
     logger.log('getTransferGasFree json=', json)
 
     if (json) {
@@ -128,6 +160,8 @@ function getTransferGasFree(type, json) {
             if (curGasPrice > 0 && curGasLimit > 0) {
                 totalGasFree = curGasPrice * curGasLimit;
             }
+            gas_fee = curGasPrice
+            gas_limit = gas_limit
             logger.log('getTransferGasFree totalGasFree=', curGasPrice, curGasLimit, totalGasFree)
             if (obj.data.value && obj.data.value.hex) {
                 var value = BigNumber(obj.data.value.hex).toNumber()
@@ -143,6 +177,8 @@ function getTransferGasFree(type, json) {
         totalGasFree: totalGasFree,
         nativeValue: nativeValue,
         tokenValue: tokenValue,
+        gasFee: gas_fee,
+        gasLimit: gas_limit,
     }
 }
 
@@ -325,7 +361,7 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
 
             var lastBnbFree = await redis.readRedis(reids_token_config.LAST_TOTAL_BNB_FREE)
             logger.log('LAST_TOTAL_BNB_FREE=', lastBnbFree);
-            if (lastTokenFree && reids_token_config.LAST_TOTAL_TOKEN_FREE && parseInt(lastTokenFree) > 0) {
+            if (lastBnbFree && parseInt(lastBnbFree) > 0) {
                 nativeGasPrice = parseInt(nativeCount) * parseInt(lastBnbFree);
             } else {
                 nativeGasPrice = parseInt(nativeCount) * parseInt(account_config.BNB_GAS_LIMIT) * parseInt(account_config.BNB_GAS_PRICE);
@@ -348,13 +384,13 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
 
     logger.log('transfer obj=', transfer_obj)
 
-    //计算所有币转账所需要的 gas 
+    //计算所有币
     totalCount = nativeCount + tokenCount;
     // var gasPrice = await redis.readRedis(reids_token_config.GASPRICE);
     logger.log('nativeAllBalance', nativeAllBalance);
     logger.log('totalCount', totalCount);
 
-
+    //计算所有币转账所需要的 gas 
     var total2Gas = nativeGasPrice + tokenGasPrice;
     var service_charge = 0;
     logger.log('total2Gas', total2Gas);
@@ -445,6 +481,7 @@ async function transfers(obj, my_account_all_coins, logParams) {
         var totalGasFee = 0;
         var collects = []
         var collects_error = []
+        var collects_mysql = []
         for (let index = 0; index < my_account_all_coins.transfer_arrays.length; index++) {
             var ti = my_account_all_coins.transfer_arrays[index]
             logger.tlog('ti=', ti)
@@ -470,6 +507,7 @@ async function transfers(obj, my_account_all_coins, logParams) {
                     // tr.totalGasFree
                     totalGasFee += parseInt(tr.totalGasFree);
                 }
+                collects_mysql.push(changeJsonHexBignumberToString(ret))
             } else {
                 //缓存当前交易的 gas 费用
                 try {
@@ -484,8 +522,8 @@ async function transfers(obj, my_account_all_coins, logParams) {
                     }
                     try {
                         collects_error.push(JSON.parse(ret).errMsg)
-                    } catch (error) { 
-                        logger.error('collects_error json parse error',ret)
+                    } catch (error) {
+                        logger.error('collects_error json parse error', ret)
                     }
                 } catch (error) {
                     logger.error('start_collectCoins 获取 gas fee=', error.toString(), JSON.stringify(ti));
@@ -496,12 +534,12 @@ async function transfers(obj, my_account_all_coins, logParams) {
         }
         //日志埋点-归集全部所花费的 gas 费用
         logParams.collectCoinsTotalGasFee = totalGasFee.toString();
-        logParams.collects = JSON.stringify(collects)
+        //日志埋点-归集的响应
+        logParams.results = collects
+        logParams.collects = JSON.stringify(collects_mysql)
         if (t_i == my_account_all_coins.transfer_arrays.length) {
             logger.log('归集日志上报:', logParams);
             logParams.type = report.REPORT_TYPE.collect_coins
-            //日志埋点-归集的响应
-            logParams.results = collects
             var info = await queryCompanyInfoFromId(0);
             logParams.receiver_address_total_balance_after = await queryCollectBalance(info.user_address, obj.chain)
             //归集入库
@@ -595,6 +633,8 @@ const transfer_handle = async (obj) => {
             redis.redis_set(reids_token_config.LAST_TOTAL_BNB_FREE, tr.totalGasFree);
         }
     } else {
+        var tm_obj = { ...obj }
+        tm_obj.privateKey = '不对外暴露'
         logger.error('transfer_handle transfer error', JSON.stringify(obj));
     }
     return ret;