Exemple #1
0
 /**
  * 添加内容
  * 
  * @param PwLikeStatisticsDm $dm
  */
 public function addInfo(PwLikeStatisticsDm $dm)
 {
     $data = $dm->getData();
     $info = $this->getInfoByLikeid($data['signkey'], $data['likeid']);
     if ($info) {
         return $this->_getLikeStatisticsDao()->updateInfo($data);
     } else {
         return $this->_getLikeStatisticsDao()->addInfo($data);
     }
 }
 /**
  * 喜欢增加策略后续操作:更新喜欢排行榜
  * 
  * $signKeys 排行榜时间,按相对时间排行
  * $countKeys 每种排行的当前记录数
  * $maxStatis 最大记录数
  * @param int $likeid
  * @param int $count
  */
 public function setLikeBrand($likeid, $count, $typeid, $fromid)
 {
     $signKeys = array('day7' => 604800, 'day2' => 172800, 'day1' => 86400);
     $countKeys = array('day7_count', 'day2_count', 'day1_count');
     $minInfo = $this->_getLikeStatisticsDs()->getMinInfo('day7');
     $minCount = $minInfo ? $minInfo['number'] : 0;
     $maxStatis = 100;
     $time = Pw::getTime();
     if ($minCount > $count) {
         return false;
     }
     foreach ($signKeys as $key => $value) {
         $startTime = $time - $value;
         $keyInfo = $this->_getLikeStatisticsDs()->getLikeStatistics($key . '_count');
         $keyCount = $keyInfo ? $keyInfo['number'] : 0;
         if ($minCount < $count || $keyCount < $maxStatis) {
             $logCount = $this->_getLikeLogDs()->getLikeidCount($likeid, $startTime);
             Wind::import('SRV:like.dm.PwLikeStatisticsDm');
             $dm = new PwLikeStatisticsDm();
             $dm->setSignkey($key)->setLikeid($likeid)->setTypeid($typeid)->setFromid($fromid)->setNumber($logCount);
             $msg = $this->_getLikeStatisticsDs()->addInfo($dm);
             if (is_numeric($msg) && $keyCount < $maxStatis) {
                 $dm = new PwLikeStatisticsDm();
                 $keyCount++;
                 $dm->setSignkey($key . '_count')->setLikeid(0)->setNumber($keyCount);
                 $this->_getLikeStatisticsDs()->addInfo($dm);
             }
         }
     }
     return true;
 }