OrderQrFire.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. /**
  3. * OrderQrFire.php UTF-8
  4. * 订单二维码处理
  5. *
  6. * @date : 2018/10/19 17:27
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HuoMp 1.0
  11. */
  12. namespace huolib\queue\job;
  13. use huomp\controller\order\OrderOut;
  14. use think\queue\Job;
  15. class OrderQrFire extends Fire {
  16. static $g_i = 0;
  17. /**
  18. * fire方法是消息队列默认调用的方法
  19. *
  20. * @param Job $job 当前的任务对象
  21. * @param array|mixed $data 发布任务时自定义的数据
  22. */
  23. public function fire(Job $job, $data) {
  24. self::$g_i++;
  25. $_is_job_done = $this->doJob($data);
  26. $runtime = round(microtime(true) - THINK_START_TIME, 10);
  27. echo $runtime.' '.self::$g_i;
  28. if ($_is_job_done) {
  29. //如果任务执行成功, 记得删除任务
  30. $job->delete();
  31. // print("<info>Hello Job has been done and deleted"."</info>\n");
  32. } else {
  33. if ($job->attempts() > 3) {
  34. //通过这个方法可以检查这个任务已经重试了几次了
  35. // print("<warn>Hello Job has been retried more than 3 times!"."</warn>\n");
  36. $job->delete();
  37. // 也可以重新发布这个任务
  38. // print("<info>Hello Job will be availabe again after 2s."."</info>\n");
  39. //$job->release(2); //$delay为延迟时间,表示该任务延迟2秒后再执行
  40. }
  41. }
  42. }
  43. /**
  44. * 根据消息中的数据进行实际的业务处理
  45. *
  46. * @param array $data 发布任务时自定义的数据
  47. *
  48. * @return bool 任务执行的结果
  49. */
  50. public function doJob($data) {
  51. $_order_id = isset($data['order_id']) ? $data['order_id'] : '';
  52. if (empty($_order_id) && !empty($data['mem_id']) && !empty($data['app_id'])) {
  53. $_mem_id = $data['mem_id'];
  54. $_app_id = $data['app_id'];
  55. $_rs = (new OrderOut())->genMemAppQrCodeQueue($_mem_id, $_app_id);
  56. } elseif (!empty($_order_id)) {
  57. $_rs = (new OrderOut())->genOrderQrQueue($_order_id);
  58. } else {
  59. $_rs = false;
  60. }
  61. return $_rs;
  62. }
  63. }