<?php
namespace addons\shopro\controller\api;

use think\Queue;
//use app\admin\controller\shopro\Common;
use addons\shopro\controller\Common;

class Track extends Common
{

    /**
     * 无需登录的方法
     * @var array
     */
    protected $noNeedLogin = ['upload', 'stats'];
    protected $noNeedRight = ['*'];

    /**
     * 接收埋点数据（推入队列）
     */
    public function upload() {

        // 限制请求大小
        if ($_SERVER['CONTENT_LENGTH'] > 5 * 1024 * 1024) {
            $this->error('请求数据过大');
        }

        // 获取原始数据
        $rawData = file_get_contents('php://input');
        if (empty($rawData)) {
            $this->error('请求数据为空');
        }

        // 解析JSON
        $requestData = json_decode($rawData, true);
        if (json_last_error() !== JSON_ERROR_NONE) {
            $this->error('JSON解析失败');
        }

        // 验证必要参数
        if (!isset($requestData['list']) || !is_array($requestData['list'])) {
            $this->error('参数错误');
        }

        // 推入队列
        $jobId = Queue::push('addons\shopro\job\TrackProcessJob@fire', [
            'data' => $requestData['list'],
            'ip' => $this->request->ip(),
            'timestamp' => time()
        ], 'shopro-high');

        if ($jobId) {
            $this->success('接收成功');
        } else {
            $this->error('队列推送失败');
        }
    }

}