public function run() { list($page, $perpage, $username, $starttime, $endtime, $keyword) = $this->getInput(array('page', 'perpage', 'username', 'starttime', 'endtime', 'keyword')); $starttime && ($pwStartTime = Pw::str2time($starttime)); $endtime && ($pwEndTime = Pw::str2time($endtime)); $page = $page ? $page : 1; $perpage = $perpage ? $perpage : $this->perpage; list($start, $limit) = Pw::page2limit($page, $perpage); if ($username) { $userinfo = $this->_getUserDs()->getUserByName($username); $fromUid = $userinfo['uid'] ? $userinfo['uid'] : 0; } Wind::import('WINDID:service.message.srv.vo.WindidMessageSo'); $vo = new WindidMessageSo(); $endtime && $vo->setEndTime($endtime); $fromUid && $vo->setFromUid($fromUid); $keyword && $vo->setKeyword($keyword); $starttime && $vo->setStarttime($starttime); $messages = $this->_getMessageDs()->searchMessage($vo, $start, $limit); $count = $this->_getMessageDs()->countMessage($vo); foreach ($messages as $k => $v) { $uids[] = $v['from_uid']; } $users = $this->_getUserDs()->fetchUserByUid($uids); foreach ($messages as $k => $v) { $messages[$k]['username'] = $users[$v['from_uid']]['username']; } $this->setOutput($count, 'count'); $this->setOutput($page, 'page'); $this->setOutput($perpage, 'perpage'); $this->setOutput(array('keyword' => $keyword, 'username' => $username, 'starttime' => $starttime, 'endtime' => $endtime), 'args'); $this->setOutput($messages, 'messages'); }
/** * 发件箱服务 * Enter description here ... * @param unknown_type $fromUid * @param unknown_type $start * @param unknown_type $limit */ public function fromBox($fromUid, $start = 0, $limit = 10) { Wind::import('WINDID:service.message.srv.vo.WindidMessageSo'); $vo = new WindidMessageSo(); $vo->setFromUid($fromUid); $count = $this->_getMessageDs()->countMessage($vo); if (!$count) { return array(0, array()); } $list = $this->_getMessageDs()->searchMessage($vo, $start, $limit); $messageIds = array(); $uids = array(); foreach ($list as $k => $v) { $messageIds[] = $v['message_id']; $uids[] = $v['to_uid']; } $relation = $this->_getMessageDs()->fetchRelationByMessageIds($messageIds, 1); $users = $this->_getUserDs()->fetchUserByUid($uids); foreach ($list as $k => $v) { $list[$k]['is_read'] = isset($relation[$v['message_id']]) ? $relation[$v['message_id']]['is_read'] : 0; $list[$k]['to_username'] = isset($users[$v['to_uid']]) ? $users[$v['to_uid']]['username'] : ''; } return array($count, $list); }
/** * 搜索消息 * * @param array $search array('fromuid', 'keyword', 'username', 'starttime', 'endtime') * @param int $start * @param int $limit * @return array(count, list) */ public function searchMessage($search, $start = 0, $limit = 10) { if (!is_array($search)) { return array(0, array()); } $array = array('fromuid', 'keyword', 'username', 'starttime', 'endtime'); Wind::import('WINDID:service.message.srv.vo.WindidMessageSo'); $vo = new WindidMessageSo(); foreach ($search as $k => $v) { if (!in_array($k, $array)) { continue; } if ($k == 'username') { $user = $this->_getUserDs()->getUserByName($v); if (!$user['uid']) { $user['uid'] = 0; } $vo->setFromUid($user['uid']); } $method = 'set' . ucfirst($k); $vo->{$method}($v); } $count = $this->_getMessageDs()->countMessage($vo); if ($count < 1) { return array(0, array()); } $messages = $this->_getMessageDs()->searchMessage($vo, $start, $limit); $uids = $array = array(); foreach ($messages as $v) { $uids[] = $v['from_uid']; } // 组装用户数据 $userInfos = $this->_getUserDs()->fetchUserByUid($uids); if (!$userInfos) { return array(0, array()); } foreach ($messages as $v) { $v['username'] = $userInfos[$v['from_uid']]['username']; $array[] = $v; } return array($count, $array); }