_update_mixed_cfg(); } private function _update_mixed_cfg() { $read_cfg = function ($cfg) { $lower_ratio = $cfg['lower_ratio'] ?? []; if (empty($lower_ratio)) { [$ratio, $period] = [0.0, 3600]; } else { [$ratio, $period] = [$lower_ratio['ratio'], $lower_ratio['period']]; } $profit_ratio = $cfg['profit_ratio'] ?? 0.0; $profit_formula = $cfg['profit_formula'] ?? 'qts'; return ['ratio' => $ratio, 'period' => $period, 'profit_ratio' => $profit_ratio, 'profit_formula' => $profit_formula]; }; $read_transfer_cfg = function ($mchid,$cfg) { if(empty($cfg)) { return false; } $transfer_cfg = unserialize($cfg); if($transfer_cfg === false) { return false; } $opened = intval($transfer_cfg['transfer_opened']); $tmchid = intval($transfer_cfg['transfer_mchid']); if ($opened == 1 and $tmchid > 0 and $tmchid != $mchid) { return $tmchid; } else { return false; } }; $mch_configs = function () use ($read_cfg,$read_transfer_cfg) { $result = []; $transfer_mchids = []; $i = 0; while (true) { $start = $i * 100; $items = Model()->table('merchant') ->where(['mchid' => ['gt', 0], 'merchant_state' => 1]) ->field('mchid,retry_times_cfg,quality,timeout_transfer_cfg,transfer_cfg') ->order('mchid asc')->limit("{$start},100")->select(); if(empty($items)) { break; } $i++; foreach ($items as $item) { $mchid = intval($item['mchid']); $quality = intval($item['quality']); if($mchid <= 0 || $quality <= 0) continue; if (!refill\PolicyUtil::mixed_quality($quality)) { continue; } $retry_times_cfg = unserialize($item['retry_times_cfg']); if(empty($retry_times_cfg)) continue; $result[$mchid] = $read_cfg($retry_times_cfg); $mchids = []; $tid = $read_transfer_cfg($mchid, $item['transfer_cfg']); if($tid !== false) { $mchids[] = $tid; } $tid = $read_transfer_cfg($mchid, $item['transfer_cfg']); if($tid !== false) { $mchids[] = $tid; } if(!empty($mchids)) { $mchids = array_unique($mchids); $transfer_mchids[$mchid] = $mchids; } } } return [$result,$transfer_mchids]; }; [$result,$transfer_mchids] = $mch_configs(); $val = json_encode($result); Log::record("stat-merchant-mixed val = {$val}",Log::DEBUG); wkcachex('stat-merchant-mixed', $val, 'refill-'); $val = json_encode($transfer_mchids); Log::record("stat-merchant-transfer val = {$val}",Log::DEBUG); wkcachex('stat-merchant-transfer', $val, 'refill-'); } }