基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】

 博主介绍:专注于Java技术领域和毕业项目实战

文末获取源码联系

 精彩专栏推荐订阅 不然下次找不到哟

Java项目精品实战案例(200套)

目录

一、效果演示

二、前言介绍

三、主要技术

四、系统设计(部分)

4.1、主要功能模块设计 

4.2、登录流程设计 

五、运行截图

5.1、前台首页功能模块

5.1.1、登录、用户注册

5.1.2、在线听歌

5.2、管理员功能模块

5.2.1、个人信息

5.2.2、音乐资讯管理

5.2.3、音乐翻唱管理

5.2.4、在线听歌管理

5.2.5、留言板管理

5.2.6、客服管理

5.2.7、轮播图

5.3、用户功能模块

5.3.1、个人中心

5.3.2、个人信息

5.3.3、音乐翻唱管理

5.3.4、我的收藏管理

六、数据库设计(部分)

七、代码参考

八、源码获取


一、效果演示

基于SpringBoot+vue的音乐网站与分享平台演示视频

二、前言介绍

本论文主要论述了如何使用JAVA语言开发一个音乐网站与分享平台 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述音乐网站与分享平台的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。

本系统的使用可以实现本音乐网站与分享平台管理的信息化,可以方便管理员进行更加方便快捷的管理,可以提高管理人员的工作效率。由于本网站的功能模块设计比较全面,所以使得整个音乐网站与分享平台信息管理的过程得以实现。

三、主要技术

技术名 作用
SpringBoot 后端框架
Vue 前端框架
MySQL 数据库

四、系统设计(部分)

4.1、主要功能模块设计 

音乐网站与分享平台的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、音乐资讯管理、音乐翻唱管理、在线听歌管理、留言板管理、系统管理,用户:首页、个人中心、音乐翻唱管理、我的收藏管理,前台首页;首页、音乐资讯、音乐翻唱、在线听歌、留言反馈、个人中心、后台管理、客服等功能。        

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第1张图片

4.2、登录流程设计 

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第2张图片

五、运行截图

5.1、前台首页功能模块

音乐网站与分享平台 ,在系统首页可以查看首页、音乐资讯、音乐翻唱、在线听歌、留言反馈、个人中心、后台管理、客服等内容,如图5-1所示。

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第3张图片

图5-1系统功能界面图   

5.1.1、登录、用户注册

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第4张图片

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第5张图片

图5-2登录、用户注册界面图

5.1.2、在线听歌

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第6张图片

图5-3在线听歌界面图

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第7张图片

图5-4音乐翻唱界面图

5.2、管理员功能模块

管理员登录,通过填写注册时输入的用户名、密码、角色进行登录,如图5-5所示。

图5-5管理员登录界面图

管理员登录进入音乐网站与分享平台可以查看首页、个人中心、用户管理、音乐资讯管理、音乐翻唱管理、在线听歌管理、留言板管理、系统管理等信息。

5.2.1、个人信息

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第8张图片

图5-6个人信息界面图

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第9张图片

图5-7用户管理界面图

5.2.2、音乐资讯管理

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第10张图片

图5-8音乐资讯管理界面图

5.2.3、音乐翻唱管理

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第11张图片

图5-9音乐翻唱管理界面图

5.2.4、在线听歌管理

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第12张图片

图5-10在线听歌管理界面图

5.2.5、留言板管理

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第13张图片

图5-11留言板管理界面图

5.2.6、客服管理

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第14张图片

图5-12客服管理界面图

5.2.7、轮播图

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第15张图片

图5-13轮播图管理界面图

5.3、用户功能模块

用户登录进入音乐网站与分享平台可以查看首页、个人中心、音乐翻唱管理、我的收藏管理等内容。

5.3.1、个人中心

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第16张图片

图5-14个人中心界面图

5.3.2、个人信息

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第17张图片

图5-15个人信息界面图

5.3.3、音乐翻唱管理

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第18张图片

图5-16音乐翻唱管理界面图

5.3.4、我的收藏管理

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第19张图片

图5-17我的收藏管理界面图

六、数据库设计(部分)

本音乐网站与分享平台采用的是MYSQL数据库,数据存储快,因为音乐网站与分享平台 ,主要的就是对信息的管理,信息内容比较多,这就需要好好的设计一个好的数据库,分类要清楚,不能添加信息的时候,造成信息太过混乱,设计好的数据库首先就需要先把各个实体之间的关系表达明确,系统的E-R图如下图所示:

1、用户管理实体图如图4-5所示:

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第20张图片

 

图4-5 用户管理实体图

2、音乐翻唱管理实体图如图4-6所示:

基于Java+SpringBoot+vue的音乐网站与分享平台设计与实现【源码+论文+演示视频+包运行成功】_第21张图片

图4-6 音乐翻唱管理实体图

 

七、代码参考

package com.controller;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.annotation.IgnoreAuth;
import com.baidu.aip.face.AipFace;
import com.baidu.aip.face.MatchRequest;
import com.baidu.aip.util.Base64Util;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.ConfigEntity;
import com.service.CommonService;
import com.service.ConfigService;
import com.utils.BaiduUtil;
import com.utils.FileUtil;
import com.utils.R;

/**
 * 通用接口
 */
@RestController
public class CommonController{
	@Autowired
	private CommonService commonService;
	
	@Autowired
	private ConfigService configService;
	
	private static AipFace client = null;
	
	private static String BAIDU_DITU_AK = null;
	
