APP下载

基于微信的图书转借系统的设计与实现
——以浙江工业大学图书馆为例

2019-04-25佘静涛浙江工业大学图书馆

图书馆理论与实践 2019年3期
关键词:浏览器二维码公众

佘静涛(浙江工业大学图书馆)

1 引言

基于微信的图书转借服务就是:当一个读者不想去图书馆还书且另一个读者刚好想看这本书时,借出方利用转借功能将图书信息生成二维码, 借入方打开微信端扫一扫即可借走此书。[1]通过这种借阅方式,不仅使得读者大为方便,同时也减轻了图书馆馆员的工作压力,极大地提高了图书的利用率。

目前,基于微信的图书转借系统已经进入实践领域。2015年,图创软件自主研发了国内第一套图书转借系统,该系统整合图书馆的业务系统,内嵌图书馆微信公众号、门户和App,海南大学、云南大学都是该系统的用户;[2]2016年5月,“浙江图书馆图书转借服务——随时随地借书体验”推出。[3]从图书转借系统的研究成果来看,陈靖认为图书转借服务这种新型图书借阅制度的优势在于:节约读者的时间、解决读者的不便、促进读者之间知识共享、促进传统图书馆业务优化升级;[4]李保红对图书馆转借系统产生的背景、如何应用以及所产生的功能效益进行了描述;[1]豆洪青等认为转借服务是传统图书馆借阅服务线上线下融合的体现。[5]但是针对微信公众平台的图书转借系统设计与实现的相关研究几乎没有。

2 基于微信的图书转借系统的设计

本研究以浙江工业大学图书馆为实践对象,利用其现有的图书信息管理系统,充分考虑读者对图书转借服务的需求,设计基于微信的图书转借系统。

2.1 系统功能模块

浙江工业大学图书馆基于微信的图书转借系统经过前期大量的调研与准备工作,实现的主要功能模块如下。① 系统登录及验证模块。验证读者身份,该模块用以确保读者账号的合法性。② 读者借阅信息模块。读者可以在微信客户端上通过点击菜单或者输入关键字,获取自己的图书借阅信息,并通过链接直接跳转到图书的发布转借和转借他人的页面,也可以使用浏览器登录图书转借系统进行相关操作。③ 已发布的图书转借信息查看模块。读者可以查看其他读者已发布的图书转借信息,可以使用题名和责任者作为检索词对已发布的图书进行检索,同时支持语音录入检索词。④ 图书转借信息发布模块。读者可以将自己借阅的图书信息进行发布,发布时需要提供电话、QQ号或者微信号以便其他读者联系。⑤ 图书转借二维码生成模块。图书借出人在面对面转借时,将自己的账号、图书的馆藏号等信息生成二维码供借入人扫码。⑥ 微信扫二维码借书模块。图书借入人在当面转借时,使用微信扫码功能识别二维码并借入图书,转借结果语音提示。⑦ 图书借阅规则模块。保证图书转借系统的借阅规则与图书馆借阅规章制度一致,保障图书使用的公平性。

2.2 系统设计思路

微信公众平台提供了强大的消息API接口和微信JS-SDK网页开发工具包。使用消息API接口,开发者可以通过微信公众平台获取微信客户端发送的文字、图片、音频和视频消息,根据不同消息的响应函数将处理过的数据反馈给微信客户端。使用 JS-SDK网页开发工具包,开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等功能为用户提供更优质的网页体验。[6]浙江工业大学图书馆基于微信的图书转借系统不仅需要使用微信客户端发送、接收消息,而且需要使用微信的录音、语音识别、扫一扫等诸多功能。因此,本研究确立了利用微信公众平台的消息API和JS-SDK网页开发工具包实现图书转借系统的技术路线。

经过分析图书转借系统的功能需求以及确定了系统的技术路线后,本文制定了系统的架构(见图1),明确了系统的设计思路。

图1 图书转借系统架构

图书转借系统部署在微信服务平台服务器上,通过微信服务器和图书馆信息管理系统进行通信,系统不仅能实现对微信公众平台消息API接口和JS-SDK网页开发工具包的调用,同时也可实现对图书馆信息管理系统接口的调用。

系统采用MVC三层架构,即模型(Model)、视图(View)、控制器(Controller)。核心部分的设计思路如下。

