java 评论回复功能,javaweb评论回复功能

  java 评论回复功能,javaweb评论回复功能

  这篇文章主要为大家详细介绍了VUE爪哇实现评论回复功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  

背景

  最近需要做一个多级评论的功能,技术路线:VUE(元素)Java(SpringBoot)

  效果

  

后台

  SQL

  Java

  控制器

  /**

  * 根据关联编号获取评论信息

  * @param relationId关联编号

  * @param类型类型

  * @ return:com。哈维。结果。resultsupportjava。郎。目标

  * @日期:2020/12/10 14:37

  */

  @GetMapping(findList )

  public ResultSupportObject findList(@ request param( relationId )String relationId,@ request param( type )String type){

  log.debug(接口[查找列表]的参数:关系Id={},类型={} ,关系Id,类型);

  ResultSupportObject结果=resultsupport。createmisresp();

  尝试{

  list comment comment list=commentservice。findlist(关系id,类型);

  结果支持实用程序。fillresultsupport(结果,评论列表);

  } catch(异常e) {

  log.error([findList]接口执行异常,e);

  结果支持实用程序。fillerror(结果,系统出现异常!);

  }

  log.debug(接口[查找列表]的结果:result={} ,result);

  返回结果;

  }

  /**

  * 保存评论

  * @param注释参数

  * @ return:com。乌龟。常见。结果。resultsupportjava。郎。目标

  * @日期:2020/12/10 14:37

  */

  @PostMapping(save )

  public ResultSupportObject save(@ request正文注释Comment,HttpServletRequest请求){

  log.debug(接口[保存]的参数:comment={} ,comment);

  ResultSupportObject结果=resultsupport。createmisresp();

  字符串令牌=请求。get头(“授权”);

  if (StrUtil.isEmpty(token)) {

  结果。设置成功(假);

  result.setMessage(标记无效!);

  返回结果;

  }

  if (BeanUtil.isEmpty(comment)){

  结果。设置成功(假);

  result.setMessage(参数无效!);

  返回结果;

  }

  尝试{

  commentService.save(comment,token);

  } catch(异常e) {

  日志。错误([保存]接口执行异常,e);

  结果支持实用程序。fillerror(结果,系统出现异常!);

  }

  log.debug(接口[保存]的结果:result={} ,result);

  返回结果;

  }

  服务

  /**

  * 根据关联编号获取绩效信息

  */

  公共列表注释查找列表(字符串关系Id,字符串类型){

  返回注释映射器。findlist(关系id,类型);

  }

  /**

  * 保存评论

  * @param注释参数

  * @param标记用户代币

  * @return:

  * @日期:2020/12/10 14:37

  */

  @ Transactional(回滚=exception。类)

  公共空的保存(注释,字符串标记){

  sys user user=user utils。getuser(token);

  评论。预插入(用户。getid());

  评论。setdelflag(“0”);

  commentMapper.save(注释);

  }

  制图人

  /**

  * 根据关联编号获取绩效信息

  */

  列表注释findList(@ Param( relationId )String relationId,@ Param( type )String type);

  /**

  * 根据编号获取子评论内容

  */

  列表注释selectByParentId(@ Param( parentId )String parentId);

  /**

  * 保存评论

  */

  无效保存(评论评论);

  可扩展置标语言

  sql id=commentColumns

  a.id为id ,

  答。用户标识为"用户标识",

  u.name为"用户名",

  a .关系标识为关系Id ,

  答。类型为"类型",

  a .回复用户标识为replyUserId ,

  姓名为回复用户名,

  a .家长id为 parentId ,

  答。内容作为"内容",

  照片作为照片,

  一面旗帜为德尔弗拉格,

  a .创建者作为“创建者”,

  a .创建日期为"创建日期"

  /sql

  sql id=commentJoins

  左联接sys_user u ON a.user_id=u.id和u.del_flag=0

  左联接sys _ user r ON a . reply _ user _ id=r . id和r . del _ flag= 0

  /sql

  !-保存评论-

  插入id=保存

  插入注释(

  id,

  用户标识,

  关系id,

  类型,

  回复用户标识,

  家长id

  内容,

  del_flag,

  创建者,

  创建日期

  )值(

  #{id},

  #{userId},

  # {关系Id},

  #{type},

  #{replyUserId},

  #{parentId},

  # {内容},

  #{delFlag},

  #{createBy},

  # {创建日期}

  )

  /插入

  结果映射id= commentResultMap type= com。哈维。实体。评论

  编号列=id 属性=id /

  结果列=用户标识属性=userId /

  结果列=用户名属性=用户名/

  结果列=关系Id 属性=关系Id /

  结果列=类型属性=type /

  结果列=replyUserId 属性=replyUserId /

  结果列=回复用户名属性=replyUserName /

  结果列=parentId 属性=parentId /

  结果列=内容属性=内容/

  类型为“com”的集合属性=“children”列=“{ parentId=id }”select=“select by parentId”。哈维。注释/

  /结果映射

  !-根据关联编号获取评论信息-

  select id=查找列表结果映射= commentResultMap

  挑选

  include refid=commentColumns/

  从

  评论a

  include refid=commentJoins/

  在哪里

  a.relation_id=#{relationId}

  和a.type=#{type}

  并且a.parent_id=0

  以.排序

  答。创建日期表名

  /选择

  !-根据编号获取子评论内容-

  select id= selectByParentId resultType= com。哈维。实体。评论

  挑选

  include refid=commentColumns/

  从

  评论a

  include refid=commentJoins/

  在哪里

  a.parent_id=#{parentId}

  以.排序

  答。创建日期表名

  /选择

  

