Exemplo n.º 1
0
 public function pushNotice($data)
 {
     $receiver = $data["receiver"];
     if (empty($receiver)) {
         return Utils::WrapResultError("接收人不能为空");
     }
     $receiver = explode(',', $receiver);
     if (empty($data["text"])) {
         return Utils::WrapResultError("内容不能为空");
     }
     $files = isset($data["files"]) ? $data["files"] : '';
     if (!empty($files) && is_array($files)) {
         $files = implode(',', $files);
     }
     $noticeid = SysSeq::GetSeqNextValue($this->conn_im, "im_pushnotice_msg", "id");
     $filefix = $this->container->getParameter('FILE_WEBSERVER_URL');
     $senddata = array();
     $senddata = array('noticeid' => $noticeid, 'text' => $data["text"], 'files' => $files, 'receivercount' => count($receiver), 'receiver' => implode(',', $receiver), 'sender' => array('nickname' => $this->user["nick_name"], 'photo' => $this->user["photo_path"], 'jid' => $this->user["jid"], 'date' => date("Y-m-d H:i:s", time())));
     $notice = Utils::WrapMessageNoticeinfo($data["text"], $this->module["appname"], null, $this->module["logo"]);
     $msg = Utils::WrapMessage('push-notice', $senddata, $notice);
     $msgxml = Utils::WrapMessageXml($this->module["jid"], $msg, 'push-notice-' . $noticeid);
     $sql = 'insert into im_pushnotice_msg(id,replyid,msg,created,us,msgid)values(?,0,?,now(),?,?)';
     $para = array((int) $noticeid, (string) $msgxml, (string) $this->user["jid"], 'push-notice-' . $noticeid);
     $sql2 = 'insert into im_pushnotice_memebr(noticeid,employeeid,lastread_reply,receive_time)values';
     $sql2Values = array();
     $staffinfo = new \Justsy\BaseBundle\Management\Staff($this->conn, $this->conn_im, $this->user['login_account'], $this->logger, $this->container);
     foreach ($receiver as $key => $value) {
         $rdata = $staffinfo->getstaffinfo($value);
         if (!empty($rdata)) {
             $receiver[$key] = $rdata['jid'];
             $sql2Values[] = '(' . $noticeid . ',\'' . $rdata['jid'] . '\',0,null)';
         }
     }
     if (count($sql2Values) > 0) {
         $sql2 = $sql2 . implode(',', $sql2Values);
         $this->conn_im->ExecSQLs(array($sql, $sql2), array($para, array()));
         //发送消息
         $receiver[] = $this->user["jid"];
         Utils::findonlinejid($this->conn_im, $receiver);
         if (count($receiver) > 0) {
             $presence = new \Justsy\OpenAPIBundle\Controller\ApiController();
             $presence->setContainer($this->container);
             $presence->sendMsg($this->module["jid"], $receiver, '新通知送达', json_encode($msg));
         }
     }
     return Utils::WrapResultOK(array('noticeid' => $noticeid));
 }