| 
					
				 | 
			
			
				@@ -11,6 +11,7 @@ const BigNumber = require('bignumber.js') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const czz = require('../model/czz') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var remote_config_db = require("../model/db/remote_config_db"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const account_mysql = require("../model/db/account_info_db")  //导入 db.js 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var collect_coins_db = require("../model/db/collect_coins_db"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /**  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 获取代币价格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @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  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -103,45 +145,47 @@ async function getTransfersV2(ctx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var temp_obj = { ...obj } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     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) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -467,7 +511,6 @@ async function withdrawV3(ctx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const obj = ctx.request.body; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // for (let index = 0; index < 10; index++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var log_obj = { ...obj } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     logger.log('withdrawV3', log_obj) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var obj_ = decrypt_withdraw_content(log_obj.content) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -491,7 +534,6 @@ async function withdrawV3(ctx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return utils.toJson(-2, null, ' withdraw_id not empty.') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 async function withdrawV3Test(ctx) { 
			 |