Bladeren bron

merge czz

DevYK 2 jaren geleden
bovenliggende
commit
75d73812b6
6 gewijzigde bestanden met toevoegingen van 82 en 59 verwijderingen
  1. 0 2
      config/prd_config.js
  2. 19 17
      model/db/account_info_db.js
  3. 6 3
      model/db/collect_coins_db.js
  4. 38 24
      model/moralis_sdk.js
  5. 13 6
      model/utils.js
  6. 6 7
      routes/sdk.js

+ 0 - 2
config/prd_config.js

@@ -30,8 +30,6 @@ const reids_token_config = {
     COLLECT_CONIS_QUEUE_KEY:'COLLECT_CONIS_QUEUE_KEY',
     LAST_COLLECT_PUBLIC_KEY:'LAST_COLLECT_PUBLIC_LEY',
     LAST_COLLECT_TIME:'LAST_COLLECT_TIME',
-    
-
 }
 
 // http 埋点上报配置

+ 19 - 17
model/db/account_info_db.js

@@ -96,14 +96,14 @@ async function getAccountBalances_(opts) {
     var sql_main = 'select * from '
     var sql_table_name = ' user_balance '
     var sql_where = ' WHERE '
-    var sql_where_name = ' usr_address=? ORDER BY update_tm DESC '
-    var query_account_balances_params = [opts.address]
+    var sql_where_name = ' usr_address=?  AND chain=? ORDER BY update_tm DESC '
+    var query_account_balances_params = [opts.address,opts.chain]
     if (opts.type == 'native') {
-        sql_where_name = ' usr_address=? AND token_address=? ORDER BY update_tm DESC '
-        query_account_balances_params = [opts.address, '0x0000000000000000000000000000000000000000']
+        sql_where_name = ' usr_address=? AND token_address=?  AND chain=? ORDER BY update_tm DESC '
+        query_account_balances_params = [opts.address, '0x0000000000000000000000000000000000000000', opts.chain]
     } else if (opts.type == 'token') {
-        sql_where_name = ' usr_address=? AND token_address!=? ORDER BY update_tm DESC '
-        query_account_balances_params = [opts.address, '0x0000000000000000000000000000000000000000']
+        sql_where_name = ' usr_address=? AND token_address!=?  AND chain=? ORDER BY update_tm DESC '
+        query_account_balances_params = [opts.address, '0x0000000000000000000000000000000000000000', opts.chain]
     }
     var new_sql = sql_main.concat(sql_table_name, sql_where, sql_where_name);
     var query_account_balances_sql = new_sql
@@ -142,21 +142,23 @@ async function getAccountTransactions_(opts) {
     var sql_main = 'select * from '
     var sql_table_name = ' user_transaction_log '
     var sql_where = ' WHERE '
-    var sql_where_name = ' usr_to_address=? AND block_num>=?'
-    var query_account_transactions_params = [opts.address, opts.from_block ? opts.from_block : 1]
+    var sql_where_name = ' usr_to_address=? AND block_num>=? AND chain=? '
+    var query_account_transactions_params = [opts.address, opts.from_block ? opts.from_block : 1, opts.chain]
     if (opts.type == 'native') {
-        sql_where_name = ' usr_to_address=? AND block_num>=? AND token_address=? '
-        query_account_transactions_params = [opts.address, opts.from_block ? opts.from_block : 1, '0x0000000000000000000000000000000000000000']
+        sql_where_name = ' usr_to_address=? AND block_num>=? AND token_address=? AND chain=?  '
+        query_account_transactions_params = [opts.address, opts.from_block ? opts.from_block : 1, '0x0000000000000000000000000000000000000000', opts.chain]
     } else if (opts.type == 'token') {
-        sql_where_name = ' usr_to_address=? AND block_num>=? AND token_address!=? '
-        query_account_transactions_params = [opts.address, opts.from_block ? opts.from_block : 1, '0x0000000000000000000000000000000000000000']
+        sql_where_name = ' usr_to_address=? AND block_num>=? AND token_address!=? AND chain=?  '
+        query_account_transactions_params = [opts.address, opts.from_block ? opts.from_block : 1, '0x0000000000000000000000000000000000000000', opts.chain]
     } else if (opts.type == 'hash') {
-        sql_where_name = ' trx_hash=? '
-        query_account_transactions_params = [opts.transaction_hash, opts.from_block ? opts.from_block : 1, '0x0000000000000000000000000000000000000000']
+        sql_where_name = ' trx_hash=? AND chain=?  '
+        query_account_transactions_params = [opts.transaction_hash, opts.from_block ? opts.from_block : 1, '0x0000000000000000000000000000000000000000', opts.chain]
     }
     var new_sql = sql_main.concat(sql_table_name, sql_where, sql_where_name);
     var query_account_transactions_sql = new_sql
 
+    logger.log('getAccountTransactions new_sql', new_sql)
+    logger.log('getAccountTransactions query_account_transactions_params', query_account_transactions_params)
     return new Promise((resolve) => {
         getMySqlInstance().getConnection(function (err, connection) {
             if (err) {
@@ -197,7 +199,7 @@ async function getAccountBalances(opts) {
                     results.push({
                         type: 'native',
                         balance: utils.scientificNotationToString(element.balance).toString(),
-                        responseType:'yqcx'
+                        responseType: 'yqcx'
                     })
                 } else {
                     // {
@@ -219,8 +221,8 @@ async function getAccountBalances(opts) {
                         type: 'token',
                         token_address: element.token_address,
                         balance: utils.scientificNotationToString(element.balance).toString(),
-                        decimals: parseInt(decimals) ,
-                        responseType:'yqcx'
+                        decimals: parseInt(decimals),
+                        responseType: 'yqcx'
                     })
                 }
             }

+ 6 - 3
model/db/collect_coins_db.js

@@ -34,9 +34,12 @@ const utils = require('../utils.js')
 
     var user_address = opts.user_address ? opts.user_address : ''
 
-    var create_withdraw_sql = 'INSERT INTO collect_coins_manage (user_address,balances,transfers,prestore_gas_fee,company_public_key,total_gas_fee,status,create_time,update_time,resposes,error_msg)' +
-        'VALUES(?,?,?,?,?,?,?,?,?,?,?)'
-    var create_withdraw_params = [user_address, JSON.stringify(balances), JSON.stringify(transfers), JSON.stringify(prestore_gas_free), company_public_key, total_gas_fee, status, create_time, update_time, resposes, error_msg ? error_msg : '']
+    var  chain = opts.chain
+
+    var create_withdraw_sql = 'INSERT INTO collect_coins_manage (user_address,balances,transfers,prestore_gas_fee,company_public_key,total_gas_fee,status,create_time,update_time,resposes,error_msg,chain)' +
+        'VALUES(?,?,?,?,?,?,?,?,?,?,?,?)'
+    var  chain = opts.chain
+    var create_withdraw_params = [user_address, JSON.stringify(balances), JSON.stringify(transfers), JSON.stringify(prestore_gas_free), company_public_key, total_gas_fee, status, create_time, update_time, resposes, error_msg ? error_msg : '',chain]
 
     logger.log('create_collect_coins_task create_collect_coins_task_sql', create_withdraw_sql, create_withdraw_params);
     return new Promise((resolve) => {

+ 38 - 24
model/moralis_sdk.js

@@ -586,7 +586,7 @@ 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
-            var info = await queryCompanyInfoFromId(0);
+            // var info = await queryCompanyInfoFromId(0);
             // logParams.receiver_address_total_balance_after = await queryCollectBalance(info.user_address, obj.chain)
             //归集入库
             logParams.status = 0
@@ -665,7 +665,6 @@ const transfer_handle = async (obj) => {
         }
     }
 
-
     var ret = await transfer(obj);
     if (isTransferSucceed(ret)) {
         //缓存当前交易的 gas 费用
@@ -704,7 +703,6 @@ async function queryCollectBalance(address, chain) {
         logger.error('queryCollectBalance error', error.toString(), address, chain);
         return 0;
     }
-
 }
 
 
@@ -806,6 +804,7 @@ const collectCoins = async (obj) => {
 
         obj.chain = chain;
         obj.transFerGasFree = transFerGasFree;
+        logParams.chain = chain
         logger.log('transfers--->', obj);
         var ret = await transfers(obj, my_account_all_coins, logParams);
         logger.log('归集结果=', ret);
@@ -906,20 +905,26 @@ const transfer = async (obj) => {
     if (obj.privateKey != null) {
         opts.privateKey = obj.privateKey;
     }
-    var options;
     try {
-        // sending 0.5 DAI tokens with 18 decimals on BSC testnet
-        if (opts.contractAddress) { //如果存在就是代币
+        var ret = await transfer_(opts)
+        return toJson(SUCCEED_CODE, ret, "");
+    } catch (error) {
+        logger.tlog('transfer error:', error);
+        logger.error('重要消息-重要消息-重要消息 transfer error:', error.toString(), JSON.stringify(options))
+        if (error.reason != null) {
+            return toJson(ERROR_CODE_001, null, error.toString());
+        } else {
+            return toJson(ERROR_CODE_001, null, error.toString());
+        }
+    }
+};
 
-            // if (opts.contractAddress == SHIB_ADDRESS) {
-            //     //提币金额必须大于 20000 ,手续费 10000
-            //     if (parseInt(opts.amount) >= SHIB_AMOUNT_LIMIT) {
-            //         opts.amount = (parseInt(opts.amount) - SHIB_AMOUNT_FEE_LIMIT).toString()
-            //     } else {
-            //         return toJson(-1, null, "最低限额为 20000 个token.");
-            //     }
-            // }
 
+async function transfer_(opts) {
+    if (opts.chainId != utils.CHAIN_ID.czz) {
+        var options;
+        // sending 0.5 DAI tokens with 18 decimals on BSC testnet
+        if (opts.contractAddress) { //如果存在就是代币
             options = Moralis.TransferOptions = {
                 type: opts.type,
                 amount: opts.amount,
@@ -936,7 +941,6 @@ const transfer = async (obj) => {
             };
             logger.tlog("options native =", options, opts.chainId);
         }
-
         // Enable web3
         await Moralis.enableWeb3({
             //BSC mainnet = 0x38-56 testnet:0x61-97
@@ -946,17 +950,15 @@ const transfer = async (obj) => {
         logger.tlog("options id =", opts.chainId);
         var ret = await Moralis.transfer(options);
         logger.tlog("transfer 结果 =", ret);
-        return toJson(SUCCEED_CODE, ret, "");
-    } catch (error) {
-        logger.tlog('transfer error:', error);
-        logger.error('重要消息-重要消息-重要消息 transfer error:', error.toString(), JSON.stringify(options))
-        if (error.reason != null) {
-            return toJson(ERROR_CODE_001, null, error.toString());
-        } else {
-            return toJson(ERROR_CODE_001, null, error.toString());
+        return ret
+    } else {
+        switch (opts.chainId) {
+            case utils.CHAIN_ID.czz:
+                //todo...
+                break
         }
     }
-};
+}
 const getAllTokenWithdrawInfoLists = async (obj) => {
     try {
         var key = reids_token_config.TOKENWITHDRAW;
@@ -1347,6 +1349,12 @@ async function getTransferRecord(opts, type, use_moralis_sdk_) {
     //是否使用 moralis sdk 进行查询
     var use_moralis_sdk = use_moralis_sdk_
     var temp_opts = { ...opts }
+
+
+    if (temp_opts.chain == utils.CHAIN_NAME.czz) {
+        use_moralis_sdk = 0;
+    }
+
     if (use_moralis_sdk) {
         var results = []
         if (type == 'native') {
@@ -1435,6 +1443,12 @@ async function getBalances(opts, type, use_moralis_sdk_) {
     //是否使用 moralis sdk 进行查询
     var use_moralis_sdk = use_moralis_sdk_
     var temp_opts = { ...opts }
+
+
+    if (temp_opts.chain == utils.CHAIN_NAME.czz) {
+        use_moralis_sdk = 0;
+    }
+
     if (use_moralis_sdk) {
         if (type == 'native') {
             return await Moralis.Web3API.account.getNativeBalance(temp_opts);

+ 13 - 6
model/utils.js

@@ -92,13 +92,15 @@ function decrypt(data) {
 const CHAIN_NAME = {
     eth: 'eth',
     bsc_testnet: 'bsc testnet',
-    bsc_mainnet: 'bsc'
+    bsc_mainnet: 'bsc',
+    czz: 'czz'
 }
 
 const CHAIN_ID = {
     eth: '0x1',
     bsc_testnet: '0x61',
-    bsc_mainnet: '0x38'
+    bsc_mainnet: '0x38',
+    czz: 'czz',
 }
 
 const CHAIN_ID_NAME = {
@@ -106,6 +108,11 @@ const CHAIN_ID_NAME = {
     56: 'bsc_mainnet',
 }
 
+const USE_SDK = {
+    MORALIS:'moralis',
+    DENET:'denet',
+}
+
 function getChainName(key) {
     return CHAIN_NAME[key];
 }
@@ -131,13 +138,12 @@ function getCurrentDate() {
     return chinaTime('YYYY-MM-DD HH:mm:ss');
 }
 
-function getTimestampToDate(tm)
-{
-        var now = new Date(tm),
+function getTimestampToDate(tm) {
+    var now = new Date(tm),
         y = now.getFullYear(),
         m = now.getMonth() + 1,
         d = now.getDate();
-    return y + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d) + 'T' + now.toTimeString().substr(0, 8)+'.000Z';
+    return y + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d) + 'T' + now.toTimeString().substr(0, 8) + '.000Z';
 }
 
 /**
@@ -173,6 +179,7 @@ module.exports = {
     getChainId,
     CHAIN_NAME,
     CHAIN_ID,
+    USE_SDK,
     sleep,
     encrypt,
     decrypt,

+ 6 - 7
routes/sdk.js

@@ -78,8 +78,6 @@ async function getTransfers(ctx) {
     })
 }
 
-
-
 /**
  * 获取交易记录
  * @param {*} ctx 
@@ -106,14 +104,14 @@ async function getTransfersV2(ctx) {
                     report.logReport(log_obj)
 
                     var json_obj = JSON.parse(result);
+
                     //缓存当前交易的 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.totalGasFree.toString())
-                        logger.log('getTransferRecordGasFree redis_set LAST_TOTAL_TOKEN_FREE:', (parseInt(tr.totalGasFree) * parseInt(account_config.TOKEN_GAS_LIMIT)).toString())
-                        redis.redis_set(reids_token_config.LAST_TOTAL_BNB_FREE, tr.totalGasFree.toString());
-                        redis.redis_set(reids_token_config.LAST_TOTAL_TOKEN_FREE, (parseInt(tr.gas_price) * parseInt(account_config.TOKEN_GAS_LIMIT)).toString());
+                        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());
                     }
 
                     if (json_obj.data.total > 0) {
@@ -314,10 +312,11 @@ async function withdrawV3(ctx) {
             ctx.body = utils.toJson(-2, null, obj_.withdraw_id + ' is already in the queue.')
             return
         }
-        redis.redis_push(reids_token_config.WITHDRAW_QUEUE_KEY, JSON.stringify(obj_))
+
         var info = await moralis.queryCompanyInfoFromId(0);
         obj_.user_address = info.user_address
         await withdraw_db.create_withdraw_task(obj_)
+        redis.redis_push(reids_token_config.WITHDRAW_QUEUE_KEY, JSON.stringify(obj_))
         // withdraw_task()
         ctx.body = utils.toJson(0, obj_.withdraw_id, null)
     } else {