123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <?php
- namespace Collection\Lib;
- use Dever;
- class Ranking
- {
-
- public function getInfo($info_id, $type = 1)
- {
- $where['info_id'] = $info_id;
- $where['type'] = $type;
- $info = Dever::db('collection/ranking')->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);
- }
- }
- }
-
- 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);
- }
- }
|