前端

  把评论抽成组件,方便其他模块引用

  !-评论模块-

  模板

  埃尔抽屉

  title=评论

  :visible.sync=drawer

  方向=rtl

  :before-close=handleClose

  :modal=false

  :withHeader=true

  @open=getCommentList

  @close=close

  size= 320px像素

  div class=容器

  div class= write-reply @ click= showCommentInputMajor()

  div style= margin-top:10px;

  埃尔输入

   class=灰色-背景-输入

  v-model=majorComment

  type=textarea

  :rows=3

  自(动)调焦装置

  占位符=写下你的评论

  /el-input

  div style= text-align:right;上边距:10px

  埃尔按钮@ click= reset size= small 圆形重置/el-button

  埃尔按钮

  type=primary

  圆形物

  @click=commitMajorComment

  大小=小

  确定/el-button

  /div

  /div

  /div

  注释列表中的项目:key= item。id

  div class=info

  图片

  《阿凡达》

  :src=fileUrl item.photo

  宽度=36

  高度=36

  /

  div class=右

  div class= name"{ item。用户名} }/div

  div class= date " { format date(item。创建日期)} }/div

  /div

  /div

  div class= content"{ item。content } }/div

  div class=控制

  !-跨度

  喜欢

  :class="{ active:item。就是喜欢}”

  @click=likeClick(item)

  i class=iconfont icon-like/i

  span class= like-num { 0

  item.likeNum 0? item.likeNum 人赞 : 赞

  } span

  /span -

  跨度

  评论-回复

  @click=showCommentInput(item,item, major )

  I class= icon font icon-icon comment /I

  跨度回复/span

  /span

  /div

  div class=回复

  div class= item v-for=在项目中回复。 children :key=回复。id

  div class=回复内容

  span class= from-name 回复。用户名} }/span

  span: /span

  span class= to-name @ { { reply。回复用户名} }/span

  span {回复。content } }/span

  /div

  div class=回复-底部

  span { {格式化日期(回复。创建日期)} }/span

  跨度

   class=回复文本

  @click=showCommentInput(item,reply, child )

  I class= icon font icon-icon comment /I

  跨度回复/span

  /span

  /div

  /div

  过渡名称=淡化

  v-if=showItemId===item.id

  el-tag

  type=info

  效果=黑暗

  v-if=inputLabel!=未定义的输入标签

  {{输入标签}}/el标签

  埃尔输入

   class=灰色-背景-输入

  v-model=inputComment

  type=textarea

  :rows=3

  自(动)调焦装置

  占位符=写下你的评论

  /el-input

   BTN-控制

  埃尔按钮@ click= cancel size= small round取消/el-button

  埃尔按钮

  type=primary

  圆形物

  @click=commitComment

  大小=小

  确定/el-button

  /div

  /div

  /过渡

  /div

  /div

  /div

  /El-抽屉

  /模板

  脚本

  从" @/api/comment-api "导入*作为commentApi

  从" @/实用工具/日期实用工具"导入{日期实用程序};

  从" @/utils/UserUtils "导入{用户实用工具};

  导入" @/assets/CSS/icon font/icon font。CSS”;

  导出默认值{

  道具:{

  出票人:{

  类型:布尔型,

  必填:真,

  默认值:错误

  },

  关系Id: {

  类型:字符串,

  必填:真,

  默认值:""

  },

  注释类型:{

  类型:字符串,

  必填:真,

  默认值:""

  }

  },

  data() {

  返回{

  文件URL:进程。环境。vue _ APP _ FD FST _ FILE _ URL,

  评论列表:[],

  输入注释:"",

  showItemId: ,

  replyUserId: ,

  parentId:" ",

  userInfo:用户util。getuserbystorage(),

  输入标签:"",

  主要注释:""

  };

  },

  方法:{

  格式化日期(日期){

  return DateUtil.formatDate(date, yyyy-MM-DD hh:MM );

  },

  手柄关闭(完成){

  done();

  },

  /**

  * 点赞

  */

  /* likeClick(项目){

  if (item.isLike===null) {

  item.likeNum

  }否则{

  if (item.isLike) {

  项目。像num-;

  }否则{

  item.likeNum

  }

  item.isLike=!项目。就是喜欢;

  }

  }, */

  //获取评论内容

  getCommentList() {

  注释API。查找列表(这个。关系id,this.commentType).然后(res={

  这个。注释列表=RES . data

  });

  },

  /**

  * 点击取消按钮

  */

  取消(){

  这个。show itemid=

  },

  /**

  * 提交评论

  */

  commitComment() {

  //封装参数

  让param={

  userId: this.userInfo.userId,

  relationId: this.relationId,

  类型:this.commentType,

  replyUserId: this.replyUserId,

  parentId: this.parentId,

  内容:这个。投入注释

  };

  评论tapi。保存注释(参数).然后(res={

  if (res.success) {

  这个消息({

  消息: 评论成功,

  类型:"成功"

  });

  这个。getcommentlist();

  这个。输入注释=" ";

  }否则{

  这个message.error(评论失败);

  }

  });

  },

  /**

  * 提交评论

  */

  commitmajorgeoint(){

  //封装参数

  让param={

  userId: this.userInfo.userId,

  relationId: this.relationId,

  类型:this.commentType,

  replyUserId: this.replyUserId,

  parentId: this.parentId,

  内容:this.majorComment

  };

  评论tapi。保存注释(参数).然后(res={

  if (res.success) {

  这个消息({

  消息: 评论成功,

  类型:"成功"

  });

  这个。getcommentlist();

  这个。主要评论=" ";

  }否则{

  这个message.error(评论失败);

  }

  });

  },

  /**

  * 点击评论按钮显示输入框

  *项目:当前大评论

  *回复:当前回复的评论

  */

  showCommentInput(项目,回复,类型){

  如果(回复){

  这个。输入label= @ 回复。用户名“”;

  if (type===major) {

  这个。parentid=回复。id;

  }

  if (type===child) {

  这个。parentid=回复。parentid

  }

  这个。回复userid=回复。userid

  调试器;

  }否则{

  这个。输入标签=" ";

  这个。parentid=" 0

  这个。回复userid=

  }

  这个。输入注释=" ";

  这个。显示itemid=item。id;

  },

  showCommentInputMajor() {

  这个。输入标签=" ";

  这个。parentid=" 0

  这个。回复userid=

  },

  重置(){

  这个。输入注释=" ";

  这个。主要评论=" ";

  },

  close() {

  这个. emit(commentClose , 0 );

  }

  }

  };

  /脚本

  样式范围语言=少

  /深/。el-drawer__body {

  溢出:自动;

  }

  /深/。el-drawer__header span:focus {

  大纲:0!重要;

  }。容器{

  填充:0 10px

  框大小:边框-框;评论{

  显示器:flex

  伸缩方向:列;

  填充:10px

  边框-底部:1px solid # f2f 6 fc。信息{

  显示器:flex

  对齐-项目:居中;头像{

  边界半径:50%;

  }。右{

  显示器:flex

  伸缩方向:列;

  左边距:10px。名称{

  字体大小:16px

  颜色:# 303133;

  边距-底部:5px

  字体粗细:500;

  }。日期{

  字体大小:12px

  颜色:# 909399;

  }

  }

  }。内容{

  字体大小:16px

  颜色:# 303133;

  行高:20px

  填充:10px 0;

  }。控制{

  显示器:flex

  对齐-项目:居中;

  字体大小:14px

  颜色:# 909399;喜欢{

  显示器:flex

  对齐-项目:居中;

  右边距:20px

  光标:指针;活跃,

  :悬停{

  颜色:# 409eff

  }。iconfont {

  字体大小:14px

  右边距:5px

  }

  }。评论-回复{

  显示器:flex

  对齐-项目:居中;

  光标:指针;

  :悬停{

  颜色:# 333;

  }。iconfont {

  字体大小:16px

  右边距:5px

  margin-top:4px;

  }

  }

  }。回复{

  边距:10px 0;

  border-left:2px solid # DCD Fe 6;项目{

  边距:0 10px

  填充:10px 0;

  底部边框:1px虚线# ebeef5。回复-内容{

  显示器:flex

  对齐-项目:居中;

  字体大小:14px

  颜色:# 303133;发件人姓名{

  颜色:# 409eff

  }。收件人姓名{

  颜色:# 409eff

  左边距:5px

  右边距:5px

  }

  }。回复-底部{

  显示器:flex

  对齐-项目:居中;

  边距-顶部:6px

  字体大小:12px

  颜色:# 909399;回复文本{

  显示器:flex

  对齐-项目:居中;

  左边距:10px

  光标:指针;

  :悬停{

  颜色:# 333;

  }。图标-图标注释{

  右边距:5px

  margin-top:4px;

  字体大小:13px

  }

  }

  }

  }。写-回复{

  显示器:flex

  对齐-项目:居中;

  字体大小:14px

  颜色:# 909399;

  填充:10px

  光标:指针;

  :悬停{

  颜色:# 303133;

  }。埃尔-图标-编辑{

  右边距:5px

  }

  }。淡入激活,

  淡化-保持活动状态{

  过渡:不透明度0.5s

  }。淡入,淡出-离开至{

  不透明度:0;

  }。输入包装器{

  填充:10px。灰色-背景-输入,埃尔输入_ _内部{

  /*背景色:# 67C23A*/

  }。BTN-控制{

  显示器:flex

  justify-content:flex-end;

  对齐-项目:居中;

  填充顶部:10px。取消{

  字体大小:16px

  颜色:# 606266;

  右边距:20px

  光标:指针;

  :悬停{

  颜色:# 333;

  }

  }。确认{

  字体大小:16px

  }

  }

  }

  }

  }

  }

  /风格

  其他模块引用该评论组件

  模板

  评论

  :关系id= KPI性能。id

  :commentType=1

  :抽屉=isComment

  @commentClose=commentClick(0 )

  /评论

  /模板

  脚本

  从" @/组件/注释"导入注释;

  导出默认值{

  组件:{

  评论

  }

  }

  /脚本

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: