Резюме:
С развитием сетевых технологий и компьютеров требования пользователей сети к сети также растут день ото дня.Обычно они используют много загружаемого программного обеспечения для загрузки и управления ими в Интернете, и они занимают место.Это очень неудобно , и реализация сетевой музыкальной библиотеки изменила эту ситуацию. Это само по себе цифровое музыкальное взаимодействие. С его помощью пользователи могут легко, быстро и безопасно реализовать крупнейший в стране музыкальный поиск для поиска песен, а также могут слушать их в режиме реального времени, добавлять свои любимые песни в коллекцию и создавать бесплатную, независимый и безопасный мир для пользователей локальная сеть. Музыка возникла в предпосылке этого требования. Это приносит большое удовольствие в повседневную жизнь людей, позволяя людям расслабиться после напряженной и усталой работы.Основываясь на этой ситуации, после полного анализа рыночных перспектив отрасли и изучения потребностей пользователей, была разработана музыка.
Одна из причин, по которой поп-музыку называют «попсой», заключается в том, что она имеет своевременность распространения. Большинство популярных песен могут стать известными в одночасье, но они также очень быстро исчезают из сознания людей. После этого его отложили в долгий ящик, и люди всегда гоняются за «новыми» звездами, отличными от прошлых. Но появление Интернета, с одной стороны, усугубило эту своевременность за счет увеличения скорости передачи, а с другой стороны, оно придало этой популярной музыке определенную стойкость, используя ее бесконечный сетевой разум. Если людям нужны эти два аспекта, то их следует отнести к музыке.Как сетевой носитель музыки, музыка оказала беспрецедентное влияние на развитие популярной музыки с точки зрения создания, распространения и оценки:
1) Развитие технологии компьютерных сетей привело людей к более популярной музыке через музыку.
2) Увеличение числа пользователей сети привело к тому, что все больше людей соприкасаются с популярной музыкой через музыку.
3) Музыка обеспечивает больше удобства для создания популярной музыки.
4) Музыка стимулировала распространение популярной музыки.
5) Музыка изменила отношение к популярной музыке.
6) Музыка не только стимулирует распространение популярной музыки, но и стимулирует частое обновление электронных и цифровых продуктов.
Основной дизайн:
Особенности дизайна:
Клиент: функция входа и регистрации, просмотр информации плейлиста на домашней странице, поиск, прослушивание песен, различные настройки песен, комментарии, моя музыка и т. д.
Сторона администратора: вход в систему, представление данных в виде дерева графиков, управление пользователями, управление списками воспроизведения, управление певцами, редактирование песен, оценка и т. д.
Основная техника:
Springboot+SpringMvc+mybatis+lombok+cache+interceptor+Jquery+html+VUE+Node.js и т. д.
Функциональный скриншот:
Домашняя страница клиента:
войти Регистрация:
Информация о плейлисте: пользователи могут искать песни на основе информации о плейлисте на главной странице.
Информация об исполнителе: пользователи могут искать песни на основе информации об исполнителе на домашней странице пользователя.
моя музыка:
Комментарий вроде:
Сторона администратора:
титульная страница:
Управление пользователями:
Менеджмент певицы:
Управление плейлистом:
Часть кода:
@RestController
@Controller
public class ConsumerController {
@Autowired
private ConsumerServiceImpl consumerService;
@Configuration
public class MyPicConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
String os = System.getProperty("os.name");
if (os.toLowerCase().startsWith("win")) { // windos系统
registry.addResourceHandler("/img/avatorImages/**")
.addResourceLocations("file:" + Constants.RESOURCE_WIN_PATH + "\img\avatorImages\");
} else { // MAC、Linux系统
registry.addResourceHandler("/img/avatorImages/**")
.addResourceLocations("file:" + Constants.RESOURCE_MAC_PATH + "/img/avatorImages/");
}
}
}
// 添加用户
@ResponseBody
@RequestMapping(value = "/user/add", method = RequestMethod.POST)
public Object addUser(HttpServletRequest req){
JSONObject jsonObject = new JSONObject();
String username = req.getParameter("username").trim();
String password = req.getParameter("password").trim();
String sex = req.getParameter("sex").trim();
String phone_num = req.getParameter("phone_num").trim();
String email = req.getParameter("email").trim();
String birth = req.getParameter("birth").trim();
String introduction = req.getParameter("introduction").trim();
String location = req.getParameter("location").trim();
String avator = req.getParameter("avator").trim();
if (username.equals("") || username == null){
jsonObject.put("code", 0);
jsonObject.put("msg", "用户名或密码错误");
return jsonObject;
}
Consumer consumer = new Consumer();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date myBirth = new Date();
try {
myBirth = dateFormat.parse(birth);
} catch (Exception e){
e.printStackTrace();
}
consumer.setUsername(username);
consumer.setPassword(password);
consumer.setSex(new Byte(sex));
if (phone_num == "") {
consumer.setPhoneNum(null);
} else{
consumer.setPhoneNum(phone_num);
}
if (email == "") {
consumer.setEmail(null);
} else{
consumer.setEmail(email);
}
consumer.setBirth(myBirth);
consumer.setIntroduction(introduction);
consumer.setLocation(location);
consumer.setAvator(avator);
consumer.setCreateTime(new Date());
consumer.setUpdateTime(new Date());
boolean res = consumerService.addUser(consumer);
if (res) {
jsonObject.put("code", 1);
jsonObject.put("msg", "注册成功");
return jsonObject;
} else {
jsonObject.put("code", 0);
jsonObject.put("msg", "注册失败");
return jsonObject;
}
}
// 判断是否登录成功
@ResponseBody
@RequestMapping(value = "/user/login/status", method = RequestMethod.POST)
public Object loginStatus(HttpServletRequest req, HttpSession session){
JSONObject jsonObject = new JSONObject();
String username = req.getParameter("username");
String password = req.getParameter("password");
// System.out.println(username+" "+password);
boolean res = consumerService.veritypasswd(username, password);
if (res){
jsonObject.put("code", 1);
jsonObject.put("msg", "登录成功");
jsonObject.put("userMsg", consumerService.loginStatus(username));
session.setAttribute("username", username);
return jsonObject;
}else {
jsonObject.put("code", 0);
jsonObject.put("msg", "用户名或密码错误");
return jsonObject;
}
}
// 返回所有用户
@RequestMapping(value = "/user", method = RequestMethod.GET)
public Object allUser(){
return consumerService.allUser();
}
// 返回指定ID的用户
@RequestMapping(value = "/user/detail", method = RequestMethod.GET)
public Object userOfId(HttpServletRequest req){
String id = req.getParameter("id");
return consumerService.userOfId(Integer.parseInt(id));
}
// 删除用户
@RequestMapping(value = "/user/delete", method = RequestMethod.GET)
public Object deleteUser(HttpServletRequest req){
String id = req.getParameter("id");
return consumerService.deleteUser(Integer.parseInt(id));
}
// 更新用户信息
@ResponseBody
@RequestMapping(value = "/user/update", method = RequestMethod.POST)
public Object updateUserMsg(HttpServletRequest req){
JSONObject jsonObject = new JSONObject();
String id = req.getParameter("id").trim();
String username = req.getParameter("username").trim();
String password = req.getParameter("password").trim();
String sex = req.getParameter("sex").trim();
String phone_num = req.getParameter("phone_num").trim();
String email = req.getParameter("email").trim();
String birth = req.getParameter("birth").trim();
String introduction = req.getParameter("introduction").trim();
String location = req.getParameter("location").trim();
// String avator = req.getParameter("avator").trim();
// System.out.println(username+" "+password+" "+sex+" "+phone_num+" "+email+" "+birth+" "+introduction+" "+location);
if (username.equals("") || username == null){
jsonObject.put("code", 0);
jsonObject.put("msg", "用户名或密码错误");
return jsonObject;
}
Consumer consumer = new Consumer();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date myBirth = new Date();
try {
myBirth = dateFormat.parse(birth);
}catch (Exception e){
e.printStackTrace();
}
consumer.setId(Integer.parseInt(id));
consumer.setUsername(username);
consumer.setPassword(password);
consumer.setSex(new Byte(sex));
consumer.setPhoneNum(phone_num);
consumer.setEmail(email);
consumer.setBirth(myBirth);
consumer.setIntroduction(introduction);
consumer.setLocation(location);
// consumer.setAvator(avator);
consumer.setUpdateTime(new Date());
boolean res = consumerService.updateUserMsg(consumer);
if (res){
jsonObject.put("code", 1);
jsonObject.put("msg", "修改成功");
return jsonObject;
}else {
jsonObject.put("code", 0);
jsonObject.put("msg", "修改失败");
return jsonObject;
}
}
// 更新用户头像
@ResponseBody
@RequestMapping(value = "/user/avatar/update", method = RequestMethod.POST)
public Object updateUserPic(@RequestParam("file") MultipartFile avatorFile, @RequestParam("id")int id){
JSONObject jsonObject = new JSONObject();
if (avatorFile.isEmpty()) {
jsonObject.put("code", 0);
jsonObject.put("msg", "文件上传失败!");
return jsonObject;
}
String fileName = System.currentTimeMillis()+avatorFile.getOriginalFilename();
String filePath = System.getProperty("user.dir") + System.getProperty("file.separator") + "img" + System.getProperty("file.separator") + "avatorImages" ;
File file1 = new File(filePath);
if (!file1.exists()){
file1.mkdir();
}
File dest = new File(filePath + System.getProperty("file.separator") + fileName);
String storeAvatorPath = "/img/avatorImages/"+fileName;
try {
avatorFile.transferTo(dest);
Consumer consumer = new Consumer();
consumer.setId(id);
consumer.setAvator(storeAvatorPath);
boolean res = consumerService.updateUserAvator(consumer);
if (res){
jsonObject.put("code", 1);
jsonObject.put("avator", storeAvatorPath);
jsonObject.put("msg", "上传成功");
return jsonObject;
}else {
jsonObject.put("code", 0);
jsonObject.put("msg", "上传失败");
return jsonObject;
}
}catch (IOException e){
jsonObject.put("code", 0);
jsonObject.put("msg", "上传失败"+e.getMessage());
return jsonObject;
}finally {
return jsonObject;
}
}
Дизайн базы данных:
База данных принимает версию MySQL5, которая соответствует трем парамациям дизайна базы данных. Кодировка принимает UTF8 - UTF-8 Unicode, а сопоставление принимает utf8_general_ci
пользовательская таблица:
CREATE TABLE `consumer` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`password` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`sex` tinyint(4) NULL DEFAULT NULL ,
`phone_num` char(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`email` char(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`birth` datetime NULL DEFAULT NULL ,
`introduction` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`location` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`avator` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`create_time` datetime NOT NULL ,
`update_time` datetime NOT NULL ,
PRIMARY KEY (`id`),
UNIQUE INDEX `username_UNIQUE` (`username`) USING BTREE ,
UNIQUE INDEX `phone_num_UNIQUE` (`phone_num`) USING BTREE ,
UNIQUE INDEX `email_UNIQUE` (`email`) USING BTREE
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=30
ROW_FORMAT=COMPACT
;
Форма комментария:
CREATE TABLE `comment` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
`user_id` int(10) UNSIGNED NOT NULL ,
`song_id` int(10) UNSIGNED NULL DEFAULT NULL ,
`song_list_id` int(10) UNSIGNED NULL DEFAULT NULL ,
`content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`create_time` datetime NULL DEFAULT NULL ,
`type` tinyint(4) NOT NULL ,
`up` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=59
ROW_FORMAT=COMPACT
;
Любимый стол:
CREATE TABLE `collect` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
`user_id` int(10) UNSIGNED NOT NULL ,
`type` tinyint(4) NOT NULL ,
`song_id` int(10) UNSIGNED NULL DEFAULT NULL ,
`song_list_id` int(10) UNSIGNED NULL DEFAULT NULL ,
`create_time` datetime NOT NULL ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=54
ROW_FORMAT=COMPACT
;
Список песен певицы:
CREATE TABLE `singer` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
`name` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`sex` tinyint(4) NULL DEFAULT NULL ,
`pic` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`birth` datetime NULL DEFAULT NULL ,
`location` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`introduction` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=46
ROW_FORMAT=COMPACT
;
Список певцов:
CREATE TABLE `song` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
`singer_id` int(10) UNSIGNED NOT NULL ,
`name` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`introduction` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`create_time` datetime NOT NULL COMMENT '发行时间' ,
`update_time` datetime NOT NULL ,
`pic` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`lyric` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
`url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=115
ROW_FORMAT=COMPACT
;
Лотерея области комментариев
Сейчас только нужноКомментарийскажи что-нибудь об этомсистема воспроизведения музыки springboot, а так же можете упоминать любые мелкие кейсы, которые хотите изучить, буду следить за популярностью комментариевНаггетс отправил два медаляОй(Официальное обязательство Nuggets)~ Приходите и поделитесь своими мыслями в комментариях!