基于微信公众平台的社区信息服务模式研究

2016-06-18 02:19王海涛安徽工程大学现代教育技术中心安徽芜湖241000
关键词:微信公众平台

鲍 陈,王海涛,赵 翔,胡 冰(安徽工程大学现代教育技术中心,安徽 芜湖 241000)

基于微信公众平台的社区信息服务模式研究

鲍 陈,王海涛,赵 翔,胡 冰
(安徽工程大学现代教育技术中心,安徽 芜湖 241000)

摘 要:针对传统社区信息服务模式已经不能适应人们随时随地获取资讯的需求,转向移动信息服务技术—微信公众平台应用开发技术,研究了微信公众平台的开发模式和SSH轻量级J2EE框架技术,并结合分层解耦的设计思想,提出一种基于微信公众平台的SSH整合框架W - SSH.基于该整合框架,构建微信公众平台社区移动信息服务平台,实现了Web端服务平台和微信客户端数据交互,为社区用户提供方便、快捷和准确的信息服务.实践表明,该移动信息服务平台,扩展了社区公共服务渠道,优化了信息推送方式,也为类似应用开发提供了一个参考.

关键词:微信公众平台;Spring MVC;JS - SDK;LBS技术;移动信息服务技术

随着移动互联网迅速发展,传统社区信息服务模式已经不能适应人们随时随地获取资讯的需求,社区移动信息服务正在用另一种途径诠释新的社区服务模式.微信是腾讯公司推出的一款移动互联产品,支持语音短信、视频、图片和文字,可以单聊及群聊,还能支持LBS定位和扫描二维码等功能,给用户带来了全方位移动沟通体验[1-4].微信公众平台,是腾讯提供管理微信公众账号的Web平台,以“再小的个体也有自己的品牌”为宣传口号,吸引着众多企业和个人在公众平台上创建并推广自己的品牌[5-8].然而,微信公众平台的编辑模式功能较为单一,已经不能满足社区移动信息服务的需求.构建基于社区移动信息服务的Light APP服务平台的必要性日益凸显.

针对上述情况,本文研究了微信公众平台的开发模式和SSH框架技术,并结合分层解耦的设计思想,提出一种基于微信公众平台的SSH整合框架W -SSH(Wechat public platform+SpringMVC+Spring3 +Hibernate),该整合框架实现了微信公众平台消息接收与响应,利用JSP+JSTL+Bootstrap实现Web页面展示;利用Spring MVC实现模型、视图和控制器的分离;利用Spring框架IoC/ DI,实现业务逻辑组件和DAO组件依赖关系注入;利用Hibernate实现数据层持久化.构建的微信公众平台社区移动信息服务系统实现了Web端和微信客户端数据交互.实践证明,社区公共服务与W - SSH的有效结合,扩展了社区公共服务渠道,优化了信息推送方式,也为类似应用开发提供了一个参考.

1 系统设计

1.1 系统功能设计

社区移动信息服务平台主要是针对社区微信公众号信息服务系统需求,以微信做为社区信息服务平台客户端,利用微信公众平台SSH集成框架W -SSH,设计并实现微信公众平台的社区信息服务平台.该系统实现了社区用户通过微信关注特定微信公众账号,获取相关微信公众号所提供的各种咨询信息.系统主要功能模块包括:①用户分组信息管理;②快递取件模板消息推送;③微网站可视化文章发布;④基于JS - SDK的隐患发现管理;⑤LBS的附近酒店、美食查询服务、天气查询.

1.2 W - SSH整合架构

本系统采用MVC设计模式和J2EE分层解耦的设计思想,将微信公众平台社区移动信息服务系统分成表示层、控制层、业务逻辑层和持久层.通过接入微信公众平台,结合SpringMVC+Spring3+Hibernate,提出一种整合架构W - SSH(如图1所示),实现了Web端服务平台和微信客户端数据交互.

图1 W - SSH整合框架Fig.1 W - SSH composite framework

1.2.1 微信公众平台与Spring MVC整合

微信公众平台与Spring MVC整合,首先对接微信公众服务器,请求流程如下[9-10]:①在Java中,处理HTTP GET请求中,获取signature、timestamp、nonce和echostr4个参数;②对token、timestamp和nonce 3个参数,使用java.util.Arrays类的sort()方法,排序后的结果拼接成一个字符串content,使用String类的concat()方法;③对拼接后的字符串content进行sha1加密后的结果byte数组转换为字符串;④将sha1加密后的字符串与参数signature进行对比,如果相等则证明该请求来自微信服务器,需要原样返回参数echostr.