	@RequestMapping("/location")
	public R location(String lng,String lat) {
		if(BAIDU_DITU_AK==null) {
			BAIDU_DITU_AK = configService.selectOne(new EntityWrapper().eq("name", "baidu_ditu_ak")).getValue();
			if(BAIDU_DITU_AK==null) {
				return R.error("请在配置管理中正确配置baidu_ditu_ak");
			}
		}
		Map map = BaiduUtil.getCityByLonLat(BAIDU_DITU_AK, lng, lat);
		return R.ok().put("data", map);
	}
	
	/**
	 * 人脸比对
	 * 
	 * @param face1 人脸1
	 * @param face2 人脸2
	 * @return
	 */
	@RequestMapping("/matchFace")
	public R matchFace(String face1, String face2) {
		if(client==null) {
			/*String AppID = configService.selectOne(new EntityWrapper().eq("name", "AppID")).getValue();*/
			String APIKey = configService.selectOne(new EntityWrapper().eq("name", "APIKey")).getValue();
			String SecretKey = configService.selectOne(new EntityWrapper().eq("name", "SecretKey")).getValue();
			String token = BaiduUtil.getAuth(APIKey, SecretKey);
			if(token==null) {
				return R.error("请在配置管理中正确配置APIKey和SecretKey");
			}
			client = new AipFace(null, APIKey, SecretKey);
			client.setConnectionTimeoutInMillis(2000);
			client.setSocketTimeoutInMillis(60000);
		}
		JSONObject res = null;
		try {
			File file1 = new File(ResourceUtils.getFile("classpath:static/upload").getAbsolutePath()+"/"+face1);
			File file2 = new File(ResourceUtils.getFile("classpath:static/upload").getAbsolutePath()+"/"+face2);
			String img1 = Base64Util.encode(FileUtil.FileToByte(file1));
			String img2 = Base64Util.encode(FileUtil.FileToByte(file2));
			MatchRequest req1 = new MatchRequest(img1, "BASE64");
			MatchRequest req2 = new MatchRequest(img2, "BASE64");
			ArrayList requests = new ArrayList();
			requests.add(req1);
			requests.add(req2);
			res = client.match(requests);
			System.out.println(res.get("result"));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			return R.error("文件不存在");
		} catch (IOException e) {
			e.printStackTrace();
		} 
		return R.ok().put("data", com.alibaba.fastjson.JSONObject.parse(res.get("result").toString()));
	}
    
	/**
	 * 获取table表中的column列表(联动接口)
	 * @param table
	 * @param column
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/option/{tableName}/{columnName}")
	public R getOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName,String level,String parent) {
		Map params = new HashMap();
		params.put("table", tableName);
		params.put("column", columnName);
		if(StringUtils.isNotBlank(level)) {
			params.put("level", level);
		}
		if(StringUtils.isNotBlank(parent)) {
			params.put("parent", parent);
		}
		List data = commonService.getOption(params);
		return R.ok().put("data", data);
	}
	
	/**
	 * 根据table中的column获取单条记录
	 * @param table
	 * @param column
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/follow/{tableName}/{columnName}")
	public R getFollowByOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, @RequestParam String columnValue) {
		Map params = new HashMap();
		params.put("table", tableName);
		params.put("column", columnName);
		params.put("columnValue", columnValue);
		Map result = commonService.getFollowByOption(params);
		return R.ok().put("data", result);
	}
	
	/**
	 * 修改table表的sfsh状态
	 * @param table
	 * @param map
	 * @return
	 */
	@RequestMapping("/sh/{tableName}")
	public R sh(@PathVariable("tableName") String tableName, @RequestBody Map map) {
		map.put("table", tableName);
		commonService.sh(map);
		return R.ok();
	}
	
	/**
	 * 获取需要提醒的记录数
	 * @param tableName
	 * @param columnName
	 * @param type 1:数字 2:日期
	 * @param map
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/remind/{tableName}/{columnName}/{type}")
	public R remindCount(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, 
						 @PathVariable("type") String type,@RequestParam Map map) {
		map.put("table", tableName);
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		int count = commonService.remindCount(map);
		return R.ok().put("count", count);
	}
	
	/**
	 * 单列求和
	 */
	@IgnoreAuth
	@RequestMapping("/cal/{tableName}/{columnName}")
	public R cal(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
		Map params = new HashMap();
		params.put("table", tableName);
		params.put("column", columnName);
		Map result = commonService.selectCal(params);
		return R.ok().put("data", result);
	}
	
	/**
	 * 分组统计
	 */
	@IgnoreAuth
	@RequestMapping("/group/{tableName}/{columnName}")
	public R group(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
		Map params = new HashMap();
		params.put("table", tableName);
		params.put("column", columnName);
		List> result = commonService.selectGroup(params);
		return R.ok().put("data", result);
	}
	
	/**
	 * (按值统计)
	 */
	@IgnoreAuth
	@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}")
	public R value(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName) {
		Map params = new HashMap();
		params.put("table", tableName);
		params.put("xColumn", xColumnName);
		params.put("yColumn", yColumnName);
		List> result = commonService.selectValue(params);
		return R.ok().put("data", result);
	}
	
}

八、源码获取

大家点赞、收藏、关注、评论啦 、查看文章结尾获取联系方式

精彩专栏推荐订阅:下方专栏

Java项目精品实战案例(200套)

私信我即可打包获取200多个项目源码+论文+演示视频~

​​​

你可能感兴趣的:(java毕业设计,java,spring,boot,vue.js,java毕业设计项目实战,音乐网站)