OrderDetailJobs.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace App\Jobs\OpenWork\License;
  3. use App\Servers\DB\DbService;
  4. use Illuminate\Bus\Queueable;
  5. use Illuminate\Contracts\Queue\ShouldBeUnique;
  6. use Illuminate\Contracts\Queue\ShouldQueue;
  7. use Illuminate\Foundation\Bus\Dispatchable;
  8. use Illuminate\Queue\InteractsWithQueue;
  9. use Illuminate\Queue\SerializesModels;
  10. use App\Servers\OpenWork\Corp\LicenseClientService;
  11. use App\Facades\Servers\Logs\Log;
  12. use App\Models\OpenWork\job\Records;
  13. use Illuminate\Support\Facades\DB;
  14. /**
  15. * 订单详情同步队列
  16. * @author 唐远望
  17. * @version 1.0
  18. * @date 2025-04-14
  19. */
  20. class OrderDetailJobs implements ShouldQueue
  21. {
  22. use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  23. protected $order_info;
  24. protected $Records;
  25. /**
  26. * Create a new job instance.
  27. *
  28. * @return void
  29. */
  30. public function __construct(array $order_info)
  31. {
  32. //
  33. $this->order_info = $order_info;
  34. }
  35. public function getCorpId()
  36. {
  37. return $this->order_info['corpid'] ?? null;
  38. }
  39. /**
  40. * Execute the job.
  41. *
  42. * @return void
  43. */
  44. public function handle()
  45. {
  46. try {
  47. //
  48. $corpId = $this->order_info['corpid'];
  49. (new DbService())->getConnectionNameByCorpId($corpId);
  50. // 创建任务记录
  51. $this->Records = Records::create([
  52. 'job_id' => $this->order_info['order_id'] . '_OrderDetailJobs',
  53. 'name' => static::class,
  54. 'payload' => json_encode($this->order_info),
  55. 'status' => 'processing',
  56. 'started_at' => now()
  57. ]);
  58. $result = (new LicenseClientService())->get_order_info($this->order_info['order_id']);
  59. // 如果获取结果失败
  60. if (!$result) {
  61. //删除任务记录
  62. $this->Records->delete();
  63. Log::info('job_error', '同步订单详情失败', [$this->order_info]);
  64. return json_send(['code' => 'error', 'msg' => '获取失败']);
  65. }
  66. // 错误提示
  67. if (isset($result['errcode'])) {
  68. Log::info('job_error', '同步订单详情失败',[$this->order_info]);
  69. }
  70. //删除任务记录
  71. $this->Records->delete();
  72. // 成功处理...
  73. } catch (\Exception $e) {
  74. // 失败处理...
  75. if ($this->Records) {
  76. $this->Records->delete();
  77. }
  78. Log::error('job_error', 'OrderDetailJobs处理失败', ['data'=>$this->order_info,'error' => $e->getMessage()]);
  79. }
  80. }
  81. public function failed(\Throwable $exception)
  82. {
  83. Log::info('job_error', 'OrderDetailJobs彻底失败', ['data'=>$this->order_info,'error' => $exception]);
  84. // 失败处理...
  85. if ($this->Records) {
  86. $this->Records->delete();
  87. }
  88. }
  89. }