obj = new dWeiboBehavior(); $this->tbl_data = 'spider_behavior_data'; $this->tbl_delta = 'spider_behavior_delta'; } public function saveBehaviorData($data) { return $this->obj->replace($this->tbl_data, $data); } public function getBehaviorByDate($date) { return $this->obj->selectAll($this->tbl_data, array('sql' => "`date`=?", 'vals' => array($date)), 'id desc', array(0, 10000)); } public function deleteExpireBehaviorData($date) { return $this->obj->delete($this->tbl_data, array('sql' => "`date` array($date))); } public function saveBehaviorDelta($data) { return $this->obj->replace($this->tbl_delta, $data); } public function deleteExpireBehaviorDelta($date) { return $this->obj->delete($this->tbl_delta, array('sql' => "`date` array($date))); } public function getHotBehavior($type, $sdate, $edate, $page_num, $page_size) { $offset = ($page_num - 1) * $page_size; if (!$sdate) { $this->setError('参数错误'); return false; } $sdate = date('Y-m-d', strtotime($sdate)); $where = " date = '{$sdate}' "; if ($edate) { $edate = date('Y-m-d', strtotime($edate)); $where = " date >= '{$sdate}' AND date <= '{$edate}' "; } $row = ""; if ($type == BEHAVIOR_TYPE_REPOSTS) $row = " SUM(reposts_delta) as num"; if ($type == BEHAVIOR_TYPE_COMMENTS) $row = " SUM(comments_delta) as num"; if ($type == BEHAVIOR_TYPE_ATTITUDES) $row = " SUM(attitudes_delta) as num"; $sql = "SELECT wid,{$row} FROM spider_behavior_delta WHERE {$where} GROUP BY wid ORDER BY num DESC LIMIT {$offset}, {$page_size}"; $res = $this->obj->execute($sql, true, true); $mobj = new mWeibo(); $wids = array_column($res, 'wid'); $weibos = $mobj->getWeiboByWids($wids); $weibo_list = array_column($weibos, null, 'wid'); $weibo_user = $GLOBALS['WEIBO_USER_LIST']; foreach ($res as &$re){ $weibo = isset($weibo_list[$re['wid']]) ? $weibo_list[$re['wid']] : array(); $re['uname'] = empty($weibo)? $weibo_user[WEIBO_USER_ZHANG] : $weibo_user[$weibo['uid']]; $re['title'] = empty($weibo)? '无文字展示' : $weibo['text']; $re['url'] = sprintf(WEIBO_DETAIL_URL, $re['wid']); } return $res; } public function getHotBehaviorTotal($sdate, $edate) { if (!$sdate) { $this->setError('参数错误'); return false; } $sdate = date('Y-m-d', strtotime($sdate)); $where = " date = '{$sdate}' "; if ($edate) { $edate = date('Y-m-d', strtotime($edate)); $where = " date >= '{$sdate}' AND date <= '{$edate}' "; } $sql = "SELECT count(*) as total FROM spider_behavior_delta WHERE {$where}"; $res = $this->obj->execute($sql, false, true); return $res['total']; } }