艾逗笔

有梦想爱学习的实力派

武大微淘微信版开发(20140118更新)

艾逗笔's Avatar 2014-01-18 开发笔记

在图书馆待了一天,关于thinkphp在sae上开发的问题捣鼓了半天,下午才开始弄微信版武大微淘,效率比较低,弄了半天才只开发出两个新功能: 1、用户回复“music”或者“音乐”时回复音乐消息(只有“我的歌声里”这一首歌); 2、用户输入逛逛+店铺名,如“逛逛武大郎烧饼”,返回对应店铺的商品信息。第一个功能挺好配置的,直接输出音乐消息模板就行了,附带上音乐文件链接地址就能放歌给用户听了,其中的缺点是音乐消息反应慢,要很久才出声音,这个功能还需要多花点时间配置好。关于第二个功能看起来也挺简单的,首先想到的是利用sql多表联合查询left join on语句根据用户输入的店铺名信息返回对应的店铺所有商品信息,但是实际开发起来却花了不少时间。因为用的是thinkphp,本来想利用它的连贯操作$data->join(meal_menu on shop_id=menu_shop_id)取得所需的数据的,但是不知道为什么总是不能实现这个功能,无奈之下只好用了两次查询,先根据用户发送的店铺名获取对应的店铺id,然后在商品信息表中根据店铺id查询对应的商品信息,该功能还没实现翻页查看,尚待完善。总结一下就是要学好thinkphp基本查询语句和连贯操作。明天有时间要研究一下位置信息的获取及抓取网页,调用百度地图API、新浪天气API等知识。先上今天实现的两个功能的代码。

//自定义函数,回复商品信息
	public function responseMealMenu($fromUsername,$toUsername,$keyword,$time){
			  //实例化店铺“meal_shop”信息表模型
			  $Data1 = M('meal_shop');
			  //根据用户输入条件查询对应店铺
			  $condition1['shop_name']=$keyword;
			  $data1 = $Data1->where($condition1)->find();
			  //实例化商品“meal_menu”信息表模型
              $Data2= M('meal_menu');
			  //联合查询
			  $condition2['menu_shop_id']=$data1['shop_id'];
			  $data2=$Data2->where($condition2)->select();
			  //获取查询记录数
			  $count=$Data2->where($condition2)->count();
			  //图文消息返回总数
			  $showMenu=$count+1;
			  $resultStr="<xml>\n
              <ToUserName><![CDATA[".$fromUsername."]]></ToUserName>\n
              <FromUserName><![CDATA[".$toUsername."]]></FromUserName>\n
              <CreateTime>".$time."</CreateTime>\n
              <MsgType><![CDATA[news]]></MsgType>\n
              <ArticleCount>".$showMenu."</ArticleCount>\n
              <Articles>\n";

              //添加封面图文消息
              $resultStr.="<item>\n
              <Title><![CDATA[".$keyword.$count."]]></Title> \n
              <Description><![CDATA[]]></Description>\n
              <PicUrl><![CDATA[http://weitao.bestwhu.com/webcss/default/images/logo.png]]></PicUrl>\n
              <Url><![CDATA[http://weitao.bestwhu.com/]]></Url>\n
              </item>\n";

              //回复商品信息
			  foreach($data2 as $item){
              $resultStr.="<item>\n
              <Title><![CDATA[【".$item[menu_title]."】\n单价:¥".$item[menu_price]."\n订购电话:".$data1[shop_tel]."\n点击进入网站购买]]></Title> \n
              <Description><![CDATA[]]></Description>\n
              <PicUrl><![CDATA[http://weitao.bestwhu.com/".$item[menu_pic]."]]></PicUrl>\n
              <Url><![CDATA[http://weitao.bestwhu.com/?app_act=shop&id=$data1[shop_id]]]></Url>\n
              </item>\n";
			  }

              $resultStr.="</Articles>\n
              <FuncFlag>0</FuncFlag>\n
              </xml>";

              echo $resultStr;
              exit;
	}
	//自定义函数,回复音乐消息
	public function responseMusic($fromUsername,$toUsername,$time,$musicTpl){
				$msgType="music";
				$resultStr=sprintf($musicTpl,$fromUsername,$toUsername,$time,$msgType,"我的歌声里","曲婉婷","http://weixincourse-weixincourse.stor.sinaapp.com/mysongs.aac","http://weixincourse-weixincourse.stor.sinaapp.com/mysongs.mp3");
				echo $resultStr;
				exit;
	}
本文最后更新于 天前,文中所描述的信息可能已发生改变