* @version : HuoMp 1.0
*/
namespace huolib\queue\job;
use huomp\controller\order\OrderOut;
use think\queue\Job;
class OrderQrFire extends Fire {
static $g_i = 0;
/**
* fire方法是消息队列默认调用的方法
*
* @param Job $job 当前的任务对象
* @param array|mixed $data 发布任务时自定义的数据
*/
public function fire(Job $job, $data) {
self::$g_i++;
$_is_job_done = $this->doJob($data);
$runtime = round(microtime(true) - THINK_START_TIME, 10);
echo $runtime.' '.self::$g_i;
if ($_is_job_done) {
//如果任务执行成功, 记得删除任务
$job->delete();
// print("Hello Job has been done and deleted"."\n");
} else {
if ($job->attempts() > 3) {
//通过这个方法可以检查这个任务已经重试了几次了
// print("Hello Job has been retried more than 3 times!"."\n");
$job->delete();
// 也可以重新发布这个任务
// print("Hello Job will be availabe again after 2s."."\n");
//$job->release(2); //$delay为延迟时间,表示该任务延迟2秒后再执行
}
}
}
/**
* 根据消息中的数据进行实际的业务处理
*
* @param array $data 发布任务时自定义的数据
*
* @return bool 任务执行的结果
*/
public function doJob($data) {
$_order_id = isset($data['order_id']) ? $data['order_id'] : '';
if (empty($_order_id) && !empty($data['mem_id']) && !empty($data['app_id'])) {
$_mem_id = $data['mem_id'];
$_app_id = $data['app_id'];
$_rs = (new OrderOut())->genMemAppQrCodeQueue($_mem_id, $_app_id);
} elseif (!empty($_order_id)) {
$_rs = (new OrderOut())->genOrderQrQueue($_order_id);
} else {
$_rs = false;
}
return $_rs;
}
}