/** * 添加内容 * * @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; }