




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、題 目: 基于微信的區(qū)域互助合作公眾平臺開發(fā) 姓 名: 學(xué) 院: 專 業(yè): 班 級: 學(xué) 號: 指導(dǎo)教師: 職稱: 年 月 日 目錄摘要1關(guān)鍵詞1Abstract1Key words11.微信公眾平臺介紹及需求分析21.1當(dāng)前微信公眾平臺開發(fā)的基本情況21.2 需求分析21.3 實現(xiàn)內(nèi)容概述22.微信平臺設(shè)置開發(fā)32.1微信開發(fā)者中心32.1.1 SAE的應(yīng)用32.1.2服務(wù)器配置及交互原理分析42.2基礎(chǔ)接口配置52.2.1接受用戶消息52.2.2發(fā)送被動響應(yīng)消息62.2.3接受事件推送消息72.3自定義菜單72.4獲取用戶地理位置82.4.1獲取用戶坐標(biāo)位置82.4.2坐標(biāo)轉(zhuǎn)換到地址82.
2、5獲取用戶基本信息92.6主要服務(wù)功能92.6.1天氣預(yù)報92.6.2中英翻譯92.6.3附近搜索113.互助平臺開發(fā)113.1相關(guān)技術(shù)概述113.1.1基于PHP+MySQL+Apache平臺的開發(fā)113.1.2基于MVC模式的thinkphp框架介紹123.2主要設(shè)計123.2.1功能模塊設(shè)計123.2.2數(shù)據(jù)庫概要設(shè)計133.2.3 數(shù)據(jù)庫的詳細(xì)設(shè)計143.3主要功能實現(xiàn)163.3.1全局唯一標(biāo)識設(shè)置163.3.2實時推薦系統(tǒng)163.3.3事件、資源發(fā)布173.3.4個人信息列表183.3.5按地理位置查詢183.3.6按類型查詢193.3.7求助事件響應(yīng)193.3.8資源、事件評論19
3、4.總結(jié)與展望194.1工作總結(jié)194.2后續(xù)工作展望19致謝19參考文獻(xiàn):20基于微信的區(qū)域互助合作公眾平臺開發(fā) 摘要:針對信息阻塞及信息不對等帶來的資源利用率偏低及生活成本偏高,本平臺旨在將眾多需求信息集成,盡可能實現(xiàn)區(qū)域內(nèi)信息對等的同時,提高問題解決的效率。為達(dá)到上述目的,開發(fā)了微信公眾平臺,以確保足夠的用戶數(shù)量,同時能夠?qū)崟r地與用戶進(jìn)行交互。為確保平臺的實時性及多用戶運行,并能在微信平臺內(nèi)添加服務(wù)功能以方便用戶生活,使用SAE服務(wù)器,并基于Apache+PHP+ MySQL的組合,搭建互助平臺后臺,使用HTML/CSS搭建前端,完成平臺數(shù)據(jù)處理的相關(guān)功能,使得用戶能夠在平臺上發(fā)布所需內(nèi)
4、容及可提供的資源,并對他人的求助進(jìn)行響應(yīng),實現(xiàn)區(qū)域內(nèi)的互助。關(guān)鍵詞:微信公眾平臺;SAE服務(wù)器;PHPMutual Cooperation Based on WeChat Area Public Platform Development Abstract:For inefficient resource utilization and the high cost of living result from information block and unequal information, this platform is designed to integration numerous de
5、mand information, as far as possible to achieve equivalence of information in the area, at the same time, improveing the efficiency of problem solving. To achieve the above purpose, this paper developed a WeChat public platform, to ensure that sufficient number of users, at the same time, real time
6、interact with the user. In order to ensure the real-time of platform and can be used by multiple users, be able to add service funtion in WeChat platform for users, use the SAE server, and based on the combination of Apache + PHP + MySQL, construct platform with mutual background, using HTML/CSS fro
7、nt-end setup, complete the relevant function of data processing platform, enables the user to the platform is required for release content and response to others request of help, to achieve regional and mutual assistance.Key words: WeChat public platform;SAE server;Hypertext Preprocessor長期以來,任何交易獲利均
8、是建立在信息不對等的基礎(chǔ)之上,以此產(chǎn)生了階級,以及貧與富的巨大差距。現(xiàn)如今,兩大技術(shù)互聯(lián)網(wǎng)技術(shù)及移動端技術(shù)的迅猛發(fā)展,為打破這種交易模式,實現(xiàn)信息對等交換提供了可能。區(qū)域互助合作功能搭建于微信平臺之上,能夠?qū)崿F(xiàn)一定范圍之內(nèi),個體之間的互助。盡可能減少中間環(huán)節(jié),避免時間、資源的浪費,多快好省的解決問題,是本平臺的核心目標(biāo)。微信的巨大用戶群,為信息的數(shù)量及使用者的數(shù)量提供了保證。與此同時,本平臺的開發(fā)使用,有助于更近一步的資源優(yōu)化組合、資源合理利用。同時,區(qū)域互助合作平臺的使用,更有助于區(qū)域內(nèi)人與人和諧友善關(guān)系的建立。1.微信公眾臺介紹及需求分析1.1當(dāng)前微信公眾平臺開發(fā)的基本情況隨著智能手機(jī)更新
9、換代速度的大幅加快,移動端功能的大幅擴(kuò)充,無線網(wǎng)絡(luò)的全面覆蓋,移動設(shè)備正在以驚人的速度改變這人們的生活方式。在微信已成為一種重要信息傳播方式的今天,通過微信平臺,很多以往的不可能成為可能。2015年4月20日,中國新聞出版研究院公布第十二次全國國民閱讀調(diào)查結(jié)果,微信閱讀被首次納入調(diào)查。結(jié)果顯示,我國成年人手機(jī)閱讀群體的微信閱讀使用頻率為每天兩次,人均每天微信閱讀時長超過40分鐘1。微信成為用戶在移動端的一個重要信息接入口。而這其中來自于微信公眾號的信息又占據(jù)了大部分比重。微信公眾號依托多媒體圖文推送、互動方便快捷等優(yōu)勢備受用戶青睞2。用戶在通過微信發(fā)送多種信息的同時,與各大網(wǎng)絡(luò)社交公司的合作,
10、也為微信帶來了更多潛在用戶群體。微信的出現(xiàn),特別是其獨創(chuàng)性的掃碼功能,某種程度上革新了人們的生活方式。訂閱號可以每天群發(fā)一條信息,默認(rèn)沒有自定義菜單接口,不能申請高級接口、微信支付及商戶功能,但認(rèn)證后可以獲得自定義菜單接口。服務(wù)號每月可以群發(fā)一條信息,默認(rèn)有自定義菜單接口,認(rèn)證后每月可以群發(fā)四條信息,還將獲得高級接口,并且可以申請微信支付功能。1.2 需求分析盡可能的實現(xiàn)區(qū)域內(nèi)的資源共享與用戶互助,降低信息發(fā)布的門檻,提高信息獲取的及時性與快捷性,是本平臺開發(fā)的宗旨。在日常生活中,很大程度上當(dāng)我們個體遇到難以解決亦或不能解決的問題時,可能解決這個問題的專家就住在隔壁。所以,本平臺旨在將眾多需求
11、信息集成的同時,集思廣益,將眾人的能力集成與同一平臺。在集思廣益,盡可能多快好省的完成個人目的的同時,完成大量信息的收集,盡可能實現(xiàn)區(qū)域內(nèi)信息的對等。綜上分析,互助平臺在模塊層面可以分為以下模塊:(1)基于微信平臺的生活功能;(2)個人信息的存儲;(3)求助事件、共享資源的發(fā)布、響應(yīng)和評論;(4)對于用戶可能需要信息的實時推薦。1.3 平臺總體設(shè)計路線本項目搭建于微信公眾平臺,結(jié)合PHP+MySQL技術(shù)實現(xiàn)的自建平臺,通過微信平臺獲取用戶的唯一標(biāo)識和位置坐標(biāo),將獲取到的信息傳遞給自建平臺,從而使自建平臺能夠完成在指定區(qū)域范圍內(nèi)的互助信息處理,總體設(shè)計路線圖如下:圖 1-1 總體設(shè)計路線圖具體實
12、現(xiàn)流程如下:(1)微信平臺通過與用戶的信息應(yīng)答獲取用戶的唯一標(biāo)識和地理位置,并將之傳遞給自建平臺;(2)用戶使用自建平臺,發(fā)布自己所需要的求助事件,或者自己所能提供的資源、服務(wù);(3)使用者可以指定半徑進(jìn)行搜索,獲取范圍內(nèi)其他使用者的求助、資源或服務(wù)信息;(4)用戶可以對自己所需要的資源信息進(jìn)行預(yù)約,對自己能夠提供幫助的求助信息進(jìn)行應(yīng)答,以實現(xiàn)區(qū)域內(nèi)的高效互助;(5)用戶可以查看搜索到資源的評論信息,并在評論區(qū)進(jìn)行留言交流,從而能夠進(jìn)一步增加信息的準(zhǔn)確性與高校性;(6)系統(tǒng)對用戶的長期行為進(jìn)行分析,提取特征,并與用戶所在區(qū)域內(nèi)的資源或求助事件進(jìn)行比對,并將比對結(jié)果推薦給用戶,以方便用戶更為高效
13、的獲得自己所需要的信息。2.微信平臺配置 2.1微信開發(fā)者中心這里使用了新浪云服務(wù)器,支持程序的運行并且有域名或者擁有可有效訪問IP。在完成程序開發(fā)后,開發(fā)者需要將程序上傳到服務(wù)器,才能被微信訪問到,并進(jìn)行響應(yīng)。2.1.1 SAE的應(yīng)用使用SAE作為服務(wù)器資源,使用PHP環(huán)境+MySQL數(shù)據(jù)庫搭建運行環(huán)境。創(chuàng)建新應(yīng)用,選擇及填寫相應(yīng)標(biāo)識信息。同時,創(chuàng)建數(shù)據(jù)庫、版本,選擇SVN托管方式作為代碼管理的方式。將使用程序代碼與微信公眾平臺對接,用專業(yè)的軟件存為utf-8格式的index.php文件后上傳至服務(wù)器。SAE配置示意圖如下: 圖 2-1 SAE配置示意圖2.1.2服務(wù)器配置及交互原
14、理分析首先需要配置服務(wù)器。填寫所使用服務(wù)器域名,Token(服務(wù)器驗證標(biāo)識),選擇加解密方式已完成公眾平臺與SAE的對接。當(dāng)開發(fā)者第一次向SAE申請時,微信端將附帶參數(shù)的GET請求傳遞到填寫的URL上,SAE進(jìn)行校驗,來判斷此條消息是否屬實。此后,每次SAE收到用戶消息時,微信端會使用帶參的GET請求訪問既定URL,SAE依然通過對簽名的校驗判斷此條信息是否為對應(yīng)微信端所發(fā)送。SAE服務(wù)器通過檢驗簽名對請求進(jìn)行校驗。若核準(zhǔn)此次GET請求來自對應(yīng)微信端,則原樣返回echostr參數(shù)內(nèi)容,接入生效,成功成為開發(fā)者,否則接入失敗3。校驗示意圖如下:圖 2-2 服務(wù)器驗證示意圖加密/校驗流程如下:1)
15、 將token、timestamp、nonce三個參數(shù)進(jìn)行字典序排序2) 將三個參數(shù)字符串拼接成一個字符串進(jìn)行sha1加密3) 開發(fā)者獲得加密后的字符串可與signature對比,核準(zhǔn)該請求是否來源于微信消息交互原理示意圖如下:圖 2-3 消息交互原理用戶在發(fā)送一個觸發(fā)事件后(文字,圖片,地理位置等),微信端將封裝一個固定格式的返回消息,SAE服務(wù)器回復(fù)一個事件給公眾平臺,以平臺作為媒介回復(fù)給用戶,在這個過程中,發(fā)送方和接收方進(jìn)行了調(diào)換(ToUserName和FromUserName值互換),消息事件的的傳遞都是以XML格式在后臺進(jìn)行。關(guān)鍵代碼如下: public function valid
16、() $echoStr = $_GET"echostr" $signature = $_GET"signature" $timestamp = $_GET"timestamp" $nonce = $_GET"nonce" $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode($tmpArr); $tmpStr = sha1($tmpStr); if($tmpStr = $signat
17、ure)header('content-type:text'); echo $echoStr; exit; 2.2基礎(chǔ)接口配置2.2.1接受用戶消息消息類型包括:文本(包括表情)、圖片、語音、視頻、位置、鏈接。這些類型的消息發(fā)送后均以XML格式存儲于后臺。以地理位置為例,其XML格式為: ToUserName 消息接收方微信號,唯一FromUserName 消息發(fā)送方微信號(用戶唯一OPENID)CreateTime 消息創(chuàng)建時間MsgType 消息類型,地理位置為locationLocation_X 地理位置緯度Location_Y 地理位置經(jīng)度Scale 地圖縮放大小Lab
18、el 地理位置信息MsgId 消息ID號先提取消息類型($postObj->MsgType),從而實現(xiàn)各種消息類型的分離。同時定義接受各類消息類型的接收方法函數(shù)。返回消息的主要特征值,組成回復(fù)內(nèi)容。關(guān)鍵代碼如下:public function responseMsg() $postStr = $GLOBALS"HTTP_RAW_POST_DATA" if (!empty($postStr) $this->logger("R ".$postStr); $postObj = simplexml_load_string($postStr, '
19、;SimpleXMLElement', LIBXML_NOCDATA); $RX_TYPE = trim($postObj->MsgType); switch ($RX_TYPE) case "event": $result = $this->receiveEvent($postObj); break; case "text": $result = $this->receiveText($postObj); break; 2.2.2發(fā)送被動響應(yīng)消息公眾平臺能夠以文本、圖片、語音、視頻、音樂、圖文六種消息類型進(jìn)行回復(fù)。主要方式為文
20、本和圖文。這里給出圖文消息的XML格式:FromUserName 消息發(fā)送方ToUserName 消息接收方CreateTime 消息創(chuàng)建時間MsgType 消息類型,圖文消息必須填寫newsContent 消息內(nèi)容,圖文消息可填空ArticleCount 圖文消息個數(shù),限制為10條以內(nèi)Articles 多條圖文消息信息Title 圖文消息標(biāo)題Description 圖文消息描述 PicUrl 圖片鏈接,支持JPG、PNG格式Url 點擊圖文消息跳轉(zhuǎn)鏈接FuncFlag 星標(biāo)字段圖文消息的發(fā)送,有助于引起使用者興趣,同時極大地豐富了消息發(fā)送的形式。關(guān)鍵代碼如下: private functio
21、n receiveLink($object) $content = "你發(fā)送的是鏈接,標(biāo)題為:".$object->Title.";內(nèi)容為:".$object->Description.";鏈接地址為:".$object->Url; $result = $this->transmitText($object, $content); return $result; private function transmitText($object, $content) $xmlTpl = "<xml>
22、; <ToUserName><!CDATA%s></ToUserName> <FromUserName><!CDATA%s></FromUserName> <CreateTime>%s</CreateTime> <MsgType><!CDATAtext></MsgType> <Content><!CDATA%s></Content> </xml>" $result=sprintf($xmlTpl,$obje
23、ct->FromUserName, $object->ToUserName, time(), $content); return $result; 2.2.3接受事件推送消息在基礎(chǔ)接口中的事件消息僅包括用戶在關(guān)注和取消關(guān)注,更多的事件消息會在自定義菜單及高級接口中介紹。在單擊關(guān)注或取消關(guān)注按鈕時,會觸發(fā)subscribe或unsubscribe事件類型,從而完成程序中既定操作,如獲取用戶信息等。關(guān)鍵代碼如下: private function receiveEvent($object) $content = "" switch ($object->Even
24、t) case "subscribe": $content = "歡迎關(guān)注 " include("useinfo.php"); $content = getUserinfo($object); break; case "unsubscribe": $content = "取消關(guān)注" break; case "CLICK": switch ($object->EventKey) case "天氣預(yù)報":$content = "請輸入:天氣+(
25、城市名)" break; default: $content = "點擊菜單:".$object->EventKey; break; 2.3自定義菜單介紹個人訂閱號只能編輯生成菜單,無法開發(fā)、企業(yè)訂閱號通過微信認(rèn)證;可以申請到自定義菜單資格,服務(wù)號默認(rèn)有菜單權(quán)限。自定義類型包括如下(1)click:點擊推事件單擊click類型按鈕后,推送附帶按鈕中的key值的event事件給開發(fā)者,開發(fā)者通key值識別消息,從而完成進(jìn)一步的交互;(2)view:跳轉(zhuǎn)URL單擊view類型按鈕后,會跳轉(zhuǎn)到開發(fā)者在按鈕中填寫的網(wǎng)頁URL,從而能夠在跳轉(zhuǎn)到的URL上,結(jié)合獲取到的
26、用戶信息進(jìn)行操作。(3)scancode_push:掃碼推事件單擊按鈕后,將調(diào)用自帶的掃碼功能,完成相關(guān)操作后,根據(jù)結(jié)果進(jìn)行顯示或跳轉(zhuǎn),并將結(jié)果反饋給開發(fā)者。(4)、scancode_waitmsg:掃碼推事件且彈出“消息接收中”提示框單擊按鈕后,同樣將調(diào)用自帶的掃碼工具,完成掃碼操作,并將掃碼的結(jié)果傳給開發(fā)者,然后彈出“消息接收中”提示框,隨后開發(fā)者可以根據(jù)獲得的結(jié)果下發(fā)消息。(5)、pic_sysphoto:彈出系統(tǒng)拍照發(fā)圖單擊按鈕后,將調(diào)起移動端系統(tǒng)相機(jī),完成拍照操作,將拍攝的相片發(fā)送給開發(fā)者,同時推送事件給開發(fā)者,開發(fā)者根據(jù)收到的結(jié)果(6)、pic_photo_or_album:彈出拍
27、照或者相冊發(fā)圖單擊按鈕后,系統(tǒng)將彈出“拍照”或者“從圖庫選擇”兩種操作選擇。用戶選擇后進(jìn)入兩種不同流程。(7)、pic_weixin:彈出微信相冊發(fā)圖器單擊按鈕后,系統(tǒng)將調(diào)起微信相冊,用戶進(jìn)行照片選擇,將選擇的照片發(fā)送給開發(fā)者的SAE服務(wù)器,并推送事件給開發(fā)者,開發(fā)者根據(jù)獲得的照片以及推送的事件進(jìn)行一系列的信息處理,并反饋結(jié)果給用戶。(8)、location_select:彈出地理位置選擇器單擊按鈕后,調(diào)用微信自帶的地理位置選擇工具,拖拽地圖完成地理位置選擇操作,將選擇的地理位置以坐標(biāo)形式發(fā)送給開發(fā)者服務(wù)器,開發(fā)者根據(jù)獲得的地理位置坐標(biāo)完成一系列既定操作,并將后臺信息處理的結(jié)果反饋給用戶。(9
28、)、media_id:下發(fā)消息單擊media_id類型按鈕后,微信服務(wù)器會將開發(fā)者提前在編輯模式下,編輯的對應(yīng)于永久素材id的永久素材推送給用戶。(10)、view_limited:跳轉(zhuǎn)圖文消息URL單擊view_limited類型按鈕后,微信客戶端將跳轉(zhuǎn)到開發(fā)者提前在編輯模式下,編輯的對應(yīng)于永久素材id的URL,此時永久素材類型只支持圖文消息。成功后返回JSON數(shù)據(jù)包如下:"errcode":0,"errmsg":"ok"2.4獲取用戶地理位置2.4.1獲取用戶坐標(biāo)位置當(dāng)公眾號得到了獲得用戶地理位置的高級接口后,用戶在關(guān)注該公眾平臺
29、后,進(jìn)入公眾號進(jìn)行會話時,可以通過自定義菜單按鈕類型設(shè)置,彈出讓用戶進(jìn)行地理位置選擇的微信自帶地理位置選擇器。當(dāng)用戶根據(jù)信息提示,選擇并上傳自己的地理位置后,開發(fā)者服務(wù)器將對獲得的地理位置進(jìn)行存儲和相應(yīng)處理,以完成對應(yīng)功能。2.4.2坐標(biāo)轉(zhuǎn)換到地址當(dāng)開發(fā)者服務(wù)器獲取到用戶的地理位置坐標(biāo)后,需要在后臺坐標(biāo)轉(zhuǎn)換成用戶的真實所在地,以便于更直觀的理解并進(jìn)行分析。通過逆地址解析功能,由經(jīng)緯度信息得到地址信息。2.5獲取用戶基本信息在關(guān)注者對公眾號進(jìn)行關(guān)注操作后,公眾號可以XML格式獲得關(guān)注者的唯一標(biāo)識(加密后的微信號,公眾號與關(guān)注者之間為一對一的關(guān)系,不同公眾號不會相互影響)。公眾號可通過該方式,經(jīng)過
30、用戶的授權(quán)后,獲取一系列用戶的基本信息。2.6主要服務(wù)功能2.6.1天氣預(yù)報 通過獲取中國天氣網(wǎng)的氣象數(shù)據(jù),實現(xiàn)天氣預(yù)報功能,方便用戶查詢。國家根節(jié)點接口,以XML格式列出所有的省(自治區(qū)、直轄市)的中文名稱(quName)和拼音名稱(pyName)及省會城市的天氣信息。省級節(jié)點接口,以XML格式列出當(dāng)前省下轄所有市的中文名稱(quName)、拼音名稱(pyName)、中心坐標(biāo)、天氣信息以及城市編碼。六日天氣數(shù)據(jù),以JSON格式列出當(dāng)前城市的六日天氣狀況。將城市名轉(zhuǎn)為城市代碼的方法,這將在用戶發(fā)送城市名的時候調(diào)用。編寫接口調(diào)用函數(shù),用于向天氣網(wǎng)發(fā)送cURL請求,獲取數(shù)據(jù)。編寫獲取天氣數(shù)據(jù)的函數(shù)
31、,這里獲取實時天氣和未來3日天氣,并將返回結(jié)果封裝成圖文信息的數(shù)組。在微信公眾平臺接口函數(shù)中處理收到的文本消息時,文本將為城市名,直接調(diào)用獲取天氣的函數(shù)。天氣預(yù)報功能效果圖如下:圖 2-4 天氣預(yù)報功能效果圖A圖 2-5 天氣預(yù)報功能效果圖B 2.6.2中英翻譯 生活中大量接觸到英語,當(dāng)碰到不熟悉的單詞或者句子時,本公眾平臺提供的英漢互譯功能將給使用者幫助。版本:1.1,請求方式:get,編碼方式:utf-8主要功能:中英互譯參數(shù)說明:type - 返回結(jié)果的類型,固定為datadoctype - 返回結(jié)果的數(shù)據(jù)格式,xml或jsonversion - 版本,當(dāng)前最新版本為1.1errorCo
32、de:0 - 正常20 - 要翻譯的文本過長30 - 無法進(jìn)行有效的翻譯40 - 不支持的語言類型50 - 無效的key中英翻譯功能效果圖如下:圖 2-6 中譯英效果圖 圖 2-7 英譯中效果圖2.6.3附近搜索 通過附近搜索功能,能夠高效的找到所需要的服務(wù)。通過公眾平臺獲取用戶位置;其次,獲取周邊區(qū)域信息。使用API接口,用于返回查詢某個區(qū)域的某類POI數(shù)據(jù),且提供單個POI的詳情查詢服務(wù),用戶可以發(fā)送HTTP請求且接收json、xml的數(shù)據(jù)。Place API 提供區(qū)域檢索POI等一系列服務(wù)。使用圓形區(qū)域檢索來實現(xiàn)附近搜索功能。將獲取的JSON格式用戶坐標(biāo)信息進(jìn)行編碼,存在數(shù)組中,導(dǎo)入數(shù)據(jù)
33、庫,key值為openid。使用cURL獲取查詢結(jié)果。將JSON格式的字符串解碼成數(shù)組,檢查接口返回是否異常及是否有內(nèi)容返回。拼接內(nèi)容,封裝成如文消息返回。附近搜索功能效果圖如下:圖 2-8 附近醫(yī)院查詢效果圖圖 2-9 附近賓館查詢效果圖3.互助平臺開發(fā)3.1相關(guān)技術(shù)概述3.1.1基于PHP+MySQL+Apache平臺的開發(fā) Apache+PHP+MySQL的組合,簡稱AMP, 是一個黃金開發(fā)組合。Apache:Web服務(wù)器軟件,它快速、可靠并且可通過簡單的API擴(kuò)充,將Python/PHP等解釋器編譯到服務(wù)器中4。PHP:是一種通用開源腳本語言。該語言吸收了C等語言的精華的同時,擺脫了靜
34、態(tài)語言的局限性,常用語Web領(lǐng)域的開始。MySQL:MySQL 是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)由用戶分類保存在用戶制定的表中,而不是所有數(shù)據(jù)集中在一起,大大提高了數(shù)據(jù)存取的速度與靈活性。與Oracle、DB2、SQL Server 等數(shù)據(jù)庫類似5。3.1.2基于MVC模式的thinkphp框架介紹 ThinkPHP 是一個免費開源的,快速、簡單的,面向?qū)ο蟮妮p量級PHP 開發(fā)框架,遵循Apache2 開源協(xié)議發(fā)布,是為了簡化企業(yè)級應(yīng)用開發(fā)和敏捷Web 應(yīng)用開發(fā)而誕生的。ThinkPHP 借鑒了國外多種優(yōu)秀的框架和模式,采用面向?qū)ο蟮拈_發(fā)結(jié)構(gòu)和MVC 設(shè)計模式,融合了Struts 的Action
35、 思想和JSP 的TagLib模式,封裝了curd和一些常用操作,單一入口模式等,在模板引擎、緩存機(jī)制、認(rèn)證機(jī)制和擴(kuò)展性方面均有獨特的表現(xiàn)。使用MVC 架構(gòu)Web 應(yīng)用程序,可以使程序結(jié)構(gòu)更加清晰,增強(qiáng)代碼的穩(wěn)定性和重用性6。3.2主要設(shè)計 3.2.1功能模塊設(shè)計(1)資源、事件發(fā)布功能根據(jù)唯一標(biāo)識,用戶名獲取用戶基本信息,而后選擇事件時間、類型、發(fā)布日期,并未發(fā)布事件添加詳細(xì)說明后,連同用戶基本信息一起上傳至服務(wù)器事件表。(2)個人信息管理功能設(shè)計根據(jù)唯一標(biāo)識,用戶名從事件表中獲取該用戶發(fā)布的所有事件、資源,及所處的狀態(tài),并對用戶發(fā)布的事件、資源及其相關(guān)響應(yīng)、評論信息進(jìn)行管理。(3)推薦系統(tǒng)
36、設(shè)計根據(jù)用戶最近行為的分析,提取用戶行為特征,通過地理位置與附近可獲得的資源進(jìn)行比對,從而較為準(zhǔn)確的為用戶推薦適合用戶的資源。(4)查詢功能可分為按類型或按地理位置查詢。a) 按事件(資源)類型查詢即根據(jù)選擇的事件(資源)類型,從事件(資源)列表中查找符合類型的未響應(yīng)事件,并列表顯示。b) 按地理位置查詢事件(資源),即根據(jù)使用者本身的經(jīng)緯度坐標(biāo),查找在給定半徑之內(nèi)的未響應(yīng)求助事件(共享資源),并列表顯示。(5)響應(yīng)、評論功能對查詢到的列表顯示事件進(jìn)行響應(yīng)操作,改變該事件后臺狀態(tài)并記錄響應(yīng)者。互助平臺功能設(shè)計圖如下:圖 3-1 互助平臺功能設(shè)計圖3.2.2數(shù)據(jù)庫概要設(shè)計首先確定數(shù)據(jù)文件的命名,
37、日志文件的命名。一般來說,數(shù)據(jù)庫系統(tǒng)會自動維護(hù)系統(tǒng)內(nèi)存,但有時為了某些性能問題,可以根據(jù)需要對數(shù)據(jù)庫的內(nèi)存管理進(jìn)行另行配置.本系統(tǒng)涉及到的實體有:天氣:屬性有城市編號、城市名;地址:屬性有唯一標(biāo)識、經(jīng)度、緯度;事件:屬性有唯一標(biāo)識、事件類型、事件主題、事件發(fā)布時間、事件發(fā)布地經(jīng)度、緯度、時間具體描述、響應(yīng)信息;用戶信息:屬性有唯一標(biāo)識、用戶名、聯(lián)系方式、經(jīng)度、緯度。使用者記錄:屬性有唯一標(biāo)識用E-R圖表示其各關(guān)系如下:圖 3-2互助平臺數(shù)據(jù)庫E-R圖3.2.3 數(shù)據(jù)庫的詳細(xì)設(shè)計系統(tǒng)數(shù)據(jù)共建有用戶表、求助事件表、共享資源表、地址表、事件響應(yīng)表、資源評價表、用戶行為特征表、用戶OPENID暫存表共
38、8張表。下面介紹本系統(tǒng)關(guān)鍵的數(shù)據(jù)庫表:1)用戶信息:存儲用戶基本信息及地理位置 表 3-1 用戶信息表 2)求助事件表:記錄用戶發(fā)布的求助事件表3-2 求助事件表3)共享資源表:記錄用戶發(fā)布的共享資源表3-3 共享資源表4)地址信息表:記錄用戶地址表3-4地址信息表5)資源評價表:記錄對于共享資源的評價表3-5 資源評價表以上為數(shù)據(jù)庫的詳細(xì)設(shè)計,系統(tǒng)開發(fā)基于此設(shè)計相關(guān)信息的查詢及各屬性的存儲過程,并在之后的需求變更及開發(fā)維護(hù)過程中進(jìn)行優(yōu)化設(shè)計。3.3主要功能實現(xiàn) 3.3.1全局唯一標(biāo)識設(shè)置使用微信公眾平臺提供的唯一微信標(biāo)識,即FromUserName作為全局唯一標(biāo)識。在獲取用戶FromUser
39、Name后,使用COOKIE暫存該數(shù)據(jù)。同時通過地理位置提交按鈕獲取用戶位置坐標(biāo),并進(jìn)行暫存。當(dāng)點擊互助系統(tǒng)平臺按鈕時,將暫存的唯一標(biāo)識和地理位置添加進(jìn)用戶使用列表,從而完成用戶基本信息的設(shè)置。3.3.2實時推薦系統(tǒng) 在信息時代,用戶對信息的需求通過海量數(shù)據(jù)得到滿足,但隨著信息時代的到來,越來越多的信息爆炸式增長,網(wǎng)絡(luò)監(jiān)管體系并不健全導(dǎo)致的垃圾信息增加,用戶將難以高效的獲得對自己所需的信息,信息利用率反而降低7。為了準(zhǔn)確高效的向用戶推薦適合用戶的的信息,引入基于內(nèi)容的實時推薦系統(tǒng),推薦系統(tǒng)組成如圖3-3所示:圖 3-3 推薦系統(tǒng)組成通常由個重要的模塊組成:用戶特征收集模塊,用戶行為建模與分析模
40、塊,推薦與排序模塊8。推薦系統(tǒng)通過用戶特征收集模塊收集用戶的歷史行為,并使用用戶行為建模和分析模塊構(gòu)建合適的方法分析用戶偏好,計算相似度等,最后通過推薦與排序模塊計算用戶感興趣的信息,并將信息排序后推薦給用戶9。本平臺使用基于內(nèi)容的推薦方法,步驟如下:(1)通過用戶最近發(fā)布的求助事件或共享資源,采集用戶的行為,即從記錄用戶行為的數(shù)據(jù)庫中獲取用戶最近且經(jīng)常使用的字段;(2)對采集到的用戶行為進(jìn)行分析及特征提取,獲取用戶的偏好信息,即將獲取到的字段通過正則表達(dá)式進(jìn)行分詞操作,將關(guān)鍵詞輸出;(3)根據(jù)用戶的偏好信息,在以用戶坐標(biāo)為中心的一定區(qū)域內(nèi),比對用戶偏好和其他用戶發(fā)布求助或資源信息的相似情況,
41、即按照頻率順序從高到低,將提取出的關(guān)鍵詞與用戶所處地理位置范圍內(nèi)出現(xiàn)的資源或事件進(jìn)行比對,得到相似信息10;(4)對相似的信息按照發(fā)布時間進(jìn)行排序,并向輸出推薦結(jié)果。推薦功能效果圖如下所示:圖 3-4 推薦功能效果圖3.3.3事件、資源發(fā)布根據(jù)唯一標(biāo)識,用戶名獲取用戶基本信息,而后選擇事件時間、類型、發(fā)布日期,并對發(fā)布事件(資源)添加詳細(xì)說明后,連同用戶基本信息一起上傳至服務(wù)器事件表。信息發(fā)布界面如圖2-5所示:圖 3-5 信息發(fā)布效果圖3.3.4個人信息管理 根據(jù)唯一標(biāo)識,用戶名從事件表中獲取該用戶發(fā)布的所有事件、資源所處的狀態(tài)及相關(guān)評論、響應(yīng)者信息,并進(jìn)行管理操作。3.3.5按地理位置查詢
42、 按地理位置查詢事件,即根據(jù)使用者本身的經(jīng)緯度坐標(biāo),查找在給定半徑之內(nèi)的未響應(yīng)的求助事件或可獲得的共享資源,按更新時間排序,并列表顯示。使用算法計算范圍,核心代碼如下:function getarea($r,$lat,$lon)$latitude = $lat; $longitude = $lon; $PI = 3.14159265; $degree = (24901*1609)/360.0; $raidusMile = $r; $dpmLat = 1/$degree; $radiusLat = $dpmLat*$raidusMile; $minLat = $latitude - $radiu
43、sLat; $maxLat = $latitude + $radiusLat; $mpdLng = $degree*cos($latitude * ($PI/180); $dpmLng = 1 / $mpdLng; $radiusLng = $dpmLng*$raidusMile; $minLng = $longitude - $radiusLng; $maxLng = $longitude + $radiusLng; $area1 = array('minLat' => $minLat, 'minLng' => $minLng, 'maxLat' => $maxLat ,'maxLng' =&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園園本培訓(xùn)
- 智慧園區(qū)大連礦山智慧化工園區(qū)建設(shè)
- 餐飲店食品經(jīng)營操作流程4篇
- 培訓(xùn)說課教學(xué)
- 股骨骨折中醫(yī)護(hù)理查房
- 院感消毒隔離知識培訓(xùn)
- 合唱的音樂課件
- 幼兒園教師的成語培訓(xùn)
- 美國通識教育體系解析
- 汽車議價技巧培訓(xùn)
- 安全知識進(jìn)校園宣傳課件——XX小學(xué)
- 剖宮產(chǎn)術(shù)后再次妊娠陰道分娩管理的專家共識
- 國家開放大學(xué)《水利水電工程造價管理》形考任務(wù)1-4參考答案
- 《掃除道》樊登讀書文字版
- 教學(xué)演示文稿,建筑企業(yè)科技創(chuàng)新方法講座()
- 裝飾工程材料清單
- 模具年度保養(yǎng)計劃表
- 中國傳統(tǒng)節(jié)日文化中現(xiàn)代德育價值的研究課題結(jié)題報告
- 肺動脈導(dǎo)管監(jiān)測的參數(shù)及意義
- 職稱評審申報系統(tǒng)PPT課件
- 水利工程漿砌石工程監(jiān)理細(xì)則
評論
0/150
提交評論