1.编写添加图文方法addnews,将图文添加到数据库中
用post方式获取到data的值,用foreach遍历数组,如果键为0则把数据(mpid,title,create_time)添加到数据表media_news中,根据数据表media_news_list与表media_news的关联(news_id)再将数据添加到数据表media_news_list中,数据添加成功返回'error'=>0,'msg'=>'数据添加成功'。
public function addnews(){ if(IS_GET){ $this->display(); }else{ $mp = $this->mp; $data = I('post.data'); // print_r($data); // exit; //先添加数据到数据表rh_media_news foreach($data as $key => $value){ $arr = array(); $arr['mpid'] = $mp['id']; $arr['title'] = $value['title']; $arr['create_time'] = time(); // print_r($arr); // exit; // $ret = M('media_news')->add($arr); if($key == 0){ $ret = M('media_news')->add($arr); } $value['news_id'] = $ret; M('media_news_list')->add($value); } // print_r($value); // exit; $this->ajaxReturn(array('error'=>0,'msg'=>'数据添加成功')); } }
2.编写图片上传方法uploadimg
首先获取到access_token,引入文件LaneWeChat/lanewechat.php。图文群发上传的图片应是永久图片,所以接口调用如下:
上传成功返回{“media_id”:MEDIA_ID}
http请求方式: POST,https协议
https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=TYPE
调用示例(使用curl命令,用FORM表单方式新增一个其他类型的永久素材,curl命令的使用请自行查阅资料
private function uploadimg($url){ $accessToken = getAccess_token();//获取access_token include APP_PATH.'LaneWeChat/lanewechat.php'; //上传永久 $api = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$accessToken&type=image"; $file = realpath('.'.$url); $data['media'] = Curl::addFile($file); $ret = Curl::callWebServer($api,$data,'post',true,false); // $this->ajaxReturn($ret); // exit; //上传成功 if(isset($ret['media_id'])){ return array('media_id'=>$ret['media_id']); }else{ return '本地图片上传公众平台失败'.json_encode($ret); } }
3.编写图文上传到公众平台方法uploadMediaNews
首先第一步得到news_id,第二步检查数据库中是否存在,第三步foreach遍历数组判断media_id是否为空,上传图片,将获取到的(thumb_media_id,author,title,content_source_url,content,digest,show_cover_pic)数据添加到数据表media_news_list中,引入文件include APP_PATH.'LaneWeChat/lanewechat.php';
$ret = \LaneWeChat\Core\AdvancedBroadcast::uploadNews($data);
判断存在url上传数据(media_id,status_type)到数据表media_news中成功返回上传成功,失败返回json串。
public function uploadMediaNews($news_id){ //得到news_id $where['news_id'] = $news_id; //第二步:查库 $data = M('media_news_list') ->field('id,thumb_media_id,cover')->where("news_id=$news_id")->select(); // print_r($data); // exit; foreach($data as $key =>$value){ //判断media_id为空 if(isset($value['thumb_media_id'])){ //图片上传 $ret = $this->uploadimg($value['cover']); if(is_array($ret)){ M('media_news_list')->where("id = {$value['id']}")->setField('thumb_media_id',$ret['media_id']); }else{ echo $ret; exit; } } } $data = M('media_news_list')->field('thumb_media_id,author,title,content_source_url,content,digest,show_cover_pic')->where($where)->order('id')->select(); // print_r($data); // exit; include APP_PATH.'LaneWeChat/lanewechat.php'; $ret = \LaneWeChat\Core\AdvancedBroadcast::uploadNews($data); // $this->ajaxReturn($ret); // exit; //上传成功 if(isset($ret)){ $arr['media_id'] = $ret['media_id']; $arr['status_type'] = 1; M('media_news')->where($where)->save($arr); echo "上传成功"; }else{ echo '上传失败,'.json_encode($ret); } }