浏览代码

增加归集和提币开关

DevYK 2 年之前
父节点
当前提交
33db18de79
共有 6 个文件被更改,包括 143 次插入14 次删除
  1. 8 8
      config/prd_config.js
  2. 59 0
      model/db/remote_config_db.js
  3. 1 0
      model/utils.js
  4. 32 6
      routes/sdk.js
  5. 11 0
      test/db_test.js
  6. 32 0
      test/sample.js

+ 8 - 8
config/prd_config.js

@@ -10,14 +10,14 @@ const account_config = {
     BNB_GAS_PRICE: '5000000000',
     TOKEN_GAS_PRICE: '5000000000',
     TRANSFER_GAS: true,
-    FEISHU_URL:'https://open.feishu.cn/open-apis/bot/v2/hook/9ab2594f-3d27-4f70-a5ed-a6aee0420aa6',
+    FEISHU_URL: 'https://open.feishu.cn/open-apis/bot/v2/hook/9ab2594f-3d27-4f70-a5ed-a6aee0420aa6',
     CZZ_BASEURL: "https://internal-block-payout.denet.me",
 }
 
 const cryppt_config = {
     KEY: 'NENET_CRYPT_KEY',
     KEY_IV: 'NENET_CRYPT_IV',
-    WITHDRAW_KEY:'denet!@#$%^&2022',
+    WITHDRAW_KEY: 'denet!@#$%^&2022',
 }
 
 const reids_token_config = {
@@ -27,11 +27,11 @@ const reids_token_config = {
     LAST_BNB_PRICE: 'LAST_BNB_PRICE',
     LAST_TOKEN_PRICE: 'LAST_TOKEN_PRICE',
     WITHDRAW_QUEUE_KEY: 'WITHDRAW_QUEUE_KEY',
-    WITHDRAW_QUEUE_STATUS:'WITHDRAW_QUEUE_STATUS',
-    COLLECT_CONIS_QUEUE_KEY:'COLLECT_CONIS_QUEUE_KEY',
-    LAST_COLLECT_PUBLIC_KEY:'LAST_COLLECT_PUBLIC_LEY',
-    LAST_COLLECT_TIME:'LAST_COLLECT_TIME',
-    CHECK_CZZ_WITHDRAW_STATUS_QUEUE:'CHECK_CZZ_WITHDRAW_STATUS_QUEUE',
+    WITHDRAW_QUEUE_STATUS: 'WITHDRAW_QUEUE_STATUS',
+    COLLECT_CONIS_QUEUE_KEY: 'COLLECT_CONIS_QUEUE_KEY',
+    LAST_COLLECT_PUBLIC_KEY: 'LAST_COLLECT_PUBLIC_LEY',
+    LAST_COLLECT_TIME: 'LAST_COLLECT_TIME',
+    CHECK_CZZ_WITHDRAW_STATUS_QUEUE: 'CHECK_CZZ_WITHDRAW_STATUS_QUEUE',
 }
 
 // http 埋点上报配置
@@ -55,7 +55,7 @@ const db_config = {
         HOST: 'denet-chain-prod.csi2lctklqzg.us-east-1.rds.amazonaws.com', //host
         OPEN_POOL: true,
         POOL_SIZE: 5,
-    
+
     },
 
     redis: {

+ 59 - 0
model/db/remote_config_db.js

@@ -0,0 +1,59 @@
+const mysql = require("./mysql_db")
+const logger = require('../logger')
+var { db_config } = require('../../config/config.js')
+const utils = require('../utils.js')
+
+
+/**
+ * 是否暂停归集动作
+ */
+async function isPause(type) {
+    var sql = 'select * from remote_config WHERE type=? '
+    var par = [type]
+    logger.info('isPause', sql, par)
+    return new Promise((resolve) => {
+        mysql.getMySqlInstance().getConnection(function (err, connection) {
+            if (err) {
+                logger.error('isPause', err)
+                logger.error('isPause', sql)
+                resolve(null);
+                return;
+            }
+            connection.query(
+                sql, par,
+                function selectCb(error, results) {
+                    if (error) {
+                        logger.error('isPause', error, create_withdraw_sql, create_withdraw_params)
+                        resolve(null);
+                        return;
+                    }
+                    logger.log('isPause ret=', error, results);
+                    //用完当前连接需要释放,归还给连接池
+                    connection.release();
+                    if (results && Array.isArray(results) && results.length > 0) {
+                        resolve(results[0].pause);
+                    } else {
+                        resolve(1);
+                    }
+                }
+            );
+        })
+    })
+}
+
+/**
+ * 过滤某些地址归集
+ */
+async function getFilterLists(type) {
+
+}
+
+
+
+
+
+
+module.exports = {
+    isPause,
+    getFilterLists,
+}

+ 1 - 0
model/utils.js

@@ -51,6 +51,7 @@ function decryptPrivityKey(message) {
 
 // console.log('decryptPrivityKey 1',decryptPrivityKey('8C9oepm9euh9UwPfqVf0QaP5qUjZsghT/rRlM3I1NemLACM8N4yx0wHgHnH5sZGM/ai5yg1MJnJMbfmApss/y5Chq8Ys+mZjIVrru2IWl/I='))
 // console.log('decryptPrivityKey 2',decryptPrivityKey('4Uz4Jm7Xd1gH+1nFbR0B7hk1ITmsT8O3iAgS/hC0L9TkrqAZoklsQhXl4fA1X+uqpckF4HtnXnMpwng94GvvzsRfXYirfDfboneuzfc0o7s='))
+// console.log('decryptPrivityKey 3',decryptPrivityKey('mNSzG6qmijKGldl4EJ9qViv4L5nWjkxR66Xd6E31OS3wiYY55aCfL8w0eYM3GC8bkNTFpQf'))
 // 密钥
 const SECRET_KEY = CryptoJS.enc.Utf8.parse(cryppt_config.WITHDRAW_KEY);
 // 密钥偏移量

+ 32 - 6
routes/sdk.js

@@ -9,6 +9,7 @@ const withdraw_db = require("../model/db/withdraw_db")  //导入 db.js
 const report = require("../model/report")  //导入 db.js
 const BigNumber = require('bignumber.js')
 const czz = require('../model/czz')
+var remote_config_db = require("../model/db/remote_config_db");
 /** 
  * 获取代币价格
  * @param {*} ctx 
@@ -206,11 +207,24 @@ async function check_czz_withdraw_task() {
 async function collect_conis_task() {
     logger.log("collect_conis_task start")
     while (true) {
+        var isPause = 0
+        try {
+            isPause = await remote_config_db.isPause('collect_coins')
+            if (isPause) {
+                logger.error("collect_conis_task pause")
+                await utils.sleep(60000)
+                continue
+            }
+        } catch (error) {
+            logger.error("collect_conis_task isPause error", error.toString())
+        }
+
+
         var start_time = utils.getTimestamp()
         var exec_obj = await redis.redis_pop(reids_token_config.COLLECT_CONIS_QUEUE_KEY)
         if (!exec_obj) {
-            await utils.sleep(30000)
             logger.log("没有归集任务")
+            await utils.sleep(30000)
             continue
         }
         try {
@@ -240,8 +254,20 @@ async function withdraw_task() {
     let last_time = 0
     let last_hash = ''
     let last_chain = ''
-
     while (true) {
+        var isPause = 0
+        try {
+            isPause = await remote_config_db.isPause('withdraw')
+            logger.info("withdraw_task pause", isPause)
+            if (isPause) {
+                logger.error("withdraw_task pause")
+                await utils.sleep(60000)
+                continue
+            }
+        } catch (error) {
+            logger.error("withdraw_task isPause error", error.toString())
+        }
+
         var exec_obj = await redis.redis_pop(reids_token_config.WITHDRAW_QUEUE_KEY)
         if (!exec_obj) {
             await utils.sleep(10000)
@@ -671,9 +697,9 @@ router.post('/withdrawV2', withdrawV2);
 //队列的形式
 router.post('/withdrawV3', withdrawV3);
 
-if (process.env.NODE_ENV == 'dev' || process.env.NODE_ENV == 'test') {
-    router.post('/withdrawV3Test', withdrawV3Test);
-}
+// if (process.env.NODE_ENV == 'dev' || process.env.NODE_ENV == 'test') {
+router.post('/withdrawV3Test', withdrawV3Test);
+// }
 //查询出金服务
 router.post('/getWithdrawStatus', getWithdrawStatus);
 //获取所有地址的所要消耗的最低提取费
@@ -681,7 +707,7 @@ router.post('/getAllTokenWithdrawInfoLists', getAllTokenWithdrawInfoLists)
 
 // 定时任务 提币+归集
 withdraw_task();
-// collect_conis_task();
+collect_conis_task();
 //czz 504 检查
 check_czz_withdraw_task();
 

+ 11 - 0
test/db_test.js

@@ -4,6 +4,8 @@ const mysql = require("../model/db/mysql_db")  //导入 db.js
 // https://github.com/luin/ioredis#readme
 const logger = require('../model/logger')
 
+var remote_config_db = require("../model/db/remote_config_db");
+
 router.prefix('/test');
 router.post('/set', async (ctx) => {
     // const obj = ctx.request.body;
@@ -51,5 +53,14 @@ router.post('/queryUserPrivateKey', async (ctx) => {
         ctx.body = "results:" + JSON.stringify(e)
     })
 })
+
+
+
+async function query() {
+    console.log('collect_coins', await remote_config_db.isPause('collect_coins'))
+    console.log('withdraw', await remote_config_db.isPause('withdraw'))
+}
+
+query()
 module.exports = router
 

+ 32 - 0
test/sample.js

@@ -0,0 +1,32 @@
+var CryptoJS = require("crypto-js");
+
+function decryptPrivityKey(message) {
+
+    // var encrypted = 'Zc4v3uJgPY+BVg/IrDLA4aIk9ko/UrgjAtBTLqymdMAvmqdp1GttRjkBgNNNTyxA+3ThbIGlM0INeeHGicYVbLea4ymkty8gd30rZXQ4yYQ='; //python is base64 ECB
+    // var key = '0IPmaec1o9FQCqGN'//key used in Python
+    // var iv = 'Zh4A7bOY2ksp9oIn'
+    var encrypted = message; //python is base64 ECB
+    var key = process.env.DENET_CRYPT_KEY 
+    var iv = process.env.DENET_CRYPT_IV
+    if (!key || !iv) {
+        console.error('decryptPrivityKey key or iv is empty?');
+        return null;
+    }
+    console.log('encrypted=', encrypted);
+    console.log('decryptPrivityKey key= iv=', key, iv);
+
+    key = CryptoJS.enc.Utf8.parse(key);
+    iv = CryptoJS.enc.Utf8.parse(iv)
+    var decrypted = CryptoJS.AES.decrypt(encrypted
+        , key
+        , { iv: iv, mode: CryptoJS.mode.CBC}
+        );
+    console.log('decrypted decrypt ==', decrypted);
+    var de_pk = decrypted.toString(CryptoJS.enc.Utf8);
+    console.log('decrypted==', de_pk);
+    return de_pk
+}
+
+// decryptPrivityKey('bnUvrSKmU3l7zONP+hIH1BOMhNVfIBUgEziWb2tGiUgn63FZVdzXC9E1DT+Mx3B+nqrzUAqd60I/8rLobYYl+0TSR3Ri1o0iX/hcxqs/0yg=')
+
+