model = new \app\admin\model\History; } /** * 查看开奖记录(支持按每月日号筛选) */ public function index() { $this->request->filter(['strip_tags', 'trim']); if (false === $this->request->isAjax()) { return $this->view->fetch(); } if ($this->request->request('keyField')) { return $this->selectpage(); } // search_day 在 filter JSON 里,先提取出来再移除 $filterStr = $this->request->get('filter', '[]', 'trim'); $opStr = $this->request->get('op', '[]', 'trim'); $filter = json_decode($filterStr, true) ?: []; $op = json_decode($opStr, true) ?: []; $searchDay = isset($filter['search_day']) ? $filter['search_day'] : ''; unset($filter['search_day'], $op['search_day']); // 写回 Request 对象 $ref = new \ReflectionProperty($this->request, 'get'); $ref->setAccessible(true); $getData = $ref->getValue($this->request); if (is_array($getData)) { $getData['filter'] = json_encode($filter); $getData['op'] = json_encode($op); $ref->setValue($this->request, $getData); } [$where, $sort, $order, $offset, $limit] = $this->buildparams(); $list = $this->model->where($where); // 按每月日号筛选 if ($searchDay !== '' && is_numeric($searchDay)) { $day = intval($searchDay); if ($day >= 1 && $day <= 31) { $list = $list->whereRaw('DAY(openTime) = ?', [$day]); } } $query = $list->order($sort, $order)->paginate($limit); $result = ['total' => $query->total(), 'rows' => $query->items()]; return json($result); } /** * 查询遗漏号码 * @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); } } /** * 特码冷热列表(每期相对于前N期的冷热状态) */ public function specialHotColdAction() { if ($this->request->isAjax()) { $lookback = $this->request->get('lookback', 30, 'intval'); if ($lookback < 10 || $lookback > 100) { $this->error('向前期数范围必须在 10-100 之间'); } $limit = $this->request->get('limit', 100, 'intval'); if ($limit < 10 || $limit > 200) { $this->error('查询期数范围必须在 10-200 之间'); } $result = $this->model->getSpecialHotColdList($lookback, $limit); $this->success('查询成功', null, $result); } } /** * 特码热力图 */ public function specialHeatmap() { if ($this->request->isAjax()) { $periods = $this->request->get('periods', 30, 'intval'); if ($periods < 10 || $periods > 100) { $this->error('期数范围必须在 10-100 之间'); } $result = $this->model->getSpecialHeatmap($periods); $this->success('查询成功', null, $result); } } }