基于微信扫码技术的图书荐购系统的设计与实现

2017-01-16 02:26豆志磊
现代情报 2016年12期
关键词:扫码菜单图书

豆志磊

〔摘 要〕读者荐购是读者参与图书馆文献资源建设的重要方式,移动互联时代的到来为图书馆读者荐购提供了新的机遇。本文通过分享漯河职业技术学院图书馆开发的基于微信扫码技术的图书建构系统的设计思路和实现方法,希望能够为兄弟院校图书馆开发同类系统提供借鉴和参考,共同推进移动互联时代图书馆文献资源建设方式方法的创新与发展。

〔关键词〕图书馆;微信;扫码技术;图书荐购;系统设计 〔中图分类号〕G250.71 〔文献标识码〕A 〔文章编号〕1008-0821(2016)12-0095-04

〔Abstract〕Reader recommendation is an important way for readers to participate in the construction of library resources,the mobile Internet era provides new opportunities for librarys reader recommendation.In this paper,by sharing LuoHe Vocational Technology College librarys design and implementation of book recommendation system,which based on WeChat scan-code technology,provided reference for other colleges and universities library to develop the similar system,in order to jointly promote the innovation and development of library literature resources constructions mode in the mobile Internet Era method.

〔Key words〕library;WeChat;book recommendation system;scan-code technology;the design of the system

随着移动技术的发展,手机、pad等移动客户端已经超越pc成为互联网的第一大网络接入客户端[1],移动互联网时代已经悄然到来。微信产生以来凭借其强大的群发分享功能、多样化的多媒体交互、低廉的信息传输费用以及开放式的信息服务方式,深受广大移动用户的欢迎,经过短短5年的发展已迅速成为最大的中文网络社交平台[2]。在高校中,微信具有更广泛的用户群体和更高的用户使用黏合度。笔者通过现场调研的方式对河南地区的高校在校学生进行了抽样调查,调查结果显示:99%的在线大学生手机装有微信客户端,97%的调查对象经常使用微信,而93%的用户将微信作为最主要的网络交流平台。微信的普及为图书馆业务的宣传以及相关服务的创新提供了新的机遇,图书馆如何利用微信为广大在校师生服务也成为了近年来图书馆学界研究的热点,相关研究成果呈现逐年上升趋势增长[3]。

文献资源建设是图书馆的核心业务之一,随着图书馆办馆理念由“收藏”——“借阅”——“服务”的逐渐变化,图书馆文献资源建设的方式和方法也在发生着转变,越来越多的图书馆开始注重用户的个性化需求与针对性服务,让用户参与到图书馆的文献资源建设中已成为当代高校图书馆的共识[4]。读者荐购是读者参与图书馆文献资源建设的重要方式之一,在移动移动互联时代如何让用户随时随地的通过移动客户端图书馆荐购图书参与图书馆文献建设是图书馆采编工作人员应该考虑的问题。

作为一名图书馆的从业人员,笔者认为微信能够为移动客户端读者进行图书荐购提供较为良好的解决方案。首先,微信在大学生中的广泛普及让基于微信的读者荐购系统有广泛的用户基础。其次,微信允许用户调用手机的摄像头设备,实现扫一扫功能,为用户随时随时扫描图书条形码提供可用的设备基础。最后,微信公众平台的开放性允许图书馆按照微信提供的借口和权限进行第三方程序开发,从而为读者荐购流程与微信开放平台结合提供程序实现基础。

漯河职业技术学院图书馆微信公众平台扫码荐购图书系统自2016年5月开始运行,主要为解决让用户随时随地通过微信客户端为图书馆推荐身边好书的问题而设计。截至目前,系统整体运行良好,共收到读者推荐图书数据300余条,对于提升漯河职业技术学院图书馆文献资源建设读者参与度、提高图书采购的针对性和馆藏文献利用率具有显著的推动作用[5]。鉴于国内图书馆程序开发技术力量普遍相对薄弱,笔者希望通过本文分享微信扫码图书荐购系统的设计思路和实现方法,希望能为兄弟院校图书馆开发同类系统提供借鉴和参考[6]。

1 扫码图书荐购系统的设计

1.1 系统开发平台及环境简介

