【开源】SpringBoot框架开发音乐平台

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 三、系统展示
  • 四、核心代码
    • 4.1 查询单首音乐
    • 4.2 新增音乐
    • 4.3 新增音乐订单
    • 4.4 查询音乐订单
    • 4.5 新增音乐收藏
  • 五、免责说明


一、摘要

1.1 项目介绍

基于微信小程序+JAVA+Vue+SpringBoot+MySQL的音乐平台,包含了音乐档案模块、音乐收藏模块、音乐订单模块,支持PC后台和微信小程序用户端使用,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,基于微信小程序的音乐平台基于角色的访问控制,给音乐管理员、音乐用户角色使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏


二、功能模块

随着当今世界网络和计算机的飞速发展以及智能手机的普及,人们的生活从过去的必须使用计算机进行工作、娱乐、信息获取转变为通过使用更加便利的移动设备去代替。小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验。在微信作为不可或缺的工具当下,微信小程序作为内置于微信内的功能平台,能够给绝大多数人带来对于他们自己而言更简易方便的使用感受及体验。

同时,在如今的时代背景下,音乐对于大多数人来说亦是不可或缺的元素。从商场、超市、餐厅等等舒缓的背景音乐包括现在可以说是如日中天的抖音也是结合了音乐与短视频,由此可见音乐的覆盖面,将音乐与微信小程序相结合,相信是一种有可能性的研究内容。

  1. 前台功能可含包用户登录注册、搜索、播放按钮、收藏列表等。
  2. 后台功能用户管理、音乐上传、付费管理等。
  3. 网站前台要求导航清晰、图文并茂、风格统一,后台要求功能完善、操作便捷。
  4. 系统代码规范、运行稳定、安全性高,无明显BUG。

三、系统展示

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


四、核心代码

4.1 查询单首音乐

@RequestMapping(value = "/getOne", method = RequestMethod.GET)
@ApiOperation(value = "查询单首音乐")
public Result<Music> get(@RequestParam String id){User currUser = securityUtil.getCurrUser();Music music = iMusicService.getById(id);if(music == null) {return ResultUtil.error("音乐不存在");}// 收藏QueryWrapper<MusicCollect> mc = new QueryWrapper<>();mc.eq("music_id",music.getId());mc.eq("user_id",currUser.getId());music.setCollectFlag(iMusicCollectService.count(mc));// 下单QueryWrapper<MusicOrder> mo = new QueryWrapper<>();mo.eq("music_id",music.getId());mo.eq("user_id",currUser.getId());music.setOrderFlag(iMusicOrderService.count(mo));return new ResultUtil<Music>().setData(music);
}

4.2 新增音乐

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增音乐")
public Result<Music> insert(Music music){iMusicService.saveOrUpdate(music);return new ResultUtil<Music>().setData(music);
}

4.3 新增音乐订单

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "新增单条音乐订单")
public Result<MusicOrder> addOne(@RequestParam String id){Music music = iMusicService.getById(id);if(music == null) {return ResultUtil.error("音乐不存在");}User currUser = securityUtil.getCurrUser();QueryWrapper<MusicOrder> moQw = new QueryWrapper<>();moQw.eq("music_id",music.getId());moQw.eq("user_id",currUser.getId());if(iMusicOrderService.count(moQw) < 1L) {MusicOrder mo = new MusicOrder();mo.setMusicId(music.getId());mo.setTitle(music.getTitle());mo.setOwner(music.getOwner());mo.setFileUrl(music.getFileUrl());mo.setPrice(music.getPrice());mo.setStatus("未付款");mo.setUserId(currUser.getId());mo.setUserName(currUser.getNickname());iMusicOrderService.saveOrUpdate(mo);}return ResultUtil.success();
}

4.4 查询音乐订单

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询音乐订单")
public Result<IPage<MusicOrder>> getByPage(@ModelAttribute MusicOrder musicOrder ,@ModelAttribute PageVo page){QueryWrapper<MusicOrder> qw = new QueryWrapper<>();User currUser = securityUtil.getCurrUser();QueryWrapper<User> userQw = new QueryWrapper<>();userQw.eq("id",currUser.getId());userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND role_id = '1536606659751841799'");if(iUserService.count(userQw) < 1L) {qw.eq("user_id",currUser.getId());}if(!ZwzNullUtils.isNull(musicOrder.getTitle())) {qw.like("title",musicOrder.getTitle());}if(!ZwzNullUtils.isNull(musicOrder.getUserName())) {qw.like("user_name",musicOrder.getUserName());}IPage<MusicOrder> data = iMusicOrderService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<MusicOrder>>().setData(data);
}