其次,在基于Spring MVC的J2EE的Web框架,自定义Controller完成用户与微信公众平台服务器的GET/ POST请求,代码如下:

以上描述了搭建微信公众平台之Spring MVC开发环境,实现了一个完整的请求校验流程.

1.2.2 Spring MVC与Spring整合

用户通过客户端浏览器发出请求,服务器解析web.xml,将用户请求发送给前端控制器DispatcherServlet;通过community - servlet.xml文件来进行MVC的配置,DispatcherServlet前端控制器处理JSP页面的请求和响应,使用HandlerMapping查找对应的Controller处理器(控制器的请求处理符合REST风格),实现控制分派;Controller类获取请求参数,通过Spring容器的applicationContext.xml文件,调用业务逻辑对象和数据访问类DAO,实现对数据库的CRUD操作;Controller将模型和视图交给ViewResolver和View;通过ViewResolver定位JSP视图进行解析处理;最后通过视图解析调用JSTL标签库将HTTP响应返回给客户端浏览器.J2EE分层框架,每一层功能和职责定义清晰,提高开发速度,提高系统可复用性和可扩展性[11].

Spring MVC框架进行MVC的配置,需要创建community - servlet.xml文件,其中开启注解的方式,清单如下所示:

1.2.3 Spring与Hibernate整合

Spring和Hibernate整合主要由Spring ORM模块提供实现对Hibernate的集成[12].Spring的应用上下文中,完成Apache的DBCP连接池dataSource的配置;完成基于Annotation的sessionFactory的初始化,将数据源的dataSource实例注入;Spring提供hibernateTemplate模板类对实体数据的CRUD操作.

2 系统实现

微信公众平台社区移动信息服务系统的实现基于W - SSH框架,采用Tomcat6.0作为Web容器,数据库服务器采用MySQL5.0,开发工具使用MyE-clipse8.5.基于微信公众平台接口,整合SSH框架技术,开发一款名为“捷慧社区”的服务号和Web端后台微信管理网站系统.

2.1 系统功能实现效果

Web端后台微信管理平台,WEB端页面展示,利用JSP+JSTL+Bootstrap实现,登录后主界面如图2所示,主要实现了用户分组管理,模板消息(快递消息)推送,基于jQuery Mobile的微网站文章发布管理,LBS信息服务.微信端主界面如图3所示,微信端图4为快递取件,图5为用户绑定界面,图6为隐患发现界面,图7为LBS附近酒店界面,图8为LBS附件美食和天气预报界面.

2.2 用户分组信息管理

Web端后台管理系统,实现对关注公众号的用户,实行实名制绑定公众号,目的是为了对关注用户实现按照楼层进行分组,这样便于Web后台管理员方便快捷找到用户,向用户推送模板消息(如本文示例快递取件模板消息).用户关注公众账号后,公众账号服务器获取到用户的OpenID,通过调用获取用户基本信息微信公众平台接口,结合基于jQueryMobile技术的用户绑定页面(如图5所示)完成用户分组信息绑定,将用户信息注册到数据库表中.

2.2.1 数据访问层设计

新建持久化PO类HomeUserInfo,该类属性,分别对应w_homeuserinfo表的字段.接着,通过Spring定义数据源,配置和管理SessionFactory,创建IHomeUserDao接口,该接口定义了方法,分别用于添加用户、查找用户和用户分页操作,并创建HomeUser-Dao类,该类用来实现IHomeUserDao接口,在该类中添加相应方法.使用注解方式,@ Repository(“home UserDao”)配置DAO组件.

图2 后台微信管理界面图Fig.2 Background of Wechat management interface diagram

图3 微信端主界面Fig.3 The main interface of Wechat

图4 快递取件模板通知Fig.4 Template message of express

图5 用户绑定界面Fig.5 User binding

2.2.2 业务逻辑层设计

新建业务逻辑组件接口,在系统中使用@ Service(“homeuserService”)标注业务逻辑类,实现用户分组管理业务逻辑,使用@ Resource注解引入数据访问接口实现类IHomeUserDao,通过IHomeUserDao调用DAO层HomeUserDao操作数据库,并提供事务管理,其实现代码如下所示:

