1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- <?php
- namespace huoOrderRepeat\job;
- use huolib\queue\job\Fire;
- use huolib\status\OrderStatus;
- use huoOrderRepeat\constant\OrderRepeatConstant;
- use huoOrderRepeat\controller\OrderRepeat;
- use think\queue\Job;
- class RepeatFire extends Fire {
-
- public function fire(Job $job, $data) {
- $_is_job_done = $this->doJob($data);
- if ($_is_job_done) {
-
- $job->delete();
- } else {
- $_limit_attempts = get_val($data, 'attempts', OrderRepeatConstant::JOB_REPEAT_MAX_CNT);
- $_attempts = $job->attempts();
- if ($_attempts >= $_limit_attempts) {
-
- $job->delete();
- } else {
-
- switch ($_attempts) {
- case 1:
- $_delay = OrderRepeatConstant::JOB_ATTEMPTS_SECOND_TIME;
- break;
- case 2:
- $_delay = OrderRepeatConstant::JOB_ATTEMPTS_THIRD_TIME;
- break;
- case 3:
- $_delay = OrderRepeatConstant::JOB_ATTEMPTS_FOURTH_TIME;
- break;
- case 4:
- $_delay = OrderRepeatConstant::JOB_ATTEMPTS_FIFTH_TIME;
- break;
- default:
- $_delay = OrderRepeatConstant::JOB_ATTEMPTS_ONCE_TIME;
- }
- $job->release($_delay);
- }
- }
- }
-
- public function doJob($data) {
- $_order_id = isset($data['order_id']) ? $data['order_id'] : '';
- if (empty($_order_id)) {
-
- return true;
- }
- $_rdata = (new OrderRepeat())->notify($data['order_id']);
- $_code = $_rdata['code'];
- switch ($_code) {
-
- case OrderStatus::NO_ERROR:
- case OrderStatus::ORDER_ID_EMPTY:
- case OrderStatus::ORDER_NOT_PAY:
- return true;
- break;
- default:
- return false;
- }
- }
- }
|