public function index()
 {
     // 搭讪者openid
     $from_openid = I('from_openid');
     // 被搭讪者openid
     $to_openid = I('to_openid');
     // 用户个人信息表
     $db_userinfo = M('userinfo');
     // 搭讪者个人信息
     $from_info_arr = $db_userinfo->where(array("openid" => "{$from_openid}"))->find();
     // 被搭讪者个人信息
     $to_info_arr = $db_userinfo->where(array("openid" => "{$to_openid}"))->find();
     if (IS_POST) {
         // 实例化工具类
         $utilsObj = new UtilsController();
         //发送的内容
         $contents = I('contents');
         //搭讪者所在城市
         $from_city = $from_info_arr['city'] != null ? "来自" . $from_info_arr['city'] . "的" : "";
         //搭讪者性别
         $from_sex = $from_info_arr['sex'] == 1 ? "汉子👦" : "妹子👧";
         //搭讪者昵称
         $from_nickname = $from_info_arr['nickname'];
         // 搭讪url
         $dashan_url = $utilsObj->get_dashan_url($to_openid, $from_openid);
         // 拼接向被搭讪者要发送的消息
         $to_content = $from_city . $from_nickname . $from_sex;
         $to_content .= "向你发来消息:\n------------------\n\n" . $contents . "\n\n";
         $to_content .= "<a href='{$dashan_url}'>点此回复</a>";
         $to_content .= "\n------------------\n";
         $to_content .= "发送“@+你想说的话”可以快速回复ta哦[色]";
         // 向被搭讪者发送消息
         $jsondata = $utilsObj->send_custom_message($to_openid, "text", $to_content);
         $arrdata = json_decode($jsondata, true);
         // 拼接向搭讪者要发送的消息
         $dashan_url2 = $utilsObj->get_dashan_url($from_openid, $to_openid);
         $from_content = "你对" . $to_info_arr['nickname'] . "说:\n------------------\n\n" . $contents . "\n\n";
         $from_content .= "<a href='{$dashan_url2}'>点此继续聊天</a>";
         $from_content .= "\n------------------\n";
         // 向搭讪者发送消息
         $utilsObj->send_custom_message($from_openid, "text", $from_content);
         if ($arrdata['errmsg'] == "ok") {
             echo "消息发送成功,请返回耐心等待对方回复";
         } else {
             echo "消息发送失败,请重试";
         }
     } else {
         $this->assign('from_info_arr', $from_info_arr);
         $this->assign('to_info_arr', $to_info_arr);
         $this->display();
     }
 }
 private function responseMsg()
 {
     $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
     if (!empty($postStr)) {
         libxml_disable_entity_loader(true);
         // 接收到的xml消息
         $object = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
         $fromUsername = $object->FromUserName;
         // 这个就用户的openid
         $toUsername = $object->ToUserName;
         // 接收到的关键字
         $keyword = trim($object->Content);
         // 接收到的消息类型 (text,image,voice,video,location,link,event)
         $msgType = $object->MsgType;
         // 实例化回复类
         $replyObj = new ReplyController();
         // 实例化工具类
         $utilsObj = new UtilsController();
         //将未存入数据库的用户信息存入数据库,方便下次搭讪
         $utilsObj->get_user_info($fromUsername);
         // 更新该用户的最后交互时间
         $db_userinfo = M('userinfo');
         $now_time = time();
         $db_userinfo->where(array('openid' => "{$fromUsername}"))->save(array("last_time" => $now_time));
         switch ($msgType) {
             case 'text':
                 // 文本消息处理
                 if ($keyword == "搭讪客服") {
                     $content = $utilsObj->dashan("客服", $fromUsername);
                 } elseif ($keyword == "搭讪汉子") {
                     $content = $utilsObj->dashan("汉子", $fromUsername);
                 } elseif ($keyword == "搭讪妹子") {
                     $content = $utilsObj->dashan("妹子", $fromUsername);
                 } elseif ($keyword == "搭讪") {
                     $content = $utilsObj->dashan("搭讪", $fromUsername);
                 } elseif (preg_match('/@((.*?))/', $keyword)) {
                     $content = $utilsObj->dashan_send_msg($keyword, $fromUsername);
                 }
                 break;
             case 'image':
                 // 图片消息处理
                 break;
             case 'voice':
                 // 声音消息处理
                 break;
             case 'video':
                 // 视频消息处理
                 break;
             case 'location':
                 // 地理消息处理
                 break;
             case 'event':
                 // 事件消息处理
                 $eventType = $object->Event;
                 //取出事件的类型
                 switch ($eventType) {
                     case 'subscribe':
                         // 关注事件
                         break;
                     case 'SCAN':
                         // 扫码事件
                         break;
                     case 'unsubscribe':
                         // 取消关注事件
                         break;
                     case 'LOCATION':
                         // 地址上报事件
                         break;
                     case 'CLICK':
                         // 自定义菜单点击事件
                         $eventKey = $object->EventKey;
                         switch ($eventKey) {
                             case "":
                                 break;
                         }
                         break;
                 }
                 break;
         }
         echo $replyObj->transmitText($object, $content);
     } else {
         echo "";
         exit;
     }
 }