【开源】SpringBoot框架开发快乐贩卖馆管理系统

news2024/12/29 10:23:14

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 数据中心模块
    • 2.2 搞笑视频模块
    • 2.3 视频收藏模块
    • 2.4 视频评分模块
    • 2.5 视频交易模块
    • 2.6 视频好友模块
  • 三、系统设计
    • 3.1 用例设计
    • 3.2 数据库设计
      • 3.2.1 搞笑视频表
      • 3.2.2 视频收藏表
      • 3.2.3 视频评分表
      • 3.2.4 视频交易表
  • 四、系统展示
  • 五、核心代码
    • 5.1 查询搞笑视频
    • 5.2 加购搞笑视频
    • 5.3 搞笑视频打分
    • 5.4 搞笑视频收藏
    • 5.5 添加好友
  • 六、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的快乐贩卖馆管理系统,包含了视频模块、视频收藏模块、视频打分模块、视频交友模块、视频购物车模块和视频订单模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,快乐贩卖馆管理系统基于角色的访问控制,给视频管理员、普通用户使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏


二、功能模块

随着互联网行业各种业务的兴起和发展,这一领域的市场竞争也日趋激烈。从视频网站的角度来看,主要的视频网站并未像许多人认为的那样在激烈的市场竞争中真正获利。相反,连续的损失是视频网站面临的最困难的问题。快乐贩卖馆系统是一套交易搞笑视频的系统,用户可以在其中自由交易搞笑视频。

快乐贩卖馆系统基于Java语言开发,采用前后端分离的技术架构,前端采用Vue.js,后端采用SpringBoot框架,采用MySQL数据库。

快乐贩卖馆系统的功能性需求主要包含数据中心模块、搞笑视频模块、视频收藏模块、视频评价模块、视频交易模块、视频好友模块这六大模块,系统是基于浏览器运行的web管理后端,其中各个模块详细说明如下。

2.1 数据中心模块

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

2.2 搞笑视频模块

搞笑视频是快乐贩卖馆系统的核心,需要建立搞笑视频模块对其进行管理,搞笑视频的数据包括视频名称、视频介绍、视频价格、文件、排序值、备注、创建人、创建时间、更新人、更新时间,用户可以发布新的搞笑视频,管理员可以对用户发布的搞笑视频进行删除操作。

2.3 视频收藏模块

如果用户对某个视频非常满意,可以对其进行收藏,以便于后续快捷浏览,视频收藏的字段包括视频ID、视频名称、收藏时间、备注、创建人、创建时间、更新人、更新时间,用户可以对搞笑视频进行收藏操作,管理员可以查询用户的收藏数据。

2.4 视频评分模块

在快乐贩卖馆系统中,用户可以对搞笑视频进行评价,以此达到交互的效果,视频评分的数据包括视频ID、视频名称、视频文件、评分数值、创建人、创建时间、更新人、更新时间,用户可以对搞笑视频进行评分操作,管理员可以查询用户的评分数据。

2.5 视频交易模块

用户可以购买搞笑视频,购买需要消耗余额,余额来源自上传的搞笑视频,视频交易字段包括视频ID、视频名称、视频文件、付款状态、创建人、创建时间、更新人、更新时间,用户可以对搞笑视频进行下单、付款操作,管理员可以查询用户的交易数据。

2.6 视频好友模块

如果用户对视频的发布者很感兴趣,可以添加单向好友,方便留档,视频好友的字段包括所属人、好友ID、好友昵称、好友手机、创建人、创建时间、更新人、更新时间,用户可以添加搞笑视频的创作者,管理员可以查询用户添加的好友数据。

在这里插入图片描述


三、系统设计

3.1 用例设计

在这里插入图片描述

3.2 数据库设计

3.2.1 搞笑视频表

在这里插入图片描述

3.2.2 视频收藏表

在这里插入图片描述

3.2.3 视频评分表

在这里插入图片描述

3.2.4 视频交易表

在这里插入图片描述


四、系统展示

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


五、核心代码

