stanley-king 3 rokov pred
rodič
commit
0e8f00cbf7

+ 14 - 10
crontab/control/minutes.php

@@ -11,6 +11,7 @@ defined('InShopNC') or exit('Access Invalid!');
 
 require_once (BASE_ROOT_PATH . '/helper/message/publisher.php');
 require_once(BASE_HELPER_PATH . '/refill/util.php');
+require_once(BASE_HELPER_PATH . '/refill/divert_account.php');
 
 class minutesControl extends BaseCronControl
 {
@@ -23,7 +24,7 @@ class minutesControl extends BaseCronControl
     {
         Log::record(__FUNCTION__ . " start",Log::DEBUG);
         //未付款订单超期自动关闭
-        $this->_order_timeout_cancel();
+//        $this->_order_timeout_cancel();
         $this->_cron_common([1,2,3,4,5,6,7]);
         $this->_fetch_order_unavaliable();
         $this->_check_merchant_alarm_amount();
@@ -63,7 +64,8 @@ class minutesControl extends BaseCronControl
 
     private function _check_merchant_alarm_amount()
     {
-        if(defined('COMPANY_NAME') && COMPANY_NAME === 'XYZ_COMPANY') {
+        if(defined('COMPANY_NAME') && COMPANY_NAME === 'XYZ_COMPANY')
+        {
             $mch_cache = rcache("merchant-notify" , 'refill-');
             $caches = empty($mch_cache['data']) ? [] : unserialize($mch_cache['data']);
 
@@ -314,18 +316,20 @@ class minutesControl extends BaseCronControl
         }
     }
 
-    public function update_merchant_account()
+    public function account_editOp()
     {
+        $stamp = 0;
         while (true)
         {
-            do{
-                try {
-                    perfor_clear();
-                } catch (Exception $ex) {
-                    Log::record($ex->getMessage(),Log::ERR);
-                }
+            try {
+                $divertor = new refill\divert_account();
+                $next = time();
+                $divertor->update_account($stamp);
+                $stamp = $next;
+            } catch (Exception $ex) {
+                Log::record($ex->getMessage(),Log::ERR);
             }
-            while($ret === true);
+
             sleep(1);
         }
     }

+ 14 - 0
data/model/account_divert.model.php

@@ -98,6 +98,8 @@ class account_divertModel extends Model
                 $this->table('pd_divert')->where(['member_id' => $member_id, 'slot' => $slot])->update($update);
                 $slot++;
             }
+
+            return true;
         };
 
         $avaliables = $divrter($available_amounts);
@@ -105,6 +107,7 @@ class account_divertModel extends Model
 
         $modifier($member_id,'available_predeposit',$avaliables);
         $modifier($member_id,'freeze_predeposit',$freezes);
+        return true;
     }
 
     public function edit_member($member_id,$datas,$amount)
@@ -168,6 +171,17 @@ class account_divertModel extends Model
         }
     }
 
+    public function need_upmembers($time)
+    {
+        $result = [];
+        $items = $this->table('pd_divert')->field('member_id')->where(['optime' => ['egt',$time]])->group('member_id')->select();
+        foreach ($items as $item) {
+            $result[] = intval($item['member_id']);
+        }
+
+        return $result;
+    }
+
     public function edit_provider($provider_id,$datas)
     {
 

+ 12 - 1
docker/compose/stanley/master-unique/docker-compose.yml

@@ -22,4 +22,15 @@ services:
       - ../conf/etc/localtime:/etc/localtime:ro
       - ../conf/php/php-debug.ini:/usr/local/etc/php/php.ini
     container_name: "panda-cronsec"
-    command: [php,"/var/www/html/crontab/index.php",'minutes','second_queue']
+    command: [php,"/var/www/html/crontab/index.php",'minutes','second_queue']
+
+  accedit:
+    image: php-zts-debug:7.3.18
+    volumes:
+      - ../../../../:/var/www/html
+      - /Volumes/Transcend/upload:/var/www/html/data/upload
+      - /Users/stanley-king/work/PHPProject/shoplog:/var/www/html/data/log
+      - ../conf/etc/localtime:/etc/localtime:ro
+      - ../conf/php/php-debug.ini:/usr/local/etc/php/php.ini
+    container_name: "panda-accedit"
+    command: [php,"/var/www/html/crontab/index.php",'minutes','account_edit']

+ 12 - 1
docker/compose/xyzt/master-crond/docker-compose.yml

@@ -22,4 +22,15 @@ services:
       - /nfs/upload:/var/www/html/data/upload
       - /mnt/testlog:/var/www/html/data/log
     container_name: "panda-cronsec"
-    command: [php,"/var/www/html/crontab/index.php",'minutes','second_queue']
+    command: [php,"/var/www/html/crontab/index.php",'minutes','second_queue']
+
+  accedit:
+    image: php-zts-debug:7.3.18
+    volumes:
+      - ../../../../:/var/www/html
+      - ../conf/etc/localtime:/etc/localtime:ro
+      - ../conf/php/php.ini:/usr/local/etc/php/php.ini
+      - /nfs/upload:/var/www/html/data/upload
+      - /mnt/testlog:/var/www/html/data/log
+    container_name: "panda-accedit"
+    command: [php,"/var/www/html/crontab/index.php",'minutes','account_edit']

+ 40 - 40
helper/refill/divert_account.php

@@ -71,43 +71,43 @@ class divert_account
         }
     }
 
