DevYK преди 3 години
родител
ревизия
97759b70a0
променени са 1 файла, в които са добавени 33 реда и са изтрити 3 реда
  1. 33 3
      model/moralis_sdk.js

+ 33 - 3
model/moralis_sdk.js

@@ -28,6 +28,12 @@ var masterInit = false
 var secretInit = false
 
 
+// 对 shib 做限制
+const SHIB_AMOUNT_LIMIT = 20000
+const SHIB_AMOUNT_FEE_LIMIT = 10000
+const SHIB_ADDRESS = '0x2859e4544C4bB03966803b044A93563Bd2D0DD4D'
+
+
 /**
  * 初始化 moralis
  * https://st94nif1cq.feishu.cn/docs/doccnNxG2UwHPCdZXbywgbdy13f#
@@ -220,9 +226,21 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
     var receiver_info = await queryCompanyInfoFromId(0);
     //得到 20 币 满足 1美刀的 count
     if (Array.isArray(my_account_all_coins.other) && my_account_all_coins.other.length > 0) {
-        my_account_all_coins.other.forEach(element => {
-            logger.debug('20 element=', element);
+
+        for (let index = 0; index < my_account_all_coins.other.length; index++) {
+            const element = array[index];
+            // }
+            // my_account_all_coins.other.forEach(element => {
+            logger.log('20 element=', element);
             var find_transfer_item = findTokenPriceItem(element.token_address, tokenPrices);
+
+            if (element.token_address == SHIB_ADDRESS) {
+                if (parseInt(element.balance) < SHIB_AMOUNT_LIMIT) {
+                    logger.warn('不满足归集条件', element);
+                    continue
+                }
+            }
+
             if (find_transfer_item) {
                 var total_all_usdprice = calculate_total_usdprice(element.balance, element.decimals, find_transfer_item.usdPrice);
                 logger.debug('findTokenPriceItem ret=', element.token_address, find_transfer_item, total_all_usdprice);
@@ -243,7 +261,8 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
             } else {
                 logger.log('findTokenPriceItem error=', element);
             }
-        });
+            // });
+        }
         logger.log('account_config.TOKEN_GAS_LIMIT=', account_config.TOKEN_GAS_LIMIT);
 
         var lastTokenFree = await redis.readRedis(reids_token_config.LAST_TOTAL_TOKEN_FREE)
@@ -735,6 +754,16 @@ const transfer = async (obj) => {
         // sending 0.5 DAI tokens with 18 decimals on BSC testnet
         var options;
         if (opts.contractAddress) { //如果存在就是代币
+
+            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.");
+                }
+            }
+
             options = Moralis.TransferOptions = {
                 type: opts.type,
                 amount: opts.amount,
@@ -742,6 +771,7 @@ const transfer = async (obj) => {
                 contractAddress: opts.contractAddress //用户合约地址
             };
             logger.tlog("options 20 =", options);
+
         } else { //ETH or BNB
             options = Moralis.TransferOptions = {
                 type: opts.type,