(1)系统调用微信公众平台的JS-SDK网页开发工具包和百度的智能语音合成、人脸识别接口,实现系统的图书转借扫码、语音检索、语音提示和用户绑定等功能。调用Google Zxing 2.0开源类库,[7]实现图书转借二维码的生成功能。

(2)系统需要调用的图书馆信息管理系统相关接口主要有三个。① 读者借阅信息接口。通过该接口,开发者可以获取读者借阅图书的信息,包括书的题名、ISBN号、出版社、馆藏号、借阅时间、应归还时间等。② 读者信息接口。通过该接口,开发者可以获取读者信息,包括读者的学工号、联系方式、姓名、照片等。③ 图书转借服务接口。通过该接口,开发者提供对应参数实现图书的转借服务。接口需要判断图书能否被转借,保证图书转借系统的借阅规则与图书馆借阅规则一致,并返回出错信息。

(3)图书转借系统需要与图书馆信息管理系统数据保持同步,同步的数据包括读者信息和图书的借阅信息。其中,读者信息用以保证图书借出人和借入人的账号合法权限,借阅信息用以保证已发布的图书转借信息的时效性。

(4)图书转借系统需要将图书馆账号与微信公众号的OpenID(每个用户对每个公众号有一个唯一的OpenID)关联起来,并将关联信息存入数据库,以避免在使用图书转借系统时反复输入图书馆账号。

(5)读者使用微信客户端与系统交互,系统首先调用微信公众平台的接收消息接口接收读者消息,消息中包含了读者的OpenID和关键词等信息,然后系统根据关键词调用响应函数,由响应函数处理读者的请求,最后系统调用微信公众平台的发送消息接口,将处理好的数据返回给读者。

(6)读者可以使用微信浏览器或者普通浏览器登陆图书转借系统,系统根据浏览器自带的User Agent字符串,判断读者使用的浏览器类型。如果是微信浏览器,系统会自动使用微信网页授权[8]的方式判断用户身份后登录系统;如果是普通浏览器,则需要读者输入账号和密码登录系统。与微信浏览器相比,普通浏览器无法调用手机系统的大部分能力。

(7)系统将图书的信息、当前借阅人的信息以及提供转借服务的程序地址等信息置于二维码中,借入人可以通过使用微信扫一扫功能实现转借。

(8)为保障图书使用的公平性,系统数据库保存读者的转借(借出)记录,保证一年之内同一读者对同一图书的转借(借出)次数不超过2次。

3 基于微信的图书转借系统的实现

浙江工业大学图书馆图书转借系统在充分考虑了服务器操作系统兼容性问题的基础上,利用微信公众平台的消息API接口、JS-SDK网页开发工具包和Google Zxing 2.0开源类库,调用百度的智能语音合成、人脸识别等接口,使用Java编程语言和Hibernate数据库框架开发图书转借系统,系统的数据库采用MySQL关系型数据库,Web页面使用HTML5和AJAX技术。

3.1 系统实现

根据系统功能需求和系统设计思路,系统的数据模型由JSP文件实现,主要负责读写数据库,为系统提供数据源。系统的视图使用HTML5及jQuery技术实现,主要负责数据的呈现以及与用户的交互。控制器由一个采用AJAX技术的JS文件实现,主要负责系统的逻辑处理。系统的工作流程如图2所示。

图2 图书转借系统工作流程图

用户将图书馆账号与微信公众号的OpenID绑定后,可以使用微信浏览器或者普通浏览器登录图书转借系统。系统支持用户绑定、发布图书转借信息、查看读者借阅信息、查找已发布的图书、将图书转借他人以及使用微信扫码借书等。其中,用户绑定、生成图书转借二维码和微信扫码借书功能是系统实现的重点和难点。

(1)用户绑定功能。为了确保转借图书由本人操作,用户绑定的时候不仅需要验证用户图书馆账户的合法性,同时需要对用户进行人脸识别,因此在绑定的过程中引入了百度的人脸识别技术,具体的实现过程如下。① 系统的数据库中建立一个图书馆账号与微信公众号OpenID的映射表“binduser”以保存微信公众号绑定用户的信息(见表1)。② 编写实现用户绑定的数据模型userBind.jsp,程序的流程见图3。③编写用户绑定信息的同步程序,同步程序是一个在系统启动时就执行的多线程程序,每隔2小时执行一次,负责将用户绑定映射表信息与图书馆信息管理系统中的用户信息进行同步。

