| 
					
				 | 
			
			
				@@ -0,0 +1,274 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const logger = require('../model/logger') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var moralis = require("../model/moralis_sdk"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var utils = require("../model/utils"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const axios = require('axios'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var { account_config } = require('../config/config.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const { max } = require('moment'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//########################################### 出入金数据统计 ######################################## 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const http_request_get = async (data) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var host = account_config.STATISTICS_URL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var path = data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var url = host + path 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    logger.log('http_request_get', url) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return new Promise(response => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        axios.get(url) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            .then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logger.log('res=>', res.status, res.data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (res.data.code == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    response(res.data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    response({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        code: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        msg: err.toString(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        data: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            canNotWithdrawUSD: '0', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            canWithdrawUSD: '0', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            incomeUSDTotal: '0', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            incomeUSDFee: '0' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }).catch(err => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logger.error('http_request_get', err.toString(), url.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                response({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    code: -1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    msg: err.toString(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    data: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        canNotWithdrawUSD: '0', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        canWithdrawUSD: '0', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        incomeUSDTotal: '0', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        incomeUSDFee: '0' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function computeAddressPrice(total_in_coins) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //计算总的价格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (key of total_in_coins.keys()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var item = total_in_coins.get(key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var amount = item.amount 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var usdPrice = item.usdPrice 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (key == '0x0000000000000000000000000000000000000000') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item.totalUsdPrice = parseFloat(amount) / parseFloat(10 ** 18) * parseFloat(usdPrice) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var decimals = 18 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // decimals = await redis.readRedis('REDIS_ERC20_CONTRACT_DECIMALS_' + element.token_address.toLowerCase()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                decimals = await redis.readAppendRedis('REDIS_ERC20_CONTRACT_DECIMALS', item.chain, key.toLowerCase()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                decimals = 18 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item.totalUsdPrice = parseFloat(amount) / parseFloat(decimals) * parseFloat(usdPrice) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async function filterCollectCoinsLists(collect_ret, filterTypt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const total_in_coins = new Map(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var total_gas_fee = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (let index = 0; index < collect_ret.results.length; index++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const element = collect_ret.results[index]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (element.chain == null || element.chain == filterTypt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var before_gas_fee = element.before_gas_fee ? BigInt(element.before_gas_fee) : BigInt('0') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            total_gas_fee = BigInt(element.total_gas_fee) + BigInt(before_gas_fee) + BigInt(total_gas_fee) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (element.transfers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var opts = JSON.parse(element.transfers) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (let index = 0; index < opts.length; index++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    const transfers = opts[index]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var address = transfers.contractAddress ? transfers.contractAddress : '0x0000000000000000000000000000000000000000' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (total_in_coins.get(address) != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        var ins = total_in_coins.get(address) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ins.amount = BigInt(ins.amount) + BigInt(transfers.amount) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        total_in_coins.set(address, ins) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        total_in_coins.set(address, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            amount: BigInt(transfers.amount), //总入金 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            usdPrice: transfers.usdPrice, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            chain: transfers.chain, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //计算总的价格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    computeAddressPrice(total_in_coins) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //获取 total gas 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (total_in_coins.size > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            switch (filterTypt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                case 'bsc_testnet': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                case 'bsc_mainnet': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var price = await moralis.getAllTotkenPrice({ chain: 'bsc_testnet' }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (typeof price === 'string') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        price = JSON.parse(price) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var bnbPriceItem = moralis.findTokenPriceItem('0x0000000000000000000000000000000000000000', price) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    total_gas_fee = parseFloat(total_gas_fee) / parseFloat(10 ** 18) * parseFloat(bnbPriceItem.usdPrice) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    logger.info('new-total_gas_fee ', total_gas_fee, bnbPriceItem) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                case 'czz': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var price = await moralis.getAllTotkenPrice({ chain: 'czz' }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (typeof price === 'string') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        price = JSON.parse(price) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var czzPriceItem = moralis.findTokenPriceItem('0x0000000000000000000000000000000000000000', price) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    total_gas_fee = parseFloat(total_gas_fee) / parseFloat(10 ** 18) * parseFloat(czzPriceItem.usdPrice) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    logger.info('new-total_gas_fee czz', total_gas_fee, czzPriceItem) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } catch (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        logger.error('total_gas_fee', error) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        map: total_in_coins, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        totalGasFee: total_gas_fee //总入金所消耗的 gas fee 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async function getCollectCoinsOutInfo(startTime, endTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var collect_ret = await collect_coins_db.query_collect_total_fee(startTime, endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    logger.info('getCollectCoinsOutInfo query_collect_total_fee', startTime, endTime, collect_ret) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var bsc_env 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    switch (process.env.NODE_ENV) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        case 'dev': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        case 'test': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bsc_env = 'bsc_testnet' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        case 'prd': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bsc_env = 'bsc_mainnet' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bsc_env = 'bsc_mainnet' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var bsc_envnet = await filterCollectCoinsLists(collect_ret, bsc_env) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    logger.info('getCollectCoinsOutInfo bsc_env', bsc_env, bsc_envnet) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var czz = await filterCollectCoinsLists(collect_ret, 'czz') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    logger.info('getCollectCoinsOutInfo czz', czz) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    logger.info('getCollectCoinsOutInfo total ', bsc_envnet.totalGasFee, czz.totalGasFee) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bsc: bsc_envnet.map, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        czz: czz.map, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        totalGasFee: bsc_envnet.totalGasFee + czz.totalGasFee 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async function getWithdrawOutInfo(startTime, endTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (startTime && endTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        startTime = '1655049600000' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        endTime = '1655135999000' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var withdraw_ret = await withdraw_db.getWidthdrawTotalFee(startTime, endTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const withdraw_map = new Map(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (let index = 0; index < withdraw_ret.length; index++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const element = withdraw_ret[index]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (element.gas_price && element.gas_limit) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var total_gas_fee2 = (BigInt(element.gas_price) * BigInt(element.gas_limit)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (withdraw_map.get(element.chain_id) != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var ins = withdraw_map.get(element.chain_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            withdraw_map.set(element.chain_id, BigInt(ins) + BigInt(total_gas_fee2)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            withdraw_map.set(element.chain_id, BigInt(total_gas_fee2)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var keys = withdraw_map.keys(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var total_gas_fee = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (key of keys) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log(key, withdraw_map.get(key));  // map.get(key)可得value值。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var value = withdraw_map.get(key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //获取币价 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (key == 2019) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var price = await moralis.getAllTotkenPrice({ chain: 'czz' }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (typeof price === 'string') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    price = JSON.parse(price) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var czzPriceItem = moralis.findTokenPriceItem('0x0000000000000000000000000000000000000000', price) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                total_gas_fee += parseFloat(value) / parseFloat(10 ** 18) * parseFloat(czzPriceItem.usdPrice) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logger.info('new-total_gas_fee czz', total_gas_fee, czzPriceItem) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var price = await moralis.getAllTotkenPrice({ chain: 'bsc_testnet' }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (typeof price === 'string') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    price = JSON.parse(price) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var bnbPriceItem = moralis.findTokenPriceItem('0x0000000000000000000000000000000000000000', price) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                total_gas_fee += parseFloat(value) / parseFloat(10 ** 18) * parseFloat(bnbPriceItem.usdPrice) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logger.info('new-total_gas_fee bsc', total_gas_fee, bnbPriceItem) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            logger.error('total_gas_fee', error) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        totalGasFee: total_gas_fee 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 获取时间段总支出的 gas fee 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param {*} startTime  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param {*} endTime  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async function getStatisticsInfo() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // //今日 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var startTime = utils.getLastDay('YYYY-MM-DD') + " 00:00:00" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var endTime = utils.getLastDay('YYYY-MM-DD') + " 23:59:59" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    logger.info('getTotalOutGasFee', startTime, endTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //归集 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var collectCoinsOut = await getCollectCoinsOutInfo(startTime, endTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    logger.info('getCollectCoinsOutInfo  collectCoinsOut', collectCoinsOut) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //提币 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var withdrawOut = await getWithdrawOutInfo(startTime, endTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    logger.info('getWithdrawOutInfo withdrawOut ', withdrawOut) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var data = await http_request_get(utils.getLastDay('YYYYMMDD')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //历史,总的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //归集 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var totalCollectCoinsOut = await getCollectCoinsOutInfo(null, null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    logger.info('totalCollectCoinsOut  ', totalCollectCoinsOut) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //提币 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var totalWithdrawOut = await getWithdrawOutInfo(null, null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    logger.info('totalWithdrawOut  ', totalWithdrawOut) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        todayTotalOutGasFee: collectCoinsOut.totalGasFee + withdrawOut.totalGasFee,             //今日总支出的 gas fee 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        todayCanNotWithdrawUSD: data.data.canNotWithdrawUSD,                                    //今日不可提现余额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        todayCanWithdrawUSD: data.data.canWithdrawUSD,                                          //今日可提现余额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        todayIncomeUSDTotal: data.data.incomeUSDTotal,                              //今日总收入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        todayIncomeUSDFee: data.data.incomeUSDFee,                                  //今日固定收入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        totalOutGasFee: totalCollectCoinsOut.totalGasFee + totalWithdrawOut.totalGasFee,                                                          //总支出 gas fee 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        totalWithdrawGasFee: totalWithdrawOut.totalGasFee,                                                     //总提币 gas fee 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        totalCollectCoinsGasFee: totalCollectCoinsOut.totalGasFee,                                                 //总归集 gas fee 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        totalInFee: 0,                                                              //总入金 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        totalOutFee: 0,                                                             //总出金 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        totalbalances: null,                                                        //总余额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ylGasBalance: 0,                                                            //预留 gas 费余额  native 总余额 - 总入金 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        slGasBalance: 0,                                                            //散落 gas 费余额  充值 0.5 gas - 使用 0.3 gas= 散落 0.2gas 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getStatisticsInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 |