123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <?php
- /**
- * ReportFire.php UTF-8
- *
- * @date : 2021/5/6 17:21
- *
- * @license 这不是一个自由软件,未经授权不许任何使用和传播。
- * @author : chenbingling <cbl@huosdk.com>
- * @version : HUOSDK-IDENTITY 1.0
- */
- namespace huoIdentify\lib\queue\job;
- use huoIdentify\lib\queue\constant\JobConst;
- use huolib\queue\job\Fire;
- use huolib\status\IdentifyStatus;
- use think\queue\Job;
- class ReportFire extends Fire {
- /**
- * fire方法是消息队列默认调用的方法
- *
- * @param Job $job 当前的任务对象
- * @param array|mixed $data 发布任务时自定义的数据
- */
- public function fire(Job $job, $data) {
- $_is_job_done = $this->doJob($data);
- if ($_is_job_done) {
- /* 如果任务执行成功, 记得删除任务 */
- $job->delete();
- } else {
- $_limit_attempts = 2;
- $_attempts = $job->attempts();
- if ($_attempts >= $_limit_attempts) {
- /* 任务达到最大次数则删除任务不再执行 */
- $job->delete();
- } else {
- /* 重新发布任务 */
- switch ($_attempts) {
- case 1:
- $_delay = JobConst::JOB_ATTEMPTS_SECOND_TIME;
- break;
- case 2:
- $_delay = JobConst::JOB_ATTEMPTS_THIRD_TIME;
- break;
- case 3:
- $_delay = JobConst::JOB_ATTEMPTS_FOURTH_TIME;
- break;
- case 4:
- $_delay = JobConst::JOB_ATTEMPTS_FIFTH_TIME;
- break;
- default:
- $_delay = JobConst::JOB_ATTEMPTS_ONCE_TIME;
- }
- $job->release($_delay); /* $_delay为延迟时间,表示该任务延迟$_delay秒后再执行 */
- }
- }
- }
- /**
- * 根据消息中的数据进行实际的业务处理
- *
- * @param array $data 发布任务时自定义的数据
- *
- * @return bool 任务执行的结果
- */
- public function doJob($data) {
- $_app_id = isset($data['app_id']) ? $data['app_id'] : 0;
- $_mem_id = isset($data['mem_id']) ? $data['mem_id'] : 0;
- $_is_login = isset($data['is_login']) ? $data['is_login'] : 0;
- if (empty($_app_id) || empty($_mem_id)) {
- return true;
- }
- $_report_class = isset($data['report_class']) ? $data['report_class'] : '';
- if (class_exists($_report_class)) {
- $_rs = (new $_report_class())->reportCommon($_app_id, $_mem_id, $_is_login, true);
- if (IdentifyStatus::NO_ERROR != $_rs['code']) {
- return false;
- }
- }
- return true;
- }
- }
|