对外接口 2个
1、获取投票数json 2、投票
<?php
class VoteController extends NodeController {
/**
* 获取队列投票数 全部
*@return JSON
*/
public function tickets() {
$tickets = self::getService ()->getAllTickets ();
$this->sendNotice ( "success", $tickets, true );
}
/**
* 投票
*/
public function t() {
$rs = self::getService ()->addTickets ( $_POST ['id'], $this->_user_global ['uid'] );
$this->sendNotice ( $rs, null, FALSE );
}
/**
* 获取投票服务类
* Enter description here ...
*/
public static function getService() {
return new VoteService ();
}
}
//服务类
<?php
class VoteService {
//初始票数
private $_tickets = 1;
//每日投票次数
private $_max = 10;
//初始化时间
private $_startTime;
/**
* 每日投票数
*/
public function __construct() {
$this->_startTime = strtotime ( date ( "Ymd", time () ) );
}
/**
* 投票
* @param int $id 投票对象
* @param int $uid 投票人id
*/
public function addTickets($id, $uid) {
if (! $uid) {
return "请先登录";
}
if ($id < 1) {
return "投票失败,请选择投票对象";
}
//检查是否已经投过票
if ($this->checkVoteTickets ( $uid )) {
return "今天的投票数已用完";
}
//检查是否已经参赛 没有就新增 有的更新
if ($this->checkUserExist ( $id )) {
VoteModel::instance ()->saveTicketsById ( $id );
} else {
VoteModel::instance ()->addUser ( array ('id' => $id, 'tickets' => $this->_tickets ) );
}
//增加历史记录
$this->addVoteLog ( $uid, $id );
return "success";
}
/**
* 返回所有票数
* @return id tickets
*/
public function getAllTickets() {
return VoteModel::instance ()->getAllTickets ();
}
/**
* 检查投票次数
* @return true 超过了 false 没有
*/
private function checkVoteTickets($uid) {
$num = VoteModel::instance ()->countTicketsByTime ( $uid, $this->_startTime );
return $num ['num'] > $this->_max ? false : true;
}
/**
*
* @param int $uid 投票人id
* @param int $gid 对象id
*/
private function addVoteLog($uid, $gid) {
VoteModel::instance ()->addList ( array ('uid' => $uid, 'gid' => $gid, 'add_time' => time () ) );
}
/**
* 检查用户是否存在
* @param int $id
* @return ture 不存在 false 存在
*/
private function checkUserExist($id) {
$rs = VoteModel::instance ()->getTicketsById ( $id );
return empty ( $rs );
}
}
//模型类
<?php
/**
*
* 功能描述
* 不涉及任何展示功能
* @author Administrator
*
*/
class VoteModel extends Db {
//投票队列 谁投票
private $_vote_list = 'w_vote_list';
//参赛队员
private $_vote_user = 'w_vote_user';
public function getAllTickets() {
return $this->getAll ( $this->_vote_user );
}
public function addList($params) {
$this->add ( $this->_vote_list, $params );
return $this->lastInsertId ();
}
public function saveTicketsById($id) {
$sql = "UPDATE $this->_vote_user SET tickets=tickets+1 WHERE id=$id";
return $this->exec ( $sql );
}
public function countTicketsByTime($uid, $startTime) {
$sql = "SELECT count(id) num FROM $this->_vote_list WHERE add_time>$startTime AND uid=$uid";
return $this->fetch ( $sql );
}
public function addUser($params) {
$this->add ( $this->_vote_user, $params );
}
public function getTicketsById($id) {
return $this->getOne ( $this->_vote_user, array ('id' => $id ) );
}
/**
* 返回VoteModel
* @return VoteModel
*/
public static function instance() {
return parent::_instance ( __CLASS__ );
}
}