未激活, 1 => 激活的, - 1 => 已过期); public function cratecode ($uid) { $lastcode = invitationcodemodel::instance()->getcodebyuid($uid); if (time() - $lastcode['create_time'] false, 'message' => $msg); } $code = $this->getrandcode(); $params = array('uid' => $uid, 'create_time' => time(), 'obj' => $this->_obj, 'code' => $code); $rs = invitationcodemodel::instance()->addcode($params); if ($rs > 0) { return array('status' => true, 'data' => $code, 'message' => 生成成功); } else { return array('status' => false, 'data' => $code, 'message' => 生成失败); } } //激活码 public function activate ($sendee, $code) { $code = invitationcodemodel::instance()->getcodebycode($code); if (empty($code)) { return array('status' => false, 'message' => 授权码错误!); } if ($code['status'] _status[$code['status']]; return array('status' => false, 'message' => $msg); } if ($code['status'] == 1 && $code['sendee'] != $sendee) { return array('status' => false, 'message' => 此邀请码已被使用); } if ($code['status'] == 1 && $code['sendee'] == $sendee) { $istimeout = $this->istimeout($code); if (! $istimeout['status']) { return $istimeout; } return array('status' => true); } $v = array('sendee' => $sendee, 'status' => 1, 'active_time' => time()); $rs = invitationcodemodel::instance()->savecodebyid($v, $code['id']); if ($rs > 0) { return array('status' => true, 'data' => $code, 'message' => 激活成功); } else { return array('status' => false, 'data' => $code, 'message' => 激活失败); } } private function istimeout ($code) { if (time() - $code['active_time'] > self::time_out) { $v = array('status' => - 1); invitationcodemodel::instance()->savecodebyid($v, $code['id']); return array('status' => false, 'message' => 授权码已失效,请重新获取授权!); } return array('status' => true); } //检查是否授权 public function authrize ($sendee) { $code = invitationcodemodel::instance()->getcodebysendee($sendee); if (empty($code)) { return array('status' => false, 'message' => 未被授权进入); } if ($code['status'] == - 1) { return array('satatus' => false, 'message' => 授权码已失效,请重新获取授权!); } if (time() - $code['active_time'] > self::time_out) { $v = array('status' => - 1); invitationcodemodel::instance()->savecodebyid($v, $code['id']); return array('status' => false, 'message' => 授权码已失效,请重新获取授权!); } $data = self::time_out - (time() - $code['active_time']); return array('status' => true, 'data' => $data); } //生成随机数 private function getrandcode () { $str = '0123456789abcdefghijklmnopqrstuvwxxyz'; $code = ; for ($i = 0; $i getcodebycode($code); if (! empty($isexsit)) { return $this->getrandcode(); } return $code; } public function getcodepage ($p, $uid) { $where = array('uid' => $uid); $rs = invitationcodemodel::instance()->getcodepage($p, $this->_num, $where); $member = new memberservice(); foreach ($rs as $k => $v) { $user = $member->getmemberbyuid($v['sendee']); $rs[$k]['sendee'] = $user['real_name']; $rs[$k]['status'] = $this->_status[$v['status']]; } return $rs; }}class invitationcodemodel extends db{ private $_code = 'd_invitation_code'; public function getcodepage ($start, $num, $where) { return $this->getpage($start, $num, $this->_code, null, $where, 'id desc'); } public function addcode ($params) { return $this->add($this->_code, $params); } public function savecodebyid ($v, $id) { return $this->update($this->_code, $v, array('id' => $id)); } public function getcodebycode ($code) { return $this->getone($this->_code, array('code' => $code)); } public function getcodebyuid ($uid) { $sql = select * from $this->_code where uid=$uid and status=0 order by id desc limit 1; return $this->fetch($sql); } public function getcodebysendee ($sendee) { $sql = select * from $this->_code where sendee=$sendee and status=1 order by id desc limit 1; return $this->fetch($sql); } /** * * @return invitationcodemodel */ public static function instance () { return parent::_instance(__class__); }}