5.1 查询搞笑视频

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询搞笑视频")
public Result<IPage<FunnyVideo>> getByPage(@ModelAttribute FunnyVideo funnyVideo ,@ModelAttribute PageVo page){
    QueryWrapper<FunnyVideo> qw = new QueryWrapper<>();
    User currUser = securityUtil.getCurrUser();
    if(!ZwzNullUtils.isNull(funnyVideo.getTitle())) {
        qw.like("title",funnyVideo.getTitle());
    }
    if(!ZwzNullUtils.isNull(funnyVideo.getContent())) {
        qw.like("content",funnyVideo.getContent());
    }
    IPage<FunnyVideo> data = iFunnyVideoService.page(PageUtil.initMpPage(page),qw);
    for (FunnyVideo vo : data.getRecords()) {
        // 好友状态
        QueryWrapper<FunnyOrder> orderQw = new QueryWrapper<>();
        orderQw.eq("video_id",vo.getId());
        orderQw.eq("user_id",currUser.getId());
        vo.setStatus1(iFunnyOrderService.count(orderQw));
        // 好友状态
        QueryWrapper<Friends> friQw = new QueryWrapper<>();
        friQw.eq("my_id",currUser.getId());
        friQw.eq("user_id",vo.getUserId());
        vo.setStatus2(iFriendsService.count(friQw));
        // 收藏状态
        QueryWrapper<FunnyCollect> fcQw = new QueryWrapper<>();
        fcQw.eq("video_id",vo.getId());
        fcQw.eq("user_id",currUser.getId());
        vo.setStatus3(iFunnyCollectService.count(fcQw));
    }
    return new ResultUtil<IPage<FunnyVideo>>().setData(data);
}

5.2 加购搞笑视频

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "新增单条搞笑视频订单")
public Result<FunnyOrder> addOne(@RequestParam String id){
    FunnyVideo v = iFunnyVideoService.getById(id);
    if(v == null) {
        return ResultUtil.error("视频不存在");
    }
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<FunnyOrder> orderQw = new QueryWrapper<>();
    orderQw.eq("video_id",v.getId());
    orderQw.eq("user_id", currUser.getId());
    FunnyOrder order = iFunnyOrderService.getOne(orderQw);
    if(order != null) {
        if(Objects.equals("加购",order.getStatus1())) {
            return ResultUtil.error("您已加购,请下单");
        } else {
            return ResultUtil.error("您已购买,无需重复购买");
        }
    }
    FunnyOrder o = new FunnyOrder();
    o.setVideoId(v.getId());
    o.setTitle(v.getTitle());
    o.setContent(v.getContent());
    o.setFileUrl(v.getFileUrl());
    o.setPrice(v.getPrice());
    o.setUserId(currUser.getId());
    o.setUserName(currUser.getNickname());
    o.setStatus1("加购");
    o.setStatus2("未付款");
    iFunnyOrderService.saveOrUpdate(o);
    return ResultUtil.success();
}

5.3 搞笑视频打分

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "新增单条搞笑视频评分")
public Result<Object> addOne(@RequestParam String id,@RequestParam BigDecimal grade){
    FunnyVideo video = iFunnyVideoService.getById(id);
    if(video == null) {
        return ResultUtil.error("视频不存在");
    }
    User currUser = securityUtil.getCurrUser();
    FunnyGrade c = new FunnyGrade();
    c.setVideoId(video.getId());
    c.setTitle(video.getTitle());
    c.setContent(video.getContent());
    c.setFileUrl(video.getFileUrl());
    c.setUserId(currUser.getId());
    c.setUserName(currUser.getNickname());
    c.setGrade(grade);
    c.setTime(DateUtil.now());
    iFunnyGradeService.saveOrUpdate(c);
    return ResultUtil.success();
}

5.4 搞笑视频收藏

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "新增单条搞笑视频收藏")
public Result<Object> addOne(@RequestParam String id){
    FunnyVideo video = iFunnyVideoService.getById(id);
    if(video == null) {
        return ResultUtil.error("视频不存在");
    }
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<FunnyCollect> qw = new QueryWrapper<>();
    qw.eq("video_id",video.getId());
    qw.eq("user_id",currUser.getId());
    if(iFunnyCollectService.count(qw) < 1L) {
        FunnyCollect c = new FunnyCollect();
        c.setVideoId(video.getId());
        c.setTitle(video.getTitle());
        c.setContent(video.getContent());
        c.setFileUrl(video.getFileUrl());
        c.setUserId(currUser.getId());
        c.setUserName(currUser.getNickname());
        c.setTime(DateUtil.now());
        iFunnyCollectService.saveOrUpdate(c);
    }
    return ResultUtil.success();
}

