EventManager.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. namespace refill;
  3. require_once(BASE_HELPER_PATH . '/refill/event/IEventRefill.php');
  4. require_once(BASE_HELPER_PATH . '/refill/event/crash.php');
  5. require_once(BASE_HELPER_PATH . '/refill/event/card_crash.php');
  6. require_once(BASE_HELPER_PATH . '/refill/event/cbparams_pick.php');
  7. use refill\event\card_crash;
  8. use refill\event\cbparams_pick;
  9. use Cache;
  10. use Log;
  11. class EventManager
  12. {
  13. private static $stInstance = null;
  14. public static function instance()
  15. {
  16. if (self::$stInstance == null) {
  17. self::$stInstance = new EventManager();
  18. self::$stInstance->load();
  19. }
  20. return self::$stInstance;
  21. }
  22. private $mStubs = [];
  23. public function load()
  24. {
  25. //配置文件样式
  26. // $cfgs = [
  27. // 'open_crash' => true,
  28. // 'cfgs_crash' => [
  29. // 'channels' => 'beirui_sec',
  30. // 'succ_interval' => 900
  31. // ]
  32. // ];
  33. $this->mStubs = [];
  34. $cacher = Cache::getInstance('cacheredis');
  35. $cfgs = $cacher->get('event-config', 'refill-');
  36. if (empty($cfgs)) {
  37. return;
  38. } else {
  39. $cfgs = unserialize($cfgs);
  40. }
  41. Log::record("card_crash load open_crash={$cfgs['open_crash']}.", Log::DEBUG);
  42. //卡号碰撞控制
  43. $open_crash = $cfgs['open_crash'] ?? false;
  44. if($open_crash) {
  45. $crash = new card_crash();
  46. $crash->load($cfgs['cfgs_crash'] ?? []);
  47. $this->mStubs[] = $crash;
  48. }
  49. //流水号和短信透传控制
  50. if($cfgs['open_notify_osn'] || $cfgs['open_sms']) {
  51. $event = new cbparams_pick();
  52. $event->load($cfgs);
  53. $this->mStubs[] = $event;
  54. }
  55. }
  56. public function onBeforeSubmit(order $order)
  57. {
  58. $stubs = $this->mStubs;
  59. foreach ($stubs as $stub)
  60. {
  61. if($stub->onBeforeSubmit($order) === false) {
  62. return false;
  63. }
  64. }
  65. return true;
  66. }
  67. public function onSubmit(order $order)
  68. {
  69. $stubs = $this->mStubs;
  70. foreach ($stubs as $stub) {
  71. $stub->onSubmit($order);
  72. }
  73. }
  74. public function onBeforeCommit(order $order, $ch_name): bool
  75. {
  76. $stubs = $this->mStubs;
  77. foreach ($stubs as $stub)
  78. {
  79. if ($stub->onBeforeCommit($order, $ch_name) === false) {
  80. return false;
  81. }
  82. }
  83. return true;
  84. }
  85. public function onCommit(order $order, $ch_name)
  86. {
  87. $stubs = $this->mStubs;
  88. foreach ($stubs as $stub) {
  89. $stub->onCommit($order, $ch_name);
  90. }
  91. }
  92. public function onNeterror(order $order, $ch_name)
  93. {
  94. $stubs = $this->mStubs;
  95. foreach ($stubs as $stub) {
  96. $stub->onNeterror($order, $ch_name);
  97. }
  98. }
  99. public function onNotify($refill_info, $order_info, $success)
  100. {
  101. $stubs = $this->mStubs;
  102. foreach ($stubs as $stub) {
  103. $stub->onNotify($refill_info, $order_info, $success);
  104. }
  105. }
  106. public function onComplete($refill_info, $order_info, $success)
  107. {
  108. $stubs = $this->mStubs;
  109. foreach ($stubs as $stub) {
  110. $stub->onComplete($refill_info, $order_info, $success);
  111. }
  112. }
  113. public function onEventCallback($refill_info, $mch_info, &$ctls)
  114. {
  115. $stubs = $this->mStubs;
  116. foreach ($stubs as $stub) {
  117. $stub->onEventCallback($refill_info, $mch_info, $ctls);
  118. }
  119. }
  120. }