当前位置: 首页 > news >正文

智能推荐社交分享小程序(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所示。

http://www.dtcms.com/a/270029.html

相关文章:

  • 【论文阅读】Improving the Diffusability of Autoencoders
  • Word2Vec模型详解:CBOW与Skip-gram
  • 结构化数据格式解析:JSON 与 XML 的技术应用与实践
  • Serverless 数据库来了?无服务器数据库 vs 传统数据库有何不同?
  • MySQL索引面试问题梳理
  • 华为eNSP防火墙实验(包含详细步骤)
  • Spring AI:检索增强生成(RAG)
  • SystemVerilog 断言重复操作符和序列操作符
  • 用 Spring Boot + Redis 实现哔哩哔哩弹幕系统(上篇博客改进版)
  • 2025年INS SCI2区,灵活交叉变异灰狼算法GWO_C/M+集群任务调度,深度解析+性能实测
  • 短视频电商APP源码开发技术栈解析:音视频、商品链路与互动设计
  • Web前端:not(否定伪类选择器)
  • 高效学习之一篇搞定分布式管理系统Git !
  • 编译安装Python 3.9(Linux Centos 7)
  • 淘宝直播与开源链动2+1模式AI智能名片S2B2C商城小程序的融合发展研究
  • Spring中Bean的实例化(xml)
  • 【docker】linux CentOS docker 安装流程
  • CSS知识复习5
  • CKS认证 | Day5 供应链安全 Trivy、kubesec、Webhook
  • 【Linux】基础开发工具(3)
  • 云归子批量混剪软件批量剪辑软件批量分割视频更新记录
  • 关于 scrapy框架 详解
  • Spring AI 基本组件详解 —— ChatClient、Prompt、Memory
  • 装修水电改造需要注意什么?水电改造有哪些注意事项?
  • C++ 的 copy and swap 惯用法
  • 05每日简报20250708
  • Kafka消息倾斜
  • 机器学习(西瓜书) 第三章 线性模型
  • Java 面向对象三大特性详解:封装、继承与多态,掌握OOP核心思想
  • OSPFv3和v2区别(续)