5.5 添加好友

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "添加单条好友")
public Result<Friends> addOne(@RequestParam String id){
    FunnyVideo v = iFunnyVideoService.getById(id);
    if(v == null) {
        return ResultUtil.error("视频不存在");
    }
    User currUser = securityUtil.getCurrUser();
    if(Objects.equals(v.getUserId(),currUser.getId())) {
        return ResultUtil.error("不能添加自己为好友!");
    }
    QueryWrapper<Friends> qw = new QueryWrapper<>();
    qw.eq("my_id", currUser.getId());
    qw.eq("user_id",v.getUserId());
    if(iFriendsService.count(qw) > 0L) {
        return ResultUtil.error("已添加,无需重复添加!");
    }
    User user = iUserService.getById(v.getUserId());
    if(user != null) {
        Friends f = new Friends();
        f.setMyId(currUser.getId());
        f.setUserId(user.getId());
        f.setUserName(user.getNickname());
        f.setMobile(user.getMobile());
        f.setAddTime(DateUtil.now());
        iFriendsService.saveOrUpdate(f);
    }
    return ResultUtil.success();
}

六、免责说明

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

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

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

广播

1.什么是广播 2.标准广播 BroadStandardActivity.java package com.tiger.chapter09;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.view.View;…

Vue 使用@别名

1. 安装 types/node types/node 包允许您在TypeScript项目中使用Node.js的核心模块和API&#xff0c;并提供了对它们的类型检查和智能提示的支持。 npm install types/node --save-dev 比如安装之后&#xff0c;就可以导入nodejs的 path模块&#xff0c;在下面代码 import pat…

数据要素“摸家底”:是什么?为什么?怎么做?

继经济数据“摸家底”之后&#xff0c;全国数据资源也迎来一次“大摸底”。2月19日&#xff0c;国家数据局等四部门发布《关于开展全国数据资源调查的通知》&#xff0c;提出“摸清数据资源底数”&#xff0c;为相关政策制定、试点示范等工作提供数据支持。如此大规模数据资源调…

centos7保姆级安装jdk8教程

文章目录 1、下载jdk安装包2、在centos7 创建文件夹3、解压jdk文件4、配置环境变量a、打开环境变量文件b、将配置信息复制进去。c、重新加载环境变量 5、测试是否成功 1、下载jdk安装包 jdk下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads/ Oracle…

深入了解Python的eval函数:基础用法与潜在危险【第118篇—eval函数】

深入了解Python的eval函数&#xff1a;基础用法与潜在危险 在Python中&#xff0c;eval函数是一个强大而灵活的工具&#xff0c;它允许将字符串作为代码来执行。然而&#xff0c;虽然eval在某些情况下非常方便&#xff0c;但它也潜藏着一些潜在的危险&#xff0c;如果不小心使…

MySQL 学习笔记(基础篇 Day3)

「写在前面」 本文为黑马程序员 MySQL 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. MySQL 学习笔记&#xff08;基础篇 Day1&#xff09; 2. MySQL 学习笔记&#xff08…

【论文阅读笔记】Activating More Pixels in Image Super-Resolution Transformer

论文地址&#xff1a;https://arxiv.org/abs/2205.04437 代码位置&#xff1a;https://github.com/XPixelGroup/HAT 论文小结 本文方法是基于Transformer的方法&#xff0c;探索了Transformer在低级视觉任务&#xff08;如SR&#xff09;中的应用潜力。本文提升有效利用像素范…

机器学习的魔法(一)从零开始理解吴恩达的精炼笔记

一、机器学习是什么&#xff1f; 1、机器学习的概念 机器学习是一种人工智能领域的技术和方法&#xff0c;旨在使计算机系统能够从经验数据中自动学习和改进&#xff0c;而无需显式地进行编程。它涉及开发算法和模型&#xff0c;使计算机能够自动分析和理解数据&#xff0c;并…

HIngress 的定位和基本运行原理

HIngress介绍 Higress是基于阿里内部的Envoy Gateway实践沉淀、以开源Istio Envoy为核心构建的下一代云原生网关&#xff0c;实现了流量网关 微服务网关 安全网关三合一的高集成能力&#xff0c;深度集成Dubbo、Nacos、Sentinel等微服务技术栈&#xff0c;能够帮助用户极大的…

IMU在下肢姿态估计中的应用

