【开源】基于Vue和SpringBoot的微信小程序的音乐平台

在这里插入图片描述

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


目录

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

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

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

相关文章

Linux--初识和基本的指令(1)

目录 前言 0.什么是操作系统 0.1 搭建 Linux 环境 0.2搭建 Linux 环境小结 1.使用 XShell 远程登录 Linux 1.1关于 Linux 桌面 1.2下载安装 XShell 1.3查看 Linux 主机 ip 1.4XShell 下的复制粘贴 2.Linux下基本指令 2.1 pwd命令 2.2 ls命令 2.3 mkdir指令 2.4 cd…

C语言三位数求解(ZZULIOJ1076:三位数求解)

题目描述 已知xyzyzzn&#xff0c;其中n是一个正整数&#xff0c;x、y、z都是数字&#xff08;0-9&#xff09;&#xff0c;编写一个程序求出x、y、z分别代表什么数字。如果无解&#xff0c;则输出“No Answer”注意&#xff1a;xyz和yzz表示一个三位数&#xff0c;而不是表示x…

【csapp lab】lab2_bomblab

文章目录 前言实验内容phase_1phase_2phase_3phase_4phase_5phase_6secret_phase 前言 刚做了csapp lab2&#xff0c;记录一下。 我这里用的的系统环境是Ubuntu22.04&#xff0c;是64位系统&#xff0c;与用32位系统可能有所差异。 实验共包括七个阶段&#xff0c;每个阶段考…

山西电力市场日前价格预测【2023-11-20】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-11-20&#xff09;山西电力市场全天平均日前电价为255.39元/MWh。其中&#xff0c;最高日前电价为436.50元/MWh&#xff0c;预计出现在18:00。最低日前电价为21.61元/MWh&#xff0c;预计出…

WMS仓库管理系统库位分配规划

分配说明 每个商品必须至少有一个分拣位&#xff08;整箱或拆零均可&#xff09;如果只设了拆零分拣位&#xff0c;则入库不分配存储位&#xff0c;只上拆零分拣位&#xff0c;对于DPS分拣商品是一品固定一个货位&#xff0c;对于RF分拣商品是动态分配货位&#xff0c;一个商品…

斯坦福机器学习 Lecture1 (机器学习,监督学习、回归问题、分类问题定义)

https://www.bilibili.com/video/BV1JE411w7Ub?p1&vd_source7a1a0bc74158c6993c7355c5490fc600 笔记如下 机器学习的定义&#xff1a;不需要明确编程就能让计算机去学习做某件事情 另一个定义 什么是监督学习&#xff1f; 给定一组 (x,y) 样本&#xff0c;学习一个 x-&g…

MySQL 教程 1.1

MySQL 教程1.1 MySQL 是最流行的关系型数据库管理系统&#xff0c;在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System&#xff1a;关系数据库管理系统)应用软件之一。 在本教程中&#xff0c;会让大家快速掌握 MySQL 的基本知识&#xff0c;并轻松…

亚马逊Lightsail:云服务新篇章,轻松开启您的数字未来

文章目录 前言一、Lightsail是什么&#xff1f;Lightsail的优势使用场景 二、AWS lightsail创建VPS总结 前言 对于开发者而言&#xff0c;当你想构建系统架构时&#xff0c;你的面前就出现了两种选择&#xff0c;选择一是花时间去亲手挑选每个亚马逊云科技组件&#xff08;云服…

iOS源码-工程目录讲解

1、 工程目录 1.1、xib 主要的界面渲染控制&#xff0c;ios开发常用的界面&#xff0c;可以在这里快速开发出来 1.2、base 基本的类&#xff0c;子类继承base类&#xff0c;就具备父类的方法&#xff0c;无需在重写 1.3、util 基础的类一些&#xff0c;处理时间等 1.4、…

【Seata源码学习 】篇三 seata客户端全局事务开启、提交与回滚

1.GlobalTransactionalInterceptor 对事务方法对增强 我们已经知道 GlobalTransactionScanner 会给bean的类或方法上面标注有GlobalTransactional 注解 和 GlobalLock的 添加一个 advisor &#xff08;DefaultPointcutAdvisor ,advisor 绑定了PointCut 的 advise) 而此处的 …

文档向量化工具(一):Apache Tika介绍

Apache Tika是什么&#xff1f;能干什么&#xff1f; Apache Tika是一个内容分析工具包。 该工具包可以从一千多种不同的文件类型&#xff08;如PPT、XLS和PDF&#xff09;中检测并提取元数据和文本。 所有这些文件类型都可以通过同一个接口进行解析&#xff0c;这使得Tika在…

如何将vscode和Linux远程链接:

如何将vscode和Linux远程链接&#xff1a; Remote - SSH - 远程登录Linux 安装Remote - SSH 我们下载完后&#xff0c;就会出现这些图标 这里点一下号 查看一下我们的主机名&#xff0c;并复制 输入ssh 用户名主机名 这里是要将ssh这个文件要放在主机下的哪个路径下&#xff…

漆包线工厂生产管理MES系统解决方案

漆包线行业老板痛点&#xff1a; 1.漆包线比较传统的行业&#xff0c;一般都是靠人工去管理&#xff0c;老板想及时知道工厂的生产&#xff0c;销售、出入库、库存情况&#xff1b; 2.型号多称重打印易错&#xff0c;没有系统前 &#xff1a;称重打印&#xff0c;出入库&…

Word 2016 删除标注

步骤&#xff1a; 菜单栏--审阅--删除--删除文档中的所有标注

4.5每日一题(幂指函数(复合函数)求导)

方法一 &#xff1a;把幂指函数用e改写 方法二&#xff1a;用对数改写

Nacos入门

Nacos&#xff1a;以“服务”为中心的现代应用架构的服务基础设施 1、Nacos功能 Nacos主要功能在微服务中主要体现&#xff1a;配置中心、注册中心 1.1、Nacos优点 简单易用、特性丰富、超高性能、超大容量、高可用&#xff08;这里几个特点下面会提到&#xff09; 有些友…

C语言每日一题(33)随机链表的复制

力扣138 随机链表的复制 题目描述 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都…

Java 11及更高版本的Oracle JDK版本

2021 年 9 月 14 日&#xff0c;Oracle 发布了可以长期支持的 JDK17 版本&#xff0c;那么从 JDK11 到 JDK17&#xff0c;到底带来了哪些特性呢&#xff1f;亚毫秒级的 ZGC 效果到底怎么样呢&#xff1f;值得我们升级吗&#xff1f;而且升级过程会遇到哪些问题呢&#xff1f;带…