From 1cffbae495caf74bcdd7519229d0b3be1413ead8 Mon Sep 17 00:00:00 2001
From: xiaoyang
Date: Mon, 26 Jul 2021 19:06:57 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=96=B0=E9=97=BB=E9=98=85?=
=?UTF-8?q?=E8=AF=BB=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
doc/sql/20210726.sql | 1 +
doc/sql/novel_plus.sql | 4 +++-
.../java/com/java2nb/novel/entity/News.java | 19 +++++++++++++----
.../novel/mapper/NewsDynamicSqlSupport.java | 5 +++++
.../com/java2nb/novel/mapper/NewsMapper.java | 10 ++++++++-
.../resources/mybatis/generatorConfig.xml | 2 +-
.../novel/controller/NewsController.java | 17 +++++++++++++--
.../java2nb/novel/mapper/FrontNewsMapper.java | 21 +++++++++++++++++++
.../java2nb/novel/service/BookService.java | 3 ++-
.../java2nb/novel/service/NewsService.java | 6 ++++++
.../novel/service/impl/BookServiceImpl.java | 3 +--
.../novel/service/impl/NewsServiceImpl.java | 8 ++++++-
.../resources/mybatis/mapping/NewsMapper.xml | 9 ++++++++
.../resources/templates/about/news_info.html | 7 ++++++-
14 files changed, 101 insertions(+), 14 deletions(-)
create mode 100644 doc/sql/20210726.sql
create mode 100644 novel-front/src/main/java/com/java2nb/novel/mapper/FrontNewsMapper.java
create mode 100644 novel-front/src/main/resources/mybatis/mapping/NewsMapper.xml
diff --git a/doc/sql/20210726.sql b/doc/sql/20210726.sql
new file mode 100644
index 0000000..7e56bf6
--- /dev/null
+++ b/doc/sql/20210726.sql
@@ -0,0 +1 @@
+alter table news add column `read_count` BIGINT NOT NULL DEFAULT '0' COMMENT '阅读量' after content;
\ No newline at end of file
diff --git a/doc/sql/novel_plus.sql b/doc/sql/novel_plus.sql
index c9def48..f812822 100644
--- a/doc/sql/novel_plus.sql
+++ b/doc/sql/novel_plus.sql
@@ -1838,4 +1838,6 @@ INSERT INTO `sys_role_menu`(`id`, `role_id`, `menu_id`) VALUES (4888, 1, 234);
delete from sys_menu where menu_id = 202;
-INSERT INTO crawl_source(`id`, `source_name`, `crawl_rule`, `source_status`, `create_time`, `update_time`) VALUES (16, 'i笔趣阁', '{\"bookListUrl\":\"http://m.ibiquge.net/xclass/{catId}/{page}.html\",\"catIdRule\":{\"catId1\":\"1\",\"catId2\":\"2\",\"catId3\":\"3\",\"catId4\":\"4\",\"catId5\":\"6\",\"catId6\":\"5\",\"catId7\":\"7\"},\"bookIdPatten\":\"href=\\\"/(\\\\d+_\\\\d+)/\\\"\",\"pagePatten\":\"value=\\\"(\\\\d+)/\\\\d+\\\"\",\"totalPagePatten\":\"value=\\\"\\\\d+/(\\\\d+)\\\"\",\"bookDetailUrl\":\"http://m.ibiquge.net/{bookId}/\",\"bookNamePatten\":\"([^/]+) \",\"authorNamePatten\":\"([^/]+) \",\"picUrlPatten\":\" ]+)\\\"\\\\s+onerror=\\\"this.src=\",\"picUrlPrefix\":\"http://m.ibiquge.net\",\"statusPatten\":\">状态:([^/]+)\",\"bookStatusRule\":{\"连载\":0,\"完结\":1},\"visitCountPatten\":\">点击:(\\\\d+)\",\"descStart\":\"\",\"descEnd\":\"
\",\"bookIndexUrl\":\"http://www.ibiquge.net/{bookId}/\",\"bookIndexStart\":\"正文\",\"indexIdPatten\":\"[^/]+ \",\"indexNamePatten\":\"([^/]+) \",\"bookContentUrl\":\"http://www.ibiquge.net/{bookId}/{indexId}.html\",\"contentStart\":\"
\",\"contentEnd\":\"\"}', 0, '2021-02-04 21:31:23', '2021-02-04 21:31:23');
\ No newline at end of file
+INSERT INTO crawl_source(`id`, `source_name`, `crawl_rule`, `source_status`, `create_time`, `update_time`) VALUES (16, 'i笔趣阁', '{\"bookListUrl\":\"http://m.ibiquge.net/xclass/{catId}/{page}.html\",\"catIdRule\":{\"catId1\":\"1\",\"catId2\":\"2\",\"catId3\":\"3\",\"catId4\":\"4\",\"catId5\":\"6\",\"catId6\":\"5\",\"catId7\":\"7\"},\"bookIdPatten\":\"href=\\\"/(\\\\d+_\\\\d+)/\\\"\",\"pagePatten\":\"value=\\\"(\\\\d+)/\\\\d+\\\"\",\"totalPagePatten\":\"value=\\\"\\\\d+/(\\\\d+)\\\"\",\"bookDetailUrl\":\"http://m.ibiquge.net/{bookId}/\",\"bookNamePatten\":\"
([^/]+) \",\"authorNamePatten\":\"
([^/]+) \",\"picUrlPatten\":\"
]+)\\\"\\\\s+onerror=\\\"this.src=\",\"picUrlPrefix\":\"http://m.ibiquge.net\",\"statusPatten\":\">状态:([^/]+)\",\"bookStatusRule\":{\"连载\":0,\"完结\":1},\"visitCountPatten\":\">点击:(\\\\d+)\",\"descStart\":\"
\",\"descEnd\":\"
\",\"bookIndexUrl\":\"http://www.ibiquge.net/{bookId}/\",\"bookIndexStart\":\"正文\",\"indexIdPatten\":\"
[^/]+ \",\"indexNamePatten\":\"
([^/]+) \",\"bookContentUrl\":\"http://www.ibiquge.net/{bookId}/{indexId}.html\",\"contentStart\":\"\",\"contentEnd\":\"
\"}', 0, '2021-02-04 21:31:23', '2021-02-04 21:31:23');
+
+alter table news add column `read_count` BIGINT NOT NULL DEFAULT '0' COMMENT '阅读量' after content;
\ No newline at end of file
diff --git a/novel-common/src/main/java/com/java2nb/novel/entity/News.java b/novel-common/src/main/java/com/java2nb/novel/entity/News.java
index c497248..c555349 100644
--- a/novel-common/src/main/java/com/java2nb/novel/entity/News.java
+++ b/novel-common/src/main/java/com/java2nb/novel/entity/News.java
@@ -1,11 +1,9 @@
package com.java2nb.novel.entity;
-
-import javax.annotation.Generated;
-import java.io.Serializable;
import java.util.Date;
+import javax.annotation.Generated;
-public class News implements Serializable {
+public class News {
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private Long id;
@@ -21,6 +19,9 @@ public class News implements Serializable {
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private String title;
+ @Generated("org.mybatis.generator.api.MyBatisGenerator")
+ private Long readCount;
+
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private Date createTime;
@@ -86,6 +87,16 @@ public class News implements Serializable {
this.title = title == null ? null : title.trim();
}
+ @Generated("org.mybatis.generator.api.MyBatisGenerator")
+ public Long getReadCount() {
+ return readCount;
+ }
+
+ @Generated("org.mybatis.generator.api.MyBatisGenerator")
+ public void setReadCount(Long readCount) {
+ this.readCount = readCount;
+ }
+
@Generated("org.mybatis.generator.api.MyBatisGenerator")
public Date getCreateTime() {
return createTime;
diff --git a/novel-common/src/main/java/com/java2nb/novel/mapper/NewsDynamicSqlSupport.java b/novel-common/src/main/java/com/java2nb/novel/mapper/NewsDynamicSqlSupport.java
index 43da731..7bb23e3 100644
--- a/novel-common/src/main/java/com/java2nb/novel/mapper/NewsDynamicSqlSupport.java
+++ b/novel-common/src/main/java/com/java2nb/novel/mapper/NewsDynamicSqlSupport.java
@@ -25,6 +25,9 @@ public final class NewsDynamicSqlSupport {
@Generated("org.mybatis.generator.api.MyBatisGenerator")
public static final SqlColumn
title = news.title;
+ @Generated("org.mybatis.generator.api.MyBatisGenerator")
+ public static final SqlColumn readCount = news.readCount;
+
@Generated("org.mybatis.generator.api.MyBatisGenerator")
public static final SqlColumn createTime = news.createTime;
@@ -52,6 +55,8 @@ public final class NewsDynamicSqlSupport {
public final SqlColumn title = column("title", JDBCType.VARCHAR);
+ public final SqlColumn readCount = column("read_count", JDBCType.BIGINT);
+
public final SqlColumn createTime = column("create_time", JDBCType.TIMESTAMP);
public final SqlColumn createUserId = column("create_user_id", JDBCType.BIGINT);
diff --git a/novel-common/src/main/java/com/java2nb/novel/mapper/NewsMapper.java b/novel-common/src/main/java/com/java2nb/novel/mapper/NewsMapper.java
index 91d3ad5..f5a6916 100644
--- a/novel-common/src/main/java/com/java2nb/novel/mapper/NewsMapper.java
+++ b/novel-common/src/main/java/com/java2nb/novel/mapper/NewsMapper.java
@@ -35,7 +35,7 @@ import org.mybatis.dynamic.sql.util.mybatis3.MyBatis3Utils;
@Mapper
public interface NewsMapper {
@Generated("org.mybatis.generator.api.MyBatisGenerator")
- BasicColumn[] selectList = BasicColumn.columnList(id, catId, catName, sourceName, title, createTime, createUserId, updateTime, updateUserId, content);
+ BasicColumn[] selectList = BasicColumn.columnList(id, catId, catName, sourceName, title, readCount, createTime, createUserId, updateTime, updateUserId, content);
@Generated("org.mybatis.generator.api.MyBatisGenerator")
@SelectProvider(type=SqlProviderAdapter.class, method="select")
@@ -66,6 +66,7 @@ public interface NewsMapper {
@Result(column="cat_name", property="catName", jdbcType=JdbcType.VARCHAR),
@Result(column="source_name", property="sourceName", jdbcType=JdbcType.VARCHAR),
@Result(column="title", property="title", jdbcType=JdbcType.VARCHAR),
+ @Result(column="read_count", property="readCount", jdbcType=JdbcType.BIGINT),
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="create_user_id", property="createUserId", jdbcType=JdbcType.BIGINT),
@Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
@@ -103,6 +104,7 @@ public interface NewsMapper {
.map(catName).toProperty("catName")
.map(sourceName).toProperty("sourceName")
.map(title).toProperty("title")
+ .map(readCount).toProperty("readCount")
.map(createTime).toProperty("createTime")
.map(createUserId).toProperty("createUserId")
.map(updateTime).toProperty("updateTime")
@@ -119,6 +121,7 @@ public interface NewsMapper {
.map(catName).toProperty("catName")
.map(sourceName).toProperty("sourceName")
.map(title).toProperty("title")
+ .map(readCount).toProperty("readCount")
.map(createTime).toProperty("createTime")
.map(createUserId).toProperty("createUserId")
.map(updateTime).toProperty("updateTime")
@@ -135,6 +138,7 @@ public interface NewsMapper {
.map(catName).toPropertyWhenPresent("catName", record::getCatName)
.map(sourceName).toPropertyWhenPresent("sourceName", record::getSourceName)
.map(title).toPropertyWhenPresent("title", record::getTitle)
+ .map(readCount).toPropertyWhenPresent("readCount", record::getReadCount)
.map(createTime).toPropertyWhenPresent("createTime", record::getCreateTime)
.map(createUserId).toPropertyWhenPresent("createUserId", record::getCreateUserId)
.map(updateTime).toPropertyWhenPresent("updateTime", record::getUpdateTime)
@@ -177,6 +181,7 @@ public interface NewsMapper {
.set(catName).equalTo(record::getCatName)
.set(sourceName).equalTo(record::getSourceName)
.set(title).equalTo(record::getTitle)
+ .set(readCount).equalTo(record::getReadCount)
.set(createTime).equalTo(record::getCreateTime)
.set(createUserId).equalTo(record::getCreateUserId)
.set(updateTime).equalTo(record::getUpdateTime)
@@ -191,6 +196,7 @@ public interface NewsMapper {
.set(catName).equalToWhenPresent(record::getCatName)
.set(sourceName).equalToWhenPresent(record::getSourceName)
.set(title).equalToWhenPresent(record::getTitle)
+ .set(readCount).equalToWhenPresent(record::getReadCount)
.set(createTime).equalToWhenPresent(record::getCreateTime)
.set(createUserId).equalToWhenPresent(record::getCreateUserId)
.set(updateTime).equalToWhenPresent(record::getUpdateTime)
@@ -205,6 +211,7 @@ public interface NewsMapper {
.set(catName).equalTo(record::getCatName)
.set(sourceName).equalTo(record::getSourceName)
.set(title).equalTo(record::getTitle)
+ .set(readCount).equalTo(record::getReadCount)
.set(createTime).equalTo(record::getCreateTime)
.set(createUserId).equalTo(record::getCreateUserId)
.set(updateTime).equalTo(record::getUpdateTime)
@@ -221,6 +228,7 @@ public interface NewsMapper {
.set(catName).equalToWhenPresent(record::getCatName)
.set(sourceName).equalToWhenPresent(record::getSourceName)
.set(title).equalToWhenPresent(record::getTitle)
+ .set(readCount).equalToWhenPresent(record::getReadCount)
.set(createTime).equalToWhenPresent(record::getCreateTime)
.set(createUserId).equalToWhenPresent(record::getCreateUserId)
.set(updateTime).equalToWhenPresent(record::getUpdateTime)
diff --git a/novel-common/src/main/resources/mybatis/generatorConfig.xml b/novel-common/src/main/resources/mybatis/generatorConfig.xml
index 5dbb62f..7408b76 100644
--- a/novel-common/src/main/resources/mybatis/generatorConfig.xml
+++ b/novel-common/src/main/resources/mybatis/generatorConfig.xml
@@ -44,7 +44,7 @@
-
+
diff --git a/novel-front/src/main/java/com/java2nb/novel/controller/NewsController.java b/novel-front/src/main/java/com/java2nb/novel/controller/NewsController.java
index 930ea6f..6eec326 100644
--- a/novel-front/src/main/java/com/java2nb/novel/controller/NewsController.java
+++ b/novel-front/src/main/java/com/java2nb/novel/controller/NewsController.java
@@ -1,12 +1,16 @@
package com.java2nb.novel.controller;
import com.github.pagehelper.PageInfo;
+import com.java2nb.novel.core.bean.PageBean;
import com.java2nb.novel.core.bean.ResultBean;
+import com.java2nb.novel.entity.News;
import com.java2nb.novel.service.NewsService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
+import java.util.List;
+
/**
* @author 11797
*/
@@ -22,7 +26,7 @@ public class NewsController {
* 查询首页新闻
* */
@GetMapping("listIndexNews")
- public ResultBean listIndexNews(){
+ public ResultBean> listIndexNews(){
return ResultBean.ok(newsService.listIndexNews());
}
@@ -30,10 +34,19 @@ public class NewsController {
* 分页查询新闻列表
* */
@GetMapping("listByPage")
- public ResultBean listByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "5") int pageSize){
+ public ResultBean> listByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "5") int pageSize){
return ResultBean.ok(newsService.listByPage(page,pageSize));
}
+ /**
+ * 增加新闻阅读量
+ * */
+ @PostMapping("addReadCount")
+ public ResultBean addReadCount(@RequestParam(value = "newsId") Integer newsId){
+ newsService.addReadCount(newsId);
+ return ResultBean.ok();
+ }
+
}
diff --git a/novel-front/src/main/java/com/java2nb/novel/mapper/FrontNewsMapper.java b/novel-front/src/main/java/com/java2nb/novel/mapper/FrontNewsMapper.java
new file mode 100644
index 0000000..ad70607
--- /dev/null
+++ b/novel-front/src/main/java/com/java2nb/novel/mapper/FrontNewsMapper.java
@@ -0,0 +1,21 @@
+package com.java2nb.novel.mapper;
+
+import com.java2nb.novel.entity.Book;
+import com.java2nb.novel.vo.BookSpVO;
+import com.java2nb.novel.vo.BookVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ */
+public interface FrontNewsMapper extends NewsMapper {
+
+ /**
+ * 增加新闻阅读量
+ * @param newsId 新闻ID
+ * */
+ void addReadCount(@Param("newsId") Integer newsId);
+
+}
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/BookService.java b/novel-front/src/main/java/com/java2nb/novel/service/BookService.java
index 87d3d5b..442a582 100644
--- a/novel-front/src/main/java/com/java2nb/novel/service/BookService.java
+++ b/novel-front/src/main/java/com/java2nb/novel/service/BookService.java
@@ -115,7 +115,8 @@ public interface BookService {
/**
* 增加点击次数
* @param bookId 书籍ID
- * @param visitCount*/
+ * @param visitCount 点击量
+ * */
void addVisitCount(Long bookId, Integer visitCount);
/**
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/NewsService.java b/novel-front/src/main/java/com/java2nb/novel/service/NewsService.java
index 3223439..719a0e5 100644
--- a/novel-front/src/main/java/com/java2nb/novel/service/NewsService.java
+++ b/novel-front/src/main/java/com/java2nb/novel/service/NewsService.java
@@ -32,4 +32,10 @@ public interface NewsService {
* @return 新闻分页数据
* */
PageBean listByPage(int page, int pageSize);
+
+ /**
+ * 增加新闻阅读量
+ * @param newsId 新闻ID
+ * */
+ void addReadCount(Integer newsId);
}
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java b/novel-front/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java
index 63c2cbe..76e3fc1 100644
--- a/novel-front/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java
+++ b/novel-front/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java
@@ -513,7 +513,6 @@ public class BookServiceImpl implements BookService {
//该作者发布过此书名的小说
throw new BusinessException(ResponseStatus.BOOKNAME_EXISTS);
}
- ;
book.setAuthorName(penName);
book.setAuthorId(authorId);
book.setVisitCount(0L);
@@ -566,7 +565,7 @@ public class BookServiceImpl implements BookService {
.render(RenderingStrategies.MYBATIS3));
//计算价格
- int bookPrice = new BigDecimal(wordCount).divide(bookPriceConfig.getWordCount()).multiply(bookPriceConfig.getValue()).intValue();
+ int bookPrice = new BigDecimal(wordCount).multiply(bookPriceConfig.getValue()).divide(bookPriceConfig.getWordCount(),0,BigDecimal.ROUND_DOWN).intValue();
//更新小说目录表
int indexNum = 0;
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/impl/NewsServiceImpl.java b/novel-front/src/main/java/com/java2nb/novel/service/impl/NewsServiceImpl.java
index 0863c73..ea75678 100644
--- a/novel-front/src/main/java/com/java2nb/novel/service/impl/NewsServiceImpl.java
+++ b/novel-front/src/main/java/com/java2nb/novel/service/impl/NewsServiceImpl.java
@@ -3,6 +3,7 @@ package com.java2nb.novel.service.impl;
import com.github.pagehelper.PageHelper;
import com.java2nb.novel.core.bean.PageBean;
import com.java2nb.novel.core.utils.BeanUtil;
+import com.java2nb.novel.mapper.FrontNewsMapper;
import com.java2nb.novel.service.NewsService;
import com.java2nb.novel.core.cache.CacheKey;
import com.java2nb.novel.core.cache.CacheService;
@@ -27,7 +28,7 @@ import static org.mybatis.dynamic.sql.select.SelectDSL.select;
@RequiredArgsConstructor
public class NewsServiceImpl implements NewsService {
- private final NewsMapper newsMapper;
+ private final FrontNewsMapper newsMapper;
private final CacheService cacheService;
@@ -72,4 +73,9 @@ public class NewsServiceImpl implements NewsService {
pageBean.setList(BeanUtil.copyList(news,NewsVO.class));
return pageBean;
}
+
+ @Override
+ public void addReadCount(Integer newsId) {
+ newsMapper.addReadCount(newsId);
+ }
}
diff --git a/novel-front/src/main/resources/mybatis/mapping/NewsMapper.xml b/novel-front/src/main/resources/mybatis/mapping/NewsMapper.xml
new file mode 100644
index 0000000..a70eabd
--- /dev/null
+++ b/novel-front/src/main/resources/mybatis/mapping/NewsMapper.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ update news set read_count = read_count + 1
+ where id = #{newsId}
+
+
\ No newline at end of file
diff --git a/novel-front/src/main/resources/templates/about/news_info.html b/novel-front/src/main/resources/templates/about/news_info.html
index 1b07a91..81f4e87 100644
--- a/novel-front/src/main/resources/templates/about/news_info.html
+++ b/novel-front/src/main/resources/templates/about/news_info.html
@@ -10,6 +10,7 @@
+
@@ -19,7 +20,7 @@
-
来源:[[${news.sourceName}]]
+
来源:[[${news.sourceName}]]
@@ -33,4 +34,8 @@