4.5 新增音乐收藏

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "新增单条音乐收藏")
public Result<Object> addOne(@RequestParam String id){Music music = iMusicService.getById(id);if(music == null) {return ResultUtil.error("音乐不存在");}User currUser = securityUtil.getCurrUser();QueryWrapper<MusicCollect> mcQw = new QueryWrapper<>();mcQw.eq("music_id",music.getId());mcQw.eq("user_id",currUser.getId());if(iMusicCollectService.count(mcQw) < 1L) {MusicCollect mc = new MusicCollect();mc.setMusicId(music.getId());mc.setTitle(music.getTitle());mc.setOwner(music.getOwner());mc.setFileUrl(music.getFileUrl());mc.setUserId(currUser.getId());mc.setUserName(currUser.getNickname());iMusicCollectService.saveOrUpdate(mc);}return ResultUtil.success();
}

五、免责说明

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

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

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

在这里插入图片描述

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

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

相关文章

Python 类型提示(Type Hinting)及typing库

目录 为什么要进行类型提示变量添加静态类型注释函数参数的类型注释**基本类型注释****基于`typing`库**其他高级用法注意事项特殊情况类引用自身实例作为形参时的类型注释参数要求为一个函数为什么要进行类型提示 从 Python 3.5 开始引入,类型提示允许程序员为变量、函数参数…

【ctfshow—web】——信息搜集篇1(web1~20详解)

ctfshow—web题解 web1web2web3web4web5web6web7web8web9web10web11web12web13web14web15web16web17web18web19web20 web1 题目提示 开发注释未及时删除 那就找开发注释咯&#xff0c;可以用F12来查看&#xff0c;也可以CtrlU直接查看源代码呢 就拿到flag了 web2 题目提示 j…

第3.5章:StarRocks数据导入——Broker Load

注&#xff1a;本篇文章阐述的是StarRocks-3.2版本的Broker Load导入机制 一、概述 Broker Load导入方式支持从HDFS类的外部存储系统&#xff08;例如&#xff1a;HDFS、阿里OSS、腾讯COS、华为云OBS等&#xff09;&#xff0c;支持Parquet、ORC、CSV、及 JSON 四种文件格式&a…

vue里echarts的使用:画饼图和面积折线图

vue里echarts的使用,我们要先安装echarts,然后在main.js里引入: //命令安装echarts npm i echarts//main.js里引入挂载到原型上 import echarts from echarts Vue.prototype.$echarts = echarts最终我们实现的效果如下: 头部标题这里我们封装了一个全局公共组件common-he…

qt 软件发布(Windows)

1. 开发环境 QtCreator MSVC编译器 2. 源码编译 生成release或者debug版本的exe可执行文件(x64或x86) 3. windeployqt 打包 ①左下角开始菜单栏找到QT的命令交互对话框&#xff0c;如下图MSVC 2017 64-bit(根据第二步编译的类型选择64位或者32位)。 ②cd 切换到第二步可…

TCP/IP协议详解

文章目录 TCP/IP协议概述基于TCP/IP协议的应用工具协议协议的必要性 TCP/IP协议TCP/IP协议族协议的分层 传输方式的分类报文、帧、数据包等的区别TCP 和 UDP的区别 TCP/IP协议概述 TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff09;是一组通信协…

《图解HTTP》笔记2:http的构成

1&#xff0c;查看浏览器上面一个具体的http请求 浏览器地址栏输入网址&#xff1a;https://news.baidu.com/ 使用浏览器的开发者工具&#xff0c;查看网络中发送和接受的数据。 可以看到输入一个网址&#xff0c;浏览器和服务器进行了很多的交互。&#xff08;绿色部分&#…

python + selenium/appnium

Selenium 的自动化原理: selenium 自动化流程: 自动化程序调用Selenium 客户端库函数&#xff08;比如点击按钮元素&#xff09;客户端库会发送Selenium 命令 给浏览器的驱动程序浏览器驱动程序接收到命令后 ,驱动浏览器去执行命令浏览器执行命令浏览器驱动程序获取命令执行的…

ubuntu环境下openssl库的简单使用

