stanley-king 2 년 전
부모
커밋
b0e9ce45f1
3개의 변경된 파일46개의 추가작업 그리고 1개의 파일을 삭제
  1. 9 0
      core/framework/cache/cache.redis.php
  2. 27 1
      crontab/control/minutes.php
  3. 10 0
      test/TestRedis.php

+ 9 - 0
core/framework/cache/cache.redis.php

@@ -359,6 +359,15 @@ class Cacheredis extends Cache
         return $this->handler->keys($this->_key($key, $prefix));
     }
 
+    public function hkeys($key = '',$prefix = '')
+    {
+        $this->init_slave();
+        if(!isset($key) || empty($key)) {
+            $key = '*';
+        }
+        return $this->handler->hkeys($this->_key($key, $prefix));
+    }
+
     public function del($key)
     {
         $this->init_master();

+ 27 - 1
crontab/control/minutes.php

@@ -493,6 +493,29 @@ class minutesControl extends BaseCronControl
             return $val;
         };
 
+        $del_stop = function ($amounts)
+        {
+            $ins = Cache::getInstance('cacheredis');
+            $items = $ins->hkeys('merchant-debts-detail','refill-');
+            if(empty($items)) {
+                return;
+            }
+
+            $keys = [];
+            foreach ($items as $key) {
+                $keys[] = intval($key);
+            }
+
+            foreach ($keys as $mchid)
+            {
+                if(array_key_exists($mchid,$amounts)) {
+                    continue;
+                } else {
+                    $ins->hdel('merchant-debts-detail','refill-',$mchid);
+                }
+            }
+        };
+
         $debts_detail_fun = function ($amounts)
         {
             $debts_detail = [];
@@ -526,7 +549,7 @@ class minutesControl extends BaseCronControl
                     }
                     Log::record("co_id={$co_id} mchid={$mchid} send_amounts={$send_amounts} lack_amounts={$lack_amounts}",Log::DEBUG);
 
-                    $available = $available_predeposit - $credit_bonus + $send_amounts - $lack_amounts;
+                    $available = $available_predeposit - $credit_bonus + $send_amounts;// - $lack_amounts;
                     $debt = -$available;
                     $debts_detail[$co_id][$mchid] = $debt;
 
@@ -616,12 +639,15 @@ class minutesControl extends BaseCronControl
         };
 
         $result = $send_amount_reader();
+        $del_stop($result);
+
         if (!empty($result) && $need_calc(intval($result['time']))) {
             $mch_amounts = $result['send_amounts'];
             $debts_detail = $debts_detail_fun($mch_amounts);
             $co_debts = $company_debt_fun();
             $judge_stop($co_debts, $debts_detail);
         }
+
     }
 
     /**

+ 10 - 0
test/TestRedis.php

@@ -4,6 +4,7 @@ use PHPUnit\Framework\TestCase;
 
 define('APP_ID', 'test');
 define('BASE_ROOT_PATH', str_replace('/test', '', dirname(__FILE__)));
+
 require_once(BASE_ROOT_PATH . '/global.php');
 require_once(BASE_CORE_PATH . '/lrlz.php');
 require_once(BASE_ROOT_PATH . '/fooder.php');
@@ -378,4 +379,13 @@ class TestRedis extends TestCase
     {
 
     }
+
+    public function testKeys()
+    {
+        $ins = Cache::getInstance('cacheredis');
+        $items = $ins->hkeys('merchant-debts-detail','refill-');
+        $i = 0;
+
+        $ret = $ins->hdel('merchant-debts-detail','refill-',intval($items[0]));
+    }
 }