Esempio n. 1
0
 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');
 }
Esempio n. 2
0
 /**
  * 收件箱服务
  * Enter description here ...
  * @param unknown_type $toUid
  * @param unknown_type $start
  * @param unknown_type $limit
  */
 public function toBox($toUid, $start = 0, $limit = 10)
 {
     Wind::import('WINDID:service.message.srv.vo.WindidMessageSo');
     $vo = new WindidMessageSo();
     $vo->setToUid($toUid);
     $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['from_uid'];
     }
     $relation = $this->_getMessageDs()->fetchRelationByMessageIds($messageIds, 0);
     $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]['from_username'] = isset($users[$v['from_uid']]) ? $users[$v['from_uid']]['username'] : '';
     }
     return array($count, $list);
 }
Esempio n. 3
0
 /**
  * 搜索消息数量
  * 
  * @param int $from_uid
  * @return int 
  */
 public function countMessage(WindidMessageSo $vo)
 {
     return $this->_getDao()->countMessage($vo->getData());
 }
Esempio n. 4
0
 /**
  * 搜索消息
  * 
  * @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);
 }