图6 发现隐患界面Fig.6 Finding hidden

图7 附近酒店Fig.7 Nearby hotel

图8 附近美食和天气预报Fig.8 Nearby food and weather forecast

2.2.3 用户分组控制器

业务控制器BindingController接受用户绑定页面传递的参数,并将接受的参数设置到HomeUserInfo实例中,然后调用业务逻辑组件homeUserService来保存该用户,代码如下所示:

显示所有用户分组信息列表,其具体代码如下所示:

在JSP页面中,用户选中列表页面的复选框checkbox,代码如下:

获取选中用户的openId数组和选择分组groupId,向服务器发送异步请求,请求updateMember-Group,调用微信更新分组接口.发送异步请求代码如下:

由于篇幅原因,创建、更新和修改分组,不再赘述了.用户分组管理中,实现对特定分组用户推送模板消息,实现效果如图4所示.模板消息增加了公众号的业务通知能力,公众号能够及时向用户推送业务通知,如快递通知消息.根据微信公众平台开发者文档中,对模板消息接口POST数据示例要求,构建模板参数TemplateParam类和模版消息对象TemplateData类,使用JSONObject的fromObject()静态方法将java对象转换为JSON数据,最后开发者发起Https POST请求,到requestUrl接口地址上,关键部件,代码如下所示:

2.3 基于微信JS - SDK的隐患发现管理

2.3.1 微信JS - SDK页面设置

微信JS - SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包.通过使用微信JS - SDK,网页开发者可借助微信高效地使用拍照、选图和上传图片等功能.首先绑定JS接口安全域名,拿到access_token采用Http GET请求获得jsapi_ticket,https:/ / api.weixin.qq.com/ cgi - bin/ ticket/ getticket? access_token = ACESS_TOKEN&type = jsapi,获得jsapi_ticket之后,进行JSSDK权限验证签名,参与签名的字段包括noncestr、jsapi_ticket、timestamp和url,对所有待签名参数按照字段名的ASCII码从小到大排序(字典序),使用URL键值对格式拼接成字符串string1.对string1作sha1加密,得到signature.jQuery-Mobile页面如图6所示,引入JS文件http:/ / res.wx.qq.com/ open/ js/ jweixin - 1.0.0.js,通过config接口注入权限验证配置,在ready接口里处理拍照或从手机相册中选图,上传图片等功能,代码如下:

