Python开发入门与实战22-简单消息回复
2015-11-13 09:34
716 查看
22. 简单消息回复
本章节我们来实现一个微信库存查询功能,使用我们前面的BIZ业务逻辑层示例如何利用微信入口来实现文本消息类的库存查询服务。22.1. 在responseMsg函数里增加处理微信文本推送的处理逻辑
def responseMsg(postContent): postStr = smart_str(postContent) #postStr = postContent if postStr: msg = xmlContent2Dic(postStr) if msg['MsgType']: if msg['MsgType'] == 'event': resultStr = handleEvent(msg) #处理事件类型推送 elif msg['MsgType'] == 'text': resultStr =handleText(msg) #处理文本类型推送 else: resultStr = 'Input something...' return resultStr
22.2. 增加handleText函数,处理微信推送的文本信息逻辑
def handleText(msg): resultStr="<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>" if msg['Content'] == '1': resultStr = resultStr % (msg['FromUserName'],msg['ToUserName'],str(int(time.time())),'text',u'请输入查询物料名称,格式“K螺母”。') elif string.upper(msg['Content'][0])=='K': itemName = msg['Content'][1:len( msg['Content'])] strs = '' biz = InventoryBiz() inventorys = biz.getInventoryByItemName(itemName) for inventory in inventorys: strs = strs + inventory.Item.ItemName + u' 库存数量:' + str( inventory.Amount) + '\n' if strs == '': strs = u'当前物料:"'+ itemName +u'"未查询到库存数据' resultStr = resultStr % (msg['FromUserName'],msg['ToUserName'],str(int(time.time())),'text',strs) else: resultStr = resultStr % (msg['FromUserName'],msg['ToUserName'],str(int(time.time())),'text',u'感谢您关注【微人人公众号】\n目前功能如下:【1】 库存查询;') return resultStr
注意:我们仍然是通过业务逻辑层的查询函数调用来获得库存信息,然后返回给“微信”的查询用户。代码只是调用了BIZ层接口,作为“微信”接口的开发人员不需要再考虑业务逻辑层具体的的逻辑实现。这样我们也可以把“微信”看做MVC里view的一种展现模式。
代码更新到云,我们就可以在微信端进行库存查询了。如下图:
22.3. 小结
本章节我们演示了库存查询是如何快速扩展到支持微信查询的,由于业务逻辑层的代码是共用的,也就意味着真正的库存查询的业务逻辑对于微信接口的开发人员来说就是一个黑盒,开发人员只管调用biz层接口就可以完成功能从网页查询到微信查询的扩展。进一步如果开发团队内部定义了自己的信息封装格式,微信端的库存查询与extjs网页端库存查询就可以统一调用一个服务接口。比如:前面我们发布的getInventoryByItemName服务,期返回json数据格式。这样客户端开发人员都可以不用知道服务端是如何实现的,只管调用服务即可。这样的编程模式就可以实现界面展示层与服务层开发的完全分离,进一步降低系统的耦合。统一的服务层来实现不同终端访问结果的一致性,提高系统的整体开发效率。
相关文章推荐
- win8 sublime3 配置python 开发环境
- python---__getattr__\__setattr_重载'.'操作
- virtualenv -- python虚拟沙盒
- Python学习笔记(一)--- Matplotlib
- python 字典
- Python学习笔记(3)
- python搜索引擎之搜索系统的建立——根据关键字命中次数排分给出前若干个答案
- python开发之文件操作用法实例
- python编程开发之类型转换convert实例分析
- python编程开发之日期操作实例分析
- Python编程入门之Hello World的三种实现方式
- Python的Flask框架的简介和安装方法
- Python下的常用下载安装工具pip的安装方法
- 深入解析Python中的urllib2模块
- Python设置Socket代理及实现远程摄像头控制的例子
- 使用Python下载歌词并嵌入歌曲文件中的实现代码
- Python的pycurl包用法简介
- 简单了解Python下用于监视文件系统的pyinotify包
- Python下rrdtool模块的基本使用方法
- 浅析Python中signal包的使用