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);
}
}