wx.ready(function(){

2.3.2 上传下载多媒体文件

通过上述JS - SDK多媒体文件上传,用户可以方便的将自己的图片等多媒体文件上传到微信服务器上,上传成功后返回对应的media_id,它是多媒体文件在微信服务器上的唯一标识.但是微信服务器对应media_id,只能存储3天,3天后多媒体文件会被删除.本文为了实现Web端后台微信管理网站与微信用户的互动交流,使用公众平台提供的API接口,调用Http GET请求,获取多媒体文件下载到Web服务器端.并通过service接口findHiddenService,将用户上传的隐患发现信息数据,保存到数据库w_findhidden表中,代码如下:

最后,通过调用百度地图API接口,获取POI数据附近酒店信息,实现基于JSON数据转换与显示的LBS[13]附近酒店、美食和天气预报功能模块,由于篇幅的原因,不再赘述.

3 结束语

本文针对传统社区信息服务模式已经不能适应人们随时随地获取资讯的需求,采用移动信息服务开发技术—微信公众平台应用开发技术,并结合目前主流的基于J2EE的SSH轻量级开源框架技术,提出了整合框架W - SSH,该框架通过对接微信公众平台接口,结合SSH轻量级J2EE架构,利用JSP+JSTL+Bootstrap实现Web页面展示;利用Spring MVC实现模型、视图和控制器的分离;利用Spring框架IoC/ DI,实现业务逻辑组件和DAO依赖关系注入;利用Hibernate实现数据层持久化.基于该整合框架,构建微信公众平台社区移动信息服务平台,实现了Web端服务平台和微信客户端数据交互,让社区用户基于移动终端能够及时享受到社区信息服务,社区管理人员可以实时、精准、个性化的为社区用户提供信息服务[14-15].实践表明,该移动信息服务平台,扩展了社区公共服务的渠道,优化了信息推送方式,也为类似应用开发提供一个有意义的参考.

参考文献

[1]张蓓,窦天芳,张成昱,等.开发模式下图书馆微信公众平台服务的

设计与实现[J].现代图书情报技术,2014,30(1):87 -89.

[2]江波,覃燕梅.基于微信的移动图书馆APP服务系统设计与实现[J].现代情报,2013,33(6): 55 -57.

[3]宁建红.基于微信公众平台的O2O模式应用程序研究.上海电机学院学报,2014,17(6):352 -356,361.

[4]胡灏,卢海峰.基于微信公众平台的医院预约挂号系统研究[J].吉林工程技术师范学院学报,2014,30(12): 94 -96.

[5]肖富春.基于微信的中小企业CRM系统设计与实现[D].济南:山东大学,2014:7 -10.

[6]詹红鑫.基于微信公众平台的航运信息推送技术研究与应用[D].大连:大连海事大学,2014,7 -14.

[7]甘荣石.基于微信平台的移动银行应用架构研究[D].广州:华南理工大学,2013:27 -35.

[8]黎邦群.基于微信公众平台的图书借还提醒服务[J].惠州学院学报:自然科学版,2014,34(6): 64 -69.

[9]曹小平,程静.基于微信自助查询系统的设计与实现[J].重庆工商大学学报:自然科学版,2014,31(2):66 -69.

[10]程思岳.微信公众平台:网络教育平台的延伸服务[J].福建师范大学学报:自然科学版,2015,31(4):54 -62.

[11]薛峰,梁峰,徐书勋,等.基于Spring MVC框架的Web研究与应用[J].合肥工业大学学报:自然科学版,2012,35(3):337 -340.

[12]赵晓君,崔建涛,邓璐娟.基于SSH2和jQuery的大学生校园综合服务平台的设计与实现[J].郑州轻工业学院学报:自然科学版,2014,29(3):100 -104.

[13]俞成海,曾焕凯,宋瑾钰.基于LBS技术的旅游信息服务系统的设计和实现[J].浙江理工大学学报,2013,30(2):228 -231.

[14]王磊.农产品价格采集、预测及微信发布系统的设计与实现[J].湘潭大学:自然科学学报,2015,37(2):121 -126.

[15]孙萍.基于微信平台的“大学生数字艺术基础”课程实践[J].浙江树人大学学报,2014,14(4):56 -60.

(责任编辑:张阳,付强,李建忠,罗敏;英文编辑:周序林)

Research of community information service model Based on Wechat public platform

BAO Chen,WANG Hai-tao,ZHAO Xiang,HU Bing
(Modern Educational Technology Center,Anhui Polytechnic University,Wuhu 241000,P.R.C.)

Abstract:The traditional community information service model is unable to meet the needs of users’access at any time and anywhere.This paper focuses on mobile information service technology(Wechat public platform application development technology)and studies the development model of Wechat public platform and SSH framework technology of J2EE lightweight framework.With the design idea of layered decoupling,a kind of composite framework W - SSH based on Wechat public platform and SSH framework is proposed.This framework constructs Wechat public platform community mobile information service platform,realizes data exchange between web service platform and Wechat client,and also provides convenient,fast and accurate information service.The result shows that the platform extends community public service channel,optimizes information push mode,and also provides a reference for similar application development.

Key words:Wechat public platform;Spring MVC;JS - SDK;LBS technology;mobile information service technology

中图分类号:TP311.52;G252

文献标志码:A

文章编号:2095-4271(2016)02-0192-08

doi:10.11920/ xnmdzk.2016.02.012

收稿日期:2015-10-28

作者简介:鲍陈(1983 - ),男,汉族,安徽芜湖人,助理工程师,研究方向:软件工程.E-mail:ahwhbc@126.com.

基金项目:安徽省自然科学基金资助项目(1508085ME70);安徽省高等教育提升计划项目(TSKJ2014B09);安徽省高校省级自然科学研究项目(KJ2012B022)

猜你喜欢
微信公众平台
基于微信的大学生微型学习平台的设计与实现
基于微信公众平台的碎片化学习研究
媒体融合背景下出版社微信公众平台发展研究
微信公众平台在高校图书馆信息服务中的应用研究