安装 sudo apt-get install libssl-devaes算法demo 编译&#xff1a;gcc aes.c -lssl -lcrypto -o aes 运行&#xff1a;./aes #include<stdio.h> #include<stdlib.h> #include<string.h> #include<openssl/aes.h>#define AES_KEY_SIZE 128 // AES密…

UNI-APP_app跳转企业微信客服对话

uniapp打包app&#xff0c;app里点击客服&#xff0c;跳转企业微信客服对话。为什么是企业微信&#xff1f;因为只有微信小程序才可以通过 button 的 open-type‘share’ 打开微信客服对话框&#xff08;微信客服要在公众号平台配置&#xff09; 1、appId获取 &#xff08;1&a…

OJAC近屿智能张立赛博士揭秘GPT Store:技术创新、商业模式与未来趋势

> - [Look&#xff01;&#x1f440;我们的大模型商业化落地产品](https://www.airecruitas.com/aigc) >- &#x1f4d6;更多AI资讯请&#x1f449;&#x1f3fe;[关注](https://mp.weixin.qq.com/s/85qwuIydaaydMQz2g0rgMA) >- [Free三天集训营助教在线为您火热答疑…

C#_各式各样的参数(引用参数、输出参数、数组参数、具名参数、可选参数)

引用参数 值参数和引用参数的区别在于传参时是否会创建参数副本&#xff1a;值参数不会创建副本&#xff0c;而引用参数会创建副本。 换言之&#xff0c;值类型参数的参数与实体之间无直接关联&#xff0c;修改参数不会对实体产生影响&#xff1b;引用类型参数的参数与实体可视…

6.微格式

微格式 经典真题 知道什么是微格式吗&#xff1f;谈谈理解。在前端构建中应该考虑微格式吗&#xff1f; 微格式介绍 所谓微格式&#xff0c;是建立在已有的、被广泛采用的标准基础之上的一组简单的、开放的数据格式。 具体表现是把语义嵌入到 HTML 中&#xff0c;以便有助…

通过SSH 可以访问Ubuntu Desktop吗?

你可以在 Ubuntu Desktop 上开启 SSH 服务&#xff0c;以便其他机器可以通过 SSH 连接到你的服务器。以下是在 Ubuntu Desktop 上开启 SSH 服务的步骤&#xff1a; 打开终端 (Terminal) 应用程序。 输入以下命令安装 OpenSSH 服务器&#xff1a; sudo apt-get update sudo ap…

多任务爬虫(多线程和多进程)

在一台计算机中&#xff0c;我们可以同时打开多个软件&#xff0c;例如同时浏览网页、听音乐、打字等&#xff0c;这是再正常不过的事情。但仔细想想&#xff0c;为什么计算机可以同时运行这么多软件呢? 这就涉及计算机中的两个名词&#xff1a;多进程和多线程。 同样&#xf…

通信入门系列——锁相环、平方环、Costas环

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、锁相环 1、压控振荡…

重磅!MongoDB推出Atlas Stream Processing公共预览版

日前&#xff0c;MongoDB宣布推出Atlas Stream Processing公共预览版。 在Atlas平台上有兴趣尝试这项功能的开发者都享有完全的访问权限&#xff0c;可前往“阅读原文”链接点击了解更多详细信息或立即开始使用。 开发者喜欢文档型数据库的灵活性、易用性以及Query API查询方…

使用k-近邻算法改进约会网站的配对效果(kNN)

目录 谷歌笔记本&#xff08;可选&#xff09; 准备数据&#xff1a;从文本文件中解析数据 编写算法&#xff1a;编写kNN算法 分析数据&#xff1a;使用Matplotlib创建散点图 准备数据&#xff1a;归一化数值 测试算法&#xff1a;作为完整程序验证分类器 使用算法&…

js过滤取出对象中改变的属性和值

朋友公司的面试题 &#xff0c;取出对象中被改变的属性和值 const obj1 { a: 1, b: 2, c: 4 }; const obj2 { a: 1, b: 2, c: 5 }; 方法1 function testFun(obj1, obj2) {const diff {};const keys1 Object.keys(obj1);const keys2 Object.keys(obj2);const allKyes keys…

【深度学习】Gemini 1.0 Pro 如何让chatGPT扮演stable diffusion的提示词工程师

google也出了一个chatGPT&#xff0c;免费申请使用&#xff1a; https://aistudio.google.com/app/prompts/new_chat https://github.com/google/generative-ai-docs/blob/main/site/en/tutorials/rest_quickstart.ipynb 模型信息&#xff1a; $ curl https://generativelan…