|
@@ -9,6 +9,8 @@ const mysql = require("./db/mysql_db")
|
|
|
const logger = require('./logger')
|
|
|
const report = require("./report")
|
|
|
const BigNumber = require('bignumber.js')
|
|
|
+const collect_coins_db = require('./db/collect_coins_db')
|
|
|
+
|
|
|
|
|
|
var serverUrl = moralis_config.SERVER_URL;
|
|
|
var appId = moralis_config.APP_ID;
|
|
@@ -169,7 +171,7 @@ async function getAccountBalances(options) {
|
|
|
if (options.chain) {
|
|
|
options.chain = utils.getChainName(options.chain)
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -180,10 +182,10 @@ async function getAccountBalances(options) {
|
|
|
var interval = 500
|
|
|
var result;
|
|
|
var balance_opts = {
|
|
|
- address:options.address,
|
|
|
- chain:options.chain
|
|
|
+ address: options.address,
|
|
|
+ chain: options.chain
|
|
|
}
|
|
|
- logger.log('getAccountBalances :', options,balance_opts)
|
|
|
+ logger.log('getAccountBalances :', options, balance_opts)
|
|
|
do {
|
|
|
try {
|
|
|
if (options.type == 'native') {
|
|
@@ -193,9 +195,8 @@ async function getAccountBalances(options) {
|
|
|
result = await Moralis.Web3API.account.getTokenBalances(balance_opts);
|
|
|
logger.log('getTokenBalances=', result);
|
|
|
}
|
|
|
- if(tryCount < 4)
|
|
|
- {
|
|
|
- logger.error('getBalances succeed:', JSON.stringify(balance_opts), " 已重试:" + tryCount +"次")
|
|
|
+ if (tryCount < 4) {
|
|
|
+ logger.error('getBalances succeed:', JSON.stringify(balance_opts), " 已重试:" + tryCount + "次")
|
|
|
}
|
|
|
break
|
|
|
} catch (error) {
|
|
@@ -206,7 +207,7 @@ async function getAccountBalances(options) {
|
|
|
tryCount -= 1;
|
|
|
await utils.sleep(delay)
|
|
|
delay += interval
|
|
|
- logger.error('getBalances error:', JSON.stringify(balance_opts), "重试:" + tryCount +"次")
|
|
|
+ logger.error('getBalances error:', JSON.stringify(balance_opts), "重试:" + tryCount + "次")
|
|
|
}
|
|
|
} while (tryCount >= 1);
|
|
|
return result
|
|
@@ -284,6 +285,7 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
|
|
|
receiver: receiver_info.user_address,
|
|
|
type: 'erc20',
|
|
|
address: obj.address,
|
|
|
+ usdPrice: find_transfer_item.usdPrice
|
|
|
}
|
|
|
transfer_obj.push(obj_20)
|
|
|
}
|
|
@@ -338,6 +340,7 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
|
|
|
receiver: receiver_info.user_address,
|
|
|
type: 'native',
|
|
|
address: obj.address,
|
|
|
+ usdPrice: nativePriceItem.usdPrice
|
|
|
}
|
|
|
transfer_obj.push(obj_native)
|
|
|
}
|
|
@@ -441,6 +444,7 @@ async function transfers(obj, my_account_all_coins, logParams) {
|
|
|
var t_i = 0;
|
|
|
var totalGasFee = 0;
|
|
|
var collects = []
|
|
|
+ var collects_error = []
|
|
|
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)
|
|
@@ -450,13 +454,11 @@ async function transfers(obj, my_account_all_coins, logParams) {
|
|
|
if (ti.type == 'native') {
|
|
|
await updateNativeBalance(ti.amount, ti);
|
|
|
}
|
|
|
-
|
|
|
var ret = await start_collectCoins(ti)
|
|
|
|
|
|
if (isTransferSucceed(ret)) {
|
|
|
logger.tlog('start_collectCoins respose...', ret);
|
|
|
t_i += 1
|
|
|
-
|
|
|
collects.push(ret);
|
|
|
|
|
|
if (ret && ti.contractAddress) {
|
|
@@ -469,25 +471,59 @@ async function transfers(obj, my_account_all_coins, logParams) {
|
|
|
totalGasFee += parseInt(tr.totalGasFree);
|
|
|
}
|
|
|
} else {
|
|
|
+
|
|
|
+ try {
|
|
|
+ if (ret && ti.contractAddress) {
|
|
|
+ var tr = getTransferGasFree('token', ret)
|
|
|
+
|
|
|
+ totalGasFee += parseInt(tr.totalGasFree);
|
|
|
+ } else {
|
|
|
+ var tr = getTransferGasFree('native', ret)
|
|
|
+
|
|
|
+ totalGasFee += parseInt(tr.totalGasFree);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ collects_error.push(JSON.parse(ret).errMsg)
|
|
|
+ } catch (error) {
|
|
|
+ logger.error('collects_error json parse error',ret)
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ logger.error('start_collectCoins 获取 gas fee=', error.toString(), JSON.stringify(ti));
|
|
|
+ }
|
|
|
logger.tlog('start_collectCoins error=', ret);
|
|
|
- logger.error('start_collectCoins 归集 error=', ret, ti.toString());
|
|
|
+ logger.error('start_collectCoins 归集 error=', ret, JSON.stringify(ti));
|
|
|
};
|
|
|
}
|
|
|
+
|
|
|
+ logParams.collectCoinsTotalGasFee = totalGasFee.toString();
|
|
|
if (t_i == my_account_all_coins.transfer_arrays.length) {
|
|
|
-
|
|
|
- logParams.collectCoinsTotalGasFee = totalGasFee.toString();
|
|
|
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)
|
|
|
+
|
|
|
+ logParams.status = 0
|
|
|
+ try {
|
|
|
+ await collect_coins_db.create_collect_coins_task({ ...logParams })
|
|
|
+ } catch (error) {
|
|
|
+ logger.error('create_collect_coins_task', error.toString(), JSON.stringify(logParams))
|
|
|
+ }
|
|
|
|
|
|
report.logReport(logParams)
|
|
|
-
|
|
|
return toJson(0, null, '所有币归集成功.');
|
|
|
} else {
|
|
|
- return toJson(-1, null, '归集失败.');
|
|
|
+
|
|
|
+ logParams.status = -1
|
|
|
+ try {
|
|
|
+ logger.error('归集失败 : ', JSON.stringify(collects_error))
|
|
|
+ logParams.errMsg = JSON.stringify(collects_error)
|
|
|
+ await collect_coins_db.create_collect_coins_task({ ...logParams })
|
|
|
+ } catch (error) {
|
|
|
+ logger.error('归集失败 error: ', error.toString())
|
|
|
+ }
|
|
|
+ return toJson(-1, null, JSON.stringify(collects_error));
|
|
|
}
|
|
|
} else {
|
|
|
return toJson(-1, null, 'transfer conditions are not met.');
|