【开源】基于Vue+SpringBoot的用户画像活动推荐系统

在这里插入图片描述

项目编号: S 061 ,文末获取源码。 \color{red}{项目编号:S061,文末获取源码。} 项目编号:S061,文末获取源码。


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 数据中心模块
    • 2.2 兴趣标签模块
    • 2.3 活动档案模块
    • 2.4 活动报名模块
    • 2.5 活动留言模块
  • 三、系统设计
    • 3.1 用例设计
    • 3.2 业务流程设计
    • 3.3 数据流程设计
    • 3.4 E-R图设计
  • 四、系统展示
  • 五、核心代码
    • 5.1 查询兴趣标签
    • 5.2 查询活动推荐
    • 5.3 新增活动报名
    • 5.4 新增活动收藏
    • 5.5 新增活动留言
  • 六、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的用户画像活动推荐系统,使用了协同推荐算法,包含了标签管理、活动档案、活动收藏、活动报名、活动留言模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,用户画像活动推荐系统基于角色的访问控制,给活动管理员、普通用户使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏

源码下载


二、功能模块

系统平台设计包括系统网络配置、数据库选择、软件平台选择和硬件平台选择。该推荐系统前端使用了Vue.JS,采用MVVM的思想双向绑定界面和数据;后端采用了Java的框架SpringBoot,使用MyBatis整合MySQL数据库。

在这里插入图片描述

基于用户画像的活动推荐系统的功能性需求主要包含数据中心模块、兴趣标签模块、活动档案模块、活动报名模块、活动留言模块这五大模块,系统是基于浏览器运行的web管理后端,其中各个模块详细说明如下。

2.1 数据中心模块

数据中心模块包含了基于用户画像的活动推荐系统的系统基础配置,如登录用户的管理、运营公司组织架构的管理、用户菜单权限的管理、系统日志的管理、公用文件云盘的管理。
其中登录用户管理模块,由管理员负责运维工作,管理员可以对登录用户进行增加、删除、修改、查询操作。
组织架构,指的是高校的组织架构,该模块适用于管理这些组织架构的部门层级和教师的部门归属情况。
用户菜单权限管理模块,用于管理不同权限的用户,拥有哪些具体的菜单权限。
系统日志的管理,用于维护用户登入系统的记录,方便定位追踪用户的操作情况。
公用云盘管理模块,用于统一化维护基于用户画像的活动推荐系统中的图片,如合同签订文件、合同照片等等。

2.2 兴趣标签模块

兴趣标签是对用户进行活动推荐的标准,不同的用户可以有不同的兴趣标签,所以需要对兴趣标签进行维护,兴趣标签的数据包括标签名称、标签状态、排序值、备注、创建人、创建时间、更新人、更新时间,管理员可以新增、删除、编辑和条件查询兴趣标签数据,用户可以查询管理员发布的兴趣标签数据。

2.3 活动档案模块

活动是活动推荐系统的核心实体,需要建立活动档案模块对管理员发布的活动进行管理,活动的字段包括活动标题、活动介绍、活动地点、活动时间、创建人、创建时间、更新人、更新时间,管理员可以新增、删除、编辑和条件查询活动数据,用户可以查询管理员发布的活动数据。

2.4 活动报名模块

有了活动数据之后,用户就可以选择活动进行报名,进入页面后各种活动会呈现在用户面前,用户可以搜索活动,用户可以选择活动参加,活动报名的数据包括报名人、活动名称、报名日期、报名状态、创建人、创建时间、更新人、更新时间,管理员可以新增、删除、编辑和条件查询活动报名数据,用户可以申请活动报名,和查询我的历史活动报名信息。

2.5 活动留言模块

在使用基于用户画像的活动推荐系统中,用户可能会有一些问题需要咨询,所以建立了活动留言模块,活动留言数据包括留言人、留言内容、留言时间、状态、备注、回复人、回复内容、回复时间,用户可以发起活动留言,管理员可以对用户的留言进行回复和删除操作。


三、系统设计

3.1 用例设计

在这里插入图片描述

3.2 业务流程设计

在这里插入图片描述

3.3 数据流程设计

在这里插入图片描述
在这里插入图片描述

