getOne($where); return $info; } # 获取最新的一期 public function getPeriodsNew($info_id, $type = 1) { $info = $this->getInfo($info_id, $type); if ($info) { $where['info_id'] = $info_id; $where['ranking_id'] = $info['id']; $info = Dever::db('collection/ranking_periods')->getNew($where); return $info; } return false; } # 获取当前期的数据 public function getData($periods_id) { $where['periods_id'] = $periods_id; $data = Dever::db('collection/ranking_data')->getAll($where); return $data; } # 加入门票榜单 public function up($uid, $info_id, $type = 1, $num = 1) { $periods = $this->getPeriodsNew($info_id, $type); if ($periods) { $update['uid'] = $uid; $update['periods_id'] = $periods['id']; $data = Dever::db('collection/ranking_data')->one($update); $update['info_id'] = $info_id; $update['ranking_id'] = $periods['ranking_id']; if ($data) { $update['where_id'] = $data['id']; $update['num'] = $data['num'] + $num; Dever::db('collection/ranking_data')->update($update); } else { $update['num'] = $num; Dever::db('collection/ranking_data')->insert($update); } } } # 加入到cron里 检测所有榜单是否有新的期数,如果没有,自动添加新的一期 public function cron_api() { $ranking = Dever::db('collection/ranking')->getAll(); if ($ranking) { $cur = time(); foreach ($ranking as $k => $v) { $where['ranking_id'] = $v['id']; $info = Dever::db('collection/ranking_periods')->getNew($where); if (!$info) { # 如果没有,就建立新的期数 $this->createPeriods(1, $cur, $v); } else { # 如果有,检查结束时间到没到期,如果到了,就把这一期置为已结束,重新建立新的期数 if ($cur > $info['end']) { Dever::db('collection/ranking_periods')->update(array('where_id' => $info['id'], 'status' => 2)); $this->createPeriods($info['periods'] + 1, $cur, $v); } } } } } private function createPeriods($periods, $cur, $info) { # 查看总榜的结束时间是否结束 if ($info['end'] && $cur > $info['end']) { Dever::db('collection/ranking')->update(array('where_id' => $info['id'], 'status' => 2)); return; } $data['info_id'] = $info['info_id']; $data['ranking_id'] = $info['id']; $data['name'] = '第' . $periods . '期'; $data['periods'] = $periods; $data['users'] = 0; $data['status'] = 1; $data['start'] = $cur; if ($info['periods'] == 2) { # 周 $time = 3600*24*7; } elseif ($info['periods'] == 3) { # 月 $time = 3600*24*30; } elseif ($info['periods'] == 4) { # 年 $time = 3600*24*365; } $data['end'] = $data['start'] + $time; Dever::db('collection/ranking_periods')->insert($data); } }