<?php

namespace app\admin\controller;

use app\common\controller\Backend;

/**
 *
 *
 * @icon fa fa-circle-o
 */
class History extends Backend
{

    /**
     * History模型对象
     * @var \app\admin\model\History
     */
    protected $model = null;

    /**
     * 无需额外权限检查的方法（但仍在 admin 模块内，需要 admin 登录）
     * @var array
     */
    protected $noNeedRight = ['missingNum', 'trendData', 'hotColdNumbers', 'colorWaveAnalysis', 'zodiacAnalysis', 'oddEvenAnalysis', 'bigSmallAnalysis', 'specialTrend', 'consecutiveNumbers', 'tailNumbers', 'dashboard'];

    public function _initialize()
    {
        parent::_initialize();
        $this->model = new \app\admin\model\History;

    }


    /**
     * 查询遗漏号码
     * @return void
     */
    public function missingNum()
    {
        if ($this->request->isAjax()) {
            $periods = $this->request->get('periods', 10, 'intval');
            if ($periods < 1 || $periods > 100) {
                $this->error('期数范围必须在 1-100 之间');
            }
            $type = $this->request->get('type', 'all');
            if (!in_array($type, ['all', 'special'])) {
                $this->error('查询类型不正确');
            }
            $result = $this->model->getMissingNumbers($periods, $type);
            $this->success('查询成功', null, $result);
        }
    }

    /**
     * 获取走势图数据
     * @return void
     */
    public function trendData()
    {
        if ($this->request->isAjax()) {
            $periods = $this->request->get('periods', 30, 'intval');
            if ($periods < 10 || $periods > 100) {
                $this->error('期数范围必须在 10-100 之间');
            }
            $type = $this->request->get('type', 'all');
            if (!in_array($type, ['all', 'special'])) {
                $this->error('查询类型不正确');
            }
            $result = $this->model->getTrendData($periods, $type);
            $this->success('查询成功', null, $result);
        }
    }

    /**
     * 获取冷热号码
     * @return void
     */
    public function hotColdNumbers()
    {
        if ($this->request->isAjax()) {
            $periods = $this->request->get('periods', 30, 'intval');
            if ($periods < 10 || $periods > 100) {
                $this->error('期数范围必须在 10-100 之间');
            }
            $type = $this->request->get('type', 'all');
            if (!in_array($type, ['all', 'special'])) {
                $this->error('查询类型不正确');
            }
            $result = $this->model->getHotColdNumbers($periods, $type);
            $this->success('查询成功', null, $result);
        }
    }

    /**
     * 波色分析
     */
    public function colorWaveAnalysis()
    {
        if ($this->request->isAjax()) {
            $periods = $this->request->get('periods', 30, 'intval');
            if ($periods < 10 || $periods > 100) {
                $this->error('期数范围必须在 10-100 之间');
            }
            $type = $this->request->get('type', 'all');
            if (!in_array($type, ['all', 'special'])) {
                $this->error('查询类型不正确');
            }
            $result = $this->model->getColorWaveAnalysis($periods, $type);
            $this->success('查询成功', null, $result);
        }
    }

    /**
     * 生肖分析
     */
    public function zodiacAnalysis()
    {
        if ($this->request->isAjax()) {
            $periods = $this->request->get('periods', 30, 'intval');
            if ($periods < 10 || $periods > 100) {
                $this->error('期数范围必须在 10-100 之间');
            }
            $type = $this->request->get('type', 'all');
            if (!in_array($type, ['all', 'special'])) {
                $this->error('查询类型不正确');
            }
            $result = $this->model->getZodiacAnalysis($periods, $type);
            $this->success('查询成功', null, $result);
        }
    }

    /**
     * 奇偶分析
     */
    public function oddEvenAnalysis()
    {
        if ($this->request->isAjax()) {
            $periods = $this->request->get('periods', 30, 'intval');
            if ($periods < 10 || $periods > 100) {
                $this->error('期数范围必须在 10-100 之间');
            }
            $type = $this->request->get('type', 'all');
            if (!in_array($type, ['all', 'special'])) {
                $this->error('查询类型不正确');
            }
            $result = $this->model->getOddEvenAnalysis($periods, $type);
            $this->success('查询成功', null, $result);
        }
    }

    /**
     * 大小分析
     */
    public function bigSmallAnalysis()
    {
        if ($this->request->isAjax()) {
            $periods = $this->request->get('periods', 30, 'intval');
            if ($periods < 10 || $periods > 100) {
                $this->error('期数范围必须在 10-100 之间');
            }
            $type = $this->request->get('type', 'all');
            if (!in_array($type, ['all', 'special'])) {
                $this->error('查询类型不正确');
            }
            $result = $this->model->getBigSmallAnalysis($periods, $type);
            $this->success('查询成功', null, $result);
        }
    }

    /**
     * 特码走势
     */
    public function specialTrend()
    {
        if ($this->request->isAjax()) {
            $periods = $this->request->get('periods', 30, 'intval');
            if ($periods < 10 || $periods > 100) {
                $this->error('期数范围必须在 10-100 之间');
            }
            $result = $this->model->getSpecialTrend($periods);
            $this->success('查询成功', null, $result);
        }
    }

    /**
     * 连号分析
     */
    public function consecutiveNumbers()
    {
        if ($this->request->isAjax()) {
            $periods = $this->request->get('periods', 30, 'intval');
            if ($periods < 10 || $periods > 100) {
                $this->error('期数范围必须在 10-100 之间');
            }
            $result = $this->model->getConsecutiveNumbers($periods);
            $this->success('查询成功', null, $result);
        }
    }

    /**
     * 尾数分析
     */
    public function tailNumbers()
    {
        if ($this->request->isAjax()) {
            $periods = $this->request->get('periods', 30, 'intval');
            if ($periods < 10 || $periods > 100) {
                $this->error('期数范围必须在 10-100 之间');
            }
            $type = $this->request->get('type', 'all');
            if (!in_array($type, ['all', 'special'])) {
                $this->error('查询类型不正确');
            }
            $result = $this->model->getTailNumbers($periods, $type);
            $this->success('查询成功', null, $result);
        }
    }

    /**
     * 综合统计面板
     */
    public function dashboard()
    {
        if ($this->request->isAjax()) {
            $periods = $this->request->get('periods', 30, 'intval');
            if ($periods < 10 || $periods > 100) {
                $this->error('期数范围必须在 10-100 之间');
            }
            $type = $this->request->get('type', 'all');
            if (!in_array($type, ['all', 'special'])) {
                $this->error('查询类型不正确');
            }
            $result = $this->model->getDashboardData($periods, $type);
            $this->success('查询成功', null, $result);
        }
    }


}
