<?php
/**
 * OrderQrQueue.php UTF-8
 * 订单二维码队列
 *
 * @date    : 2018/10/19 17:25
 *
 * @license 这不是一个自由软件,未经授权不许任何使用和传播。
 * @author  : wuyonghong <wyh@huosdk.com>
 * @version : HuoMp 1.0
 */

namespace huo\controller\queue;

use huo\controller\common\Base;
use huolib\queue\constant\ClassConst;
use huolib\queue\constant\JobConst;
use huolib\status\CommonStatus;
use think\Queue;

class OrderQrQueue extends Base {
    protected $param     = [];
    protected $job_class = '';
    protected $job_name  = '';

    public function __construct($order_data = []) {
        $this->job_class = ClassConst::CLASS_ORDER_QR_FIRE;
        $this->job_name = JobConst::JOB_ORDER_QR;
        $this->param = $order_data;
        $this->param['ts'] = time();
    }

    /**
     * 返回数据
     *
     * @param int   $code
     * @param array $data
     *
     * @return array
     */
    protected function retSucMsg($code = CommonStatus::NO_ERROR, $data = []) {
        /* 数据录入LOG */
        $this->param['queue'] = '1';

        return $this->huoSuccess($code, CommonStatus::getMsg($code), $data);
    }

    /**
     * 返回数据
     *
     * @param $code
     *
     * @return array|mixed
     */
    protected function retErrMsg($code = CommonStatus::PUSH_QUEUE_ERROR) {
        /* 数据录入LOG */
        $this->param['queue'] = '0';

        return $this->huoError($code, CommonStatus::getMsg($code));
    }

    /**
     * 入队列
     *
     * @return array
     */
    public function pushQueue() {
        if (class_exists('think\\Queue')) {
            $_is_pushed = Queue::push($this->job_class, $this->param, $this->job_name);
            if ($_is_pushed === false) {
                return $this->retErrMsg();
            }
        }

        return $this->retSucMsg();
    }

    /**
     * @return array
     */
    public function getParam() {
        return $this->param;
    }

    /**
     * @param array $param
     */
    public function setParam($param) {
        $this->param = $param;
    }

    /**
     * @return string
     */
    public function getJobClass() {
        return $this->job_class;
    }

    /**
     * @param string $job_class
     */
    public function setJobClass($job_class) {
        $this->job_class = $job_class;
    }

    /**
     * @return string
     */
    public function getJobName() {
        return $this->job_name;
    }

    /**
     * @param string $job_name
     */
    public function setJobName($job_name) {
        $this->job_name = $job_name;
    }
}