Exemple #1
0
 /**
  * 过滤id列表
  *
  * @param array|int $id id列表
  * @return array
  */
 private function _filterIds($id)
 {
     !is_array($id) && ($id = array($id));
     $clearIds = array();
     foreach ($id as $item) {
         if (WindValidator::isPositive($item)) {
             $clearIds[] = $item;
         }
     }
     return $clearIds;
 }
 /**
  * 判断用户是否可以购买邀请码
  *
  * @param PwUserBo $user 购买的用户
  * @param int $num  购买的数量
  * @param int $creditType 用于购买的积分类型
  * @return boolean|PwError
  */
 public function allowBuyInviteCode(PwUserBo $user, $num, $creditType)
 {
     if (!WindValidator::isPositive($num)) {
         return new PwError('USER:invite.buy.num.error');
     }
     $num = intval($num);
     //用户组能购买的邀请码数量限制
     $startTime = Pw::str2time(Pw::time2str(Pw::getTime(), 'Y-m-d'));
     $readyBuy = $this->_getDs()->countByUidAndTime($user->uid, $startTime);
     $gidLimit = abs(ceil($user->getPermission('invite_limit_24h')));
     if ($readyBuy + $num > $gidLimit) {
         return new PwError('USER:invite.buy.num.24h.limit', array('{num}' => $gidLimit, '{readynum}' => $readyBuy));
     }
     $price = abs(ceil($user->getPermission('invite_buy_credit_num')));
     if ($price * $num > $user->getCredit($creditType)) {
         return new PwError('USER:invite.buy.credit.no.enough', array('{num}' => $user->getCredit($creditType), '{buynum}' => $num));
     }
     return true;
 }