圣立明 李超 常京
摘要:相對于傳統(tǒng)的線下求職模式,線上求職招聘具有很大的優(yōu)勢。它打破了傳統(tǒng)招聘方式對時間和地域的限制,降低了求職招聘的成本,擴(kuò)大了招聘范圍?;诖?,開發(fā)了基于微信小程序的求職招聘系統(tǒng),客戶端使用微信小程序,服務(wù)端使用Java開發(fā)框架SpringBoot+MyBatis-Plus,同時,采用Python的Scrapy網(wǎng)絡(luò)爬蟲框架對多個企業(yè)招聘網(wǎng)站進(jìn)行職位信息爬取,提供更加豐富最新的職位信息,為求職招聘提供便利。
關(guān)鍵詞:微信小程序;求職;Java;爬蟲
中圖分類號:TP311 ? ? ?文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2022)31-0049-04
1 概述
隨著科技的發(fā)展,互聯(lián)網(wǎng)的開發(fā)與綜合應(yīng)用已經(jīng)逐漸深入人心[1],加之新冠肺炎疫情的反反復(fù)復(fù),對招聘行業(yè)產(chǎn)生了比較大的影響,其中2020年線上招聘以108億的市場規(guī)模成為招聘行業(yè)的主流方式。
線上網(wǎng)絡(luò)招聘打破了傳統(tǒng)招聘方式的很多不足,將招聘工作流程網(wǎng)絡(luò)化,有效減少了公司人事部門的工作量,提高了工作效率[2]。同時,也為求職者提供了多樣性的崗位選擇,節(jié)省了時間和成本。
微信小程序是一種在微信平臺上開發(fā)應(yīng)用系統(tǒng)的新技術(shù),2017年上線到現(xiàn)在,已經(jīng)擁有龐大的應(yīng)用開發(fā)數(shù)量[3]。
基于此,開發(fā)一個微信小程序的求職招聘系統(tǒng)。求職者登錄小程序進(jìn)行職位篩選、簡歷投遞、與HR溝通,公司HR登錄系統(tǒng)進(jìn)行簡歷篩選,聯(lián)系感興趣求職者,使得企業(yè)可以更加方便快捷找到適合自己的人才,求職者能夠根據(jù)自身的需求獲得適合自己的崗位。
2 系統(tǒng)架構(gòu)
本系統(tǒng)架構(gòu)如圖1所示。
前端使用的是微信小程序開發(fā),相比于傳統(tǒng)的App開發(fā),它依托微信App,不需要下載安裝即可直接使用,用戶掃一掃或者在微信搜一下就可以打開應(yīng)用, 開發(fā)適配成本低,可以實(shí)現(xiàn)跨平臺操作,無論是何種操作系統(tǒng)或者手機(jī)型號,微信小程序?qū)崿F(xiàn)了平臺的適配,開發(fā)者只需要按照開發(fā)文檔來做即可。同時,微信上會有用戶使用過的小程序記錄,這樣加大了用戶對小程序的依賴,既實(shí)現(xiàn)對應(yīng)用的觸手可及,又實(shí)現(xiàn)了對手機(jī)內(nèi)存的節(jié)省[4]。經(jīng)過近幾年的發(fā)展,微信小程序已經(jīng)擁有海量用戶,其應(yīng)用已經(jīng)覆蓋了多個行業(yè)。
后端使用的是Java開發(fā)框架SpringBoot+MyBatis-Plus,自動配置,簡化開發(fā)[5],節(jié)省了許多傳統(tǒng)Spring框架需要的xml配置文件,減少了冗余代碼,MyBatis-Plus則是MyBatis的增強(qiáng)版,在MyBatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā),提供效率而生。
數(shù)據(jù)庫使用的是MySQL數(shù)據(jù)庫,作為當(dāng)下主流的關(guān)系型數(shù)據(jù)庫,技術(shù)成熟,開源免費(fèi),使用方便。
同時,采用Python的Scrapy網(wǎng)絡(luò)爬蟲框架對多個招聘網(wǎng)站進(jìn)行職位信息抓取、解析、存儲,并使用Python定時任務(wù)框架APScheduler實(shí)現(xiàn)自動定時爬取數(shù)據(jù),盡可能及時更新相關(guān)職位的最新消息。
3 系統(tǒng)設(shè)計與實(shí)現(xiàn)
3.1 系統(tǒng)功能介紹
本次開發(fā)的求職應(yīng)聘小程序主要服務(wù)于求職者和公司HR,主要功能有:
1) 小程序登錄功能
對于系統(tǒng)每一位登錄用戶都應(yīng)該有屬于自己的唯一憑證,系統(tǒng)通過該憑證來識別不同的用戶,同時判斷用戶是否有權(quán)限進(jìn)行招人,也可以限制與個人信息相關(guān)的功能只有在登錄狀態(tài)下才可使用,從而保證個人信息安全。
2) 職位搜索功能
職位搜索功能是一個開放的功能,不要求一定要登錄之后才可訪問,求職者可以在這里瀏覽職位。
3) 簡歷管理功能
求職者登錄后,可以通過此功能對自己創(chuàng)建的簡歷進(jìn)行增加、修改、查詢、刪除操作。創(chuàng)建簡歷時,可以設(shè)置簡歷的狀態(tài)為公開或者私有,公開的簡歷可以被所有HR查看到,而私有的簡歷只有自己才能查看;查詢簡歷時,如果簡歷有被HR收藏并設(shè)置興趣指數(shù),求職者也可以查看到HR對自己簡歷的興趣指數(shù),看看自己的簡歷是否受歡迎。
4) 投遞簡歷功能
求職者在找到合適的職位并登錄后,可以選擇簡歷進(jìn)行投遞。
5) 投遞記錄查詢功能
求職者登錄之后,可以對自己投遞過的職位記錄進(jìn)行查看。
6) 收藏簡歷功能
該功能是服務(wù)公司HR的,需要HR登錄之后才可以使用,HR可以在公共簡歷池中瀏覽簡歷,可以對自己感興趣的簡歷進(jìn)行收藏,并設(shè)置一個興趣指數(shù),反饋給求職者。
7) 設(shè)置簡歷興趣指數(shù)
該功能也是服務(wù)HR的,需要HR登錄之后才可以使用,HR可以在收藏夾中查看自己收藏的簡歷與對應(yīng)的興趣指數(shù),也可以對簡歷重新設(shè)置興趣指數(shù),對已經(jīng)不感興趣的簡歷也可以進(jìn)行取消收藏的操作,同時也可以查看對應(yīng)簡歷的詳細(xì)信息。
該小程序的整體功能結(jié)構(gòu)如圖2所示。
3.2 前端頁面設(shè)計
前端采用微信小程序原生MINA框架,該小程序共包含11個頁面,其中3個tarBar頁面(首頁、求職、我的),如表1所示。
1) 首頁設(shè)計
主要有輪播圖區(qū)域與招聘企業(yè)區(qū)域兩塊區(qū)域,其中輪播圖部分采用swiper組件實(shí)現(xiàn),在js文件中調(diào)用后端API接口獲取輪播圖數(shù)據(jù),使用setData()方法將獲取到的數(shù)據(jù)保存到data中,最后使用模板語法將數(shù)據(jù)渲染到wxml頁面,數(shù)據(jù)獲取、保存、渲染核心代碼如下:
//js數(shù)據(jù)獲取與保存:
wx.request({
url: 'http://127.0.0.1:4021/api/v1/recruit/banners',
method: "GET",
success: (res) => {
this.setData({
bannerList: res.data.data.bannerList
})
}})
//wxml頁面渲染:
招聘企業(yè)信息部分則采用flex布局實(shí)現(xiàn),結(jié)合navigator組件實(shí)現(xiàn)點(diǎn)擊跳轉(zhuǎn)到相應(yīng)招聘企業(yè)的職位搜索頁面,數(shù)據(jù)獲取、保存、渲染都與輪播圖部分的實(shí)現(xiàn)方式一致。
2) 個人中心頁(我的)的頁面設(shè)計
該頁面先渲染了登錄按鈕,用戶點(diǎn)擊登錄按鈕后,可以選擇進(jìn)行求職或者招聘的操作,然后請求后端登錄接口進(jìn)行權(quán)限驗(yàn)證,根據(jù)用戶是否屬于某企業(yè),只有公司HR才可以進(jìn)行招聘操作,通過權(quán)限驗(yàn)證之后,會調(diào)用wx.getUserProfile與wx.setStorge方法獲取并保存用戶個人信息到數(shù)據(jù)緩存中。
系統(tǒng)根據(jù)不同角色去動態(tài)渲染不一樣的導(dǎo)航欄,若是公司HR,則動態(tài)渲染公司HR的導(dǎo)航欄,包括“簡歷”與“我的”,我的頁面有“收藏夾”功能;若是求職者,則動態(tài)渲染求職者的導(dǎo)航欄,包括“首頁”“求職”與“我的”,我的頁面有“我的簡歷”與“投遞記錄”功能。
對于不同的用戶登錄小程序,如果只使用微信提供的wx.getUserProfile方法,只能夠獲取登錄用戶的個人信息,考慮到隨著用戶劇增,難免會出現(xiàn)用戶重名,從而導(dǎo)致出現(xiàn)同名用戶對同一份個人信息數(shù)據(jù)進(jìn)行操作,進(jìn)而出現(xiàn)數(shù)據(jù)不一致的情況。本系統(tǒng)增加調(diào)用微信提供的wx.login方法,并且在后端服務(wù)器中通過code臨時登錄憑證去請求用戶接口,換取用戶的唯一憑證與會話密鑰,在小程序上根據(jù)token區(qū)別不同用戶,在后端中根據(jù)唯一憑證區(qū)別不同用戶。用戶的個人信息通過wx.setStorge方法保存到數(shù)據(jù)緩存中。
3.3 后端以及數(shù)據(jù)庫的設(shè)計
本系統(tǒng)采用三層架構(gòu)作為招聘系統(tǒng)的基本框架。
1) 控制層
與前端進(jìn)行數(shù)據(jù)交互,小程序通過wx.request向后端API接口發(fā)起請求,控制層則負(fù)責(zé)接收請求,并做出響應(yīng)返回給小程序,其間的請求處理都是交予服務(wù)層去實(shí)現(xiàn)的。
2) 業(yè)務(wù)層
業(yè)務(wù)層主要進(jìn)行業(yè)務(wù)處理請求,比如從小程序傳遞來的數(shù)據(jù)格式與數(shù)據(jù)庫所需格式不匹配時,則需要對傳遞來的數(shù)據(jù)格式進(jìn)行轉(zhuǎn)換與數(shù)據(jù)庫匹配等。
3) 數(shù)據(jù)層
數(shù)據(jù)層主要是與數(shù)據(jù)庫進(jìn)行交互,比如需要根據(jù)投遞記錄ID查詢投遞記錄信息,查詢投遞記錄信息,包括職位信息、簡歷信息,則需要查詢數(shù)據(jù)庫中record、resume、position三張表就可以通過數(shù)據(jù)層實(shí)現(xiàn)。
數(shù)據(jù)庫采用的是MySQL數(shù)據(jù)庫,共設(shè)計了8張表,主要包括用戶信息、簡歷信息、職位信息、投遞記錄、企業(yè)信息、企業(yè)HR信息、收藏信息、輪播圖信息共八個實(shí)體對象。
該系統(tǒng)職位信息的提供通過Python的Scrapy框架爬取獲取,Scrapy作為一個開源免費(fèi)的爬蟲框架速度快,功能強(qiáng)大,能提供結(jié)構(gòu)性數(shù)據(jù)。其中Items負(fù)責(zé)需要抓取的數(shù)據(jù)項(xiàng),Spider負(fù)責(zé)抓取與解析數(shù)據(jù),在Pipelines中設(shè)計管道對數(shù)據(jù)進(jìn)行清洗并存儲爬取內(nèi)容。同時,通過Python的APScheduler定時器框架實(shí)現(xiàn)自動定時爬取,關(guān)鍵代碼如下:
def start_scrapy():
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
subprocess.run("scrapy crawlall".split(), shell=True)
def set_crawlCycle(dayNum):
# 一天有86400s
return float(dayNum)*86400
if __name__ == '__main__':
scheduler = BlockingScheduler(timezone='Asia/Shanghai')
# 設(shè)置爬取周期
cycle = input("設(shè)置自動定時爬取周期:")
scheduler.add_job(start_scrapy, 'interval', seconds=set_crawlCycle(cycle))
scheduler.start()
3.4 部分功能設(shè)計實(shí)現(xiàn)
1) 職位搜索以及投遞功能
包含搜索框與結(jié)果列表兩大區(qū)域,在不輸入搜索條件時,會顯示所有職位信息;輸入搜索條件后,會根據(jù)條件對職位信息進(jìn)行篩選后再顯示,效果如圖3所示:
點(diǎn)擊“申請”按鈕后,進(jìn)入選擇簡歷頁面,選擇一份簡歷后,點(diǎn)擊“投遞”按鈕,進(jìn)行簡歷投遞,投遞成功會彈窗提示用戶,然后跳轉(zhuǎn)到投遞記錄列表頁,選擇簡歷頁面彈窗提示效果圖如圖4所示。
2) 個人中心功能
點(diǎn)擊登錄按鈕,會彈出選擇登錄角色的選擇框,選擇角色經(jīng)過后端權(quán)限驗(yàn)證后,會彈窗詢問是否授權(quán)獲取信息,允許后,若是求職者登錄小程序,可以查看“我的簡歷”與“投遞記錄”等信息;若是HR登錄小程序,可以查看“收藏夾”信息,導(dǎo)航欄也會動態(tài)切換到HR的導(dǎo)航欄信息,求職者與HR登錄后的效果圖如圖5所示。
3) 興趣指數(shù)設(shè)置功能
HR可以尋找自己滿意的簡歷信息進(jìn)行收藏操作,效果圖如圖6所示。
同時,公司HR在登錄系統(tǒng)后也可以通過點(diǎn)擊“收藏夾”可以跳轉(zhuǎn)到收藏夾頁面,頁面包含每項(xiàng)簡歷信息,可以對簡歷進(jìn)行重新設(shè)置興趣指數(shù)。
4 結(jié)束語
基于微信小程序的求職招聘系統(tǒng)降低了求職招聘的成本,使得公司HR部門可以更加方便快捷找到適合自己的人才,而求職者能夠根據(jù)自身的需求篩選出合適的工作崗位。
本系統(tǒng)程序頁面設(shè)計豐富,樣式精美,交互性好,具有良好的容錯性,前端采用微信小程序,后端使用SpringBoot+MyBatis-Plus搭建,耦合度低,API接口地址豐富,功能完備,程序前后端交互。同時,相對比其他求職應(yīng)聘的小程序,本小程序有更加優(yōu)質(zhì)的職位信息資源,數(shù)據(jù)來源豐富可靠,通過Python網(wǎng)絡(luò)爬蟲定時對各企業(yè)招聘信息進(jìn)行爬取,能及時更新相關(guān)職位的最新消息,具有實(shí)際應(yīng)用意義。
參考文獻(xiàn):
[1] 董彥喆,熊琴,王夢琪.大數(shù)據(jù)時代我國網(wǎng)絡(luò)招聘研究綜述[J].中國市場,2021(7):82-84.
[2] 唐韻清,王一諾,馬瑞,等.基于Web的網(wǎng)上求職招聘系統(tǒng)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2021(6):29-31.
[3] 高洪濤.從零開始學(xué)微信小程序開發(fā)[M].北京:電子工業(yè)出版社,2017.
[4] 微信公眾平臺開發(fā)者文檔[EB/OL].[2021-12-23].https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html.
[5] Cay S.Java核心技術(shù)(卷2) :高級特性(原書第9版)[M].北京:機(jī)械工業(yè)出版社,2014.
【通聯(lián)編輯:謝媛媛】
收稿日期:2022-05-15
基金項(xiàng)目:2022年廣州城市理工學(xué)院教學(xué)質(zhì)量與教學(xué)改革工程(課程類)項(xiàng)目
作者簡介:圣立明(1985—) ,女,廣東廣州人,助教,碩士,研究方向?yàn)橛嬎銠C(jī)應(yīng)用技術(shù);李超(2000—) ,男,廣東廣州人,本科在讀,研究方向?yàn)檐浖_發(fā);常京(1985—) ,女,廣東廣州人,助教,碩士,研究方向?yàn)檐浖_發(fā)。