CompensateTrait.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace addons\WangDianTong\common\traits;
  3. use addons\WangDianTong\common\service\OrderSyncFailService;
  4. use common\enums\RabbitMqEnum;
  5. use yii\helpers\Json;
  6. trait CompensateTrait
  7. {
  8. /**
  9. * @param array $data
  10. * @param string $class
  11. * @param string $method
  12. * @param \Throwable $e
  13. * @return void
  14. * @throws \Exception
  15. */
  16. protected function compensate(array $data, string $class, string $method, \Throwable $e)
  17. {
  18. \Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_TASK, RabbitMqEnum::TASK_QUEUE,
  19. [
  20. 'id' => $data['compensate_id']??0,
  21. 'mall_id' => $data['mall_id'] ?? 0,
  22. 'data' => Json::encode($data),
  23. 'consumer_class' => $class,
  24. 'consumer_method' => $method,
  25. 'error_message' => Json::encode([
  26. 'file' => $e->getFile(),
  27. 'msg' => $e->getMessage(),
  28. 'line' => $e->getLine(),
  29. // 'trace' => $e->getTrace()
  30. ])
  31. ], OrderSyncFailService::class, 'create');
  32. }
  33. /**
  34. * 补偿完成
  35. * @param int $id
  36. * @return void
  37. */
  38. protected function compensateFinish(int $id)
  39. {
  40. (new OrderSyncFailService())->finish($id);
  41. }
  42. }