【开源】基于JAVA语言的快乐贩卖馆管理系统

在这里插入图片描述


目录

  • 一、摘要
    • 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. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Solidbi仪表板介绍

效果图 设计界面 设计过程 首先配置数据源连接&#xff08;如数据不是关系型数据库的不需要配置&#xff09;新建数据集&#xff0c;编写sql查询数据&#xff1b;系统数据集支持SQL、EXCEL、SPL、RPX、JAVA等数据集。数据集中支持查询后的数据再次进行计算&#xff0c;满足复杂…

区间预测 | Matlab实现GRU-Adaboost-ABKDE的集成门控循环单元自适应带宽核密度估计多变量回归区间预测

区间预测 | Matlab实现GRU-Adaboost-ABKDE的集成门控循环单元自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现GRU-Adaboost-ABKDE的集成门控循环单元自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…

Leetcode:128. 最长连续序列

128. 最长连续序列 乍一看感觉很简单&#xff0c;一看要用O(n)??? 因为我觉得题目很难而且题目看起来很简单&#xff0c;感觉以后会用到&#x1f606;&#xff0c;做个记录 1.朴素做法 思路 答:任何一段连续的数都有一个左端点&#xff1a;比如&#xff08;1&#xff0c;…

【树莓派】网线远程连接电脑和树莓派,实现SSH连接

目录 1、硬件连接&#xff1b; 2、电脑端&#xff1a; 3、查找树莓派的IP地址 4、开启树莓派的SSH接口 5、putty 6、命令行 参考文章 通过网线连接笔记本与树莓派 开启SSH和VNC功能 无显示器安装树莓派 实现&#xff1a;打开putty输入树莓派地址使用ssh方式登陆&…

Docker与Docker Compose入门:释放你的应用部署的威力

嘿&#xff0c;大家好&#xff01;今天给大家介绍一项强大而有趣的技能&#xff0c;那就是使用 Docker 和 Docker Compose 来释放你的应用部署的威力&#xff01;无论你是一名开发人员还是系统管理员&#xff0c;掌握这个技能都将为你的工作带来巨大的好处。 本文大纲如下&…

线程安全的集合类

Java中提供了许多集合类&#xff0c;其中有的是线程安全的&#xff0c;有的是线程不安全的。线程安全的集合类有&#xff1a; 1. Vector&#xff1a;Vector类实现了一个动态数组&#xff0c;与ArrayList相似&#xff0c;但Vector是同步访问的 2. Stack&#xff1a;Stack是Vec…

代码随想录 28. 找出字符串中第一个匹配项的下标(KMP算法)

题目&#xff1a; 代码&#xff08;首刷自解 暴力 2024年1月18日&#xff09;&#xff1a; class Solution { public:int strStr(string haystack, string needle) {int n haystack.size();int nstr 0;for (int i 0; i < n; i) {if (haystack[i] needle[0]) {int hstr …

Spring boot项目java bean和xml互转

Spring boot项目实现java bean和xml互转 项目场景&#xff1a;互转方法使用jackson进行互转使用jaxws进行xml与bean的互转 搞定收工&#xff01; 项目场景&#xff1a; 工作中需要给下游第三方收费系统做数据挡板&#xff0c;由于下游系统使用的是soap webservice,里面涉及各种…

Django笔记(一):环境部署

目录 Python虚拟环境 安装virtualenv 创建环境 激活环境 关闭&#xff1a; 安装Django VSCode配置 Python插件 Django插件 解释器选择 Django部署 创建项目 创建app 创建模板 编写视图 编写路由 启动服务器 访问 Python虚拟环境 安装virtualenv pip i…

低代码助力制造业数智转型,激发创新力迎接工业 4.0

随着科技的不断进步&#xff0c;我们迈入了一个崭新的工业时代——工业4.0。这场工业革命不仅颠覆了制造业的传统形象&#xff0c;还为全球生产方式带来了前所未有的变革。 在这一过程中&#xff0c;制造业数字化转型逐渐成为主旋律&#xff0c;而低代码技术在这其中发挥着重要…

