123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- <?php
- namespace message;
- require_once(BASE_HELPER_PATH . '/refill/policy/PolicyUtil.php');
- use refill;
- use Log;
- class pubevent
- {
- public function onRefillBefore()
- {
- $this->_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-');
- }
- }
|