perf: 后台评论管理

This commit is contained in:
xiongxiaoyang 2023-04-14 23:16:55 +08:00
parent 8ddc6cc434
commit 3ffa75dc10
7 changed files with 314 additions and 242 deletions
novel-admin/src/main
java/com/java2nb/novel
resources
mybatis/novel
static/js/appjs/novel/bookComment

@ -1,15 +1,15 @@
package com.java2nb.novel.dao;
import com.java2nb.novel.domain.BookDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
/**
* 小说表
*
* @author xiongxy
* @email 1179705413@qq.com
* @date 2020-12-01 03:49:46
@ -32,4 +32,7 @@ public interface BookDao {
int batchRemove(Long[] ids);
List<Map<Object, Object>> tableSta(Date minDate);
List<BookDO> batchGet(List<Long> ids);
}

@ -1,15 +1,13 @@
package com.java2nb.novel.dao;
import com.java2nb.novel.domain.UserDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
/**
*
* @author xiongxy
* @email 1179705413@qq.com
* @date 2020-12-01 03:49:08
@ -32,4 +30,6 @@ public interface UserDao {
int batchRemove(Long[] ids);
List<Map<Object, Object>> tableSta(Date minDate);
List<UserDO> batchGet(List<Long> userIds);
}

@ -1,17 +1,11 @@
package com.java2nb.novel.domain;
import java.io.Serializable;
import java.math.BigDecimal;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.java2nb.common.jsonserializer.LongToStringSerializer;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.io.Serializable;
import java.util.Date;
/**
@ -22,6 +16,7 @@ import java.util.Date;
* @date 2023-04-14 21:59:28
*/
public class BookCommentDO implements Serializable {
private static final long serialVersionUID = 1L;
@ -50,84 +45,117 @@ public class BookCommentDO implements Serializable {
@JsonSerialize(using = LongToStringSerializer.class)
private Long createUserId;
private String bookName;
private String userName;
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
/**
* 设置主键
*/
public void setId(Long id) {
this.id = id;
}
/**
* 获取主键
*/
public Long getId() {
return id;
}
/**
* 设置小说ID
*/
public void setBookId(Long bookId) {
this.bookId = bookId;
}
/**
* 获取小说ID
*/
public Long getBookId() {
return bookId;
}
/**
* 设置评价内容
*/
public void setCommentContent(String commentContent) {
this.commentContent = commentContent;
}
/**
* 获取评价内容
*/
public String getCommentContent() {
return commentContent;
}
/**
* 设置回复数量
*/
public void setReplyCount(Integer replyCount) {
this.replyCount = replyCount;
}
/**
* 获取回复数量
*/
public Integer getReplyCount() {
return replyCount;
}
/**
* 设置审核状态0待审核1审核通过2审核不通过
*/
public void setAuditStatus(Integer auditStatus) {
this.auditStatus = auditStatus;
}
/**
* 获取审核状态0待审核1审核通过2审核不通过
*/
public Integer getAuditStatus() {
return auditStatus;
}
/**
* 设置评价时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取评价时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置评价人
*/
public void setCreateUserId(Long createUserId) {
this.createUserId = createUserId;
}
/**
* 获取评价人
*/

@ -1,21 +1,30 @@
package com.java2nb.novel.service.impl;
import com.java2nb.novel.dao.BookCommentDao;
import com.java2nb.novel.dao.BookDao;
import com.java2nb.novel.dao.UserDao;
import com.java2nb.novel.domain.BookCommentDO;
import com.java2nb.novel.domain.BookDO;
import com.java2nb.novel.domain.UserDO;
import com.java2nb.novel.service.BookCommentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Map;
import com.java2nb.novel.dao.BookCommentDao;
import com.java2nb.novel.domain.BookCommentDO;
import com.java2nb.novel.service.BookCommentService;
import java.util.stream.Collectors;
@Service
public class BookCommentServiceImpl implements BookCommentService {
@Autowired
private BookCommentDao bookCommentDao;
@Autowired
private BookDao bookDao;
@Autowired
private UserDao userDao;
@Override
public BookCommentDO get(Long id) {
@ -24,7 +33,20 @@ public class BookCommentServiceImpl implements BookCommentService {
@Override
public List<BookCommentDO> list(Map<String, Object> map) {
return bookCommentDao.list(map);
List<BookCommentDO> list = bookCommentDao.list(map);
if (!CollectionUtils.isEmpty(list)) {
List<Long> bookIds = list.stream().map(BookCommentDO::getBookId).collect(Collectors.toList());
Map<Long, String> bookNameMap = bookDao.batchGet(bookIds).stream()
.collect(Collectors.toMap(BookDO::getId, BookDO::getBookName));
List<Long> userIds = list.stream().map(BookCommentDO::getCreateUserId).collect(Collectors.toList());
Map<Long, String> userNameMap = userDao.batchGet(userIds).stream()
.collect(Collectors.toMap(UserDO::getId, UserDO::getUsername));
list.forEach(v -> {
v.setBookName(bookNameMap.get(v.getBookId()));
v.setUserName(userNameMap.get(v.getCreateUserId()));
});
}
return list;
}
@Override

@ -285,5 +285,13 @@
GROUP BY DATE_FORMAT(create_time, "%Y-%m-%d")
ORDER BY staDate
</select>
<select id="batchGet" resultType="com.java2nb.novel.domain.BookDO">
select
`id`,`work_direction`,`cat_id`,`cat_name`,`pic_url`,`book_name`,`author_id`,`author_name`,`book_desc`,`score`,`book_status`,`visit_count`,`word_count`,`comment_count`,`yesterday_buy`,`last_index_id`,`last_index_name`,`last_index_update_time`,`is_vip`,`status`,`update_time`,`create_time`,`crawl_source_id`,`crawl_book_id`,`crawl_last_time`,`crawl_is_stop`
from book where id in
<foreach item="id" collection="list" open="(" separator="," close=")">
#{id}
</foreach>
</select>
</mapper>

@ -4,7 +4,18 @@
<mapper namespace="com.java2nb.novel.dao.UserDao">
<select id="get" resultType="com.java2nb.novel.domain.UserDO">
select `id`,`username`,`password`,`nick_name`,`user_photo`,`user_sex`,`account_balance`,`status`,`create_time`,`update_time` from user where id = #{value}
select `id`,
`username`,
`password`,
`nick_name`,
`user_photo`,
`user_sex`,
`account_balance`,
`status`,
`create_time`,
`update_time`
from user
where id = #{value}
</select>
<select id="list" resultType="com.java2nb.novel.domain.UserDO">
@ -54,8 +65,7 @@
<insert id="save" parameterType="com.java2nb.novel.domain.UserDO">
insert into user
(
`id`,
(`id`,
`username`,
`password`,
`nick_name`,
@ -64,11 +74,8 @@
`account_balance`,
`status`,
`create_time`,
`update_time`
)
values
(
#{id},
`update_time`)
values (#{id},
#{username},
#{password},
#{nickName},
@ -77,8 +84,7 @@
#{accountBalance},
#{status},
#{createTime},
#{updateTime}
)
#{updateTime})
</insert>
<insert id="saveSelective" parameterType="com.java2nb.novel.domain.UserDO">
@ -127,7 +133,9 @@
</update>
<delete id="remove">
delete from user where id = #{value}
delete
from user
where id = #{value}
</delete>
<delete id="batchRemove">
@ -138,17 +146,20 @@
</delete>
<select id="tableSta" resultType="map">
SELECT
DATE_FORMAT( create_time, "%Y-%m-%d" ) AS staDate,
SELECT DATE_FORMAT(create_time, "%Y-%m-%d") AS staDate,
COUNT(1) userCount
FROM
user
WHERE
create_time >= #{minDate}
GROUP BY
DATE_FORMAT( create_time, "%Y-%m-%d" )
ORDER BY
staDate
FROM user
WHERE create_time >= #{minDate}
GROUP BY DATE_FORMAT(create_time, "%Y-%m-%d")
ORDER BY staDate
</select>
<select id="batchGet" resultType="com.java2nb.novel.domain.UserDO">
select
`id`,`username`,`password`,`nick_name`,`user_photo`,`user_sex`,`account_balance`,`status`,`create_time`,`update_time`
from user where id in
<foreach item="id" collection="list" open="(" separator="," close=")">
#{id}
</foreach>
</select>
</mapper>

@ -61,25 +61,25 @@ function load() {
},
{
field: 'bookId',
title: '小说ID'
field: 'bookName',
title: '评论小说'
},
{
field: 'commentContent',
title: '内容'
title: '内容'
},
{
field: 'createTime',
title: '时间'
title: '时间'
},
{
field: 'createUserId',
title: '价人ID'
field: 'userName',
title: '论人'
},