系统采用Vaisul Stidio 2010作为开发平台,采用NET4.0程序框架集为基础框架,选用C#为开发语言,以ACEESS作为管理库,以IIS为发布工具。开发所需软件全部采用微软的产品,系统具有较强的兼容性和稳定性;本系统通过微信/第三方服务器方式访问,用户无需下载专用客户端,通过微信客户端即可与服务器进行交互访问,保证了系统的可用度以及对用户的亲合度。

1.2 系统结构框架的设计

本系统面对的用户群体为用户和管理员。对管理员而言,系统主要为管理员提供微信菜单的生成程序,以供管理员生成调用微信“扫一扫”所需设备的菜单。对用户而言,系统主要解决对扫码后提供的信息进行接收与识别,用户身份的判断以及用户信息的绑定、ISBN信息的提取、当当网数据与馆藏图书数据的调用以及最终推荐图书信息的确认等问题。系统的结构框架及业务流程如图1所示,其中实线代表实际业务操作,虚线代表馆藏数据的调用。

2 扫码图书荐购系统的实现

2.1 “扫码荐购图书”菜单生成模块的实现

此模块主要解决在微信公众号的菜单中添加可供用户点击的“扫码推荐图书”按钮,用户通过微信公众号点击此子菜单时,会调用手机的摄像头呈现扫一扫界面,供用户去扫描图书的条形码。此处扫一扫与微信界面左上角“扫一扫”的区别在于通过公众号菜单去扫条形码返回的信息可以包含用户的个人信息openid(即个人与此微信公众号对应的惟一标识),通过此惟一标识可以让微信通过第三方程序处理后的信息能够准备的返回到用户手机的微信公众号界面,从而实现用户与微信公众号的点对点交互,而通过扫一扫则不能实现交互功能,故通过微信菜单添加“扫码”功能为实现扫码推荐图书的基础、入口和必备条件。微信扫描推荐图书菜单样式如图2所示,其主要实现代码如下:

protected void updatemenuClick(object sender,EventArgs e)

{string menu=″″;

menu=@″{″″button″″:[{″″name″″:″″新闻资讯″″,″″subbutton″″:[{″″type″″:″″scancodewaitmsg″″,″″name″″:″″扫码推荐图书″″,″″key″″:″″lala1″″}]}]}″;

string appid=″* * * * * *″;∥此处填写微信第三方开发的appid

string appsecret=″* * * * * * *″;∥此处填写微信第三方开发的appsecret

string accesstoken=wx.GetMyAccessToken(appip,appsecret);

string m=wx.GetPage(″https:∥api.weixin.qq.com/cgi-bin/menu/create?accesstoken=″+accesstoken,menu);}∥调用自建getpage()方法于微信交互,将菜单信息传递给微信服务器,生成菜单。

2.2 扫码推荐图书模块的实现

用户扫码成功后,会将扫码结果及个人信息传送给腾讯微信服务器,腾讯微信服务器根据第三方开发者参数设置将信息传给发微信公众指定第三方处理程序。第三方程序接收到转发的信息,并对该信息进行加工处理,将接受到的XML转换为第三方程序可以处理的格式化信息。信息转换后,第三方程序首先根据用户的openid与本地数据库进行匹配判断是否为已绑定用户,如果为非绑定用户则提醒用户通过读者证号和密码绑定身份信息。如果为已绑定用户,则对接收到的扫码数据进行处理,提取集中的ISBN信息,并将得到的ISBN与图书馆馆藏数据库中的数据进行匹配,判断是否为图书馆已有图书;如果为已有图书则直接读取馆藏图书文献信息数据;如过为馆藏图书,则调用直接根据ISBN访问当当网进行图书检索,将检索结果临时保存在服务器中,通过对临时数据的截取获取图书的书名、作者出版社、图书封面等信息;无论获取的是馆藏图书信息还是当当网的图书信息,最终都将与用户信息进行合并,形成最终反馈数据,程序对返回数据进行加工(格式程序)生成微信可以接受的xml文档,提交微信,由微信根据用户的openid通过微信公众号讲信息反馈到用户手机。扫码推荐模块为本系统处理的核心模块,其主要实现代码如下:

if(HttpContext.Current.Request.HttpMethod.ToLower()== ″post″)

