王振輝, 王振鐸
(1.西安翻譯學院, 工程技術學院, 陜西, 西安 710105;2.西安思源學院, 電子信息工程學院, 陜西, 西安 710038)
高校圖書館是大學生課外獲取知識的一個重要場所,是素質(zhì)教育重要文化陣地。在互聯(lián)網(wǎng)+國家戰(zhàn)略引領下,加快圖書館信息化建設,特別是創(chuàng)新服務模式,將網(wǎng)上網(wǎng)下商務模式O2O的優(yōu)勢完美結合應用于傳統(tǒng)圖書館行業(yè),提高圖書館工作效率和管理水平,是高校圖書館急需解決的問題。特別是在后疫情時代,線下現(xiàn)場業(yè)務和線上電子業(yè)務組合的O2O模式的創(chuàng)新發(fā)展,也是亟待完善的課題。
作為輕量級應用的微信小程序,它具有開發(fā)快,成本低,免安裝等優(yōu)點,其“用完即走”理念,可以升級傳統(tǒng)圖書館信息服務水平,為用戶提供了無處不在的軟件服務。小程序能聚焦讀者,細分服務,更好挖掘用戶功能需求,用符合用戶喜好的形式開展信息服務。小程序和O2O模式結合可以更方便地提供線上體驗和篩選服務,并通過位置服務等使圖書館線下資源得到推廣和高效利用。
近年來,在圖書館界對微信服務在圖書館的應用進行了理論和實踐研究。蘆曉紅分析了圖書館微信小程序應用場景并指出小程序服務內(nèi)容主要集中在圖書館宣傳、館藏查詢、圖書借閱、資訊活動、圖書推薦、圖書館占座/房間預訂、讀者個人中心等[1]。程柳音分析了圖書館微信公眾平臺服務現(xiàn)狀和優(yōu)勢,指出公眾平臺存在注冊管理不規(guī)范、推廣不專業(yè)、服務類型不夠多樣化等問題并提出解決對策[2]。張楠對42所“雙一流”高校圖書館微信公眾平臺作為研究對象提出新冠肺炎疫情期間高校圖書館微信服務提升策略[3]。綜上所述,圖書館對小程序研究還處于邊應用邊改進階段,相關理論研究和實踐經(jīng)驗還不夠成熟,并且高校圖書館小程序提供的服務與城市公共圖書館微信小程序提供服務由于應用場合和場景不同有較大差距。高校圖書館在借鑒公共圖書館的建設思路,將微信小程序結合O2O模式,應對公共安全事件的綜合研究和服務實踐性文章幾乎沒有。
為此,文章提出了基于微信小程序和O2O模式的高校圖書館管理系統(tǒng)框架,通過線上預約、線下配送,入館人員統(tǒng)計、座位預訂與間隔選座等功能為應對公共衛(wèi)生安全事件提供技術保障。系統(tǒng)以 MySQL作為數(shù)據(jù)庫,采用JSON作為小程序前端和圖書館Web應用數(shù)據(jù)的交互標準,使用微服務框架,提升了小程應用的通用性、可擴展性和可靠性。
研究以西安翻譯學院圖書館為實踐對象,利用其現(xiàn)有的圖書信息管理系統(tǒng),充分考慮讀者對圖書館線上線下業(yè)務的需求,設計基于微信的圖書館小程序。
(1) 小程序+二維碼實現(xiàn)O2O模式
小程序服務為讀者提供無處不在的服務,通過研究用戶場景不斷構建新的服務生態(tài),來使圖書館的服務深入讀者。小程序服務具有二維碼信息量大、容錯性強、技術可靠、使用方便、成本低等優(yōu)點,在眾多領域得到廣泛應用。利用小程序+二維碼可以優(yōu)化圖書館線下服務。
(2) 微服務理念
設計時使用Spring Cloud微服務,將小程序后臺系統(tǒng)的各模塊獨立為組件,降低系統(tǒng)復雜性。各組件服務通過接口進行相互通信,從而快速構建高內(nèi)聚、低耦合的復用系統(tǒng),也可靈活應對系統(tǒng)業(yè)務變化。小程序可以通過請求restful API訪問后臺的微服務組件。
(3) Ajax+JSON實現(xiàn)異步數(shù)據(jù)通信
JSON文件是小程序的配置文件,也是小程序與后臺Web服務進行數(shù)據(jù)交互的標準,直接決定小程序響應時間。使用AJax通過在后臺與服務器進行少量數(shù)據(jù)交換,Ajax 可以使小程序視圖實現(xiàn)異步數(shù)據(jù)更新,從而使用戶擁有良好使用體驗。
圖書館小程序的體系結構(圖1)分為3層。第一層是系統(tǒng)前端,即微信小程序,負責人機交互,是讀者線上辦理業(yè)務的窗口;第二層是系統(tǒng)后臺,即圖書館Web應用,為小程序數(shù)據(jù)提供Web服務接口,同時也是圖書館業(yè)務員和管理人員業(yè)務處理平臺;第三層是系統(tǒng)數(shù)據(jù),即圖書館數(shù)據(jù)庫,存儲讀者、圖書館業(yè)務人員、管理員、圖書等業(yè)務數(shù)據(jù)。
圖1 圖書館小程序系統(tǒng)架構
與公共圖書館小程序提供咨詢、活動直播和資訊類功能相比,高校圖書館小程序更多提供的是基礎性服務。當然各高校讀者和圖書館業(yè)務又存在差異,所以功能也不盡相同。本文圖書館微信小程序設計了五大功能模塊,分別是讀者中心、圖書業(yè)務、座位預訂、咨詢活動和圖書推薦。這五大功能模塊完成了圖書館信息發(fā)布,日常業(yè)務辦理及自習室座位管理工作。圖2是小程序功能結構圖。
圖2 圖書館小程序功能結構圖
在圖2中,核心功能是讀者認證與身份識別、讀書借閱和座位預訂和使用。下面概要介紹一下這些功能的實現(xiàn)邏輯。
1.3.1 讀者認證與識別
由于系統(tǒng)用戶群體定位的是教師和學生,所以該款小程序使用前先要進行注冊。學生填寫學號等學生信息,教師填寫教師編號等教師信息。讀者登錄時使用學號或教師編號結合密碼進行,密碼忘記可以使用注冊的手機號找回。由于涉及線下無接觸取書等實名操作,系統(tǒng)專門設計了人臉數(shù)據(jù)采集模塊和驗證模塊,以保證系統(tǒng)操作的可追溯性。
1.3.2 座位預訂和使用
圖書館座位使用總體分為小程序預約—掃描確認—離場確認3個業(yè)務流程。
(1) 預約座位
讀者首先選擇自習室,再選擇時間段,系統(tǒng)顯示自習室中未使用的座位號。用戶確認選座即可。若選座后臨時有事情,無法使用座位,可以使用“取消預約”功能,方便他人使用。
(2) 使用座位
讀者進入自習室,掃描座位上的二維碼進行“簽到”,中間有事掃描使用“臨時離開”功能,座位自動保留30分鐘。超過時間回來使用要重新使用“簽到功能”。座位使用完畢后掃描辦理“簽離”功能,釋放座位。
(3) 管理員管理座位
自習室管理員端可以查看座位狀態(tài),對座位進行實時干預。當一個座位超過30分鐘后沒人使用,將自動反饋給管理員端,管理員可以每隔一段時間對這些座位進行清理,釋放座位占用狀態(tài)為可用狀態(tài)。
1.3.3 線上圖書預約借閱線下取書
圖書館小程序致力智慧圖書館運營場景,搭建了“在線圖書預約→圖書配送到柜→取書柜自提”的整體解決方案。具體來說,學生通過微信小程序線上預約后,圖書館配送團隊(學校勤工儉學學生完成)完成掃碼投送,學生以掃碼形式自助取書,從而實現(xiàn)無人交付、避免人群聚集、實現(xiàn)無接觸取書服務。
圖書館微信小程序的數(shù)據(jù)保存在阿里云后臺MySQL數(shù)據(jù)庫中。在設計時兼顧三范式和性能要求(適當冗余)。小程序存儲的數(shù)據(jù)主要是圖書、座位、讀者、管理員、預借圖書預訂座位和活動通知?,F(xiàn)以座位預訂表創(chuàng)建為例,介紹其結構描述信息(表1)。
表1 座位預訂表結構
系統(tǒng)實現(xiàn)使用MINA框架及微服務設計思想,開發(fā)具有原生App體驗的服務,使用戶有更好的使用體驗。小程序自身主要由兩個獨立運行的模塊組成:View模塊(視圖層)和Service(業(yè)務邏輯層)模塊。View模塊負責交互界面的顯示,通過WeixinJSBridge來與后臺通信,由WXML和WXSS結合編寫,通過組件進行展示。Service模塊負責后臺的邏輯操作,同樣通過WeixinJSBridge與后臺通信,使用JavaScript引擎提供運行環(huán)境和小程序特有的功能。因此,本項目業(yè)務邏輯是通過編寫各個頁面綁定的.js腳本文件來完成的。業(yè)務邏輯層處理完數(shù)據(jù)后,會將其發(fā)送往數(shù)據(jù)層,并在視圖層接收事件反饋。系統(tǒng)主界面提供了位置定位、圖書查詢、座位預訂等主要功能導航,方便讀者辦理業(yè)務。主界面如圖3所示。
圖3 圖書館微信小程序主界面
2.2.1 二維碼生成與識別技術
二維碼QRCode使用方便,在圖書借閱、座位簽到等場景中會應用到。其中二維碼生成功能如果是后臺Web系統(tǒng),可使用Google Zxing組件[4]。小程序中生成二維碼API微信沒有公開。所以可以采用第三方的插件實現(xiàn),GitHub中的weapp-qrcode可以實現(xiàn),但相比之下base64-weapp-qrcode.js插件兼容性更好,且基于base64編碼輸出二維碼時,不依賴canvas。
生成二維碼的核心代碼如下:
ready: function() {
var imgData = QR.drawImg(this.data.value, {
typeNumber: 4, //碼點大小 1-40,數(shù)字越大,碼點越小,二維碼會顯得越密集
errorCorrectLevel: 'H', //糾錯等級 H等級最高
size: parseInt(rpx2px * this.data.width)
})
this.setData({
qrcodeURL: imgData
})
二維碼保存讀者業(yè)務數(shù)據(jù),如果只是一項數(shù)據(jù),如讀者編號,直接以字符串方式提供保存即可,如果包含多項數(shù)據(jù),比如讀者編號,圖書編號,那么可以先把這幾項數(shù)據(jù)以JSON串格式保存,解析更為方便。
二維碼生成后的識別可以使用微信掃一掃接口,也可以用第三方插件jsQR或qrcodejs實現(xiàn),但后者的缺點是識別精度較低,不穩(wěn)定。因此,掃描識別二維碼時直接用小程序開發(fā)的API即可。
掃碼識別的核心代碼如下:
wx.scanCode({
scanType: 'qrCode',
success: (res) => {
//根據(jù)掃碼的結果跳轉(zhuǎn)至目標頁面進行展示...
}
}) const QR = require("../../utils/qrcode.js");
QR.api.draw(str, canvasId, cavW, cavH);
2.1.1 ig藥液的制備 取金芪降糖片去包衣,粉碎,過40目篩,混合均勻,精密稱取該粉末適量,生理鹽水配制為0.7 g/mL的混懸液,超聲30 min,靜置24 h,于4℃保存。
2.2.2 人臉采集與識別技術
小程序上傳人臉照片功能涉及采集、存儲用戶生物特征(人臉照片或人臉視頻),微信平臺暫不支持此功能。但圖書館系統(tǒng)中如有強追溯用戶操作行為時,如支持人臉識別認證登錄、圖書轉(zhuǎn)借認證、電子借書證辦理等功能就會涉及人臉數(shù)據(jù)采集或照片上傳。低成本解決方案時用小程序后臺Web應用采集人像照片文件,前臺小程序負責人臉識別認證即可。也可以在小程序中調(diào)用攝像功能。具體處理流程是前端通過小程序調(diào)用攝像頭進行人臉定位成功后把抓拍的圖片傳到后臺,后臺通過騰訊云(也可以是百度AI或阿里云的實人認證接口)做人臉檢測對比即可[5]。
2.2.3 位置服務功能
小程序可以解決圖書館內(nèi)方向辨識度低和結構相似的缺點,為用戶提供方便快捷的圖書館導引服務,同時可以根據(jù)讀者位置,進行最近路線圖書配送服務[6]。
在小程序中位置服務功能可以使用騰訊位置服務,也可以使用第三方公司如百度或高德地圖API接口。但是第三方地圖API只能通過接口獲取數(shù)據(jù),地圖不能直接引入小程序,所以使用騰訊位置服務能開發(fā)出功能更為強大、兼容性更好。
小程序中使用騰訊位置服務進行定位服務的實現(xiàn)步驟如下:
(1) 注冊一個騰訊位置服務的帳號;
(3) 下載微信小程序JavaScript SDK,放入到小程序項目中;
(4) 登錄微信小程序后臺,添加 request 合法域名 https://apis.map.qq.com;
(5) 在app.json中配置permission字段,以獲取用戶定位信息;
(6) 調(diào)用 wx.getLocation獲取當前用戶的地理位置(微信返回的是經(jīng)緯度、速度等參數(shù));
(7) 使用JavaScript SDK 的API函數(shù)逆地址解析(qqmapsdk.reverseGeocoder將經(jīng)緯度信息轉(zhuǎn)換為包括國家,省、市、區(qū)、街道等具體地理位置信息)即可。
為了測試該小程序的功能、性能及用戶體驗,筆者從軟件工程專業(yè)學生中隨機選擇了30名學生進行軟件的真機測試,真機Android版本均為8.0以上,機型為iphone,華為、小米、紅米、vivo、OPPO。從參與測試的同學的使用反饋來看,該系統(tǒng)的主要圖書預借、座位預訂功能正確,系統(tǒng)能實時響應用戶請求。系統(tǒng)的主要問題反映在位置服務精度問題,即系統(tǒng)精度在50米到100米之間,誤差很大。經(jīng)過分析,微信小程序有兩種定位模式,一種是 wgs84(GPS) , 一種是 gcj02(火星坐標),默認wgs84,wgs84 返回的是 gps 坐標,gcj02 返回的是 wx.openLocation 的坐標。在計算距離的時候gcj02定位更為精確。具體代碼在app.js的onload事件中將type值修改為gcj02,具體參考代碼如下:
wx.getLocation({
type: 'gcj02',
success (res) {
const latitude = res.latitude
const longitude = res.longitude
const speed = res.speed
const accuracy = res.accuracy
}
})
由于各公司地圖標注的經(jīng)緯度和實際有一定偏差,為了更好提高位置定位準確度,軟件在測試過程中根據(jù)所使用的地圖,先計算偏移,然后對經(jīng)緯度進行修正來查出準確的地圖位置。經(jīng)過以上修改,重新測試后,系統(tǒng)精度在0.5 m以內(nèi)。當然,位置定位精度和手機設備也有關。在測試過程中,發(fā)現(xiàn)高端手機iPhone,華為Mate40位置偏差最小,而測試使用的低端手機紅米位置偏差最大,有時紅米還會提示無法定位位置,經(jīng)開啟紅米手機的GPS定位,才能正確提供位置服務,當然這只是小概率事件,但也從一個側(cè)面說明,手機定位的準確度對小程序定位準確度是有影響的。
隨著移動互聯(lián)網(wǎng)技術和通訊技術的迅速普及和發(fā)展,高校傳統(tǒng)圖書館移動服務逐漸發(fā)力。本文依托微信小程序服務優(yōu)勢,設計了一個圖書館移動端服務小程序,為讀者提供了便捷、可靠的新服務模式。隨著用戶電子業(yè)務操作習慣的養(yǎng)成,小程序在圖書館管理中的作用也將不斷擴大。本文為圖書館等文化部門開展O2O服務和自主個性化需求的移動應用服務提供了參考。