微信開發——同步粉絲、群發訊息

qq_41478331發表於2018-04-26

同步粉絲  

首先我們先建立一個粉絲的控制器,在控制器去寫一個方法,注意要與前臺頁面連線起來,程式碼如下:

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下寫程式碼,一定要注意其路徑。

相關文章