3.4 E-R图设计

在这里插入图片描述


四、系统展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


五、核心代码

5.1 查询兴趣标签

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询兴趣标签")
public Result<IPage<Label>> getByPage(@ModelAttribute Label label ,@ModelAttribute PageVo page){QueryWrapper<Label> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(label.getTitle())) {qw.like("title",label.getTitle());}if(!ZwzNullUtils.isNull(label.getContent())) {qw.like("content",label.getContent());}IPage<Label> data = iLabelService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<Label>>().setData(data);
}

5.2 查询活动推荐

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询活动")
public Result<IPage<Activity>> getByPage(@ModelAttribute Activity activity ,@ModelAttribute PageVo page){/*** 接受前端传来的参数,开始模拟搜索*/QueryWrapper<Activity> qw = new QueryWrapper<>();/*** 获取当前登录的用户对象*/User currUser = securityUtil.getCurrUser();if(ZwzNullUtils.isNull(currUser.getLabel())) {currUser.setLabel("");}/*** 分析用户的兴趣标签*/String[] labelList = currUser.getLabel().split(",");if(!ZwzNullUtils.isNull(activity.getTitle())) {qw.like("title",activity.getTitle());}if(!ZwzNullUtils.isNull(activity.getContent())) {qw.like("content",activity.getContent());}if(!ZwzNullUtils.isNull(activity.getStatus())) {qw.eq("status",activity.getStatus());}/*** 查询系统全部的活动留言数据*/List<Message> messageList = iMessageService.list();/*** 查询系统全部的活动预定数据*/List<ActivityOrder> orderList = iActivityOrderService.list();IPage<Activity> data = iActivityService.page(PageUtil.initMpPage(page),qw);for (Activity vo : data.getRecords()) {/*** 判断登录用户是否预定了这个活动*/QueryWrapper<ActivityOrder> orderQw = new QueryWrapper<>();orderQw.eq("act_id",vo.getId());orderQw.eq("user_id",currUser.getId());vo.setOrderFlag(iActivityOrderService.count(orderQw));/*** 判断收藏*/QueryWrapper<Collect> coQw = new QueryWrapper<>();coQw.eq("user_id",currUser.getId());coQw.eq("act_id",vo.getId());vo.setCoFlag(iCollectService.count(coQw));Long likeNumber = 0L;/*** 自己喜爱的活动,一个标签加十分*/for (String s : labelList) {if(vo.getLabel().indexOf(s) > -1) {likeNumber += 10L;}}/*** 他人预定,每次加三分*/for (ActivityOrder activityOrder : orderList) {if(Objects.equals(activityOrder.getActId(),vo.getId())) {likeNumber += 3L;}}/*** 被别人留言,每次加两分*/for (Message message : messageList) {if(message.getContent().indexOf(vo.getTitle()) > -1) {likeNumber += 2L;}}vo.setLikeLevel(likeNumber);}/*** 最后对即将返回的活动数据,针对加权分值降序排序*/Collections.sort(data.getRecords(), new Comparator<Activity>() {@Overridepublic int compare(Activity o1, Activity o2) {return o2.getLikeLevel().compareTo(o1.getLikeLevel());}});/*** 返回给前端*/return new ResultUtil<IPage<Activity>>().setData(data);
}

5.3 新增活动报名

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "新增单条活动报名")
public Result<ActivityOrder> addOne(@RequestParam String id){Activity activity = iActivityService.getById(id);if(activity == null) {return ResultUtil.error("活动不存在");}User currUser = securityUtil.getCurrUser();QueryWrapper<ActivityOrder> qw = new QueryWrapper<>();qw.eq("act_id",id);qw.eq("user_id",currUser.getId());iActivityOrderService.remove(qw);ActivityOrder order = new ActivityOrder();order.setActId(activity.getId());order.setTitle(activity.getTitle());order.setContent(activity.getContent());order.setAddress(activity.getAddress());order.setTime(activity.getTime());order.setUserId(currUser.getId());order.setUserName(currUser.getNickname());iActivityOrderService.saveOrUpdate(order);return ResultUtil.success();
}

