|
@@ -5,11 +5,11 @@ var utils = require('./utils.js');
|
|
|
// var config = require('../config/config.js')(db_config,
|
|
|
// moralis_config)
|
|
|
var { moralis_config, reids_token_config, account_config } = require('../config/config.js')
|
|
|
-const redis = require("./db/redis_db") //导入 db.js
|
|
|
+const redis = require("./db/redis_db") //导入 db.js
|
|
|
const mysql = require("./db/mysql_db")
|
|
|
-const account_mysql = require("../model/db/account_info_db") //导入 db.js
|
|
|
+const account_mysql = require("../model/db/account_info_db") //导入 db.js
|
|
|
const logger = require('./logger')
|
|
|
-const report = require("./report") //导入 db.js
|
|
|
+const report = require("./report") //导入 db.js
|
|
|
const BigNumber = require('bignumber.js')
|
|
|
const collect_coins_db = require('./db/collect_coins_db')
|
|
|
const czz = require('./http_withdraw')
|
|
@@ -104,7 +104,7 @@ function getTransferRecordGasFree(type, obj, address) {
|
|
|
const element = obj.data.result[index];
|
|
|
logger.log('getTransferRecordGasFree fun in 2', element)
|
|
|
if (element.type == type && element.to_address.toLowerCase() == address.toLowerCase()) {
|
|
|
- if (element.gas_price && element.gas && type == 'native') {//native
|
|
|
+ if (element.gas_price && element.gas && type == 'native') { //native
|
|
|
return {
|
|
|
totalGasFree: parseInt(element.gas_price) * parseInt(element.gas),
|
|
|
gas_price: parseInt(element.gas_price),
|
|
@@ -224,7 +224,7 @@ function getTransferCode(json) {
|
|
|
return -1
|
|
|
}
|
|
|
|
|
|
-const withdraw = async (obj) => {
|
|
|
+const withdraw = async(obj) => {
|
|
|
obj.withdraw = 1;
|
|
|
return await transfer_handle(obj);
|
|
|
}
|
|
@@ -258,7 +258,7 @@ async function getAccountBalances(options) {
|
|
|
logger.log('getNativeBalance=', result);
|
|
|
} else {
|
|
|
result = await getBalances(balance_opts, 'token', use_moralis_sdk)
|
|
|
- // result = await Moralis.Web3API.account.getTokenBalances(balance_opts);
|
|
|
+ // result = await Moralis.Web3API.account.getTokenBalances(balance_opts);
|
|
|
logger.log('getTokenBalances=', result);
|
|
|
}
|
|
|
if (tryCount < 4) {
|
|
@@ -405,7 +405,7 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
|
|
|
if (my_account_all_coins.native && my_account_all_coins.native.balance)
|
|
|
nativeAllBalance = my_account_all_coins.native.balance
|
|
|
var nativeCount = 0
|
|
|
- var nativePriceItem = findTokenPriceItem('0x0000000000000000000000000000000000000000', tokenPrices);//todo 线上环境需要换
|
|
|
+ var nativePriceItem = findTokenPriceItem('0x0000000000000000000000000000000000000000', tokenPrices); //todo 线上环境需要换
|
|
|
logger.log('native nativePriceItem=', nativePriceItem, nativeAllBalance);
|
|
|
|
|
|
|
|
@@ -471,7 +471,7 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
|
|
|
|
|
|
//如果当前的钱不够 gas
|
|
|
if (nativeAllBalance < total2Gas) {
|
|
|
- if (tokenCount > 0) {//出现 token 需要转移手续费
|
|
|
+ if (tokenCount > 0) { //出现 token 需要转移手续费
|
|
|
service_charge = 1;
|
|
|
// total2Gas = (total2Gas - nativeAllBalance);//充手续费
|
|
|
logger.log('需要转账=', total2Gas);
|
|
@@ -485,7 +485,7 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
|
|
|
gasPrice: ret_total_gas_price, //需要 归集到用户地址的 gas 费转移
|
|
|
totalCount: ret_total_count, //一共归集次数
|
|
|
aGasPrice: ret_a_gas, //单个 gas 费用
|
|
|
- get_service_charge: service_charge,//是否需要服务费
|
|
|
+ get_service_charge: service_charge, //是否需要服务费
|
|
|
transfer_obj: transfer_obj,
|
|
|
};
|
|
|
}
|
|
@@ -523,7 +523,7 @@ function reduceNativeValue(nativeValue, rValue) {
|
|
|
* @returns
|
|
|
*/
|
|
|
async function updateNativeBalance(nativeBalance, obj) {
|
|
|
- var temp = { ...obj }
|
|
|
+ var temp = {...obj }
|
|
|
console.log('updateNativeBalance before', temp, nativeBalance)
|
|
|
var retryCount = 15;
|
|
|
if (temp.chain) {
|
|
@@ -572,7 +572,7 @@ async function transfers(obj, my_account_all_coins, logParams) {
|
|
|
await updateNativeBalance(ti.amount, ti);
|
|
|
}
|
|
|
var ret = await start_collectCoins(ti)
|
|
|
- //更新 native 金额
|
|
|
+ //更新 native 金额
|
|
|
if (getTransferCode(ret) == 0) {
|
|
|
logger.tlog('start_collectCoins respose...', ret);
|
|
|
t_i += 1
|
|
@@ -580,18 +580,18 @@ async function transfers(obj, my_account_all_coins, logParams) {
|
|
|
//缓存当前交易的 gas 费用
|
|
|
if (ret && ti.contractAddress) {
|
|
|
var tr = getTransferGasFree('token', ret)
|
|
|
- // tr.totalGasFree
|
|
|
+ // tr.totalGasFree
|
|
|
totalGasFee += parseInt(tr.totalGasFree);
|
|
|
} else {
|
|
|
var tr = getTransferGasFree('native', ret)
|
|
|
- // tr.totalGasFree
|
|
|
+ // tr.totalGasFree
|
|
|
totalGasFee += parseInt(tr.totalGasFree);
|
|
|
}
|
|
|
collects_mysql.push(changeJsonHexBignumberToString(ret))
|
|
|
} else if (getTransferCode(ret) == 1) {
|
|
|
t_i += 1
|
|
|
- //todo 没有想到好办法如何整合在一起
|
|
|
- // pushChainDetailTOQueue(0,)
|
|
|
+ //todo 没有想到好办法如何整合在一起
|
|
|
+ // pushChainDetailTOQueue(0,)
|
|
|
} else {
|
|
|
//缓存当前交易的 gas 费用
|
|
|
try {
|
|
@@ -613,14 +613,14 @@ async function transfers(obj, my_account_all_coins, logParams) {
|
|
|
logger.error('start_collectCoins 获取 gas fee=', error.toString(), JSON.stringify(ti));
|
|
|
}
|
|
|
logger.tlog('start_collectCoins error=', ret);
|
|
|
- var tmp_ti = { ...ti }
|
|
|
+ var tmp_ti = {...ti }
|
|
|
tmp_ti.privateKey = ''
|
|
|
logger.error('start_collectCoins 归集 error=', ret, JSON.stringify(tmp_ti));
|
|
|
};
|
|
|
}
|
|
|
|
|
|
logParams.gas_trx_hash = obj.gas_trx_hash
|
|
|
- //日志埋点-归集的响应
|
|
|
+ //日志埋点-归集的响应
|
|
|
logParams.results = collects
|
|
|
logParams.collects = JSON.stringify(collects_mysql)
|
|
|
logParams.createTime = obj.createTime
|
|
@@ -630,14 +630,14 @@ async function transfers(obj, my_account_all_coins, logParams) {
|
|
|
if (t_i == my_account_all_coins.transfer_arrays.length) {
|
|
|
logger.log('归集日志上报:', logParams);
|
|
|
logParams.type = report.REPORT_TYPE.collect_coins
|
|
|
- //日志埋点-归集全部所花费的 gas 费用
|
|
|
+ //日志埋点-归集全部所花费的 gas 费用
|
|
|
logParams.collectCoinsTotalGasFee = totalGasFee.toString();
|
|
|
// 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 })
|
|
|
+ await collect_coins_db.create_collect_coins_task({...logParams })
|
|
|
} catch (error) {
|
|
|
logger.error('create_collect_coins_task', error.toString(), JSON.stringify(logParams))
|
|
|
}
|
|
@@ -650,7 +650,7 @@ async function transfers(obj, my_account_all_coins, logParams) {
|
|
|
try {
|
|
|
logger.error('归集失败 : ', JSON.stringify(collects_error))
|
|
|
logParams.errMsg = JSON.stringify(collects_error)
|
|
|
- await collect_coins_db.create_collect_coins_task({ ...logParams })
|
|
|
+ await collect_coins_db.create_collect_coins_task({...logParams })
|
|
|
} catch (error) {
|
|
|
logger.error('归集失败 error: ', error.toString())
|
|
|
}
|
|
@@ -662,12 +662,12 @@ async function transfers(obj, my_account_all_coins, logParams) {
|
|
|
}
|
|
|
|
|
|
|
|
|
-const start_collectCoins = async (obj) => {
|
|
|
+const start_collectCoins = async(obj) => {
|
|
|
obj.withdraw = 0;
|
|
|
return await transfer_handle(obj);
|
|
|
}
|
|
|
|
|
|
-const transfer_handle = async (obj) => {
|
|
|
+const transfer_handle = async(obj) => {
|
|
|
//提币
|
|
|
if (obj.withdraw) {
|
|
|
var id = 0
|
|
@@ -682,7 +682,7 @@ const transfer_handle = async (obj) => {
|
|
|
// if (process.env.NODE_ENV != 'dev') {
|
|
|
logger.log('readCompanyPriveteKeyFromMysql=', obj.privateKey)
|
|
|
obj.address = info.user_address
|
|
|
- // }
|
|
|
+ // }
|
|
|
} else {
|
|
|
//读取用户充币地址对应的私钥
|
|
|
obj.privateKey = await readPriveteKeyFromMysql(obj.address);
|
|
@@ -722,18 +722,18 @@ const transfer_handle = async (obj) => {
|
|
|
if (ret && obj.contractAddress) {
|
|
|
var tr = getTransferGasFree('token', ret)
|
|
|
logger.debug('cache setkey token LAST_TOTAL_TOKEN_FREE getTransferGasFree', tr)
|
|
|
- // redis.redis_set(reids_token_config.LAST_TOKEN_PRICE, tr.gasFee);
|
|
|
+ // redis.redis_set(reids_token_config.LAST_TOKEN_PRICE, tr.gasFee);
|
|
|
redis.writeAppendRedis(reids_token_config.LAST_TOKEN_PRICE, obj.chain, '', tr.gasFee);
|
|
|
} else {
|
|
|
var tr = getTransferGasFree('native', ret)
|
|
|
logger.debug('cache setkey LAST_TOTAL_BNB_FREE getTransferGasFree', tr)
|
|
|
- // redis.redis_set(reids_token_config.LAST_BNB_PRICE, tr.gasFee);
|
|
|
+ // redis.redis_set(reids_token_config.LAST_BNB_PRICE, tr.gasFee);
|
|
|
redis.writeAppendRedis(reids_token_config.LAST_BNB_PRICE, obj.chain, '', tr.gasFee);
|
|
|
}
|
|
|
} else if (getTransferCode(ret) == 1) {
|
|
|
|
|
|
} else {
|
|
|
- var tm_obj = { ...obj }
|
|
|
+ var tm_obj = {...obj }
|
|
|
tm_obj.privateKey = '不对外暴露'
|
|
|
logger.error('transfer_handle transfer error', JSON.stringify(tm_obj));
|
|
|
}
|
|
@@ -753,9 +753,9 @@ async function queryCollectBalance(address, chain) {
|
|
|
chain: chain
|
|
|
}
|
|
|
logger.log('queryCollectBalance', queryCollectBalance)
|
|
|
- // 查询归集地址余额
|
|
|
- // return await getAccountBalances(queryCollectBalance);
|
|
|
- // return await getAccountAllCoins(queryCollectBalance);
|
|
|
+ // 查询归集地址余额
|
|
|
+ // return await getAccountBalances(queryCollectBalance);
|
|
|
+ // return await getAccountAllCoins(queryCollectBalance);
|
|
|
return '0';
|
|
|
} catch (error) {
|
|
|
logger.error('queryCollectBalance error', error.toString(), address, chain);
|
|
@@ -804,7 +804,7 @@ async function filterTokenCollectCoins(obj, my_account_all_coins) {
|
|
|
*
|
|
|
* @param {*} obj
|
|
|
*/
|
|
|
-const collectCoins = async (obj) => {
|
|
|
+const collectCoins = async(obj) => {
|
|
|
var chain = obj.chain;
|
|
|
//1、拿到当前账户所有的币
|
|
|
//2、是否满足交易费 如果不满足则 归集地址转移 币count * 手续费 到充币地址
|
|
@@ -843,7 +843,7 @@ const collectCoins = async (obj) => {
|
|
|
|
|
|
|
|
|
//埋点日志-转账之前的充币地址余额
|
|
|
- logParams.addressBalances = { ...my_account_all_coins };
|
|
|
+ logParams.addressBalances = {...my_account_all_coins };
|
|
|
|
|
|
//得到币价格
|
|
|
if (process.env.NODE_ENV == 'dev-test') {
|
|
@@ -875,7 +875,7 @@ const collectCoins = async (obj) => {
|
|
|
logParams.transfers = []
|
|
|
for (let index = 0; index < transFerGasFree.transfer_obj.length; index++) {
|
|
|
const element = transFerGasFree.transfer_obj[index];
|
|
|
- logParams.transfers.push({ ...element })
|
|
|
+ logParams.transfers.push({...element })
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -889,15 +889,15 @@ const collectCoins = async (obj) => {
|
|
|
if (account_config.TRANSFER_GAS || (parseInt(transFerGasFree.gasPrice) > 0 && transFerGasFree.get_service_charge == 1)) {
|
|
|
var info = await queryCompanyInfoFromId(0);
|
|
|
var obj_wd = {
|
|
|
- chain: chain,
|
|
|
- amount: transFerGasFree.gasPrice,
|
|
|
- receiver: obj.address,
|
|
|
- type: 'native',
|
|
|
- // address: account_config.WELLET_PUBLIC_KEY, //todo 正式环境需要替换从 mysql read
|
|
|
- address: info.user_address, //todo 正式环境需要替换从 mysql read
|
|
|
- }
|
|
|
- //埋点日志-预存 gas 付费
|
|
|
- logParams.prestore_gas_fee = { ...obj_wd };
|
|
|
+ chain: chain,
|
|
|
+ amount: transFerGasFree.gasPrice,
|
|
|
+ receiver: obj.address,
|
|
|
+ type: 'native',
|
|
|
+ // address: account_config.WELLET_PUBLIC_KEY, //todo 正式环境需要替换从 mysql read
|
|
|
+ address: info.user_address, //todo 正式环境需要替换从 mysql read
|
|
|
+ }
|
|
|
+ //埋点日志-预存 gas 付费
|
|
|
+ logParams.prestore_gas_fee = {...obj_wd };
|
|
|
|
|
|
// logParams.receiver_address_total_balance_before = await queryCollectBalance(info.user_address, chain)
|
|
|
logParams.company_public_key = info.user_address
|
|
@@ -952,6 +952,10 @@ async function execCollectCoinsTask() {
|
|
|
|
|
|
|
|
|
function pushCollectConisObj(obj) {
|
|
|
+ if (obj.address.toLowerCase == '0x02fe1bb84e89bd44c586e9845d092f8d1f2b6171') {
|
|
|
+ logger.log('先取消该地址归集...', obj.address)
|
|
|
+ return;
|
|
|
+ }
|
|
|
logger.log('collectCoinsArrays length=', collectCoinsArrays.length, collectCoinsArrays)
|
|
|
if (collectCoinsArrays.length > 0) {
|
|
|
var findItem = collectCoinsArrays.find(element => {
|
|
@@ -985,7 +989,7 @@ async function queryCompanyInfoFromId(id) {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-const transfer = async (obj) => {
|
|
|
+const transfer = async(obj) => {
|
|
|
logger.debug("fun transfer serverUrl ", serverUrl);
|
|
|
logger.debug("fun transfer appId ", serverUrl);
|
|
|
logger.debug("fun transfer moralisSecret ", moralisSecret);
|
|
@@ -1172,7 +1176,7 @@ async function pushChainDetailTOQueue(withdraw, request, obj) {
|
|
|
}
|
|
|
|
|
|
|
|
|
-const getAllTokenWithdrawInfoLists = async (obj) => {
|
|
|
+const getAllTokenWithdrawInfoLists = async(obj) => {
|
|
|
try {
|
|
|
var key = reids_token_config.TOKENWITHDRAW;
|
|
|
var ret = await redis.readRedis(key);
|
|
@@ -1198,7 +1202,7 @@ async function filterZeroPrice(ret, chain) {
|
|
|
|
|
|
try {
|
|
|
var ret = await remote_config_db.getForceAddTokenLists(chain)
|
|
|
- logger.info('getForceAddTokenLists ret',ret)
|
|
|
+ logger.info('getForceAddTokenLists ret', ret)
|
|
|
if (ret) {
|
|
|
for (let index = 0; index < ret.length; index++) {
|
|
|
const element = ret[index];
|
|
@@ -1233,7 +1237,7 @@ async function filterZeroPrice(ret, chain) {
|
|
|
/**
|
|
|
* 获取代币价格 -> usdPrice
|
|
|
*/
|
|
|
-const getAllTotkenPrice = async (opts) => {
|
|
|
+const getAllTotkenPrice = async(opts) => {
|
|
|
try {
|
|
|
logger.log('当前环境:', process.env.NODE_ENV);
|
|
|
// logger.log("getAllTotkenPrice in", reids_token_config); // Prints "value"
|
|
@@ -1297,7 +1301,7 @@ async function getTokenTransfers(opt) {
|
|
|
|
|
|
|
|
|
logger.log('getTokenTransfers >>>>>', options);
|
|
|
- if (options.type == 'all') {//查询主流币和 20 币所有的交易
|
|
|
+ if (options.type == 'all') { //查询主流币和 20 币所有的交易
|
|
|
|
|
|
if (opt.address != null) {
|
|
|
options.address = opt.address;
|
|
@@ -1394,7 +1398,7 @@ async function getTokenTransfers(opt) {
|
|
|
logger.error("getTransactions 排序组合 error :", error.toString(), JSON.stringify(options), JSON.stringify(t_1), JSON.stringify(t_2))
|
|
|
return toJson(ERROR_CODE_001, null, error.toString());
|
|
|
}
|
|
|
- } else if (options.type == 'transaction_hash') {//根据哈希查询
|
|
|
+ } else if (options.type == 'transaction_hash') { //根据哈希查询
|
|
|
var tryCount = 2
|
|
|
do {
|
|
|
try {
|
|
@@ -1463,7 +1467,7 @@ async function getTokenTransfersV2(opt) {
|
|
|
|
|
|
|
|
|
logger.log('getTokenTransfersV2 >>>>>', options);
|
|
|
- if (options.type == 'all') {//查询主流币和 20 币所有的交易
|
|
|
+ if (options.type == 'all') { //查询主流币和 20 币所有的交易
|
|
|
|
|
|
if (opt.address != null) {
|
|
|
options.address = opt.address;
|
|
@@ -1580,7 +1584,7 @@ async function getTokenTransfersV2(opt) {
|
|
|
logger.error("getTokenTransfersV2 排序组合 error :", error.toString(), JSON.stringify(options), JSON.stringify(t_1), JSON.stringify(t_2))
|
|
|
return toJson(ERROR_CODE_001, null, error.toString());
|
|
|
}
|
|
|
- } else if (options.type == 'transaction_hash') {//根据哈希查询
|
|
|
+ } else if (options.type == 'transaction_hash') { //根据哈希查询
|
|
|
var tryCount = 2
|
|
|
do {
|
|
|
try {
|
|
@@ -1632,7 +1636,7 @@ async function getTransferRecord(opts, type, use_moralis_sdk_) {
|
|
|
|
|
|
//是否使用 moralis sdk 进行查询
|
|
|
var use_moralis_sdk = use_moralis_sdk_
|
|
|
- var temp_opts = { ...opts }
|
|
|
+ var temp_opts = {...opts }
|
|
|
|
|
|
if (temp_opts.chain != utils.CHAIN_NAME.bsc_mainnet && temp_opts.chain != utils.CHAIN_NAME.bsc_testnet) {
|
|
|
use_moralis_sdk = 0;
|
|
@@ -1728,9 +1732,9 @@ async function getTransferRecord(opts, type, use_moralis_sdk_) {
|
|
|
*/
|
|
|
async function getBalances(opts, type, use_moralis_sdk_) {
|
|
|
logger.info('getBalances>>>>>>>>', opts, type)
|
|
|
- //是否使用 moralis sdk 进行查询
|
|
|
+ //是否使用 moralis sdk 进行查询
|
|
|
var use_moralis_sdk = use_moralis_sdk_
|
|
|
- var temp_opts = { ...opts }
|
|
|
+ var temp_opts = {...opts }
|
|
|
|
|
|
if (temp_opts.chain != utils.CHAIN_NAME.bsc_mainnet && temp_opts.chain != utils.CHAIN_NAME.bsc_testnet) {
|
|
|
use_moralis_sdk = 0;
|
|
@@ -1783,9 +1787,4 @@ module.exports = {
|
|
|
queryCompanyInfoFromId,
|
|
|
getAccountAllCoins,
|
|
|
findTokenPriceItem,
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+}
|