表1 用户绑定映射表“binduser”

图3 绑定程序流程图

(2)生成图书转借二维码。系统调用Google Zxing 2.0开源类库实现生成图书转借二维码的功能,实现的核心代码如下。

/*“encode”函数生成带Logo和书名的图书转借二维码,参数“text”包括转借服务程序地址、借出人的信息和图书的信息,“logopath”是Logo图片的地址,“title”是图书的题名,“width”和“height”是生成二维码图片的宽和高,“response”是个数据流对象,负责在浏览器上显示二维码*/

public static boolean encode (String text,String logopath,String title,int width,int height,HttpServletResponse response) {

try{…

BufferedImage image=new BufferedImage (width, height,BufferedImage.TYPE_INT_RGB);

Hashtable hints=new Hashtable();//用于配置矩阵参数

hints.put(EncodeHintType.CHARACTER_SET,"utf-8");//设置二维码内容所使用编码

hints.put(EncodeHintType.ERROR_CORRECTION,ErrorCorrectionLevel.M);//设置二维码容错级别

BitMatrix bitMatrix=new MultiFormatWriter().encode (text,BarcodeFormat.QR_CODE,width,height,hints);//生成二维码矩阵

image=toBufferedImage(bitMatrix); //?toBuffered-Image函数利用矩阵数据创建图片Graphics2Dgs=image.createGraphics() ;

Imageimg=ImageIO.read(newFile(logpath)) ;

gs.drawImage(img,78,78,40,40,null);//将 logo 图片绘制在二维码图片中

Colorco=newColor(195,195,195) ;

Fontfo=newFont("宋体 ",Font.PLAIN,12) ;

gs.setColor(co) ;

gs.setFont(fo) ;

if(getStringLenth (title) >=9) {

gs.drawString(title.substring(0,putStringLenth(8,title))+"...",38.0F,177.0F);}//将图书题名绘制在二维码中

else{gs.drawString(title,38+((12-getStringLenth(title)) /2*10) ,177.0F) ;}

gs.dispose() ;

img.flush() ;

ImageIO.write(image,"png",response.getOutputStream());returntrue;//将图片数据写入到数据输出流对象}catch (Exceptione) {…}}

(3)微信扫码借书。① 系统的数据库中建立一个记录读者图书转借记录的表“exchangebooklog”,通过该表实现一年之内同一读者对同一图书的转借(借出)次数不能超过2次的图书转借规则,避免图书转借过程中产生的纠纷,表结构见表2。② 系统通过调用微信公众平台的JS-SDK网页开发工具包使用微信扫一扫的功能,该功能使系统能够获取图书转借二维码中包含的转借服务程序地址、借出人的信息和图书的信息并直接跳转到该地址。③ 转借服务程序利用微信网页授权机制获取扫码人的OpenID,根据OpenID在用户绑定映射表中得到扫码人图书馆账号信息。利用二维码中包含的信息,调用图书馆信息管理系统的转借服务接口,完成图书转借服务。完成图书转借服务后系统需要更新数据库中已发布图书的相关信息。④ 编写已发布的图书转借信息的同步程序,同步程序是一个在系统启动时就执行的多线程程序,程序每隔2小时执行一次,负责将已经通过其他途径归还的图书信息从图书转借系统数据库中删除,以保证发布的图书转借信息的时效性。

表2 读者图书转借记录表“exchangebooklog”

3.2 系统测试

经过检测,图书转借系统的运行结果符合浙江工业大学图书馆规章制度中有关图书借阅的相关规定,具体的测试结果见表3。

表3 图书转借系统测试结果

本文介绍了浙江工业大学图书馆图书转借系统,旨在利用移动通信的便利性为读者提供一种新的借阅服务模式,同时也希望与其他高校图书馆分享图书转借系统的设计与实现方法,让更多高校图书馆利用微信公众平台,搭建自己的图书转借系统。

猜你喜欢

浏览器二维码公众
公众号3月热榜
二维码
小康二维码
公众号9月热榜
公众号8月热榜
公众号5月热榜
微软发布新Edge浏览器预览版下载换装Chrome内核
反浏览器指纹追踪
二维码让政务公开更直接
二维码,别想一扫了之