微信开发——同步粉丝、群发消息

同步粉丝  

首先我们先创建一个粉丝的控制器,在控制器去写一个方法,注意要与前台页面连接起来,代码如下:

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下写代码,一定要注意其路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值