{System.IO.Stream s=System.Web.HttpContext.Current.Request.InputStream;

byte[]b=new byte[s.Length];

s.Read(b,0,(int)s.Length);

postStr=System.Text.Encoding.UTF8.GetString(b);∥以上为接收数据

if(!string.IsNullOrEmpty(postStr))

{string inputXml=postStr;

XmlDocument xmlDoc=new XmlDocument();

xmlDoc.LoadXml(inputXml);

Dictionaryfields=new Dictionary();

foreach(XmlNode x in xmlDoc.SelectSingleNode(″/xml″).ChildNodes)

{fields.Add(x.Name,x.InnerText);}∥以上为对xml数据进行整序并保存在Dictionary类型中

if(fields[″Event″].Trim().ToLower()==″scancodewaitmsg″&& fields[″EventKey″]==″lala1″)

{Dictionary fieldssed=new Dictionary();

foreach(XmlNode x in xmlDoc.SelectSingleNode(″/xml/ScanCodeInfo″).ChildNodes)

{fieldssed.Add(x.Name,x.InnerText);}

string cnt1=fieldssed[″ScanResult″];string isbn =″″;

if(fieldssed[″ScanResult″].Contains(″,″))

{isbn=cnt1.Substring(cnt1.LastIndexOf(″,″)+1);}

else if(fieldssed[″ScanResult″].Contains(″,″))

{isbn=cnt1.Substring(cnt1.LastIndexOf(″,″)+1);}

OleDbConnection con=dbxuan.linklib();

con.Open();

string sqlstr=″select count(*)from(SELECT REPLACE([标准编号],-,)as sbn FROM wxxxb)as t1 where charindex(″+cnt1+″,t1.sbn)>0″;

OleDbCommand cmd=new OleDbCommand(sqlstr,con);

int c =Convert.ToInt32(cmd.ExecuteScalar().ToString());

con.Close();

if(c == 0)

{Getddtsinfo(isbn);∥通过函数获取当当图书数据

updatets(fields[″FromUserName″],isbn,title,zy,zuozhe,dj,cbs,fmimgurl);∥将获取图书数据写入图书推荐数据库

string url=″http:∥tsgwx.lhvtc.edu.cn/tx.aspx?isbn=″+isbn+″&user=″+fields[″FromUserName″];

string returnXml=wxnews.OneNewsToXml(fields[″FromUserName″],fields[″ToUserName″],″″,title.ToString(),zy.ToString()+″\n\n点击下方″查看全文″按钮推荐此书给图书馆″,fmimgurl,url);

context.Response.ContentType=″text/xml″;

context.Response.Write(returnXml);}

else{String eturnXml=wxnews.OneNewsToXml(fields[″FromUserName″],fields[″ToUserName″],″″,″书名″,″作者+出版社+馆藏位置等信息″,″″,″″);}

2.3 获取当当网图书数据

当当网图书数据的获取主要通过public void Getddtsinfo(string cnt)函数实现,其原理为:在图书馆服务器端后台访问当当网检索页面:http:∥search.dangdang.com/?medium=01&key4=″+isbn;并对访问页面的进行源码临时保存,然后对源码中的第一条图书数据进行分析和截取,逐步获得图书的书名、作者、出版社、封面图片等重要信息,并以字符串数组的形式返回,获取这些数据的目的让用户对拟推荐的图书进行确认,以免造成错误推荐等。其代码如下:

public static string dj=″″;public static string zy=″″;

public static string zuozhe=″″;public static string cbs=″″;

public static string fmimgurl=″″;public static string title=″″;

public void Getddtsinfo(string cnt)

{int start=cnt.IndexOf(@″

· 最先出现的位置

stringstr=cnt.Substring(start);∥截取从start+1开始,到;

int over=str.IndexOf(@″″);∥<最后出现的位置

str=str.Substring(0,over + 5);∥截取从start+1开始,到;

string str2=str.Substring(str.IndexOf(@″定价″));

str2=str2.Substring(str2.IndexOf(@″?″)+5);

dj=str2.Substring(0,str2.IndexOf(@″″));

zy=str.Substring(str.IndexOf(@″

″)+19,str.IndexOf(@″

″)-(str.IndexOf(@″

″)+19));

string str3=str.Substring(str.IndexOf(@″

″)+30);

zuozhe=str3.Substring(0,str3.IndexOf(@″″));

string str4=str.Substring(str.IndexOf(@″name=Pcbs″));

str4=str4.Substring(str4.IndexOf(@″>″)+1);

cbs=str4.Substring(0,str4.IndexOf(@″″));

zuozhe=NoHTML(zuozhe);

fmimgurl=GetImgUrl(str).Replace(″″,″″);

title=str.Substring(str.IndexOf(@″

2.4 荐购图书信息的确认与数据提交

通过菜单的“扫码推荐图书”按钮调用“扫一扫”扫码后系统经过上述系统流程,用户微信会收到推荐的展示信息,如图3所示。根据提示,用户点击查看详情按钮即可对已推荐的图书进行确认,确认后,用户微信端会收到提示信息,证明图书推荐成功。至此,整个基于微信公众号的图书荐购系统的读者端开发完成,图书馆可通过后台程序对读者推荐的图书进行统计整理,形成最终的图书采购计划进行采购。采购工作完成后,微信可以根据流通管理系统新增数据的变化通过微信来提醒用户图书到馆,邀请读者前来借阅。

要求用户通过“详情”按钮确认选购图书主要作用在于一方面便于用户核对来自于当当网的图书信息是否与主管意识推荐的实体图书信息是否一致,确保推荐图书数据的准确性,另一方面,可以通过isbn和用户openid的验证来保证用户提交数据来自于用户本人的微信,防止非法用户盗链行为的发生,增加系统的安全性。用户确认图书信息代码如下:

protected void PageLoad(object sender,EventArgs e)

{string isbn=Request.QueryString[″isbn″].ToString();

string openid=Request.QueryString[″openid″].ToString();

OleDbConnection con=dbxuan.linklib();

con.Open();

string sqlstr=″select count(*)from[tjts]where isbn=″+isbn+″and openid=″+openid+″″;

OleDbCommand cmd=new OleDbCommand(sqlstr,con);

int c=Convert.ToInt32(cmd.ExecuteScalar().ToString());

if(c==0){this.Label1.Text=″提交数据格式不正确,请通过微信提交″;}

else{cmd=new OleDbCommand(″update[tjts]set tj=yeswhere isbn=″+isbn+″and openid=″+openid+″″,con);

cmd.ExecuteNonQuery();

this.Label1.Text=″数据以提交至图书馆,图书馆将尽快为你采购图书,图书到馆后图书馆将通过此微信号提醒你的到馆借阅,敬请留意!″;}

con.Close();}

3 结束语

本文设计和实现的基于微信的扫码图书荐购系统具有以下优势:①用户通过扫描图书条形码,可以随时随地地推荐图书。②通过调用当当网的数据,直接生成对应图书的名称、作者出版社等信息,无需用户手动输入,具有较高的用户体验。③通过扫描图书信息与图书现有馆藏信息比配,可以判断推荐的图书是否为本地已有图书,可以避免图书的重复推荐与采购。④通过身份识别与验证可以保证用户身份的合法性以及推荐图书信息的准确性。此微信扫描图书荐购系统为漯河职业技术学院微信移动图书馆一个功能子模块,为共同推进移动互联时代图书馆文献资源建设方式方法的创新与发展提供参考。

参考文献

[1]孔云,廖寅,资芸,等.图书馆微信服务平台的设计与实现[J].图书馆论坛,2014,(2):90-95.

[2]张蓓,窦天芳,张成昱,等.开发模式下图书馆微信公众平台服务的设计与实现[J].现代图书情报技术,2014,(1):87-91.

[3]邓媛,张骏毅,杨九龙.高校图书馆微信资源共建系统的设计与实现[J].图书馆学研究,2014,(10):41-47.

[4]肖秋红.高校图书馆微信数字参考咨询生态模型设计与实施[J].图书馆学研究,2014,(12):85-88.

[5]李白杨,白广思.面向知识咨询的图书馆移动服务设计与实现——以微信公共平台为例[J].图书馆学研究,2013,19:69-72.

[6]姚舜.图书馆微信借书系统的设计与实现[J].图书馆建设,2015,(2):84-87.

[7]张正.图书馆微信公众平台的构建[J].国家图书馆学刊,2014,(2):26-31.

[8]王保成,邓玉.微信公众平台在国内图书馆服务中的应用实践研究[J].图书情报工作,2013,20:82-85.

[9]吴锦辉.基于功能需求的图书馆微信内容建设分析[J].国家图书馆学刊,2015,(1):52-58.

(责任编辑:孙国雷)

猜你喜欢
扫码菜单图书
脐橙连上物联网 扫码便知“前世今生”
山之高
图书推荐
中国新年菜单
欢迎来到图书借阅角
中国进入“扫码”时代
本月菜单
扫码看直播