예제 #1
0
/**
 * 调用客服接口接口,发送多条图文消息,服务号不限制次数,但是要限制48小时内与微信公众号有互动的用户才能收到
 */
function sendmultinewmsgByService()
{
    // 当前php文件所在目录
    //define('DIR_ROOT', str_replace('\\', '/', dirname(__FILE__)));
    // 项目根目录
    define('DIR_ROOT', $_SERVER['DOCUMENT_ROOT']);
    //define('DIR_ROOT', "/wwwroot/");
    $courseids = $_POST["courseids"];
    /*$inTemp = "";
    	foreach($courseids as $courseid){
    		$inTemp = $inTemp.$courseid.",";
    	}
    	$in = substr($inTemp, 0, strlen($inTemp) -1);
    	*/
    // 根据courseid查询对应的课程(推送)信息
    $querysql = "select * from cn_news where id in  (" . $courseids . ")";
    global $db;
    global $smarty;
    $res = $db->query($querysql);
    $rowlist = $db->fetch_all($res);
    // 先判断下是否存在不满足条件的数据
    $errortitle = "";
    foreach ($rowlist as $row) {
        if (empty($row["simage"])) {
            $errortitle .= "<font color='red'>\"" . $row["id"] . "\"</font><br />";
        }
    }
    if (!empty($errortitle)) {
        echo "编号为:<br />" . $errortitle . "的信息不完善,请重新编辑,添加图片、缩略图信息";
        return;
    }
    // TODO 先保存图片素材,得到media_id, 页面提示用户,图片素材数量上限
    // 图片(image)、语音(voice)、视频(video)和缩略图(thumb)
    $meidaType = "image";
    //
    // 循环所有的消息,制成成图片消息,拿到media id 数组
    $articles = array();
    $showcoverpic = "0";
    // 是否显示封面,1为显示,0为不显示
    foreach ($rowlist as $row) {
        //获取当前文件物理路径
        $tmp_file = DIR_ROOT . "/" . $row["simage"];
        //echo $tmp_file;
        if (file_exists($tmp_file)) {
            // 先循环制作所有的图片素材, 调素材管理接口上传图片,得到meidaid
            $response = WxUtil::uploadPicGetPicUrl($meidaType, $tmp_file);
            //echo print_r($response);
            if (!empty($response["url"])) {
                $picurl = $response["url"];
                $title = $row["title"];
                $sourceurl = "http://bangmaisiw.w107.mc-test.com/wap/Course-Details.php?id=" . $row["id"];
                $content = $row["contents"];
                $article = array("title" => $title, "description" => "", "url" => $sourceurl, "picurl" => $picurl);
                $articles[] = $article;
            } else {
                LogUtil::logs("批量创建图片素材失败:消息来源id:" . $row["id"] . ",错误信息:" . $response["errmsg"], getLogFile("/business.log"));
            }
        } else {
            LogUtil::logs("文件不存在:" . $row["image"], getLogFile("/business.log"));
        }
    }
    // 拿到mediaid, 就可以发起推送了
    // 先获取openid列表
    $openidsql = "select openid, nickname from wx_user_info where subscribe = '1' ";
    $openidres = $db->query($openidsql);
    // php的json格式:array(""=>"")
    $openidList = $db->fetch_all($openidres);
    // 循环下,转成无key的值数组
    $openidarr = array();
    $lognickname = "";
    foreach ($openidList as $openid) {
        $lognickname .= $openid["nickname"] . ",";
        $openidarr[] = $openid["openid"];
    }
    //echo print_r($openidarr);
    $tit = new TypeImageText();
    echo $tit->sendMultiImageTextMsgToMultiUser($openidarr, $articles);
    echo "<br />消息发送到:" . $lognickname;
}