46 lines
1.4 KiB
PHP
46 lines
1.4 KiB
PHP
<?php
|
|
|
|
use phpcommon\SqlHelper;
|
|
class AnncController extends BaseController {
|
|
|
|
const ANNC_REDIS_KEY = 'annc_redis_key:';
|
|
|
|
public function getAnnc()
|
|
{
|
|
$redis = myself()->_getRedis(self::ANNC_REDIS_KEY);
|
|
if ($redis->exists(self::ANNC_REDIS_KEY)){
|
|
$data = json_decode($redis->get(self::ANNC_REDIS_KEY),true);
|
|
}else{
|
|
$data = $this->_findAnnc();
|
|
if ($data){
|
|
$redis->set(self::ANNC_REDIS_KEY,json_encode($data));
|
|
$redis->pexpire(self::ANNC_REDIS_KEY , max(0, min(15, myself()->_getNowTime() - $data['end_time'])) * 1000);
|
|
}
|
|
}
|
|
|
|
myself()->_rspData($data);
|
|
}
|
|
|
|
private function _findAnnc(){
|
|
$seconds = myself()->_getNowTime() - myself()->_getNowDaySeconds();
|
|
$data = array();
|
|
$row = myself()->_getConfDbMysql()->execQueryOne(
|
|
'SELECT * FROM t_game_annc WHERE :nowtime >= begin_date AND :nowtime <= end_date AND is_open = 1 AND :seconds >= begin_time AND :seconds <= end_time',
|
|
array(
|
|
':nowtime' => myself()->_getNowTime(),
|
|
':seconds' => $seconds,
|
|
)
|
|
);
|
|
if ($row){
|
|
$data = array(
|
|
'id' => $row['uniid'],
|
|
'title' => $row['title'],
|
|
'content' => $row['content'],
|
|
'end_time' => $row['end_time']
|
|
);
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
}
|