网易云音乐评论功能实现(数据库设计)

评论回复功能的实现 最后的效果图如上,大家不难发现这个回复的想法和知乎的回复模式差不多(因为我就是照着那个思路实现的 :) ),只是这里少实现了查看对话的功能。下面说说我实现这个过程中遇到的一些困难。 首先讲讲我的数据库的实现: RId指的是每个评论的唯一id,这个R取得是review(评论)的意思 RTId指的是每条帖子的id RRId指的是被回复的评论的id,如果有就是其id,无为0 ... 阅读详情

数据表设计

1、需求分析(一问一答模式)

这种设计简单、直接,也满足了用户评论、回复的基本要求,对于没有大量用户评论的APP需求足够。

2、数据库字段设计 

                                             表字段                                           字段说明
id主键
show_id主题id (音乐或MV)
user_id评论用户userId
content评论内容(长度限制为140个中文汉字)
give_like点赞总量
create_time评论时间
state评论状态(正常默认 1,已删除 0)
reply_id回复评论id

因为我数据库没有冗余评论用户头像和昵称,需要根据user_id去查询,返回到一个评论中间类中

reply_id  字段默认为null,该字段不为null时,表示该条评论是回复别人的评论,用于设置回复某条评论的主键id

state 字段是会用到的,主要场景如下图

回复评论作者已经删除评论的话,不显示原评论的所有信息

3、返回评论列表

返回评论的数据结构这里,我用到了三个类(评论类、评论中间类、最终返回的评论类)

评论类

package com.shinemi.realiart.model;

import java.util.Date;
// 评论类
public class ArtShowComments {
    private Long id;

    private Long showId;

    private Long userId;

    private String content;

    private Long giveLike;

    private Date createTime;

    private Integer state;

    private Long replyId;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getShowId() {
        return showId;
    }

    public void setShowId(Long showId) {
        this.showId = showId;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content == null ? null : content.trim();
    }

    public Long getGiveLike() {
        return giveLike;
    }

    public void setGiveLike(Long giveLike) {
        this.giveLike = giveLike;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Integer getState() {
        return state;
    }

    public void setState(Integer state) {
        this.state = state;
    }

    public Long getReplyId() {
        return replyId;
    }

    public void setReplyId(Long replyId) {
        this.replyId = replyId;
    }
}

 

评论中间类(继承了评论类,添加多两个成员变量,头像与昵称) 

package com.shinemi.realiart.bean;

import com.shinemi.realiart.model.ArtShowComments;

// 评论中间类
public class ArtShowCommentsBean extends ArtShowComments {
    // 评论用户头像
    private String userHeadPortrait;
    // 评论用户昵称
    private String userNickName;

    public void setArtShowComments(ArtShowComments artShowComments) {
        this.setId(artShowComments.getId());
        this.setShowId(artShowComments.getShowId());
        this.setUserId(artShowComments.getUserId());
        this.setContent(artShowComments.getContent());
        this.setGiveLike(artShowComments.getGiveLike());
        this.setCreateTime(artShowComments.getCreateTime());
        this.setState(artShowComments.getState());
        this.setReplyId(artShowComments.getReplyId());
    }

    public String getUserHeadPortrait() {
        return userHeadPortrait;
    }

    public void setUserHeadPortrait(String userHeadPortrait) {
        this.userHeadPortrait = userHeadPortrait;
    }

    public String getUserNickName() {
        return userNickName;
    }

    public void setUserNickName(String userNickName) {
        this.userNickName = userNickName;
    }

}

评论返回类(该类中有三个变量,那就是上面的评论中间类和评论拥有者的状态了,评论拥有者主要给予前端判断该评论是否能让当前用户删除)

package com.shinemi.realiart.bean;

// 评论返回类
public class ArtShowCommentsBO {
    // 原评论
    private ArtShowCommentsBean originalComments;
    // 回复评论
    private ArtShowCommentsBean replyComments;
    // 评论拥有者
    private boolean realyReviewers;

    public ArtShowCommentsBean getOriginalComments() {
        return originalComments;
    }

    public void setOriginalComments(ArtShowCommentsBean originalComments) {
        this.originalComments = originalComments;
    }

    public ArtShowCommentsBean getReplyComments() {
        return replyComments;
    }

    public void setReplyComments(ArtShowCommentsBean replyComments) {
        this.replyComments = replyComments;
    }

    public boolean isRealyReviewers() {
        return realyReviewers;
    }