随着人口老龄化&#xff0c;如何改善老人运动健康成为了我们这个时代的一大挑战。近期&#xff0c;一项研究探索了将工业机器人调整以辅助运动治疗的可能性。实验重点关注运用惯性测量单元&#xff08;IMU&#xff09;来分析下肢动作&#xff0c;从而评估治疗效果实施效果。 实…

HttpRequest请求模块设计与实现(http模块二)

目录 类功能 类定义 类实现 编译测试 类功能 类定义 // HttpRequest请求模块 class HttpRequest { public:std::string _method; // 请求方法std::string _path; // 资源路径std::string _version…

论文阅读之Multimodal Chain-of-Thought Reasoning in Language Models

文章目录 简介摘要引言多模态思维链推理的挑战多模态CoT框架多模态CoT模型架构细节编码模块融合模块解码模块 实验结果总结 简介 本文主要对2023一篇论文《Multimodal Chain-of-Thought Reasoning in Language Models》主要内容进行介绍。 摘要 大型语言模型&#xff08;LLM…

hexo butterfly博客搭建美化集合+问题记录

文章目录 一、美化1. cs 和js引入2. 图标使用 三、问题总结1. vscode终端输入hexo命令报错 一、美化 1. cs 和js引入 hexo博客添加自定义css和js文件 如果想魔改和美化&#xff0c;添加自定义文件是不可避免的。下面来详细说一下css和js文件的创建和引入&#xff0c;其他文件同…

AI预测福彩3D第5弹【2024年3月8日预测--新算法重新开始计算日期】

今天是三八妇女节&#xff0c;首先祝各位女性朋友节日快乐&#xff01; 写代码真是容不得一点马虎&#xff0c;前面连续搞了4期的预测&#xff0c;其中昨晚个位开出了一个异常的号码5&#xff0c;我用AI预测的结果是5百分百不会出&#xff0c;5的出现让我非常的震惊&#xff0c…

mysql数据库入门到精通-Windows版本mysql安装(1)

文章目录 一、数据库介绍1.1、数据库概念1.2、为什么要使用数据库1.3、关系型数据库与非关系型数据库1.4、数据库术语1.5、mysql下载及地址 二、安装mysql数据库三、mysql的管理工具3.1、mysql command line client使用 四、SQL结构化查询语言4.1、SQL概述4.2、SQL发展4.3、SQL…

Transformer中Self-Attention的详细解读

Transformer最早是在论文《Attention is All You Need》中提出的&#xff0c;目前已广泛应用于NLP领域&#xff0c;如语言翻译、文本分类、问答系统等。由于在产品规划中需要使用这样的模型结构&#xff0c;因此花了一些时间对其进行了一些学习理解。 除了阅读论文及配套的代码…

(黑马出品_05)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

&#xff08;黑马出品_05&#xff09;SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术分布式搜索 今日目标1.初识elasticsearch1.1.了解ES1.1.1.elasticsearch的作用1.1.2.ELK技术栈1.1.3.elasticsearch和lucene1.1.4.为什么不是其他搜索技…

Mysql按照月份分组统计数据,当月无数据则填充0

目录 起因实现结论 起因 最近有个需求需要在sql中实现获取近半年的统计数据&#xff0c;本来以为挺简单的&#xff0c;不过这个项目数据基本没有&#xff0c;在此情况下还要实现获取近半年的数据就没办法简单group by了 实现 #如果每个月都有数据的话是比较简单的 SELECT DA…

【Linux】iftop命令详解

目录 一、iftop简介 二、安装iftop命令 2.1 命令查看测试环境系统信息 2.2 查看iftop版本与命令帮助 三、iftop的基本使用 3.1 直接使用iftop命令 3.2 iftop的显示说明 3.3 指定监控某块网卡 3.4 显示某个网段进出封包流量 3.5 按照流量排序 3.6 过滤显示连接 3.7 …

第107讲:Mycat实践指南:取模分片下的水平分表详解

文章目录 1.使用取模分片水平分表2.水平分表取模分片案例2.1.准备测试的表结构2.2.配置Mycat实现范围分片的水平分表2.2.1.配置Schema配置文件2.2.2.配置Rule分片规则配置文件2.2.3.配置Server配置文件2.2.4.重启Mycat 2.3.写入数据观察水平分表效果 1.使用取模分片水平分表 平…