网上订货管理系统功能列表|企业手机订单管理软件

网上订货管理系统功能列表|企业手机订单管理软件 后台功能列表 &#xff08;后台支持手机版本 订货APP,管理订单的APP&#xff09; 后台登陆 输入账号密码登录企业订货管理软件系统 后台首页 显示近日,月,年订单统计&#xff0c;和收款欠款等统计。 订单模块 新建订单 &am…

Java:选择哪个Java IDE好?

Java&#xff1a;选择哪个Java IDE好? 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&…

空气制水机市场调研:预计2029年将达到5.2亿美元

空气制水机&#xff0c;是一种通过高效过滤空气中的水分子冷凝成为液态水&#xff0c;再通过一系列净化处理方法生产出高品质饮用水的设备。也就是说&#xff0c;它靠空气温度和湿度驱动取水&#xff0c;经过几层空气过滤和水路过滤&#xff0c;制造出安全健康的直饮水&#xf…

电力能源三维可视化合集 | 图扑数字孪生

电力能源是现代社会发展和运行的基石&#xff0c;渗透于工业、商业、农业、家庭生活等方方面面&#xff0c;它为经济、生活质量、环境保护和社会发展提供了巨大的机会和潜力。图扑软件应用自研 HT for Web 强大的渲染引擎&#xff0c;助力现代化的电力能源数字孪生场景&#xf…

RHCE9学习指南 第22章 用rpm管理软件

rpm全称是redhat package manager&#xff0c;后来改成rpm package manager&#xff0c;这是根据源码包编译出来的包。先从光盘中拷贝一个包&#xff0c;并看他是如何命名的。 先挂载光盘&#xff0c;然后拷贝vsftpd这个包&#xff0c;命令如下。 [rootserver ~]# mount /dev/…

如何绘制出图像的色素分布直方图

效果 如图&#xff0c;可以展示出我们的图像的颜色分布直方图,表明的图像的亮和暗 实现可视化色素分布直方图方法 这里我们对我们的灰色图片和彩色图片进行了直方图显示 import cv2 import matplotlib.pyplot as plt image cv2.imread("test.jpg") # 彩色图片->…

【leetcode 2171. 拿出最少数目的魔法豆】没有数学,全是思路

2171. 拿出最少数目的魔法豆 题目描述 给定一个 正整数 数组 beans &#xff0c;其中每个整数表示一个袋子里装的魔法豆的数目。 请你从每个袋子中 拿出 一些豆子&#xff08;也可以 不拿出&#xff09;&#xff0c;使得剩下的 非空 袋子中&#xff08;即 至少还有一颗 魔法豆…

鼠害监测站的意义是什么

鼠害监测站是专门用于监测鼠害发生情况、种群结构和危害程度的设施。这些站点通常设立在农田、森林、草原等鼠害易发区域&#xff0c;通过定期调查和监测&#xff0c;收集鼠害相关信息&#xff0c;为防治工作提供科学依据。 TH-SH1 鼠害监测站的意义 保障农业生产&#xff1a;…

精品基于Uniapp+springboot美食菜谱类管理系统APP

《[含文档PPT源码等]精品基于Uniappspringboot美食类管理系统APP》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 后台框架&#xff1a;springboot、ssm 安…

SpringBoot中整合MybatisPlus快速实现Mysql增删改查和条件构造器

场景 Mybatis-Plus(简称MP)是一个Mybatis的增强工具&#xff0c;只是在Mybatis的基础上做了增强却不做改变&#xff0c;MyBatis-Plus支持所有Mybatis原生的特性&#xff0c; 所以引入Mybatis-Plus不会对现有的Mybatis构架产生任何影响。MyBatis 增强工具包&#xff0c;简化 C…