    public void setRealyReviewers(boolean realyReviewers) {
        this.realyReviewers = realyReviewers;
    }
}

思路流程是这样的:

根据主题id 分页查询 评论表,将获取回来的评论进行遍历,判断reply_id是否为null,是的话new 中间类对象,将评论对象设置进去,再查出评论者头像and昵称设置,完成后创建评论返回类、将刚刚的评论中间类set 入 评论返回类的 originalComments就ok了

reply_id 不为null、就需要根据reply_id去查询评论类、再同上的操作、就是最后set 入 评论返回类的 replyComments字段中就ok

以上是个人观点设计,若有不足的地方或更好的设计,欢迎提出。

 

【Python/爬虫】爬取网易云音乐评论区热评(练习) 【Python/爬虫】爬取网易云音乐评论区热评(练习) 简单爬取PC端网易云音乐评论区 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建 阅读详情

相关推荐

爬虫(七)通过Selenium爬取网易云音乐评论

文正selenium相关介绍selenium环境配置解析网易云音乐评论使用selenium爬取网易云音乐评论Selenium的缺陷 selenium相关介绍 Selenium是一个用于Web应用程序测试的工具,它直接运行在浏览器中,就像真正的用户在操作一样。至于它有什么样的作用,慢慢来说。 如果我们去写web应用,我们该怎么封锁别人的爬虫呢。 我们常用的反爬手段有通过校检headers字段来反爬、...

weixin_41169182的博客 4221

评论页面的实现

一、效果图展示 二、思路分析 首先,上效果图,这样的评论界面很常见,日常新闻,社交等类的app中都有评论功能,今天就来看看怎么实现? 实现这种效果并不难,首先最外层肯定是Recycleview,然后设置他的Adapter来实现,重点在于Adapter的实现。 三、准备 1.首先,得有一个评论javaBean类,用来封装评论信息,当然这些信息在开发中都是从服务器端获取的,这个类为Com...

qq_28898075的博客 5590

爬取网易云音乐评论

Intro一直想自己动手用框架搭起来一个搜索引擎,但是也一直不知道从哪里开始下手比较好。最近一直在网易云音乐上听歌,决定从网易云上把评论全部爬下来,用评论做一个垂直搜索Path说干就开始吧 首先第一步得先把网易云上的评论爬下来吧,没有评论资源怎么开始干活啊!就拿我最喜欢的歌手 Eason 陈奕迅 做例子吧首先打开网页版的网易云音乐 搜索 十年 这首歌~ 十年-Eason接下来打开我们浏览器的开发者

wangjiawei0227的博客 1万+

java评论功能怎么实现_评论功能的简单实现

最近在写一个问答功能,类似于评论,几番找资料才有点感觉(主要是太菜了),为了加深印象就单独抽出来记下笔记,然后这篇写完就开始SpringBoot的复习了1. 说明网上看到有三种类型的评论,按照笔者的理解记下了过程(可能理解错了,望大神指出),所以列出的是笔者的理解,下面以模拟博客评论的场景来说明,(这些类型是笔者形容的,并没有这个词),总觉得很慌理解错了,希望大家评论指正测试环境:SSM、JDK1...

weixin_33379371的博客 1万+

Python爬虫—爬取网易云音乐【热歌榜】歌曲的精彩评论(写入txt文本文件或者MySQL数据库)

