🎈系統亮點:websocket即時通訊、協同過濾算法、時間衰減因子模型、熱度得分算法;
一.系統開發工具與環境搭建
1.系統設計開發工具
后端使用Java編程語言的Spring boot框架
項目架構:B/S架構
運行環境:win10/win11、jdk17
小程序端:
技術:Uniapp;
UI庫:colorUI;
開發工具:HBuilderX;
前端:
技術:框架Vue.js;
UI庫:ElementUI;
開發工具:Visual Studio Code;
后端:
技術:Java語言、mybatis plus、Spring boot框架;
開發工具:IDEA 2023.3.3版本;
數據庫:
數據庫:mysql5.7/8.0;
數據庫工具:Navicat12版本;
二.系統實現(部分截圖)
2.1 用戶模塊的實現
2.1.1 注冊登錄功能實現
用戶通過小程序的/pages/Front/Register注冊界面進行注冊賬號,通過view標簽包裹注冊內容,包含四個input輸入框組,用戶昵稱、賬號、密碼和手機號。當用戶點擊注冊按鈕,該按鈕綁定了Register()點擊事件,驗證用戶輸入的信息是否為空,為空則提示用戶輸入對應信息,驗證通過后,使用this.$http.Post方法向后端發送POST請求,調用/User/OtherRegister接口進行用戶注冊,用戶注冊成功后,使用uni.redirectTo方法跳轉到登錄頁面。注冊界面圖如圖4-1所示。
用戶進入/pages/Front/Login登錄界面,輸入已注冊的賬號、密碼進行登錄,前端進行驗證用戶輸入的賬號和密碼是否為空,若為空,則調用this.$comm.ShowToast提示用戶輸入的信息為空。隨后將用戶輸入的表單數據傳遞到后端/User/SignIn接口進行驗證用戶輸入的賬號密碼在用戶表是否存在,存在則代表登錄成功。登錄界面圖如圖4-2所示。
2.1.2 話題推薦功能實現
話題推薦功能采用多維度智能算法組合模式,為不同用戶篩選感興趣的話題列表。當小程序端傳遞用戶身份標識至/Topic/TopicRecommend后端接口時,若系統無法識別有效用戶信息,則直接返回空白列表。后端從持久層獲取所有用戶的互動軌跡數據,通過群體行為分析模塊建立用戶與話題的關聯模型。系統通過計算興趣匹配度,識別出與當前用戶行為模式相近的群體集合。在話題內容篩選階段,查詢已經審核通過的有效話題數據,并將結果轉換為數據傳輸對象TopicDto。推薦權重由三部分組成:通過相似用戶行為推薦的關聯度占比30%,話題閱讀量(40%權重)、互動點贊(30%權重)、話題收藏(30%權重)構成的熱度指標占40%,以及隨時間推移自動衰減的時效因子占30%。當目標話題存在于相似用戶關注列表時,取最高匹配度值作為基礎參數。時間因子通過1/(1+log(間隔天數+1)的數學公式動態調整內容權重,使近期產生的話題獲得更合理的曝光機會。最終系統對所有待推薦內容進行綜合評分排序,形成個性化推薦話題列表返回小程序端進行展示。推薦話題界面圖如圖4-3所示。
2.1.3 實時聊天功能實現
系統提供了實時聊天的功能,用戶點擊“消息”Tabbar,進入/pages/Front/WechatCollection聊天列表,當頁面顯示的時候,調用this.GetWechatCollectionListApi()方法,查看聊天集合信息,該方法調用后端/WechatCollection/List接口,并傳遞當前用戶ID,獲取該用戶的聊天集合列表,當用戶點擊聊天集合中的某條記錄,跳轉到對應的/pages/Front/WeChat用戶聊天界面,并將當前用戶ID和聊天對方的用戶ID傳遞到該聊天界面,進來界面就調用/WechatMessage/List接口獲取聊天信息。用戶發送聊天內容,調用SendMessage進行發送消息,調用后端接口?/WechatMessage/CheckCanSendMessage,傳入當前用戶ID、對方用戶ID和消息內容,調用websocket.SendMessage方法,發送消息,并在發送后清空消息內容。實時聊天界面圖如圖4-4所示。
2.1.4?附近話題功能實現
附近話題模塊,采用瀑布流布局展示話題,將話題數據分為左右兩列leftItems和rightItems分別渲染,通過NearByListApi方法從后端接口/Topic/NearBy獲取附近話題數據,通過用戶Id查詢用戶表,獲取用戶信息,得到用戶的經緯度,從數據庫獲取所有審核通過且合法的話題,將實體對象轉換為傳輸模型,處理每個話題的距離位置,需要過濾掉超過300公里的話題信息,并按照距離進行排序。用戶可點擊話題卡片,觸發goToDetail方法跳轉到話題詳情頁,查看話題詳情信息。附近話題界面圖如圖4-5所示。
2.1.5?發布話題功能實現
小程序端,用戶可進行發布話題,進入/pages/Front/TopicEdit界面,前端使用uni-forms組件構建表單,包含標題、話題類型、可見范圍、封面、詳細圖、分享內容等必填項。點擊“提交”按鈕觸發CreateOrEditAsync方法,進行表單校驗、用戶確認后,將表單數據通過/Topic/CreateOrEdit接口,查詢用戶是否登錄,通過用戶Id查詢用戶表數據,檢查用戶是否處于發帖限制時間內,若在限制時間內則拋出異常,聲明一個話題Topic實體,將話題內容賦值給Topic實體,調用數據庫的新增方法。發布話題界面圖如圖4-6所示。
2.1.6?話題評論功能實現
用戶進入小程序,可進行瀏覽話題,通過/Comment/List獲取評論列表,查詢數據庫Comment表的列表數據,進行展示在話題評論區。用戶可發表評論,調用/Comment/CreateOrEdit進行添加評論,判斷用戶賬號是否正常,若正常,聲明一個Comment評論實體,把前端傳入的input參數拷貝到評論實體,調用數據庫的增加方法進行新增。話題評論界面圖如圖4-7所示。
2.1.7?數據分析功能實現
使用qiun-data-charts組件渲染兩個圖表,折線圖展示展示話題最近15天的瀏覽量趨勢,柱狀圖展示最近互動活躍排行。通過onShow生命周期鉤子調用后端接口獲取圖表數據,調用/Topic/MyLast15DaysViewCount接口,通過用戶Id查詢Topic話題比表,獲取當前用戶發布的所有話題,并查詢這些話題的瀏覽記錄,遍歷最近的15天,按天統計瀏覽數量,將統計結果封裝為Map,包含日期和瀏覽量,添加到結果列表中。調用后端接口/Topic/InteractionActiveCount,通過用戶Id查詢該用戶的所有話題,查詢評論過這些話題的用戶,查詢關注的當前用戶的用戶,查詢給當前用戶帖子點贊的用戶,查詢收藏當前用戶帖子的用戶。每條評論計1分,每個關注計5分,每個點贊計1分,每個收藏計1分,將用戶Id和對應的活躍值整理成結果列表返回。數據分析界面圖如圖4-8所示。
2.2?管理員模塊實現
2.2.1 用戶管理實現
管理員可以進行管理系統的所有用戶信息,可進行增刪改查、導出操作。點擊新增按鈕,彈出新增對話框,輸入賬號、密碼、角色等信息進行新增,調用/User/CreateOrEdit接口進行新增;點擊導出,調用/User/Export接口執行導出操作,創建Excel工作簿和工作表,設置導出的表頭內容包含賬號,密碼,姓名,郵箱,手機號碼,用戶角色,出生年月。遍歷用戶數據列表,將對應的數據填充到對應的單元格,設置響應類型為二進制流,通過時間戳設置文件名,并將Excel內容寫入響應輸出流。用戶管理界面圖如圖4-9所示。
2.2.2 話題管理實現
話題管理界面,支持管理員通過標題、話題類型input框查詢話題信息,調用/Topic/List接口,從數據庫進行查詢獲取話題表的數據,將話題列表以JSON格式返回給前端,展示話題信息,包含標題、話題類型、封面等信息。管理員可以進行審核用戶發布的話題,管理員可以通過話題的信息決定是否審核通過,當點擊審核通過,調用/Topic/CreateOrEdit接口,修改話題的審核狀態為審核通過,用戶將可以在小程序端查看審核通過的話題;當點擊審核不通過,修改話題的審核狀態為審核失敗,用戶將無法查看審核不通過的話題。話題管理界面圖如圖4-10所示。
2.2.3 熱門話題柱狀圖實現
系統通過Echarts技術繪制柱狀圖表,用來展現近一周各個話題的瀏覽人次。圖表的橫軸表示星期,從六天前到今天。縱軸則表示瀏覽人次的數量。不同顏色的柱體分別對應著運動健身、旅行探險、美食烹飪等諸多話題。管理員只要看看柱體的高低和顏色,就能直觀地了解到近一周哪些話題更受關注。熱門話題柱狀圖界面圖如圖4-11所示。
2.2.4?客服功能實現
管理員可通過客服導航欄,進入客服/Admin/WeChat界面,實現了一個基于Vue的即時通訊聊天界面,通過Vuex獲取用戶Id和信息,展示管理員的頭像,通過HTTP請求/WechatCollection/List接口,通過管理員Id進行查詢數據庫會話集合WechatCollection表數據,將按照創建時間降序排序,把WechatCollection實體轉換成WechatCollection傳輸模型,返回給前端,進行展示管理員的好友列表,當管理員點擊其中一個會話集合,觸發SelectOtherUserChatBtn()方法,通過/WechatMessage/List請求獲取與該好友的聊天記錄,將獲取的聊天記錄賦值給MessageList,使用滾動的方式將聊天窗口滾動到底部。客戶功能界面圖如圖4-12所示。
4.2.5?詞云圖功能實現
通過Echarts實現的詞云圖,在組件掛載后,通過mounted生命周期鉤子調用CommentWordCloundEchartApi方法,調用后端/Topic/GetTopicWordCloud接口獲取詞云圖數據,從數據庫查詢話題表已被審核的話題標題,使用HanLP分詞器對每個標題進行分詞處理,統計每個詞語的出現次數,將統計結果轉換為特定格式返回到前端,使用$nextTick確保DOM完全渲染后再初始化ECharts,渲染詞云圖。詞云圖界面圖如圖4-13所示。
2.2.6?違規舉報功能實現
管理員可進行管理用戶提交的違規舉報內容,進入/Admin/ViolationReportList違規舉報界面,使用el-row和el-col進行柵格布局,支持舉報類型、舉報人等條件篩選,違規舉報列表通過自定義組件PaginationTable展示違規舉報列表,where參數在搜索表單提交,通過url調用/ViolationReport/List接口,從數據庫進行分頁查詢獲取ViolationReport表違規舉報數據,返回給前端進行展示在列表。管理員進行處理違規舉報內容,核對用戶是否違規,選擇處罰類型和處理結果進行處理,調用/ViolationReport/Audit接口,通過違規的用戶Id獲取用戶信息,根據管理員設置的處罰類型進行修改用戶賬號,比如禁言、永久封號等處理,修改用戶的信息。修改ViolationReport違規舉報實體的處理方式,將觸發類型和處理結果保存在該違規舉報表中。違規舉報管理界面圖如圖4-14所示。
圖4-14?違規舉報管理界面圖
2.2.7?違規詞功能實現
管理員可進行設置違規詞,維護違規詞,通過新增違規詞對話框,選擇違規嚴重程度,填寫違規詞,調用/ViolationWord/CreateOrEdit,聲明一個ViolationReport違規詞實體,調用數據庫saveOrUpdate的新增方法,為違規詞表新增一條數據。管理員可修改違規詞信息,通過修改違規詞對話框,修改違規詞內容,調用/ViolationWord/CreateOrEdit接口,傳入違規詞Id信息,調用數據庫的違規詞修改方法,進行修改違規詞。可刪除違規詞,調用/ViolationWord/Deleted刪除違規詞,通過ViolationWordMapper.selectById()方法獲取該違規詞信息,調用deleteById()進行刪除。用戶在發布話題、評論時,系統將會檢測違規詞,當輸入的內容有違規詞,將會提示用戶。違規詞管理界面圖如圖4-15所示。