同步粉丝
首先我们先创建一个粉丝的控制器,在控制器去写一个方法,注意要与前台页面连接起来,代码如下:
public function sycfriends(){
$mp = $this->mp;
$where['mp_id'] = $mp['id'];
M('weixin_mp_friends')->where($where)->delete();
include APP_PATH . 'LaneWeChat/lanewechat.php';
$ret = UserManage::getFansList();
// print_r($ret);
// exit;
$openids = $ret['data']['openid'];
// var_dump($openids);
// exit;
$arr = array();
foreach ($openids as $value) {
$row = array();
$row['openid'] = $value;
$row['lang'] = 'zh-CN';
$arr[] = $row;
// print_r($arr);
// exit;
}
$ret = UserManage::getManyUserInfo($arr);
// print_r($ret);
// exit;
if(isset($ret['user_info_list'])){
$data = $ret['user_info_list'];
foreach ($data as &$value) {
$value['mp_id'] = $mp['id'];
$value['tagid_list'] = json_encode($value['tagid_list']);
}
M('weixin_mp_friends')->addAll($data);
}
$this->success('同步完成',U('index'));
}
再一个要注意的是我们在写代码的时候一定输出,看是否有值,以便查找错误。
在我们获取粉丝的基础上,我们将我们获取的粉丝同步到我们的前台页面,如何在后台将数据传给前台页面,同样,我们在后台页面创建一个专有的方法,代码如下:
public function index($tagid=""){
$mp = $this->mp;
$where['mp_id'] = $mp['id'];
if (!empty($tagid)) {
$where['tagid_list'] = array('like',"%{$tagid}%");
}
$data=M('weixin_mp_friends')->where($where)->distinct('openid')->order()->select();
$tag = M('weixin_tags')->where($where)->select();
$this->assign('tag',$tag);
$this->assign('data',$data);
$this->display();
}
注意:数据库的创建以及数据库里面所需要的字段。
群发消息
群发消息首先我们先写一个upload方法,来上传图片,代码之前写过。
public function upload(){
$upload=new \Think\Upload();//实例化上传类
$upload->maxSize =3145728;//设置上传附件大小
$upload->exts=array('jpg','gif','png','jpeg');//设置附件上传类型
$upload->rootPath='./Uploads/';//设置附件上传跟目录
$upload->savePath='';//设置附件上传(子)目录
$info=$upload->uploadOne($_FILES['file']);
if(!$info){
//上传错误提示错误信息
$this->ajaxReturn(array('code'=>1,'msg'=>$upload->getError()));
}else{
//上传成功
$file='/Uploads/'.$info['savepath'].$info['savename'];
$this->ajaxReturn(array('code'=>0,'msg'=>'上传成功','url'=>$file));
}
}
可以将选中的图片显示到页面之后,我们就开始将其写入到数据库中,注意数据表自己创建,注意里面的各个字段
public function newslist(){
$arr=M('media_news')->select();
$data=array();
foreach ($arr as $value) {
$news_id=$value['news_id'];
$ret=M('media_news_list')->where("news_id='$news_id'")->select();
$value['list']=$ret;
$data[]=$value;
// print_r($data);
// exit;
}
$this->assign('data',$data);
$this->display();
}
public function addnewsSubmit(){
$mp=getCurrentMp();
$mp_id=$mp['id'];
$data=I('post.');
// print_r($data);
// exit;
$data=$data['data'];
$arr=array();
foreach ($data as $key=>$value) {
$value['qunfa_time']=time();
$value['mp_id']=$mp_id;
$value['create_time']=time();
$arr[]=$value;
if ($key==0) {
$news_id=M('media_news')->addAll($arr);
}
}
$ret=array();
foreach ($data as $value) {
$value['news_id']=$news_id;
$ret[]=$value;
}
$ret=M('media_news_list')->addAll($ret);
if($ret){
$this->ajaxReturn(array('msg'=>'添加成功'));
}else{
$this->ajaxReturn(array('msg'=>'添加失败'));
}
}
private function uploadimg($url){
$accessToken = getAccess_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);
// dump($file);
// exit;
$data['media'] =Curl::addFile($file);
$ret = Curl::callWebServer($api,$data,'post',true,false);
// 上传成功
if (isset($ret['media_id'])) {
return array('media_id'=>$ret['media_id']);
}else{
return '本地图片上传公众平台失败' . json_encode($ret);
}
}
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 (empty($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);
if (isset($ret['media_id'])) {
$arr['media_id']=$ret['media_id'];
$arr['status_type'] = 1;
M('media_news')->where($where)->save($arr);
echo "上传成功";
}else{
echo "上传失败" . json_encode($ret);
}
}
如果上传不成功,或者图片显示不出来,将输出代码解开,然后进行调试,并结合F12。
如在Linux下写代码,一定要注意其路径。