智能推荐社交分享小程序(websocket即时通讯、协同过滤算法、时间衰减因子模型、热度得分算法)

🎈系统亮点: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所示。

相关推荐
小陈phd2 分钟前
langGraph从入门到精通(六)——基于 LangGraph 实现结构化输出与智能 Router 路由代理
android·网络·数据库
安当加密4 分钟前
电力系统如何防“明文传输”?某电网公司用SM2+UKey构建“端到端加密”实战
服务器·数据库·安全·阿里云
BD_Marathon9 分钟前
动态SQL(六)foreach标签2
数据库·sql
小豪GO!9 分钟前
数据库-八股
数据库
IT大白9 分钟前
1、一条SQL是如何执行的
数据库·sql
变身缎带9 分钟前
Unity里基于Luban的buff系统
数据库·unity·游戏引擎
北京地铁1号线13 分钟前
2.2 向量数据库
数据库·elasticsearch·milvus·faiss·向量数据库·hnsw
想用offer打牌20 分钟前
Spring AI vs Spring AI Alibaba
java·人工智能·后端·spring·系统架构
悟能不能悟23 分钟前
查找oracle,存储过程包含某个单词的存储过程名称
数据库·oracle
游戏开发爱好者828 分钟前
了解 Xcode 在 iOS 开发中的作用和功能有哪些
android·ios·小程序·https·uni-app·iphone·webview