项目7-音乐播放器6+评论区

这篇具有很好参考价值的文章主要介绍了项目7-音乐播放器6+评论区。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.准备前端界面

前端小白:怎么为你的网页增加评论功能?(一)_为网页添加评论区怎么弄-CSDN博客

参考的上述文章的前端代码

项目7-音乐播放器6+评论区,项目,状态模式

我们从上述前端图片知道,我们数据库需要准备的字段:

id,commentuserName,coomentmusicId,comment,time

2.数据库的准备

DROP TABLE IF EXISTS `commentmusic`;
CREATE TABLE `commentmusic` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`commentuser_name` varchar(20) NOT NULL,
`commentmusic_id` int(11) NOT NULL,
`commenttime` DATETIME DEFAULT now(),
`comment` varchar(100) NOT NULL
);

3.提交评论数据

路径:"/comment/upload"

3.1 后端代码书写 

1.MAPPER

@Mapper
public interface CommentMapper {
    @Insert("insert into commentmusic(commentmusic_id,commentuser_name,comment) values " +
            "(#{commentmusicId},#{commentuserName},#{comment})")
    Integer insertComment(Integer commentmusicId,String commentuserName,String comment);
}

2.SERVICE

@Service
@Slf4j
public class CommentService {
    @Autowired
    private CommentMapper commentMapper;
    @Autowired
    private MusicMapper musicMapper;
    public Result insertComment(Integer commentmusicId, String commentuserName, String comment){
        Comment commentable=new Comment();
        if(!StringUtils.hasLength(comment)){
            return Result.fail(Constant.RESULT_CODE_NO_CHOICE,"评论不能为空");
        }else if(musicMapper.selectByMusicId(commentmusicId)==null){
            return Result.fail(Constant.RESULT_CODE_NOTMP3_DELETEFAIL,"没有该音乐");
        }
        Integer factor=commentMapper.insertComment(commentmusicId,commentuserName,comment);
        if(factor<1){
            return Result.fail(Constant.RESULT_CODE_FAIL_SQL,"数据库插入失败");
        }
        commentable.setComment(comment);
        commentable.setCommentmusicId(commentmusicId);
        commentable.setCommentuserName(commentuserName);
        return Result.success(true);
    }
}

3.Controller

@RestController
@RequestMapping("/comment")
public class CommentController {
    @Autowired
    private CommentService commentService;
    @RequestMapping("/upload")
    public Result insertComment(Integer commentmusicId, String comment, HttpSession httpSession){
        //获得当前的用户名
        User user= (User) httpSession.getAttribute(Constant.USERINFO_SESSION_KEY);
        String commentuserName=user.getUsername();
        return commentService.insertComment(commentmusicId, commentuserName, comment);
    }
}

3.2 后端测试

项目7-音乐播放器6+评论区,项目,状态模式

项目7-音乐播放器6+评论区,项目,状态模式

4.评论页面展示 

4.1 后端代码书写

MAPPER

@Select("select * from commentmusic where commentmusic_id=#{commentmusicId}")
List<Comment> selectAllComment(Integer commentmusicId);

SERVICE

public Result selectAllComment(Integer commentmusicId){
    return Result.success(commentMapper.selectAllComment(commentmusicId));
}

CONTROLLER

@RequestMapping("/list")
public Result selectAllComment(Integer commentmusicId){
    return Result.success(commentService.selectAllComment(commentmusicId));
}

4.2 后端测试

项目7-音乐播放器6+评论区,项目,状态模式

成功!!!

5.SECTION3和SECTION4的前端代码书写 

前端测试成功!!!

想加入删除评论的功能

这时候我们要让前端获取一些值,后端增加方法

@RequestMapping("/view")
public Result InsertUserInfo(HttpSession httpSession){
    User user=(User) httpSession.getAttribute(Constant.USERINFO_SESSION_KEY);
    return Result.success(user.getUsername());
}

前端的书写 

        $(function(){

            $.ajax({

                type: "get",

                url: "/user/view",

                success: function(result){

                    if(result.status==200){

                        var userName=result.data;

                        load(userName);

                    }

                   

                }

            })

        });

        function load(userName){

            $.ajax({

                type: "get",

                url: "/comment/list"+location.search,              

                success: function(result){

                    if(result!=null&&result.status==200){

                        var data=result.data;

                        for(var i = 0; i < data.length;i++) {

                            var deleteflag='<td> <button class = "btn btn-primary"  οnclick="deleteInfo('+data[i].id+')"> 删除 </button>';

                            var value= data[i].comment+" ";

                            var p= document.createElement("p");

                            if(data[i].commentuserName==userName){

                                p.innerHTML="用户:"+data[i].commentuserName+'<hr>'+value+'<hr>'+data[i].commenttime+' '+deleteflag;

                            }else{

                                p.innerHTML="用户:"+data[i].commentuserName+'<hr>'+value+'<hr>'+data[i].commenttime;

                            }

                           

                            document.getElementById("commend").prepend(p);

                        }

                       

                    }

                },

                error: function(error){

                    if(error!=null&&error.status==401){

                        alert("请登录用户");

                        location.href = "login.html";

                    }

                }

            });

        }

        function send(){

            $.ajax({

                type: "get",

                url: "/comment/upload"+location.search,

                data:{

                    comment: $("#typing").val()

                },

                error: function(error){

                    if(error!=null&&error.status==401){

                        alert("请登录用户");

                        location.href = "login.html";

                    }

                },

                success: function(result){

                    location.reload();

                }

            });

        }

