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 @@
+