Browse Source

查询余额和交易记录增加 chain=czz

DevYK 2 years ago
parent
commit
dd6292725f
5 changed files with 77 additions and 59 deletions
  1. 0 2
      config/prd_config.js
  2. 17 17
      model/db/account_info_db.js
  3. 39 25
      model/moralis_sdk.js
  4. 13 6
      model/utils.js
  5. 8 9
      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 埋点上报配置

+ 17 - 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,17 +142,17 @@ 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=? 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!=? 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=? 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
@@ -197,7 +197,7 @@ async function getAccountBalances(opts) {
                     results.push({
                         type: 'native',
                         balance: utils.scientificNotationToString(element.balance).toString(),
-                        responseType:'yqcx'
+                        responseType: 'yqcx'
                     })
                 } else {
                     // {
@@ -219,8 +219,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'
                     })
                 }
             }

+ 39 - 25
model/moralis_sdk.js

@@ -582,8 +582,8 @@ 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);
-            logParams.receiver_address_total_balance_after = await queryCollectBalance(info.user_address, obj.chain)
+            // var info = await queryCompanyInfoFromId(0);
+            // logParams.receiver_address_total_balance_after = await queryCollectBalance(info.user_address, obj.chain)
             //归集入库
             logParams.status = 0
             try {
@@ -661,7 +661,6 @@ const transfer_handle = async (obj) => {
         }
     }
 
-
     var ret = await transfer(obj);
     if (isTransferSucceed(ret)) {
         //缓存当前交易的 gas 费用
@@ -780,7 +779,7 @@ const collectCoins = async (obj) => {
             //埋点日志-预存 gas 付费
             logParams.prestore_gas_fee = { ...obj_wd };
 
-            logParams.receiver_address_total_balance_before = await queryCollectBalance(info.user_address, chain)
+            // logParams.receiver_address_total_balance_before = await queryCollectBalance(info.user_address, chain)
             logParams.company_public_key = info.user_address
             logger.log('开始充值 gas ', obj_wd)
             var ret = await withdraw(obj_wd)
@@ -901,20 +900,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,
@@ -931,7 +936,6 @@ const transfer = async (obj) => {
             };
             logger.tlog("options native =", options, opts.chainId);
         }
-
         // Enable web3
         await Moralis.enableWeb3({
             //BSC mainnet = 0x38-56 testnet:0x61-97
@@ -941,17 +945,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;
@@ -1342,6 +1344,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') {
@@ -1430,6 +1438,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,

+ 8 - 9
routes/sdk.js

@@ -74,8 +74,6 @@ async function getTransfers(ctx) {
     // }
 }
 
-
-
 /**
  * 获取交易记录
  * @param {*} ctx 
@@ -100,8 +98,9 @@ async function getTransfersV2(ctx) {
                     log_obj.type = report.REPORT_TYPE.transfer_record
                     //埋点日志上报-入金检查
                     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)
@@ -150,13 +149,13 @@ async function collect_conis_task() {
             exec_obj = JSON.parse(exec_obj)
             logger.log('collect_conis_task exec item>>>>', exec_obj);
 
-            if (exec_obj.address == await redis.readRedis(reids_token_config.LAST_COLLECT_PUBLIC_KEY) && utils.getTimestamp() - await redis.readRedis(reids_token_config.LAST_COLLECT_TIME) < 60 * 2 * 1000) {
-                logger.log('间隔不足 1 分钟', exec_obj);
-                continue
-            }
+            // if (exec_obj.address == await redis.readRedis(reids_token_config.LAST_COLLECT_PUBLIC_KEY) && utils.getTimestamp() - await redis.readRedis(reids_token_config.LAST_COLLECT_TIME) < 60 * 2 * 1000) {
+            //     logger.log('间隔不足 1 分钟', exec_obj);
+            //     continue
+            // }
 
-            redis.redis_set(reids_token_config.LAST_COLLECT_TIME, utils.getTimestamp())
-            redis.redis_set(reids_token_config.LAST_COLLECT_PUBLIC_KEY, exec_obj.address)
+            // redis.redis_set(reids_token_config.LAST_COLLECT_TIME, utils.getTimestamp())
+            // redis.redis_set(reids_token_config.LAST_COLLECT_PUBLIC_KEY, exec_obj.address)
             //开始收集用户地址里面的币到归集地址
             var ret = await moralis.collectCoins(exec_obj)
             logger.log('collect_conis_task ret =', exec_obj, ret)