  最近在学Python爬虫,看了B站爬取网易云音乐评论的视频,在此代码的基础上做了扩展。视频中是将评论存入json文件,并且没有进行解析数据,爬取的是一首歌的全部评论。   我在此基础上拓展了三点:     1.可以爬取热歌榜200首歌曲的精彩评论;     2.将评论进行解析,提取出评论的内容、时间、用户、歌曲名字等信息;     3.将爬取的信息存入txt文本文件或者mysql数据库中。 参考代码存入txt文本文件代码存入Mysql数据库代码   下面是我的一小点分析,代码附在最后   下

穆图图木每的博客 4302

爬虫入门——用python爬取网易云音乐热门歌手评论数

本文参考Monkey_D_Newdun 的文章https://blog.youkuaiyun.com/Monkey_D_Newdun/article/details/79318629用爬虫获取网易云音乐热门歌手评论数运行平台:Windows 10IDE:spyderPython版本:3.6浏览器:360一、爬虫基本思路a. 通过URL或者文件获取网页:打开网页-F12-找到需要获取的url,request h...

晨桥鹅学习笔记 2672

评论功能如何实现?

社会在发展,时代在进步 现在随随便便一个APP就用评论功能吧,那么如何实现评论功能哪? 第一步,写好样式 布局 <van-tab title="评论" class="tab"> <p class="commentText">评论({{ commentTotal }})</p> <div class="commentsList"> <div class="comments" v-for="ite

祎祎的博客 2421

案例说明_网易云音乐大数据系统1.docx

案例说明_网易云音乐大数据系统1.docx

实现简单的评论功能

Document <cmt-box @func="loadComments"></cmt-box> <ul class="list-group"> <li class="list-group-item" v-for="item in list" :key="item.id"> <...

ranyizhang的博客 2599

EDA虚拟机分享2020版本(Synopsys2020)

EDA虚拟机分享

亦安的数字小站 9176

高速DAC时钟与配置实战:DAC5681Z硬件设计与寄存器编程详解

在高速数据转换系统中,时钟信号是决定系统性能的核心要素,其稳定性和纯净度直接影响数模转换器(DAC)的输出频谱纯度与动态范围。时钟电路的设计原理涉及信号完整性、阻抗匹配与直流偏置,而内部锁相环(PLL)和延迟锁相环(DLL)的配置则是实现精确时序控制的关键技术。这些技术的价值在于,它们共同保障了高速通信、雷达和任意波形生成等应用对信号实时性与精度的严苛要求。本文聚焦于德州仪器(TI)的DAC5681Z,深入解析其外部时钟输入电路的硬件设计要点,包括端接电阻的计算与选型,并详细拆解通过串行外设接口(SPI)对

weixin_30342363的博客 186

SpringBoot+vue仿网易云音乐网站(二)-数据库设计

一、需求分析 仿网易云,那么需求的话就照着网易云音乐来做了。 首先可以听歌,可以查看歌手,歌手又有对应的专辑,有用户,用户可以新建歌单,收藏歌单,歌单可以增删歌曲,用户还可以评论歌曲、专辑、歌单,还有粉丝功能,首页还有一个轮播图等…。 二、数据库设计详解 综合需求可以得出,共有以下11张表。 1). 歌曲表 2). 歌手表 3). 专辑表 4). 歌单表 5). 歌单歌曲表 6). 用户表 7). 用户收藏歌曲表 8). 用户收藏歌单表 9). 粉丝表 10). 评论表 11). 轮播图表 下面对每一张表做

weixin_44764019的博客 8066

Ecg信号QRS波峰检测:A Real-Time QRS Detection Algorithm (Pan-Tompkins法)

Pan-Tompkins法是R峰检测的经典方法,被引量高达6000+次。 Pan J, Tompkins W J. A real-time QRS detection algorithm[J]. IEEE transactions on biomedical engineering, 1985 (3): 230-236. 本文对论文流程进行了总结,并参考BioSigKit项目,复现了论文代码。 流程图: 代码如下: 第一部分是信号读入,这里使用MIT_BIH信号的100,读入10000个数据点 第二部分

weixin_42870380的博客 1万+

jsp+ssm计算机毕业设计网易云音乐推荐系统【附源码】