-    #加款
-    public function add_member($member_id, $available_amounts, $freeze_amounts = 0.00)
-    {
-        $trans = null;
-        try {
-            $mod_divert = Model('account_divert');
-            $trans = new trans_wapper($mod_divert,__METHOD__);
-            $mod_divert->divert_member($member_id,$available_amounts,$freeze_amounts);
-            $trans->commit();
-            return true;
-        }
-        catch (Exception $ex)
-        {
-            $trans->rollback();
-            Log::record($ex->getMessage(), Log::ERR);
-            return false;
-        }
-    }
-
-    #减款
-    public function reduce_member($member_id, $available_amounts, $freeze_amounts = 0.00)
-    {
-        $trans = null;
-        try {
-            $mod_divert = Model('account_divert');
-            $trans = new trans_wapper($mod_divert,__METHOD__);
-            $mod_divert->divert_member($member_id,-$available_amounts,$freeze_amounts);
-            $trans->commit();
-            return true;
-        }
-        catch (Exception $ex)
-        {
-            $trans->rollback();
-            Log::record($ex->getMessage(), Log::ERR);
-            return false;
-        }
-    }
+//    #加款
+//    public function add_member($member_id, $available_amounts, $freeze_amounts = 0.00)
+//    {
+//        $trans = null;
+//        try {
+//            $mod_divert = Model('account_divert');
+//            $trans = new trans_wapper($mod_divert,__METHOD__);
+//            $mod_divert->divert_member($member_id,$available_amounts,$freeze_amounts);
+//            $trans->commit();
+//            return true;
+//        }
+//        catch (Exception $ex)
+//        {
+//            $trans->rollback();
+//            Log::record($ex->getMessage(), Log::ERR);
+//            return false;
+//        }
+//    }
+//
+//    #减款
+//    public function reduce_member($member_id, $available_amounts, $freeze_amounts = 0.00)
+//    {
+//        $trans = null;
+//        try {
+//            $mod_divert = Model('account_divert');
+//            $trans = new trans_wapper($mod_divert,__METHOD__);
+//            $mod_divert->divert_member($member_id,-$available_amounts,$freeze_amounts);
+//            $trans->commit();
+//            return true;
+//        }
+//        catch (Exception $ex)
+//        {
+//            $trans->rollback();
+//            Log::record($ex->getMessage(), Log::ERR);
+//            return false;
+//        }
+//    }
 
     public function init_merchant($mchid)
     {
@@ -164,15 +164,15 @@ class divert_account
     }
 
 
-    public function update_merchants()
+    public function update_account($time)
     {
         $mod_divert = Model('account_divert');
-        $mids = $this->unique_mids();
+        $mids = $mod_divert->need_upmembers($time);
         foreach ($mids as $mid)
         {
             [$succ, $available_amounts, $freeze_amounts] = $mod_divert->stat_member($mid);
             if($succ) {
-                $update = Model('member')->where(['member_id' => $mid])->update(['available_predeposit' => $available_amounts,'freeze_predeposit' => $freeze_amounts]);
+                Model('member')->editMember(['member_id' => $mid],['available_predeposit' => $available_amounts,'freeze_predeposit' => $freeze_amounts]);
             }
         }
     }

+ 17 - 1
test/TestAccountDivert.php

@@ -29,10 +29,26 @@ class TestAccountDivert extends TestCase
         $helper->init_merchants();
     }
     //docker-compose run phpcli php /var/www/html/phpunit-9.2.5.phar --filter "/(TestAccountDivert::testInitMerchants)( .*)?$/" --test-suffix TestAccountDivert.php /var/www/html/test
-
     public function testDivertMember()
     {
         $helper = new refill\divert_account();
         $helper->add_member(60221,-100);
     }
+
+    public function testUpdateAccount()
+    {
+        $stamp = 0;
+        while (true)
+        {
+            try {
+                $divertor = new refill\divert_account();
+                $divertor->update_account($stamp);
+                $stamp = time();
+            } catch (Exception $ex) {
+                Log::record($ex->getMessage(),Log::ERR);
+            }
+
+            sleep(1);
+        }
+    }
 }