5.4 新增活动收藏

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "新增收藏")
public Result<Object> addOne(@RequestParam String id){Activity a = iActivityService.getById(id);if(a == null) {return ResultUtil.error("活动不存在");}User currUser = securityUtil.getCurrUser();QueryWrapper<Collect> coQw = new QueryWrapper<>();coQw.eq("user_id",currUser.getId());coQw.eq("act_id",a.getId());long coCount = iCollectService.count(coQw);if(coCount < 1) {Collect c = new Collect();c.setUserId(currUser.getId());c.setUserName(currUser.getNickname());c.setActId(a.getId());c.setActTitle(a.getTitle());c.setTime(DateUtil.now());iCollectService.saveOrUpdate(c);}return ResultUtil.success();
}

5.5 新增活动留言

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增活动留言")
public Result<Message> insert(Message message){Activity activity = iActivityService.getById(message.getActId());if(activity == null) {return ResultUtil.error("活动不存在");}message.setActTitle(activity.getTitle());User currUser = securityUtil.getCurrUser();message.setUserId(currUser.getId());message.setUserName(currUser.getNickname());message.setTime(DateUtil.now());message.setReplyContent("");message.setReplyName("");message.setReplyId("");message.setReplyTime("");iMessageService.saveOrUpdate(message);return new ResultUtil<Message>().setData(message);
}

六、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/211646.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker-多容器应用

一、概述 到目前为止&#xff0c;你一直在使用单个容器应用。但是&#xff0c;现在您将 MySQL 添加到 应用程序堆栈。经常会出现以下问题 - “MySQL将在哪里运行&#xff1f;将其安装在同一个 容器还是单独运行&#xff1f;一般来说&#xff0c;每个容器都应该做一件事&#x…

Vite4、Vue3、Axios 针对请求模块化封装搭配自动化导入(简单易用)

针对请求模块化封装搭配自动化导入&#xff08;简单易用&#xff09; 目标目录目标代码前提步入正题src / utils / index.jssrc /api / index.jssrc /api / request.jssrc /api / service.jssrc /api / utils.jssrc /api / modules / demo.js 自动化配置vite.config.jseslint 校…

AWS 日志分析工具

当您的网络资源托管在 AWS 中时&#xff0c;需要定期监控您的 AWS CloudTrail 日志、Amazon S3 服务器日志和 AWS ELB 日志等云日志&#xff0c;以降低任何潜在的安全风险、识别严重错误并确保满足所有合规性法规。 什么是 Amazon S3 Amazon Simple Storage Service&#xff…

德迅猎鹰(云蜜罐)有什么用

蜜罐&#xff08;Honeypot&#xff09;是一种安全技术&#xff0c;用于吸引和欺骗攻击者&#xff0c;以便收集关于攻击行为的信息和情报。它模拟了一个脆弱的系统、服务或网络资源&#xff0c;看起来对攻击者具有吸引力&#xff0c;但实际上是为了引诱攻击者暴露其攻击手法和意…

Flink Flink数据写入Kafka

一、环境准备 flink 1.14写入Kafka&#xff0c;首先在pom.xml文件中导入相关依赖 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><flink.version>1.14.6</flink.version><spark.version>2.4.3</spa…

案例052:用于日语词汇学习的微信小程序

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

AWS基于x86 vs Graviton(ARM)的RDS MySQL性能对比

概述 这是一个系列。在前面&#xff0c;我们测试了阿里云经济版&#xff08;“ARM”&#xff09;与标准版的性能/价格对比&#xff1b;华为云x86规格与ARM&#xff08;鲲鹏增强&#xff09;版的性能/价格对比。现在&#xff0c;再来看看AWS的ARM版本的RDS情况 在2018年&#…

第3章:知识表示:概述、符号知识表示、向量知识表示

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

有什么可视化数据管理工具?

有什么可视化数据管理工具&#xff1f; 相信大家对数据分析并不陌生。数据可视化不仅可以使得数据更加直观、易于理解&#xff0c;而且可以帮助用户发现数据中的潜在规律和趋势。 但是&#xff0c;对于不熟悉编程的用户来说&#xff0c;如何将枯燥的大数据转化为可视化的图和…

springboot——自动装配