项目运行环境配置:(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可4.

佳愉毕设源码 765

ArcGIS License Server点击启动没反应,许可管理器无法启动怎么办

4 当我们再打开ArcGIS License Server Administrator的时候。3 在【服务】中找到【ArcGIS License Manager】双击。无法启动ArcGIS License Server的情况。在使用ArcGIS的过程中,我们经常会遇到。专注GIS领域知识分享,交流行业软件技巧。欢迎关注,不定期分享GIS各种问题和技巧。1 右击我的电脑——【管理】服务状态——启动,确定即可。启动类型选择——自动。

GIS蒲公英的博客 2万+

3、流程引擎下载安装与部署

camunda有多种使用方式,此处先使用独立平台的方式部署引擎,这种用法适合分布式,微服务化,多语言异构系统的使用方式。

leyoliu的博客 5520

Java语言Springboot开发框架实现个性化音乐推荐网 在线音乐推荐系统 基于用户、物品的协同过滤推荐算法

前台用户包含:注册、登录、注销、喜好标签、浏览音乐、搜索音乐、播放音乐、我的歌单、信息修改、密码修改、音乐评分、音乐收藏、音乐评论、排行榜、热点推荐、个性化推荐音乐等功能; 后台管理员包含:数据分析、用户管理、音乐管理、音乐类型管理、用户喜好标签管理、用户歌单管理、评分管理、收藏管理、评论管理、播放记录、浏览记录管理等。 个性化推荐: 游客:热点推荐(根据音乐总评分降序推荐) 登录用户:基于用户的协同过滤推荐算法(根据评分数据), 如果没有推荐结果,采用热点推荐(根据登录用户喜好标签下的音乐的总评分降序推

linge511873822的博客 1589

matlab数学建模练习(2)练习电子科技大学数学实验

【代码】matlab数学建模练习(2)练习电子科技大学数学实验。

c_wrj_的博客 1435

在线音乐推荐网 Python+Django+Mysql开发技术 基于用户、物品的协同过滤推荐算法 个性化音乐推荐系统 音乐网站+协同过滤推荐算法 机器学习、分布式大数据、人工智能开发

前台用户包含:注册、登录、注销、浏览音乐、搜索音乐、信息修改、密码修改、音乐评分、音乐收藏、音乐评论、音乐播放、歌单、歌单详情、排行榜、热点推荐、个性化推荐音乐等功能; 后台管理员包含:数据统计、用户管理、音乐管理、音乐类型管理、评分管理、收藏管理、评论管理、浏览记录管理、播放记录管理、歌单管理、歌单详情管理等。 个性化推荐功能: 排行榜:根据每种音乐类型下的浏览数量降序推荐音乐; 为你推荐: 游客:热点推荐(根据音乐总评分和总收藏数量降序推荐) 登录用户: 基于用户、物品的协同过滤推荐算法

linge511873822的博客 2318

【系列05】端侧AI:构建与部署高效的本地化AI模型 第4章:模型量化(Quantization)

量化的基本思想是减少模型中用于表示参数和激活值的比特数。在模型训练时,参数通常使用32位浮点数(FP32)进行存储,这提供了高精度,但也消耗大量的内存和计算资源。量化则将这些32位浮点数转换成低比特数表示,通常是8位整数(INT8)。量化的原理可以概括为:对浮点数范围进行校准,并将其映射到更小的整数范围内。例如,将一个FP32的权重(如-1.5到1.5)映射到INT8的范围(-128到127)。在推理过程中,模型将使用这些低精度的整数进行计算,从而大大减少了所需的计算量。量化带来的主要收益减少模型大小。

学习,输出==》再学习再输出 1212

duilib入门基础一 容器之 BOX、VBOX、HBOX布局及其子控件align排列方式

序 容器 duilib有以下主要布局容器 Box(自由布局容器) VBox(垂直布局容器) HBox(水平布局容器) TabBox(多标签布局容器) TileBox(格子布局容器) ChildBox(子布局容器) ScrollableBox(可滚动容器) 一、Box容器布局 Box容器及其扩展VBox HBox是其中最常用的容器。 相对Box来说,HBox, VBox更好理解些 1.1 VBox HBox VBox下的各个控件垂...

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 3080

java_ssm在线云音乐系统的设计与实现jsp毕业论文

介绍在线云音乐系统的背景、研究意义、国内外发展现状及系统目标。总结系统成果与不足,提出后续优化方向(如引入微服务、推荐算法等)。

qq_3166678367的博客 364

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Flask实战:构建在线云音乐系统从零到部署完整指南

Web开发中,轻量级框架是快速构建业务系统的常见选择。Flask作为Python生态中灵活简约的框架,通过路由、模板与扩展机制,为开发者提供了从零搭建完整应用的能力。数据库设计、用户认证、文件上传与流式播放是此类系统的核心环节,理解其工作原理能有效提升工程实践水平。从简单的歌曲检索到歌单管理,再到生产环境下的Nginx与Gunicorn部署,一套在线云音乐系统恰好串联了Web开发的主要知识点。本文基于Flask与SQLAlchemy,呈现了在前台功能与后台管理之间分层实现的完整方案,为个人项目或毕业设计提供

weixin_42525551的博客 319

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

网易云音乐上的所有!全部!随便爬!(Python爬虫&基于网易云音乐评论的用户推荐系统)

申明:本文纯属原创,有参考的地方都会在文中给出链接。如有转载,需征求本人同意。 一、目标网站介绍 网易云音乐是一款由网易开发的音乐产品,是网易杭州研究院的成果,依托专业音乐人、DJ、好友推荐及社交功能,在线音乐服务主打歌单、社交、大牌推荐和音乐指纹,以歌单、DJ节目、社交、地理位置为核心要素,主打发现和分享。 2017年11月17日,网易云用户突破4亿。知乎上有这样一个问题:你为什...

striver6的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python爬虫-爬取网易云音乐歌曲评论

本文借鉴了@平胸小仙女的知乎回复 https://www.zhihu.com/question/36081767 以及@lyrichu的博客 https://www.cnblogs.com/lyrichu/p/6635798.html话不多说,直接开始正题------------------------------------------------------------------------...

sixu_9days的博客 1万+

网易云音乐歌曲评论爬虫

上一篇文章我已经教大家一种比较偷懒的方式爬取网易云歌曲链接 , 接下来我们继续以这种方式爬取网易云的评论 , 歌单 , 专辑 和搜索结果 这一篇主要讲网易云的评论爬取 , 打开要爬的歌曲网页 , 右键检查 , 进入network选项卡 , 刷新页面 通过上一篇的分析我们知道整个网易云音乐post参数的获取只需要一个变量就行了,其他的参数都是死的 , 好了继续使用之前的方法看看可变的那个参数是...

小王同学的博客 7万+
上一篇: Java实现敏感词过滤 - DFA算法(转)
下一篇: mybatis if test非空判断数字0为什么是false
NatChan
博客等级 码龄9年 12粉丝 26原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值