音乐作品分享交易网站
创建于 2025 年 11 月 12 日
项目介绍
本项目是一个面向独立音乐人与音乐爱好者的原创音乐分享与交易平台。独立音乐人往往缺少专业、便捷的线上渠道来展示和售卖自己的原创作品,而听众也缺少直接发现、试听并支持原创音乐的一站式入口。该项目正是为解决这一痛点而设计:创作者可以在平台上上传作品并定价出售,听众可以浏览、试听、购买,平台侧则通过完整的后台管理体系保障内容与交易秩序。
系统围绕”分享 + 交易”两条主线展开。分享侧提供作品上传、分类标签、在线试听、播放统计与互动评论;交易侧提供下单、支付、支付流水、下载次数限制与退款流程,同时通过音乐人认证与收益字段保障创作者权益。数据层面共设计 18 张表,覆盖用户、作品、订单、支付、互动与运营管理等完整业务域。
项目架构
项目采用前后端分离架构,包含三个工程:music-springboot 后端服务、music-web-pc 用户端(PC 网站)与 music-web-admin 后台管理端。后端基于 Spring Boot 2.7.18 + MyBatis-Plus 3.5.7 + JDK 1.8,数据层使用 MySQL 8.0,通过 mapper 与 XML 文件组织查询;前端用户端基于 Vue 3.5 + TypeScript + Vite 7 + Element Plus + Pinia,管理端基于 Vue 3 + Element Plus + ECharts,二者共享同一套 REST API。
后端按标准分层组织:controller(app / admin 两套接口)、service、mapper、entity,并以统一响应体 Result 与分页对象 PageResult 封装返回值,GlobalExceptionHandler 统一处理业务异常。认证体系采用 JWT(jjwt 0.11.5)生成 24 小时有效期的 Token,密码使用 BCrypt 加密存储,用户分为普通用户、音乐人、管理员三种角色,管理端接口与用户端接口通过 api/admin 与 api/app 前缀隔离。
核心功能
- 音乐人认证与作品上传:普通用户可提交音乐人申请,审核通过后成为音乐人。作品上传支持音频文件(单文件上限 50MB)、封面图(2MB,白名单校验 jpg/png/webp 等格式)与歌词,作品实体
MusicWork记录时长、比特率、采样率、BPM、调性、情绪标签、发行日期与版权信息等 30 余个字段。 - 试听与在线播放:每首作品区分
preview_url(试听片段)与file_url(完整音频),前端作品详情页内置 HTML5audio播放器,支持进度拖动;播放、下载次数通过独立接口累加并实时回写作品统计字段。 - 购买与支付:用户下单时由
OrderServiceImpl.createOrder生成订单号,记录买家、卖家(作品创作者)与冗余作品标题,默认附带 3 次下载限制;payOrder支持支付宝、微信、银行卡、余额四种方式(模拟支付),生成PAY前缀支付流水号,音乐作品支付后订单直接完成,无需确认收货,并保留退款流程。 - 互动与社区:点赞、收藏、评论、1-5 分评分、关注音乐人、播放记录与站内通知一应俱全,作品列表按热度、最新、推荐多维度聚合展示,首页与发现页支持分类浏览与关键词搜索。
- 后台管理:管理端覆盖用户管理、作品上下架与推荐、分类与标签维护、音乐人认证审核、订单管理与退款处理、系统设置(上传限制、交易参数)等,Dashboard 使用 ECharts 呈现用户增长与分类分布图表,管理员所有关键操作写入
admin_logs审计日志。
设计亮点
作品的”试听 - 购买 - 下载”链路是系统的核心设计:用户未购买前只能访问试听片段,下单支付后订单记录携带 download_limit(默认 3 次)与 download_count 字段控制下载次数,从数据模型上约束了数字内容的传播边界;同时订单表冗余存储作品标题与买卖双方 ID,避免了高频联表查询,是典型的交易场景反范式设计。
业务状态全部以数字枚举表达并注释语义,例如作品状态 0 下架 / 1 上架 / 2 审核中 / 3 审核失败,订单状态 0 待支付 / 1 已完成 / 2 已取消 / 3 已退款,配合管理端的批量上下架与审核接口,让内容治理与交易流转在代码层面清晰可追踪。此外,作品元数据保留了 BPM、调性、情绪等专业字段,为后续推荐算法与精细化运营预留了数据基础。
功能截图
暂无运行截图。
总结
该项目完整实现了一个原创音乐平台的业务闭环:从音乐人申请认证、作品上传与审核,到听众试听、互动与付费购买,再到管理端的内容治理、订单审计与数据统计,前后端三个工程协同工作,功能覆盖面广且模块边界清晰。技术选型均为主流稳定方案——Spring Boot 2.7 + MyBatis-Plus 支撑服务端,Vue 3 + Element Plus 支撑两端界面,JWT + BCrypt 保障认证安全,整体代码结构规范、注释详尽,是学习电商交易与内容社区类全栈项目的良好参考。