王晴 倪海潤 萬順 梁赫西 張衡
關鍵詞:大學生;文化旅游;智慧服務;Spring+SpringMVC+MyBatis框架;爬蟲技術
文化旅游是綜合性的社會文化活動,其實質是體驗文化、尋找文化差異,文化和旅游相互結合對于促進旅游業轉型升級,實現文化傳承創新,具有重要意義[1]。一直以來,國家都大力支持民族文化傳承和紅色文化事業的發展。對于大學生群體而言,其對于學習傳統文化和革命精神的需求較大,但目前市場上并沒有一個專門針對此方面需求的平臺。另外,結合現狀,智慧旅游是智能化時代下旅游發展的前沿[2],智慧文旅平臺的建設具有重要的現實意義。本文針對市場痛點,積極響應國家的政策,秉承“高內聚和低耦合”的設計思想,設計開發基于B/S模式的大學生文旅智慧服務平臺,提供景點信息檢索、疫情下景點推薦指數實時更新,景點線路預約、用戶互動交流、VR實景游覽等功能。本平臺的建設對于激勵大學生進行文化旅行,學習文化思想具有深遠意義。
1 關鍵技術
1.1 SSM 框架
本系統采用基于Java的SSM框架。SSM框架是繼SSH 框架(Struts、Spring、Hibernate)之后主流的框架,具有較好的性能。SSM 集Spring、Spring MVC 及MyBatis三個框架于一體,包括四個層次,分別為Dao 層(mapper) 、Service層、Controller層、View層。Spring 能夠將原本耦合性較強的程序分解成若干個低耦合的模塊,完成良好的架構;Spring MVC是一個MVC框架,包含DispatcherServlet、Controller、HandlerMapping、ModelAndView、ViewResolver、Interceptors六個核心組件;MyBatis對JDBC進行封裝,使得數據庫底層操作變得透明,其支持定制化SQL、存儲過程以及高級映射,并且可以使用簡單的xml或注解將接口和Java的實體映射成數據庫中的記錄,是一個良好的持久層框架[3-5]。
1.2 爬蟲技術
本系統中需要使用到大量的實時數據,本項目決定使用爬蟲手段獲取數據。主要手段是基于Node.js 的Puppeteer.js 庫,Puppeteer.js 庫是一個Node 庫,它提供了一個高級 API ,通過 DevTools 協議控制 Chro? mium 或Chrome,即通過調用庫提供的接口來控制庫運行時生成的模擬瀏覽器[6]。選擇原因如下:
1) 反反爬蟲能力強:其會生成一個瀏覽器,并可通過代碼模擬用戶的真實操作,使得爬蟲行為與真實用戶操作基本一致,而這將導致一些主流反爬蟲手段失效。
2) 對SPA(單頁應用)支持強:如今大部分網頁都是SPA類型的,而SPA類型的網頁對于傳統的爬蟲技術爬取數據有一定難度,但是對于Puppeteer.js庫卻不是難事,其在瀏覽器dom元素渲染完畢后再通過操作dom元素獲取數據。
3) 使用最新版本的JavaScript和瀏覽器功能,直接在最新版本的Chrome中執行測試,保證運行時的兼容性和穩定性。
1.3 Vue.js 框架和Element plus 組件庫
前后端分離的開發模式可以更快地開發web項目,因此本系統采用了這種方式。基于綜合考慮,本項目前端采用Vue.js框架和基于其的Element Plus組件庫。Vue.js是一套構建用戶界面的漸進式框架,它不僅易于上手,還便于與第三方庫或既有項目整合。另一方面,當與單文件組件和Vue生態系統支持的庫結合使用時,Vue 也能有良好的支持[7]。使用理由如下:1) Vue可以很方便地實現數據的雙向綁定,對收集和控制表單數據比較友好。2) Vue是單頁面應用,每次獲取服務器數據時都只是頁面局部獲取,不必刷新整個頁面并獲取請求。3) Vue支持組件化開發,方便多人開發和對代碼的維護。
Element Plus組件庫有著豐富的UI組件庫,并且支持主流的大部分用戶交互控件,極大地縮短了項目的開發時間。
2 需求分析
用戶在使用旅游服務網站時,會產生一系列需求。首先,需要有自己的個人信息中心(包含賬號、用戶信息、收藏、歷史瀏覽等數據),能對其進行查看、添加、修改、刪除的操作;其次,需要線上旅游平臺的一些基本服務,包括景點信息檢索、景點評價交流、使用反饋、景點線路預約等,并且能對使用過程中產生的一些信息(評論、搜索信息等)進行查看、添加、刪除、修改的操作。
對于系統維護管理人員,其能管理用戶并對用戶使用系統時產生的一些信息(違規評論、上傳圖片等)進行增刪改查;其次,可以對系統收集的景點和線路等資料信息進行增刪改查的操作。
對系統本身,可以將消息推送給用戶;能自動收集最新信息并更新數據庫;根據收集的最新信息和用戶的評價及反饋實時對景點和線路數據進行刪除和更新,并且能對景點和線路的優先級進行更改。系統的服務流程如圖1所示。
3 系統設計
3.1 前端界面設計
對于網站頁面設計,從用戶的角度出發,平臺采用面向對象的操作界面設計模式,具有可視化、色彩一致性、操作一致性以及簡易性等特點,有助于不同信息技術水平層次的用戶都能較快地掌握平臺的使用技巧。
根據目標用戶群體對于文化旅行界面設計的偏好特征,頁面以凸顯中華深厚文化底蘊的“中國紅”色調為主,營造一種濃厚的文化氛圍。為避免景點大量文字介紹使得用戶產生疲勞倦怠感,平臺在排版上采取圖文結合的方式,界面簡約大氣,主要信息突出,能夠為用戶使用提供有效的引導,容錯率較高。首頁頁面設計如圖2所示,具體的頁面板塊如圖3所示。
3.2 系統功能服務
根據需求分析,將本系統按功能主要劃分為6個模塊,分別為:景點信息、用戶評價、實時推送、資源管理、旅行預約、系統設置。如圖4所示。
3.3 數據庫設計
在進行數據庫設計前,通過需求分析可以得知各實體存在的內在聯系,主要實體關系為以下四種:
1) 用戶主動預約景點;
2) 景點被推送給用戶;
3) 用戶主動評價景點;
4) 景點被存放于資料。
由于部分實體聯系與上述幾種有較大重復,就不再贅述。上述關系的E-R如圖5所示。
4 系統功能的實現
4.1 技術棧說明
本系統采用前后端分離模式開發。后端核心技術棧為Java以及其延伸的SSM(Spring + SpringMVC + MyBatis) 框架;前端使用Vue.js框架及Element Plus組件庫編寫;使用Puppeteer.js庫開發的腳本進行信息收集。此外,系統還使用了阿里云的云計算服務,百度地圖的地圖服務等。
4.2 具體重要功能模塊
4.2.1 將景點消息實時推送給用戶
根據需求,系統需要獲取景點的實時信息。使用Puppeteer.js庫開發的爬蟲腳本實時爬取互聯網上與旅游景點相關的實時信息,經過算法加工后,得到不同類型以及各用戶所偏好的景點信息,再經過優先級算法排序后將信息存入數據庫,當數據庫發生改變時,系統會把數據庫中的各景點信息實時推送給不同的用戶。
其中,系統還會結合用戶的反饋和用戶的評價信息實時更新數據庫信息,以保證信息的可靠性和實時性。為了保證信息的實時更新,系統在進行景點信息推送時將采取WebSocket 協議。具體步驟如圖6 所示。
4.2.2 景點信息收集
與4.2.1小節前半部分具體實現步驟類似,系統通過爬蟲獲取景點信息,經過算法加工排序后存入系統的資料數據庫,同時,景點信息收集會通過用戶反饋的信息對數據庫進行更新。
4.2.3 用戶評價
在此模塊中,用戶既可以對景點進行評價也可以對平臺各方面服務進行反饋。此外,在用戶的反饋更新到數據庫后,系統也會通過算法根據這兩點的綜合反饋對景點的信息和優先級進行修改和更新。
模塊主要功能實現:在用戶使用賬號登錄成功后,可以在個人中心中找到預約板塊,點擊成功預約的景點后,就可以對其進行評價。系統在收到用戶發送的評價請求以及其攜帶的相關信息(如評價時間,評價用戶等)后,會調用評價添加方法,此方法會間接性地調用SQL添加語句,將對應的評價以及相關信息存入到數據。之后,系統會通過調用查看方法,其會間接性調用SQL查詢語句獲取評價和相關信息在含有評價功能板塊頁面進行同步展示。系統在處理用戶評論的刪除和修改也與添加類似,只是調用的處理語句不一致。評價頁面如圖7所示。
4.2.4 景點預約
用戶可以自主預約景點和路線。系統收集到用戶的預約信息后,將其存入對應景點的隊列中,此時,用戶可以選擇個人預約或組團預約。如果是個人,系統會根據用戶的具體需求推送合適的路線;如果是組團,便把對應景點隊列中符合用戶需求的景點路線推送給用戶。在組團人數不夠的情況下,用戶可以采用系統根據用戶偏好及數據庫中的綜合數據計算出的旅行方案。
模塊主要功能實現:在用戶提交選中景點對應的預約請求后,其余步驟與4.2.3小節的實現步驟類似,并且由于一些基本操作也是類似的,下面將不再贅述。對于組團預約,系統在收集到預約請求后,會根據用戶的預約要求分類,將大致一類的用戶放在一個預約隊列中。在組團日期截止前,如果當前人數足夠,那么就會組團成功,用戶付款即可;如當前組團人數缺少,系統會提示用戶是否選擇繼續進行組團,選擇是的用戶會進行人數較少的小組團,對于選擇否的用戶,用戶可采納系統根據算法得出用戶可能傾向的其他方案或選擇放棄預約。景點預約頁面如圖8 所示。
4.2.5 資料管理
根據需求分析可知,在用戶使用平臺的過程中會產生各種相關信息,其次,還有景點線路的相關信息等。系統需要對這些資料進行管理,用戶、管理員和系統都可以根據自身的權限對相應的數據進行管理。其中管理員擁有一切權限,即可以對現有數據庫中的所有數據進行增刪改查。而用戶只能對自己的個人信息、預約信息、景點評價以及使用平臺產生的一些記錄進行添加或修改。對于系統本身,其根據算法實時更新預先設定范圍內的數據。
模塊主要功能實現:游客根據賬號登錄網站,系統根據賬號對應的類型給予不同使用者權限。其中,管理員可以使用賬號登錄后臺管理系統,對數據庫中的所有信息進行管理,提交所操作信息對應的增刪改查請求后,系統就會調用對應的模塊方法進行處理。而對于用戶,其只能登錄旅游服務網站,找到個人中心,點擊要修改的對應模塊,對自己的信息(姓名,性別等)和使用產生的信息(預約、評價、收藏、歷史等)提交進行查看、添加和修改請求,對于人員和景區等信息的管理沒有操作權限。
4.3 其他輔助功能實現
4.3.1 云服務功能
旅游景點的數量不在少數,隨著新興產業的崛起,景點信息數量還將不斷增長,此外,隨著網站的日漸完善,旅游景點的信息數量也會增多,基于此考慮,本系統決定使用云部署,將更多的精力放在建設平臺自身,減少系統基本運維的工作量[8]。另外,市場上的云部署平臺在均衡、穩定以及安全上都比較專業,將系統托管可以保證平臺的穩定運行。
1) 云存儲
本系統使用阿里云存儲,將平臺的圖片,視頻以及部分備份信息存儲到阿里云存儲中進行托管。
2) 云數據庫
本系統將一鍵云托管數據庫,讓阿里云數據庫平臺維護數據庫。
3) 云服務器
考慮到本平臺系統的實時運算比較多,可能會使用多臺服務器,而在分布式計算、效用計算、負載均衡、并行計算、網絡存儲、熱備份冗雜和虛擬化等方面,云服務器平臺的服務也更專業。所以,本平臺網站相關業務將一鍵部署到云服務器上。
4) CDN加速服務
為了提高網站的訪問體驗,本平臺將使用CDN加速服務對網站的靜態資源進行加速。
5) 短信服務
為了方便開發和維護,本平臺使用云服務中配套的短信服務。
6) 域名加速服務
使用域名加速服務加快用戶訪問網站的速度,提升用戶體驗。
4.3.2 百度地圖接口
本系統使用百度地圖提供的在線2D、3D地圖和VR實景地圖接口,提供地圖供用戶使用,讓用戶能夠更直觀地選擇景點和路線。
4.3.3 圖片,文字,視頻的健康識別
使用阿里云提供的內容健康識別接口,實現對系統收集信息和用戶發布信息內容的實時識別。根據識別結果,對違規信息進行處理,以保證平臺的正常運行。
5 平臺測試
通過以上的步驟實現大學生文旅智慧服務平臺的初步架構后,還要使用自動化和手動化結合的方式測試平臺的各個功能模塊是否能夠正常運行[9]。對于前端界面,頁面總體色彩搭配統一,各類組織控件完備,動態交互顯示正常,用戶能夠正常登錄注冊賬號,經過一系列的測試,顯示前端一切正常。對于功能方面,測試游客資料的上傳、游客信息的管理、旅游信息更新與發布、旅行預訂、VR實景等功能是否正常,最終結果表明,平臺服務功能已基本完備,達到了預期的效果,該平臺工作一切正常,能夠應用于大學生文旅服務。部分功能測試數據如表1所示。
6 結束語
智慧文化旅游是基于“互聯網+”產生的一種新型旅游方式,借助5G、云計算、物聯網等新技術,以“文化”為主要旅游資源實現智慧化旅游[10]。本文旅服務平臺的建設符合智慧文化旅游的要求,方便大學生群體借助本平臺開展文旅活動,在疫情的形勢下了解景區實時信息,開展VR游覽活動,創建屬于自己的文旅圈。目前平臺前后端基本功能開發已完成,下一階段將根據用戶的反饋等不斷完善改進。