自动装配 Condition: Condition内置方法&#xff1a;boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata)&#xff0c;返回值为布尔型 重写matches方法的类&#xff1a;SpringBootCondition等 SpringBootCondition&#xff1a;springboot自带的实现类…

windows如何解决端口冲突(实用篇)

在项目设计中&#xff0c;环境配置成功点击运行瞬间&#xff0c;一大堆红爆出&#xff0c;8080端口占用&#xff0c;这个是很烦人的。。。 解决方式&#xff1a; 笨方法&#xff1a;一、查看所有端口实用情况&#xff08;挨个扫&#xff09; 按住【WINR】快捷键打开运行输入…

同旺科技 USB TO RS-485 定制款适配器--- 拆解(三)

内附链接 1、USB TO RS-485 定制款适配器 ● 支持USB 2.0/3.0接口&#xff0c;并兼容USB 1.1接口&#xff1b; ● 支持USB总线供电&#xff1b; ● 支持Windows系统驱动&#xff0c;包含WIN10 / WIN11系统32 / 64位&#xff1b; ● 支持Windows RT、Linux、Mac OS X、Windo…

同旺科技 USB TO RS-485 定制款适配器--- 拆解(二)

内附链接 1、USB TO RS-485 定制款适配器 ● 支持USB 2.0/3.0接口&#xff0c;并兼容USB 1.1接口&#xff1b; ● 支持USB总线供电&#xff1b; ● 支持Windows系统驱动&#xff0c;包含WIN10 / WIN11系统32 / 64位&#xff1b; ● 支持Windows RT、Linux、Mac OS X、Windo…

TA-Lib学习研究笔记(九)——Pattern Recognition (3)

TA-Lib学习研究笔记&#xff08;九&#xff09;——Pattern Recognition &#xff08;3&#xff09; 最全面的形态识别的函数的应用&#xff0c;通过使用A股实际的数据&#xff0c;验证形态识别函数&#xff0c;用K线显示出现标志的形态走势&#xff0c;由于入口参数基本上是o…

ROS-ROS通信机制-参数服务器

文章目录 一、基础理论知识二、C实现三、Python实现 一、基础理论知识 参数服务器在ROS中主要用于实现不同节点之间的数据共享。参数服务器相当于是独立于所有节点的一个公共容器&#xff0c;可以将数据存储在该容器中&#xff0c;被不同的节点调用&#xff0c;当然不同的节点…

安卓开发APP应用程序和苹果iOS开发APP应用程序有什么区别?

随着智能手机和平板电脑在全球的普及&#xff0c;APP移动应用已成为日常生活中不可或缺的组成部分。从社交网络到电子商务平台&#xff0c;从个人理财到游戏娱乐&#xff0c;APP几乎渗透了人们所有的活动领域。在开发APP时&#xff0c;开发者通常要面对两大主流平台&#xff1a…

Docker+jenkins+gitlab实现持续集成

1.安装环境 服务器ip虚拟机版本192.168.5.132centos7.6192.168.5.152centos7.6 2. 安装docker 安装必要的一些系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2添加软件源信息&#xff0c;要确保centos7能上外网 yum-config-manager --add-repo http:…

西工大计算机学院计算机系统基础实验一(函数编写1~10)

还是那句话&#xff0c;千万不要慌&#xff0c;千万不要着急&#xff0c;耐下性子慢慢来&#xff0c;一步一个脚印&#xff0c;把基础打的牢牢的&#xff0c;一样不比那些人差。回到实验本身&#xff0c;自从​​​​​​按照西工大计算机学院计算机系统基础实验一&#xff08;…

决策树 (人工智能期末复习)

几个重要概念 信息熵&#xff1a;随机事件未按照某个属性的不同取值划分时的熵减去按照某个属性的不同取值划分时的平均 熵。即前后两次熵的差值。 表示事物的混乱程度&#xff0c;熵越大表示混乱程度越大&#xff0c;越小表示混乱程度越小。 对于随机事件&#xff0c;如果它的…

Python实现广义线性回归模型(statsmodels GLM算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 广义线性模型(Generalized Linear Model&#xff0c;简称GLM)是一种广泛应用于回归分析和分类问题的统…