◇寶雞文理學(xué)院計(jì)算機(jī)學(xué)院 郭正輝 任曉莉
本文提出設(shè)計(jì)一套電子商務(wù)與物聯(lián)網(wǎng)技術(shù)相融合的農(nóng)產(chǎn)品助推系統(tǒng),主要分為電商銷售平臺(tái)、農(nóng)產(chǎn)品采收信息采集模塊和NFC溯源模塊三個(gè)部分。設(shè)計(jì)電商銷售平臺(tái)后端使用Spring Boot搭建,提供數(shù)據(jù)接口服務(wù),移動(dòng)端采用Flutter開(kāi)發(fā)提供電商購(gòu)買的操作界面。農(nóng)產(chǎn)品采收信息采集模塊采用壓力傳感器對(duì)農(nóng)產(chǎn)品采摘時(shí)的重量、攝像頭對(duì)外觀品相等信息進(jìn)行測(cè)量。NFC溯源模塊利用張貼在農(nóng)產(chǎn)品表面的NFC標(biāo)簽進(jìn)行溯源查詢,將NFC標(biāo)簽中的唯一ID在區(qū)塊鏈中進(jìn)行存儲(chǔ),防止標(biāo)簽被篡改,使消費(fèi)者可以獲取源產(chǎn)信息。
由于地區(qū)經(jīng)濟(jì)不發(fā)達(dá),寶雞的優(yōu)質(zhì)農(nóng)產(chǎn)品依然采用傳統(tǒng)農(nóng)商上門采購(gòu)的被動(dòng)銷售方式,不但定價(jià)十分被動(dòng),而且不利于農(nóng)產(chǎn)品的溯源體系建立。針對(duì)傳統(tǒng)銷售方式的不足,提出設(shè)計(jì)一套電子商務(wù)與物聯(lián)網(wǎng)技術(shù)相融合的農(nóng)產(chǎn)品助推系統(tǒng)[1],利用電商直銷的方式為農(nóng)戶打開(kāi)銷路,利用NFC技術(shù)進(jìn)行溯源體系的支持,從源頭進(jìn)行質(zhì)量把控。
本設(shè)計(jì)的硬件部分可以分為農(nóng)產(chǎn)品信息采集、NFC標(biāo)簽簽發(fā)和產(chǎn)源地透景三個(gè)部分,軟件部分可以分為農(nóng)產(chǎn)品銷售平臺(tái)、農(nóng)產(chǎn)品信息采集、NFC區(qū)塊鏈溯源、農(nóng)產(chǎn)品品相分析等程序??傮w的軟件功能圖如圖1所示。
圖1 總體軟件功能框圖
本次設(shè)計(jì)中在銷售平臺(tái)服務(wù)端部分使用MySQL數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的管理和存儲(chǔ),在系統(tǒng)設(shè)計(jì)之初,需要對(duì)數(shù)據(jù)庫(kù)的結(jié)構(gòu)進(jìn)行設(shè)計(jì),保證所設(shè)計(jì)的數(shù)據(jù)庫(kù)可以保證使用的前提下,做到較低的冗余性和數(shù)據(jù)所占空間的合理性。
數(shù)據(jù)庫(kù)的設(shè)計(jì)過(guò)程通過(guò)數(shù)據(jù)庫(kù)的概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)三方面展開(kāi)。由于篇幅的限制,這里只給出邏輯設(shè)計(jì)部分,系統(tǒng)數(shù)據(jù)庫(kù)相關(guān)的邏輯設(shè)計(jì)如下所示。
(1)文章(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,作者,標(biāo)題)。
(2)banner(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,banner id,界面,參數(shù),標(biāo)題,類型,banner鏈接)。
(3)欄目(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,編碼,名稱)。
(4)邀約人信息(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,聯(lián)系郵箱,聯(lián)系電話,備注,邀約人姓名)。
(5)消息發(fā)送(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新人,發(fā)送類,名稱,短信模板)。
(6)消息模板(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,編號(hào),發(fā)送條件,內(nèi)容,發(fā)送者id,標(biāo)題,消息類型)。
(7)專題(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,是否禁用,專題文章,商品id,閱讀量,標(biāo)題)。
(8)郵寄地址(id,創(chuàng)建時(shí)間,最后更新時(shí)間,詳細(xì)地址,地區(qū)編碼,市,縣區(qū),用戶id,是否默認(rèn),是否刪除,收件人,郵政編碼,省份)。
(9)商品類別(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,屬性名,商品名,商品類別id)。
(10)商品屬性(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,屬性值,屬性id)。
(11)購(gòu)物車(id,創(chuàng)建時(shí)間,最后更新時(shí)間,數(shù)量,商品id,sku id,用戶id)。
(12)商城分類(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,圖標(biāo),名稱,鏈接地址)。
(13)banner類別(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,bannerid,類別id)。
(14)收藏(id,創(chuàng)建時(shí)間,最后更新時(shí)間,商品id,用戶id)商品(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,產(chǎn)品簡(jiǎn)介,產(chǎn)品詳情,大圖列表,類別id,是否刪除,是否為人氣商品,是否為新品推薦,是否上架,收藏?cái)?shù),名稱,小圖,價(jià)格,庫(kù)存)。
(15)商品sku(id,創(chuàng)建時(shí)間,創(chuàng)建人,最后更新時(shí)間,最后更新人,sku編碼,商品id,sku名稱,原價(jià),售價(jià),庫(kù)存)。
(16)訂單(id,創(chuàng)建時(shí)間,最后更新時(shí)間,管理員備注,確認(rèn)收貨時(shí)間,優(yōu)惠券抵扣金額,收貨信息,快遞公司,用戶id,訂單備注,訂單號(hào),支付狀態(tài),支付類型,實(shí)付金額,配送費(fèi)用,快遞單號(hào),出庫(kù)時(shí)間,狀態(tài),總交易,交易金額)。
(17)訂單信息(id,創(chuàng)建時(shí)間,最后更新時(shí)間,數(shù)量,商品id,所屬訂單id,sku id,單價(jià),合計(jì))。
(18)訂單日志(id,創(chuàng)建時(shí)間,最后更新時(shí)間,日志詳情,所屬訂單id)。
(19)管理用戶(id,注冊(cè)時(shí)間,最后登錄時(shí)間,頭像,性別,最后登錄時(shí)間,手機(jī)號(hào),昵稱,密碼,密碼鹽)。
(20)系統(tǒng)配置(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,備注,參數(shù)名稱,參數(shù)值)。
(21)用戶分組(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,分組名稱,分組編號(hào),父id,所屬分組,簡(jiǎn)稱,提示)。
(22)物流公司(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,公司編碼,是否禁用,公司名稱,排序)。
(23)登錄日志(id,創(chuàng)建時(shí)間,ip地址,日志名稱,消息,狀態(tài))。
(24)系統(tǒng)菜單(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,編號(hào),組件配置,是否隱藏,圖標(biāo),是否為菜單,是否默認(rèn)打開(kāi),級(jí)別,名稱,父菜單編號(hào),遞歸菜單編號(hào),狀態(tài),鼠標(biāo)懸停提示,連接)。
(25)通知(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新人,最后更新時(shí)間,內(nèi)容,標(biāo)題,類型)。
(26)操作日志(id,創(chuàng)建時(shí)間,類型,日志名稱,日志類型,詳細(xì)信息,方法,狀態(tài))。
(27)分級(jí)顯示控制(id,菜單id,role id)角色(id,創(chuàng)建時(shí)間,創(chuàng)建人,最后更新時(shí)間,最后更新人,分組id,角色名稱,角色編號(hào),所屬父id,提示,版本)。
(28)用戶賬號(hào)(id,創(chuàng)建人,創(chuàng)建時(shí)間,最后更新時(shí)間,最后更新人,作者,內(nèi)容,欄目id,分組id,郵箱,姓名,密碼,聯(lián)系方式,角色id,密碼鹽,性別,狀態(tài))。
與大多數(shù)農(nóng)產(chǎn)品在線銷售方式相同,本系統(tǒng)農(nóng)產(chǎn)品銷售平臺(tái)部分也采用了“服務(wù)端+移動(dòng)端”的形式向用戶提供服務(wù)。服務(wù)端程序使用Spring boot作為基礎(chǔ)web服務(wù)框架,將所有服務(wù)使用微服務(wù)的架構(gòu)方式進(jìn)行,農(nóng)戶商家通過(guò)在服務(wù)端的管理界面進(jìn)行農(nóng)商產(chǎn)品的信息上傳錄入,再通過(guò)API接口到達(dá)消費(fèi)者的手機(jī)上。消費(fèi)者通過(guò)手機(jī)APP可以即時(shí)瀏覽新上架的新鮮農(nóng)產(chǎn)品,可以對(duì)采收時(shí)間進(jìn)行預(yù)約把控,獲得最新鮮的時(shí)令農(nóng)時(shí)果蔬。
(1)服務(wù)端。農(nóng)產(chǎn)品助推系統(tǒng)的服務(wù)端使用Java語(yǔ)言編寫,通過(guò)Vue實(shí)現(xiàn)后臺(tái)管理界面。服務(wù)端后端程序提供HTTP API接口,可以通過(guò)瀏覽器對(duì)后臺(tái)銷售的農(nóng)產(chǎn)品進(jìn)行信息錄入上傳、已有信息進(jìn)行更新刪除等操作。在進(jìn)行農(nóng)產(chǎn)品信息管理之前必須進(jìn)行登錄操作,之后便可以進(jìn)行商品、用戶等信息的管理。
服務(wù)端遵循MVC三層架構(gòu)模式并融合了時(shí)下流行的微服務(wù)+SPA單頁(yè)應(yīng)用開(kāi)發(fā)模式。服務(wù)端為Browser/Server體系結(jié)構(gòu)應(yīng)用,數(shù)據(jù)交互控制部分由服務(wù)端的控制器層進(jìn)行邏輯實(shí)現(xiàn),數(shù)據(jù)庫(kù)的讀寫以及數(shù)據(jù)持久層則依賴于模型層代碼進(jìn)行維護(hù)。當(dāng)農(nóng)戶商家對(duì)后臺(tái)農(nóng)產(chǎn)品數(shù)據(jù)更新后,通過(guò)動(dòng)態(tài)的數(shù)據(jù)交互方式可以實(shí)現(xiàn)全體用戶的同步更新,降低了維護(hù)難度。服務(wù)端的管理流程圖如圖2所示。
圖2 服務(wù)端管理流程圖
(2)移動(dòng)端。銷售平臺(tái)的移動(dòng)端采用跨平臺(tái)的Flutter方案進(jìn)行開(kāi)發(fā)[2],代碼邏輯使用Dart語(yǔ)言編寫實(shí)現(xiàn)。消費(fèi)者用戶在移動(dòng)端對(duì)自己的會(huì)員信息進(jìn)行維護(hù),錄入收貨信息、配送方式等信息。在登錄后,用戶可以進(jìn)行農(nóng)產(chǎn)品的在線選購(gòu),通過(guò)添加購(gòu)物車操作將產(chǎn)品加入購(gòu)物車,此時(shí)可以進(jìn)行其他商品的瀏覽操做,當(dāng)需要付款購(gòu)買時(shí),僅需要再次打開(kāi)購(gòu)物車即可。
在提交訂單后,便可以等待賣家的物流配送,整體的操作流程如圖3所示。
圖3 移動(dòng)端操作流程圖
為了對(duì)追溯農(nóng)產(chǎn)品進(jìn)行充足的基礎(chǔ)數(shù)據(jù)準(zhǔn)備,在采收環(huán)節(jié)將通過(guò)農(nóng)產(chǎn)品品相圖像及采收時(shí)的鮮重進(jìn)行數(shù)據(jù)的采集工作。采集程序通過(guò)獲取來(lái)自硬件通過(guò)網(wǎng)絡(luò)發(fā)送的傳感器數(shù)值[3],顯示在nodejs編寫的圖形界面中。通過(guò)對(duì)攝像頭的控制,將果蔬等農(nóng)產(chǎn)品的品相圖像進(jìn)行獲取,并進(jìn)行數(shù)據(jù)記錄,作為溯源查詢的依據(jù)。農(nóng)產(chǎn)品信息采集程序運(yùn)行流程圖如圖4所示:
圖4 農(nóng)產(chǎn)品信息采集程序流程圖
(1)品相圖像采集。品相圖像數(shù)據(jù)的采集主要依賴攝像頭進(jìn)行,通過(guò)Linux中的fswebcam進(jìn)行攝像頭的調(diào)用。程序在觸發(fā)控制按鈕后執(zhí)行拍照代碼塊,執(zhí)行拍照命令,將農(nóng)產(chǎn)品的照片進(jìn)行存儲(chǔ)。在用戶進(jìn)行溯源查詢時(shí),可以獲取原始采摘時(shí)的果蔬等農(nóng)產(chǎn)品的品相圖像記錄。
(2)稱重采集。在農(nóng)產(chǎn)品采收后,會(huì)使用稱重模塊對(duì)其進(jìn)行鮮重稱重并將稱重?cái)?shù)據(jù)進(jìn)行記錄,為追溯提供基礎(chǔ)數(shù)據(jù)。當(dāng)用戶購(gòu)買產(chǎn)品后,通過(guò)追溯查詢這些信息就可以對(duì)水分等營(yíng)養(yǎng)物質(zhì)的流失進(jìn)行估算,進(jìn)而把控農(nóng)產(chǎn)品的新鮮程度。
(1)NFC標(biāo)簽簽發(fā)。NFC標(biāo)簽具有唯一的ID,且不可進(jìn)行復(fù)制。在采收后通過(guò)RC 522 RFID讀寫器模塊對(duì)NFC原始標(biāo)簽ID進(jìn)行獲取,通過(guò)將農(nóng)產(chǎn)品采收階段采集的基礎(chǔ)數(shù)據(jù)與之進(jìn)行關(guān)聯(lián),方便消費(fèi)者受到商品后進(jìn)行產(chǎn)源追溯[4]。
(2)NFC標(biāo)簽識(shí)讀。NFC標(biāo)簽識(shí)讀過(guò)程在支持NFC功能的手機(jī)上進(jìn)行,通過(guò)調(diào)用安卓手機(jī)的NFC權(quán)限進(jìn)行模塊訪問(wèn),讀取NFC貼紙上的信息[5]。
(3)區(qū)塊鏈建立。為了對(duì)農(nóng)產(chǎn)品的信息進(jìn)行公證的存儲(chǔ)和提供公眾的可驗(yàn)證性,在NFC標(biāo)簽的簽發(fā)階段對(duì)每個(gè)標(biāo)簽的唯一ID進(jìn)行區(qū)塊化的存儲(chǔ)[6]。使得每個(gè)NFC標(biāo)簽都能從去中心化的存儲(chǔ)服務(wù)節(jié)點(diǎn)中進(jìn)行驗(yàn)證,從而降低偽造的可能。
本文對(duì)基于物聯(lián)網(wǎng)的寶雞農(nóng)產(chǎn)品助推系統(tǒng)進(jìn)行了設(shè)計(jì)開(kāi)發(fā),并通過(guò)各部分的介紹說(shuō)明初步完成了系統(tǒng)的設(shè)計(jì)。通過(guò)使用NFC技術(shù)簡(jiǎn)單地實(shí)現(xiàn)了對(duì)寶雞地區(qū)農(nóng)產(chǎn)品的溯源體系建立。在農(nóng)產(chǎn)品追源的實(shí)際應(yīng)用中,也同時(shí)運(yùn)用互聯(lián)網(wǎng)電子商務(wù)技術(shù)對(duì)農(nóng)產(chǎn)品進(jìn)行助推助銷,幫助農(nóng)戶增收致富。從地區(qū)發(fā)展和國(guó)家食品安全政策的落實(shí)上也具有一定的助推作用,通過(guò)綠色無(wú)公害的特色農(nóng)產(chǎn)品打造綠色寶雞的生態(tài)名牌。