此时,自己写的评论可以看到删除按钮 

5.1 完成删除评论的功能

@RequestMapping("/delete")
public Result deleteComment(Integer id){
    return commentService.deleteComment(id);
}

function deleteInfo(id){

            $.ajax({

                type: "get",

                url: "/comment/delete",

                data:{

                    id: id,

                },

                success: function(result){

                    if(result.status==200){

                        alert("删除评论成功");

                        location.reload();

                    }

                }

            });

        }

项目7-音乐播放器6+评论区,项目,状态模式 删除成功!!!文章来源地址https://www.toymoban.com/news/detail-856089.html

到了这里,关于项目7-音乐播放器6+评论区的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序仿网易音乐播放器项目

    主页样式 播放页样式 搜索页样式 排行榜页样式 小控件样式 网易云音乐API接口 后端接口,使用node写的,使用了网易云音乐API: 封装的api文件 主页面功能点 banner,滑动菜单栏采用微信的API( swiper 与 scroll-view )进行开发 滑动到底部重新获取后续的歌曲,使用onReachBottom周期

    2024年02月06日
    浏览(42)
  • Qt项目实战:MP3音乐播放器

      首先通过打开文件,获取文件夹下mp3文件的名字,将其存入QTableWidget控件下,通过双击QTableWidget空间中的内容,播放相应的mp3音乐文件,同时通过使用QMediaPlaylist来实现上一首,下一首的功能。   widget.h widget.cpp main.cpp 本文福利, 莬 费领取Qt开发学习资料包、技术视频,

    2024年02月06日
    浏览(54)
  • [MAUI 项目实战] 手势控制音乐播放器(三): 动画

    @ 目录 吸附动画 确定位置 平移动画 回弹动画 使用自定义缓动函数 多重动画 点击动画 项目地址 上一章节我们创建了手势容器控件PanContainer,它对拖拽物进行包装并响应了平移手势和点击手势。 拖拽物现在虽然可以响应手势操作,但视觉效果较生硬,一个优秀的设计要求

    2023年04月09日
    浏览(42)
  • [MAUI 项目实战] 手势控制音乐播放器(二): 手势交互

    @ 目录 原理 交互实现 容器控件 手势开始 手势运行 手势结束 使用控件 拖拽物 创建pit集合 项目地址 定义一个拖拽物,和它拖拽的目标,拖拽物可以理解为一个平底锅(pan),拖拽目标是一个坑(pit),当拖拽物进入坑时,拖拽物就会被吸附在坑里。可以脑补一下下图: 你

    2023年04月08日
    浏览(52)
  • [MAUI 项目实战] 手势控制音乐播放器(一): 概述与架构

    这是一篇系列博文。请关注我,学习更多.NET MAUI开发知识! [MAUI 项目实战] 手势控制音乐播放器(一): 概述与架构 [MAUI 项目实战] 手势控制音乐播放器(二): 手势交互 [MAUI 项目实战] 手势控制音乐播放器(三): 动画 [MAUI 项目实战] 手势控制音乐播放器(四):圆形进

    2023年04月09日
    浏览(37)
  • [MAUI 项目实战] 手势控制音乐播放器(四):圆形进度条

    @ 目录 关于图形绘制 创建自定义控件 使用控件 创建专辑封面 项目地址 我们将绘制一个圆形的音乐播放控件,它包含一个圆形的进度条、专辑页面和播放按钮。 使用MAUI的绘制功能,需要Microsoft.Maui.Graphics库。 Microsoft.Maui.Graphics在不同的目标平台上使用一致的API访问本机图形

    2023年04月09日
    浏览(51)
  • 开源小项目 - 基于无源蜂鸣器实现的音乐播放器

    目录 一、音乐简谱相关知识 1、音符 2、音调 3、识读简谱 1. 找到简谱中C调的音符对应的蜂鸣器频率(确定音调对应的频率) 2. 确定蜂鸣器演奏一拍所需的时间(即确定一个音调对应的节拍数) 3.创建结构体确定一个音符所需的两个属性(音调频率、节拍数) 4.将《两只老虎

    2024年03月10日
    浏览(53)
  • 【无标题】单片机小项目———音乐播放器(keil+protues)

    刚学完单片机的朋友可以看一看。 主要功能: 1.播放音乐 2.切歌 3.显示歌曲数 仿真:  代码: #includeREG52.H //#define sound_amount 5  sbit play_up=P1^0;        sbit play_down=P1^1;    sbit pause=P1^2;        sbit speaker=P3^1;      unsigned char timer0h,timer0l,time,n; unsigned char music_num;    unsigned int

    2024年02月11日
    浏览(50)
  • 【AT89C52单片机项目】音乐播放器的设计

    实验目的 用51系列单片机设计一个可以切歌的音乐播放器。 实验仪器 AT89C52单片机。 音乐播放模块。 设计要求 采用重装定时器计数方式1的初值来实现发出不同频率的声音,通过控制延时长度来实现不同的节拍,之后将音乐数据表填入,即可实现音乐播放。 可通过功能按键

    2024年02月16日
    浏览(87)
  • 开源音乐播放器!

    导读 音乐是生活的一部分。维基百科关于音乐发展历史的文章有这样一段不错的描述说:“全世界所有的人们,包括哪怕是最孤立、与世隔绝的部落,都会有自己的特色音乐……”好吧,我们开源人就构成了一个部落。我建议我们的“音乐形式”应该包括开源音乐播放器。

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包