PermanentCodeJobs.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Jobs\OpenWork\Company;
  3. use Illuminate\Bus\Queueable;
  4. use Illuminate\Contracts\Queue\ShouldQueue;
  5. use Illuminate\Foundation\Bus\Dispatchable;
  6. use Illuminate\Queue\InteractsWithQueue;
  7. use Illuminate\Queue\SerializesModels;
  8. use App\Models\OpenWork\Corp\AuthCorp as Model;
  9. use App\Facades\Servers\Wechat\OpenWork;
  10. use App\Facades\Servers\Logs\Log;
  11. /**
  12. * 获取企业永久授权码
  13. * @author 唐远望
  14. * @version 1.0
  15. * @date 2025-05-06
  16. *
  17. */
  18. class PermanentCodeJobs implements ShouldQueue
  19. {
  20. use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  21. protected $message_data;
  22. /**
  23. * Create a new job instance.
  24. *
  25. * @return void
  26. */
  27. public function __construct(array $message_data)
  28. {
  29. //
  30. $this->message_data = $message_data;
  31. }
  32. /**
  33. * Execute the job.
  34. *
  35. * @return void
  36. */
  37. public function handle()
  38. {
  39. // 接收参数
  40. $message = $this->message_data;
  41. $auth_code = $message['AuthCode'];
  42. $Model = new Model();
  43. // 获取配置
  44. $app = OpenWork::getApp();
  45. // 传入临时授权码,获取永久授权码
  46. $permanentCode = $app->corp->getPermanentByCode($auth_code);
  47. // 失败
  48. if( !$permanentCode ) return json_send(['code' => 'error', 'msg' => '获取永久授权码失败']);
  49. // 如果没有获取到没有授权码
  50. if( isset($permanentCode['errcode']) ) return json_send(['code' => 'error', 'msg' => $permanentCode['errmsg'], 'data' => $permanentCode]);
  51. // 授权企业
  52. $corpid = $permanentCode['auth_corp_info']['corpid'];
  53. // 保存永久授权码
  54. try {
  55. // 成功
  56. $data = ['corpid' => $permanentCode['auth_corp_info']['corpid'], 'corp_name' => $permanentCode['auth_corp_info']['corp_name'], 'permanent_code' => $permanentCode['permanent_code'], 'corpid' => $corpid, 'status' => 0];
  57. // 查询是否已经授权过
  58. $authId = $Model->query()->where([['corpid', '=', $data['corpid']]])->value('id');
  59. // 保存
  60. $result = $authId ? $Model->edit($authId, $data) : $Model->add($data);
  61. // 成功处理...
  62. return $result;
  63. } catch (\Exception $e) {
  64. Log::info('job_error', '永久授权码失败',['error' => $e->getMessage()]);
  65. }
  66. }
  67. public function failed(\Throwable $exception)
  68. {
  69. Log::info('job_error', 'PermanentCodeJobs彻底失败', ['data'=>$this->message_data,'error' => $exception]);
  70. }
  71. }