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