예제 #1
0
파일: Portal.php 프로젝트: suyuanen/trotri
 /**
  * 通过主键,删除一条记录
  * @param integer $memberId
  * @return integer
  */
 public function removeByPk($memberId)
 {
     if (($memberId = (int) $memberId) <= 0) {
         return false;
     }
     $portalTblName = $this->getTblprefix() . TableNames::getPortal();
     $membersTblName = $this->getTblprefix() . TableNames::getMembers();
     $socialTblName = $this->getTblprefix() . TableNames::getSocial();
     $sql = 'SELECT `p`.*, `m`.*, `s`.* FROM `' . $portalTblName . '` AS `p` LEFT JOIN `' . $membersTblName . '` AS `m` ON `p`.`member_id` = `m`.`member_id` LEFT JOIN `' . $socialTblName . '` AS `s` ON `m`.`member_id` = `s`.`member_id` WHERE `m`.`member_id` = ?';
     $row = $this->fetchAssoc($sql, $memberId);
     if (!$row || !is_array($row) || !isset($row['member_id'])) {
         return false;
     }
     Log::info(sprintf('Portal backup before remove: %s', serialize($row)), 0, __METHOD__);
     $commands = array(array('sql' => 'DELETE FROM `' . $portalTblName . '` WHERE `member_id` = ?', 'params' => $memberId), array('sql' => 'DELETE FROM `' . $membersTblName . '` WHERE `member_id` = ?', 'params' => $memberId), array('sql' => 'DELETE FROM `' . $socialTblName . '` WHERE `member_id` = ?', 'params' => $memberId));
     return $this->doTransaction($commands);
 }
예제 #2
0
파일: Members.php 프로젝트: suyuanen/trotri
 /**
  * 操作积分
  * @param string $opType increase:增加、reduce:扣除、freeze:冻结、unfreeze:解冻、reduce_freeze:扣除冻结积分
  * @param integer $memberId
  * @param integer $points
  * @param string $source
  * @param string $remarks
  * @param integer $creatorId
  * @return boolean
  */
 public function opPoints($opType, $memberId, $points, $source, $remarks, $creatorId)
 {
     if ($opType !== 'increase' && $opType !== 'reduce' && $opType !== 'freeze' && $opType !== 'unfreeze' && $opType !== 'reduce_freeze') {
         return false;
     }
     if (($memberId = (int) $memberId) <= 0) {
         return false;
     }
     if (($points = (int) $points) <= 0) {
         return false;
     }
     if (($source = trim($source)) === '') {
         return false;
     }
     $tableName = $this->getTblprefix() . TableNames::getMembers();
     $logTblName = $this->getTblprefix() . TableNames::getPointsLogs();
     $sql = 'SELECT `points`, `points_freeze` FROM `' . $tableName . '` WHERE `member_id` = ?';
     $row = $this->fetch($sql, $memberId);
     if (!$row || !is_array($row) || !isset($row['points'])) {
         return false;
     }
     $beforePoints = (int) $row['points'];
     $beforeFreezePoints = (int) $row['points_freeze'];
     $freezePoints = 0;
     if ($opType === 'freeze' || $opType === 'unfreeze' || $opType === 'reduce_freeze') {
         $freezePoints = $points;
         $points = 0;
     }
     $afterFreezePoints = $opType === 'freeze' ? $beforeFreezePoints + $freezePoints : $beforeFreezePoints - $freezePoints;
     switch (true) {
         case $opType === 'increase':
             $afterPoints = $beforePoints + $points;
             break;
         case $opType === 'reduce':
             $afterPoints = $beforePoints - $points;
             break;
         case $opType === 'freeze':
             $afterPoints = $beforePoints - $freezePoints;
             break;
         case $opType === 'unfreeze':
             $afterPoints = $beforePoints + $freezePoints;
             break;
         case $opType === 'reduce_freeze':
         default:
             $afterPoints = $beforePoints;
             break;
     }
     if ($afterPoints < 0 || $afterFreezePoints < 0) {
         return false;
     }
     $attributes = array('member_id' => $memberId, 'op_type' => $opType, 'before_points' => $beforePoints, 'after_points' => $afterPoints, 'points' => $points, 'before_freeze_points' => $beforeFreezePoints, 'after_freeze_points' => $afterFreezePoints, 'freeze_points' => $freezePoints, 'source' => $source, 'remarks' => $remarks, 'creator_id' => (int) $creatorId, 'dt_created' => date('Y-m-d H:i:s'));
     $commands = array(array('sql' => 'UPDATE `' . $tableName . '` SET `points` = ?, `points_freeze` = ? WHERE `member_id` = ?', 'params' => array('points' => $afterPoints, 'points_freeze' => $afterFreezePoints, 'member_id' => $memberId)), array('sql' => $this->getCommandBuilder()->createInsert($logTblName, array_keys($attributes)), 'params' => $attributes));
     return $this->doTransaction($commands);
 }