pubevent.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace message;
  3. require_once(BASE_HELPER_PATH . '/refill/policy/PolicyUtil.php');
  4. use refill;
  5. use Log;
  6. class pubevent
  7. {
  8. public function onRefillBefore()
  9. {
  10. $this->_update_mixed_cfg();
  11. }
  12. private function _update_mixed_cfg()
  13. {
  14. $read_cfg = function ($cfg)
  15. {
  16. $lower_ratio = $cfg['lower_ratio'] ?? [];
  17. if (empty($lower_ratio)) {
  18. [$ratio, $period] = [0.0, 3600];
  19. } else {
  20. [$ratio, $period] = [$lower_ratio['ratio'], $lower_ratio['period']];
  21. }
  22. $profit_ratio = $cfg['profit_ratio'] ?? 0.0;
  23. $profit_formula = $cfg['profit_formula'] ?? 'qts';
  24. return ['ratio' => $ratio, 'period' => $period, 'profit_ratio' => $profit_ratio, 'profit_formula' => $profit_formula];
  25. };
  26. $mch_configs = function () use ($read_cfg)
  27. {
  28. $result = [];
  29. $i = 0;
  30. while (true)
  31. {
  32. $start = $i * 100;
  33. $items = Model()->table('merchant')->where(['mchid' => ['gt', 0], 'merchant_state' => 1])->field('mchid,retry_times_cfg,quality')->order('mchid asc')->limit("{$start},100")->select();
  34. if(empty($items)) {
  35. break;
  36. }
  37. $i++;
  38. foreach ($items as $item)
  39. {
  40. $mchid = intval($item['mchid']);
  41. $quality = intval($item['quality']);
  42. if($mchid <= 0 || $quality <= 0) continue;
  43. if (!refill\PolicyUtil::mixed_quality($quality)) {
  44. continue;
  45. }
  46. $retry_times_cfg = unserialize($item['retry_times_cfg']);
  47. if(empty($retry_times_cfg)) continue;
  48. $result[$mchid] = $read_cfg($retry_times_cfg);
  49. }
  50. }
  51. return $result;
  52. };
  53. $result = $mch_configs();
  54. $val = json_encode($result);
  55. Log::record("stat-merchant-mixed val = {$val}",Log::DEBUG);
  56. wkcachex('stat-merchant-mixed', $val, 'refill-');
  57. }
  58. }