From 750c8dee0263fbd1a84b6f018b0aac380fd25415 Mon Sep 17 00:00:00 2001
From: xiaoyang
Date: Tue, 17 Aug 2021 19:55:24 +0800
Subject: [PATCH 01/19] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B0=8F=E8=AF=B4?=
=?UTF-8?q?=E5=86=85=E5=AE=B9TXT=E6=96=87=E6=9C=AC=E5=AD=98=E5=82=A8?=
=?UTF-8?q?=E6=96=B9=E6=A1=88=EF=BC=88=E4=B8=80=E8=A1=8C=E9=85=8D=E7=BD=AE?=
=?UTF-8?q?=E5=88=87=E6=8D=A2=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java2nb/novel/core/utils/FileUtil.java | 66 ++++++++++++-------
.../main/resources/application-common-dev.yml | 4 ++
.../resources/application-common-prod.yml | 5 +-
.../resources/mybatis/generatorConfig.xml | 2 +-
.../novel/service/BookContentService.java | 16 +++++
.../novel/service/impl/BookServiceImpl.java | 40 +++++------
.../impl/DbBookContentServiceImpl.java | 44 +++++++++++++
.../impl/FileBookContentServiceImpl.java | 36 ++++++++++
.../java2nb/novel/page/PageController.java | 15 +++--
.../novel/service/BookContentService.java | 11 ++++
.../impl/DbBookContentServiceImpl.java | 38 +++++++++++
.../impl/FileBookContentServiceImpl.java | 39 +++++++++++
12 files changed, 262 insertions(+), 54 deletions(-)
create mode 100644 novel-crawl/src/main/java/com/java2nb/novel/service/BookContentService.java
create mode 100644 novel-crawl/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java
create mode 100644 novel-crawl/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java
create mode 100644 novel-front/src/main/java/com/java2nb/novel/service/BookContentService.java
create mode 100644 novel-front/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java
create mode 100644 novel-front/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/utils/FileUtil.java b/novel-common/src/main/java/com/java2nb/novel/core/utils/FileUtil.java
index 8caf2bc..50ea3dc 100644
--- a/novel-common/src/main/java/com/java2nb/novel/core/utils/FileUtil.java
+++ b/novel-common/src/main/java/com/java2nb/novel/core/utils/FileUtil.java
@@ -19,6 +19,7 @@ import java.util.Objects;
/**
* 文件操作工具类
+ *
* @author 11797
*/
@UtilityClass
@@ -27,8 +28,8 @@ public class FileUtil {
/**
* 网络图片转本地
- * */
- public String network2Local(String picSrc,String picSavePath,String visitPrefix) {
+ */
+ public String network2Local(String picSrc, String picSavePath, String visitPrefix) {
InputStream input = null;
OutputStream out = null;
try {
@@ -53,45 +54,41 @@ public class FileUtil {
}
out.flush();
- if( ImageIO.read(picFile) == null){
+ if (ImageIO.read(picFile) == null) {
picSrc = "/images/default.gif";
}
- }catch (Exception e){
- log.error(e.getMessage(),e);
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
picSrc = "/images/default.gif";
- }finally {
- if(input != null){
- try {
- input.close();
- } catch (IOException e) {
- log.error(e.getMessage(),e);
- }finally {
- if(out != null){
- try {
- out.close();
- } catch (IOException e) {
- log.error(e.getMessage(),e);
- }
- }
- }
- }
+ } finally {
+ closeStream(input, out);
}
-
return picSrc;
}
+ @SneakyThrows
+ private void closeStream(InputStream input, OutputStream out) {
+ if (input != null) {
+ input.close();
+ }
+ if (out != null) {
+ out.close();
+ }
+ }
+
/**
* 判断文件是否为图片
+ *
* @param file 需要判断的文件
* @return true:是图片,false:不是图片
- * */
+ */
@SneakyThrows
- public boolean isImage(File file){
+ public boolean isImage(File file) {
BufferedImage bi = ImageIO.read(file);
@@ -100,6 +97,27 @@ public class FileUtil {
}
+ public void writeContentToFile(String fileSavePath, String fileSrc, String content) {
+ OutputStream out = null;
+ try {
+ File file = new File(fileSavePath + fileSrc);
+ File parentFile = file.getParentFile();
+ if (!parentFile.exists()) {
+ parentFile.mkdirs();
+ }
+ out = new FileOutputStream(file);
+ out.write(content.getBytes());
+ byte[] b = new byte[4096];
+ out.flush();
+
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
+ throw new RuntimeException("文件写入失败");
+ } finally {
+ closeStream(null, out);
+ }
+
+ }
}
diff --git a/novel-common/src/main/resources/application-common-dev.yml b/novel-common/src/main/resources/application-common-dev.yml
index 5515f1f..9018872 100644
--- a/novel-common/src/main/resources/application-common-dev.yml
+++ b/novel-common/src/main/resources/application-common-dev.yml
@@ -71,3 +71,7 @@ sharding:
+txt:
+ save:
+ storage: db #存储介质,db:数据库,file:txt文本
+ path: /Users/xiongxiaoyang/books #txt小说文本保存路径
\ No newline at end of file
diff --git a/novel-common/src/main/resources/application-common-prod.yml b/novel-common/src/main/resources/application-common-prod.yml
index 1f1c824..8853b0b 100644
--- a/novel-common/src/main/resources/application-common-prod.yml
+++ b/novel-common/src/main/resources/application-common-prod.yml
@@ -74,7 +74,10 @@ logging:
-
+txt:
+ save:
+ storage: db #存储介质,db:数据库,file:txt文本
+ path: /Users/xiongxiaoyang/books #txt小说文本保存路径
diff --git a/novel-common/src/main/resources/mybatis/generatorConfig.xml b/novel-common/src/main/resources/mybatis/generatorConfig.xml
index 7408b76..984a5aa 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-crawl/src/main/java/com/java2nb/novel/service/BookContentService.java b/novel-crawl/src/main/java/com/java2nb/novel/service/BookContentService.java
new file mode 100644
index 0000000..7090f3a
--- /dev/null
+++ b/novel-crawl/src/main/java/com/java2nb/novel/service/BookContentService.java
@@ -0,0 +1,16 @@
+package com.java2nb.novel.service;
+
+import com.java2nb.novel.entity.BookContent;
+
+import java.util.List;
+
+public interface BookContentService {
+
+ void saveBookContent(List bookContentList,Long bookId);
+
+ void saveBookContent(BookContent bookContent,Long bookId);
+
+ void updateBookContent(BookContent bookContent,Long bookId);
+
+
+}
diff --git a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java
index 64b6550..677d0c8 100644
--- a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java
+++ b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java
@@ -4,6 +4,7 @@ import com.java2nb.novel.entity.Book;
import com.java2nb.novel.entity.BookContent;
import com.java2nb.novel.entity.BookIndex;
import com.java2nb.novel.mapper.*;
+import com.java2nb.novel.service.BookContentService;
import com.java2nb.novel.service.BookService;
import com.java2nb.novel.utils.Constants;
import lombok.RequiredArgsConstructor;
@@ -37,7 +38,7 @@ public class BookServiceImpl implements BookService {
private final CrawlBookIndexMapper bookIndexMapper;
- private final BookContentMapper bookContentMapper;
+ private final BookContentService bookContentService;
@Override
@@ -46,7 +47,7 @@ public class BookServiceImpl implements BookService {
return bookMapper.count(countFrom(BookDynamicSqlSupport.book).where(BookDynamicSqlSupport.bookName, isEqualTo(bookName))
.and(BookDynamicSqlSupport.authorName, isEqualTo(authorName))
.build()
- .render(RenderingStrategies.MYBATIS3))>0;
+ .render(RenderingStrategies.MYBATIS3)) > 0;
}
@@ -57,7 +58,7 @@ public class BookServiceImpl implements BookService {
.equalTo(sourceId)
.set(crawlBookId)
.equalTo(bookId)
- .where(BookDynamicSqlSupport.id,isEqualTo(id))
+ .where(BookDynamicSqlSupport.id, isEqualTo(id))
.build()
.render(RenderingStrategies.MYBATIS3));
}
@@ -74,9 +75,9 @@ public class BookServiceImpl implements BookService {
@Transactional(rollbackFor = Exception.class)
@Override
public void saveBookAndIndexAndContent(Book book, List bookIndexList, List bookContentList) {
- if(!queryIsExistByBookNameAndAuthorName(book.getBookName(),book.getAuthorName())) {
+ if (!queryIsExistByBookNameAndAuthorName(book.getBookName(), book.getAuthorName())) {
- if(bookIndexList.size()>0) {
+ if (bookIndexList.size() > 0) {
//保存小说主表
@@ -85,7 +86,7 @@ public class BookServiceImpl implements BookService {
//批量保存目录和内容
bookIndexMapper.insertMultiple(bookIndexList);
- bookContentMapper.insertMultiple(bookContentList);
+ bookContentService.saveBookContent(bookContentList,book.getId());
}
}
@@ -96,7 +97,7 @@ public class BookServiceImpl implements BookService {
@Override
public List queryNeedUpdateBook(Date startDate, int limit) {
List books = bookMapper.queryNeedUpdateBook(startDate, limit);
- if(books.size()>0) {
+ if (books.size() > 0) {
//更新最后抓取时间为当前时间
bookMapper.updateCrawlLastTime(books, new Date());
}
@@ -105,38 +106,33 @@ public class BookServiceImpl implements BookService {
@Override
public Map queryExistBookIndexMap(Long bookId) {
- List bookIndexs = bookIndexMapper.selectMany(select(BookIndexDynamicSqlSupport.id,BookIndexDynamicSqlSupport.indexNum,BookIndexDynamicSqlSupport.indexName,BookIndexDynamicSqlSupport.wordCount)
+ List bookIndexs = bookIndexMapper.selectMany(select(BookIndexDynamicSqlSupport.id, BookIndexDynamicSqlSupport.indexNum, BookIndexDynamicSqlSupport.indexName, BookIndexDynamicSqlSupport.wordCount)
.from(BookIndexDynamicSqlSupport.bookIndex)
- .where(BookIndexDynamicSqlSupport.bookId,isEqualTo(bookId))
+ .where(BookIndexDynamicSqlSupport.bookId, isEqualTo(bookId))
.build()
.render(RenderingStrategies.MYBATIS3));
if (bookIndexs.size() > 0) {
- return bookIndexs.stream().collect(Collectors.toMap(BookIndex::getIndexNum, Function.identity()));
+ return bookIndexs.stream().collect(Collectors.toMap(BookIndex::getIndexNum, Function.identity()));
}
return new HashMap<>(0);
}
@Transactional(rollbackFor = Exception.class)
@Override
- public void updateBookAndIndexAndContent(Book book, List bookIndexList, List bookContentList, Map existBookIndexMap) {
+ public void updateBookAndIndexAndContent(Book book, List bookIndexList, List bookContentList, Map existBookIndexMap) {
for (int i = 0; i < bookIndexList.size(); i++) {
BookIndex bookIndex = bookIndexList.get(i);
BookContent bookContent = bookContentList.get(i);
- if(!existBookIndexMap.containsKey(bookIndex.getIndexNum())) {
+ if (!existBookIndexMap.containsKey(bookIndex.getIndexNum())) {
//插入
bookIndexMapper.insertSelective(bookIndex);
- bookContentMapper.insertSelective(bookContent);
- }else{
+ bookContentService.saveBookContent(bookContent,book.getId());
+ } else {
//更新
bookIndexMapper.updateByPrimaryKeySelective(bookIndex);
- bookContentMapper.update(update(BookContentDynamicSqlSupport.bookContent)
- .set(BookContentDynamicSqlSupport.content)
- .equalTo(bookContent.getContent())
- .where(BookContentDynamicSqlSupport.indexId,isEqualTo(bookContent.getIndexId()))
- .build()
- .render(RenderingStrategies.MYBATIS3));
+ bookContentService.updateBookContent(bookContent,book.getId());
}
@@ -145,7 +141,7 @@ public class BookServiceImpl implements BookService {
//更新小说主表
book.setBookName(null);
book.setAuthorName(null);
- if(Constants.VISIT_COUNT_DEFAULT.equals(book.getVisitCount())) {
+ if (Constants.VISIT_COUNT_DEFAULT.equals(book.getVisitCount())) {
book.setVisitCount(null);
}
bookMapper.updateByPrimaryKeySelective(book);
@@ -168,7 +164,7 @@ public class BookServiceImpl implements BookService {
.build()
.render(RenderingStrategies.MYBATIS3));
- if(books.size()>0){
+ if (books.size() > 0) {
return books.get(0);
}
diff --git a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java
new file mode 100644
index 0000000..9cb75bc
--- /dev/null
+++ b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java
@@ -0,0 +1,44 @@
+package com.java2nb.novel.service.impl;
+
+import com.java2nb.novel.entity.BookContent;
+import com.java2nb.novel.mapper.BookContentDynamicSqlSupport;
+import com.java2nb.novel.mapper.BookContentMapper;
+import com.java2nb.novel.service.BookContentService;
+import lombok.RequiredArgsConstructor;
+import org.mybatis.dynamic.sql.render.RenderingStrategies;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
+import static org.mybatis.dynamic.sql.SqlBuilder.update;
+
+
+@Service
+@RequiredArgsConstructor
+@ConditionalOnProperty(prefix = "txt.save", name = "storage", havingValue = "db")
+public class DbBookContentServiceImpl implements BookContentService {
+
+ private final BookContentMapper bookContentMapper;
+
+ @Override
+ public void saveBookContent(List bookContentList,Long bookId) {
+ bookContentMapper.insertMultiple(bookContentList);
+ }
+
+ @Override
+ public void saveBookContent(BookContent bookContent,Long bookId) {
+ bookContentMapper.insertSelective(bookContent);
+ }
+
+ @Override
+ public void updateBookContent(BookContent bookContent,Long bookId) {
+ bookContentMapper.update(update(BookContentDynamicSqlSupport.bookContent)
+ .set(BookContentDynamicSqlSupport.content)
+ .equalTo(bookContent.getContent())
+ .where(BookContentDynamicSqlSupport.indexId,isEqualTo(bookContent.getIndexId()))
+ .build()
+ .render(RenderingStrategies.MYBATIS3));
+ }
+}
diff --git a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java
new file mode 100644
index 0000000..28afc57
--- /dev/null
+++ b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java
@@ -0,0 +1,36 @@
+package com.java2nb.novel.service.impl;
+
+import com.java2nb.novel.core.utils.FileUtil;
+import com.java2nb.novel.entity.BookContent;
+import com.java2nb.novel.service.BookContentService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+@ConditionalOnProperty(prefix = "txt.save", name = "storage", havingValue = "file")
+public class FileBookContentServiceImpl implements BookContentService {
+
+ @Value("${txt.save.path}")
+ private String fileSavePath;
+
+ @Override
+ public void saveBookContent(List bookContentList,Long bookId) {
+ bookContentList.forEach(bookContent -> saveBookContent(bookContent,bookId));
+
+ }
+
+ @Override
+ public void saveBookContent(BookContent bookContent,Long bookId) {
+ FileUtil.writeContentToFile(fileSavePath,"/"+bookId+"/"+bookContent.getIndexId()+".txt",bookContent.getContent());
+ }
+
+ @Override
+ public void updateBookContent(BookContent bookContent,Long bookId) {
+ FileUtil.writeContentToFile(fileSavePath,"/"+bookId+"/"+bookContent.getIndexId()+".txt",bookContent.getContent());
+ }
+}
diff --git a/novel-front/src/main/java/com/java2nb/novel/page/PageController.java b/novel-front/src/main/java/com/java2nb/novel/page/PageController.java
index 615d152..44b211f 100644
--- a/novel-front/src/main/java/com/java2nb/novel/page/PageController.java
+++ b/novel-front/src/main/java/com/java2nb/novel/page/PageController.java
@@ -5,16 +5,14 @@ import com.java2nb.novel.core.bean.PageBean;
import com.java2nb.novel.core.bean.UserDetails;
import com.java2nb.novel.core.utils.ThreadLocalUtil;
import com.java2nb.novel.entity.*;
-import com.java2nb.novel.service.AuthorService;
-import com.java2nb.novel.service.BookService;
-import com.java2nb.novel.service.NewsService;
-import com.java2nb.novel.service.UserService;
+import com.java2nb.novel.service.*;
import com.java2nb.novel.vo.BookCommentVO;
import com.java2nb.novel.vo.BookSettingVO;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
@@ -36,6 +34,9 @@ import java.util.concurrent.ThreadPoolExecutor;
@Controller
public class PageController extends BaseController {
+ @Value("${txt.save.path}")
+ private String fileSavePath;
+
private final BookService bookService;
private final NewsService newsService;
@@ -44,6 +45,8 @@ public class PageController extends BaseController {
private final UserService userService;
+ private final BookContentService bookContentService;
+
private final ThreadPoolExecutor threadPoolExecutor;
@@ -174,7 +177,7 @@ public class PageController extends BaseController {
*/
@SneakyThrows
@RequestMapping("/book/{bookId}/{bookIndexId}.html")
- public String indexList(@PathVariable("bookId") Long bookId, @PathVariable("bookIndexId") Long bookIndexId, HttpServletRequest request, Model model) {
+ public String bookContent(@PathVariable("bookId") Long bookId, @PathVariable("bookIndexId") Long bookIndexId, HttpServletRequest request, Model model) {
//加载小说基本信息线程
CompletableFuture bookCompletableFuture = CompletableFuture.supplyAsync(() -> {
//查询书籍
@@ -210,7 +213,7 @@ public class PageController extends BaseController {
//加载小说内容信息线程
CompletableFuture bookContentCompletableFuture = CompletableFuture.supplyAsync(() -> {
//查询内容
- BookContent bookContent = bookService.queryBookContent(bookIndexId);
+ BookContent bookContent = bookContentService.queryBookContent(bookId, bookIndexId);
log.debug("加载小说内容信息线程结束");
return bookContent;
}, threadPoolExecutor);
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/BookContentService.java b/novel-front/src/main/java/com/java2nb/novel/service/BookContentService.java
new file mode 100644
index 0000000..a610fab
--- /dev/null
+++ b/novel-front/src/main/java/com/java2nb/novel/service/BookContentService.java
@@ -0,0 +1,11 @@
+package com.java2nb.novel.service;
+
+import com.java2nb.novel.entity.BookContent;
+
+import java.util.List;
+
+public interface BookContentService {
+
+ BookContent queryBookContent(Long bookId, Long bookIndexId);
+
+}
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java b/novel-front/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java
new file mode 100644
index 0000000..bf5e008
--- /dev/null
+++ b/novel-front/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java
@@ -0,0 +1,38 @@
+package com.java2nb.novel.service.impl;
+
+import com.java2nb.novel.entity.BookContent;
+import com.java2nb.novel.mapper.BookContentDynamicSqlSupport;
+import com.java2nb.novel.mapper.BookContentMapper;
+import com.java2nb.novel.service.BookContentService;
+import lombok.RequiredArgsConstructor;
+import org.mybatis.dynamic.sql.render.RenderingStrategies;
+import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+import static com.java2nb.novel.mapper.BookContentDynamicSqlSupport.bookContent;
+import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
+import static org.mybatis.dynamic.sql.SqlBuilder.update;
+import static org.mybatis.dynamic.sql.select.SelectDSL.select;
+
+
+@Service
+@RequiredArgsConstructor
+@ConditionalOnProperty(prefix = "txt.save", name = "storage", havingValue = "db")
+public class DbBookContentServiceImpl implements BookContentService {
+
+ private final BookContentMapper bookContentMapper;
+
+ @Override
+ public BookContent queryBookContent(Long bookId, Long bookIndexId) {
+ SelectStatementProvider selectStatement = select(BookContentDynamicSqlSupport.id, BookContentDynamicSqlSupport.content)
+ .from(bookContent)
+ .where(BookContentDynamicSqlSupport.indexId, isEqualTo(bookIndexId))
+ .limit(1)
+ .build()
+ .render(RenderingStrategies.MYBATIS3);
+ return bookContentMapper.selectMany(selectStatement).get(0);
+ }
+}
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java b/novel-front/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java
new file mode 100644
index 0000000..aa59320
--- /dev/null
+++ b/novel-front/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java
@@ -0,0 +1,39 @@
+package com.java2nb.novel.service.impl;
+
+import com.java2nb.novel.core.utils.FileUtil;
+import com.java2nb.novel.entity.BookContent;
+import com.java2nb.novel.service.BookContentService;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Service;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+@ConditionalOnProperty(prefix = "txt.save", name = "storage", havingValue = "file")
+public class FileBookContentServiceImpl implements BookContentService {
+
+ @Value("${txt.save.path}")
+ private String fileSavePath;
+
+ @SneakyThrows
+ @Override
+ public BookContent queryBookContent(Long bookId, Long bookIndexId) {
+ BufferedReader in = new BufferedReader(new FileReader(fileSavePath + "/" + bookId + "/" + bookIndexId + ".txt"));
+ StringBuffer sb = new StringBuffer();
+ String str;
+ while ((str = in.readLine()) != null) {
+ sb.append(str);
+ }
+ in.close();
+ return new BookContent() {{
+ setIndexId(bookIndexId);
+ setContent(sb.toString());
+ }};
+ }
+}
From e7897c988a08e0f4f69cb1a3d11ebcc95e7f1fab Mon Sep 17 00:00:00 2001
From: xiaoyang
Date: Tue, 17 Aug 2021 20:00:53 +0800
Subject: [PATCH 02/19] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index c279247..b54fed7 100644
--- a/README.md
+++ b/README.md
@@ -35,6 +35,7 @@ Gitee仓库地址: https://gitee.com/novel_dev_team/novel-cloud
- [x] 移动站与PC站站点分离,浏览器自动识别跳转。
- [x] PC站UI更新。
- [x] 支持前端模版自定义,内置多套模版。
+- [x] 可拓展的多种方式存储小说内容,内置数据库(分表)存储和TXT文本存储。
- [x] 新闻模块。
- [x] 排行榜。
- [x] 小说评论模块。
From 80b393fdda5034d4c393d10ab253804117d4db66 Mon Sep 17 00:00:00 2001
From: xiongxiaoyang <773861846@qq.com>
Date: Tue, 17 Aug 2021 21:07:33 +0800
Subject: [PATCH 03/19] =?UTF-8?q?v3.6.0=E5=8F=91=E5=B8=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
novel-admin/pom.xml | 4 +-
novel-common/pom.xml | 2 +-
novel-crawl/pom.xml | 2 +-
novel-front/pom.xml | 2 +-
.../novel/controller/BookController.java | 93 +++++++++----------
.../java2nb/novel/service/BookService.java | 1 +
pom.xml | 2 +-
7 files changed, 53 insertions(+), 53 deletions(-)
diff --git a/novel-admin/pom.xml b/novel-admin/pom.xml
index 0fed554..46d059c 100644
--- a/novel-admin/pom.xml
+++ b/novel-admin/pom.xml
@@ -5,7 +5,7 @@
com.java2nb
novel-admin
- 3.5.4
+ 3.6.0
jar
novel-admin
@@ -106,7 +106,7 @@
org.apache.shiro
shiro-spring
- 1.7.0
+ 1.3.2
diff --git a/novel-common/pom.xml b/novel-common/pom.xml
index 74b08d7..f2233f5 100644
--- a/novel-common/pom.xml
+++ b/novel-common/pom.xml
@@ -5,7 +5,7 @@
novel
com.java2nb
- 3.5.4
+ 3.6.0
4.0.0
diff --git a/novel-crawl/pom.xml b/novel-crawl/pom.xml
index 10710b9..48efbe1 100644
--- a/novel-crawl/pom.xml
+++ b/novel-crawl/pom.xml
@@ -5,7 +5,7 @@
novel
com.java2nb
- 3.5.4
+ 3.6.0
4.0.0
diff --git a/novel-front/pom.xml b/novel-front/pom.xml
index 66fa459..da5eeac 100644
--- a/novel-front/pom.xml
+++ b/novel-front/pom.xml
@@ -5,7 +5,7 @@
novel
com.java2nb
- 3.5.4
+ 3.6.0
4.0.0
diff --git a/novel-front/src/main/java/com/java2nb/novel/controller/BookController.java b/novel-front/src/main/java/com/java2nb/novel/controller/BookController.java
index 5bd317a..6bd0287 100644
--- a/novel-front/src/main/java/com/java2nb/novel/controller/BookController.java
+++ b/novel-front/src/main/java/com/java2nb/novel/controller/BookController.java
@@ -9,6 +9,7 @@ import com.java2nb.novel.entity.Book;
import com.java2nb.novel.entity.BookCategory;
import com.java2nb.novel.entity.BookComment;
import com.java2nb.novel.entity.BookIndex;
+import com.java2nb.novel.service.BookContentService;
import com.java2nb.novel.vo.BookCommentVO;
import com.java2nb.novel.vo.BookSettingVO;
import com.java2nb.novel.vo.BookSpVO;
@@ -32,10 +33,12 @@ import java.util.Map;
@RestController
@Slf4j
@RequiredArgsConstructor
-public class BookController extends BaseController{
+public class BookController extends BaseController {
private final BookService bookService;
+ private final BookContentService bookContentService;
+
private final RabbitTemplate rabbitTemplate;
@Value("${spring.rabbitmq.enable}")
@@ -44,77 +47,77 @@ public class BookController extends BaseController{
/**
* 查询首页小说设置列表数据
- * */
+ */
@GetMapping("listBookSetting")
- public ResultBean
-
- org.springframework.boot
- spring-boot-starter-thymeleaf
-
-
-
org.mybatis.dynamic-sql
mybatis-dynamic-sql
From fc2ea40c6ad6b7cda07dd52a2997b4af52b0044f Mon Sep 17 00:00:00 2001
From: xiongxiaoyang <773861846@qq.com>
Date: Mon, 13 Sep 2021 22:21:50 +0800
Subject: [PATCH 06/19] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=B0=8F=E8=AF=B4?=
=?UTF-8?q?=E5=86=85=E5=AE=B9=E5=A4=9A=E7=A7=8D=E5=AD=98=E5=82=A8=E6=96=B9?=
=?UTF-8?q?=E5=BC=8F=EF=BC=88txt=E3=80=81db..=EF=BC=89=E5=B9=B6=E5=AD=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
doc/sql/20210913.sql | 3 +
doc/sql/novel_plus.sql | 5 +-
.../com/java2nb/novel/entity/BookIndex.java | 13 ++
.../mapper/BookIndexDynamicSqlSupport.java | 5 +
.../java2nb/novel/mapper/BookIndexMapper.java | 138 +++++++++---------
.../novel/service/impl/BookServiceImpl.java | 18 ++-
.../novel/service/impl/CrawlServiceImpl.java | 28 ++--
.../impl/DbBookContentServiceImpl.java | 3 +-
.../impl/FileBookContentServiceImpl.java | 3 +-
.../novel/controller/BookController.java | 7 +-
.../java2nb/novel/page/PageController.java | 9 +-
.../novel/service/impl/BookServiceImpl.java | 2 +-
.../impl/DbBookContentServiceImpl.java | 3 +-
.../impl/FileBookContentServiceImpl.java | 6 +-
14 files changed, 138 insertions(+), 105 deletions(-)
create mode 100644 doc/sql/20210913.sql
diff --git a/doc/sql/20210913.sql b/doc/sql/20210913.sql
new file mode 100644
index 0000000..97d00e6
--- /dev/null
+++ b/doc/sql/20210913.sql
@@ -0,0 +1,3 @@
+alter table book_index add column storage_type varchar(10) NOT NULL DEFAULT 'db' COMMENT '存储方式' after book_price ;
+
+
diff --git a/doc/sql/novel_plus.sql b/doc/sql/novel_plus.sql
index f812822..7c05a4a 100644
--- a/doc/sql/novel_plus.sql
+++ b/doc/sql/novel_plus.sql
@@ -1840,4 +1840,7 @@ 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');
-alter table news add column `read_count` BIGINT NOT NULL DEFAULT '0' COMMENT '阅读量' after content;
\ No newline at end of file
+alter table news add column `read_count` BIGINT NOT NULL DEFAULT '0' COMMENT '阅读量' after content;
+
+
+alter table book_index add column storage_type varchar(10) NOT NULL DEFAULT 'db' COMMENT '存储方式' after book_price ;
diff --git a/novel-common/src/main/java/com/java2nb/novel/entity/BookIndex.java b/novel-common/src/main/java/com/java2nb/novel/entity/BookIndex.java
index cbbd033..840649a 100644
--- a/novel-common/src/main/java/com/java2nb/novel/entity/BookIndex.java
+++ b/novel-common/src/main/java/com/java2nb/novel/entity/BookIndex.java
@@ -25,6 +25,9 @@ public class BookIndex {
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private Integer bookPrice;
+ @Generated("org.mybatis.generator.api.MyBatisGenerator")
+ private String storageType;
+
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private Date createTime;
@@ -101,6 +104,16 @@ public class BookIndex {
this.bookPrice = bookPrice;
}
+ @Generated("org.mybatis.generator.api.MyBatisGenerator")
+ public String getStorageType() {
+ return storageType;
+ }
+
+ @Generated("org.mybatis.generator.api.MyBatisGenerator")
+ public void setStorageType(String storageType) {
+ this.storageType = storageType == null ? null : storageType.trim();
+ }
+
@Generated("org.mybatis.generator.api.MyBatisGenerator")
public Date getCreateTime() {
return createTime;
diff --git a/novel-common/src/main/java/com/java2nb/novel/mapper/BookIndexDynamicSqlSupport.java b/novel-common/src/main/java/com/java2nb/novel/mapper/BookIndexDynamicSqlSupport.java
index 1c2ac2a..6d15ef1 100644
--- a/novel-common/src/main/java/com/java2nb/novel/mapper/BookIndexDynamicSqlSupport.java
+++ b/novel-common/src/main/java/com/java2nb/novel/mapper/BookIndexDynamicSqlSupport.java
@@ -31,6 +31,9 @@ public final class BookIndexDynamicSqlSupport {
@Generated("org.mybatis.generator.api.MyBatisGenerator")
public static final SqlColumn
bookPrice = bookIndex.bookPrice;
+ @Generated("org.mybatis.generator.api.MyBatisGenerator")
+ public static final SqlColumn storageType = bookIndex.storageType;
+
@Generated("org.mybatis.generator.api.MyBatisGenerator")
public static final SqlColumn createTime = bookIndex.createTime;
@@ -53,6 +56,8 @@ public final class BookIndexDynamicSqlSupport {
public final SqlColumn bookPrice = column("book_price", JDBCType.INTEGER);
+ public final SqlColumn storageType = column("storage_type", JDBCType.VARCHAR);
+
public final SqlColumn createTime = column("create_time", JDBCType.TIMESTAMP);
public final SqlColumn updateTime = column("update_time", JDBCType.TIMESTAMP);
diff --git a/novel-common/src/main/java/com/java2nb/novel/mapper/BookIndexMapper.java b/novel-common/src/main/java/com/java2nb/novel/mapper/BookIndexMapper.java
index 7870bf7..7cb3213 100644
--- a/novel-common/src/main/java/com/java2nb/novel/mapper/BookIndexMapper.java
+++ b/novel-common/src/main/java/com/java2nb/novel/mapper/BookIndexMapper.java
@@ -37,46 +37,47 @@ import org.mybatis.dynamic.sql.util.mybatis3.MyBatis3Utils;
@Mapper
public interface BookIndexMapper {
@Generated("org.mybatis.generator.api.MyBatisGenerator")
- BasicColumn[] selectList = BasicColumn.columnList(id, bookId, indexNum, indexName, wordCount, isVip, bookPrice, createTime, updateTime);
+ BasicColumn[] selectList = BasicColumn.columnList(id, bookId, indexNum, indexName, wordCount, isVip, bookPrice, storageType, createTime, updateTime);
@Generated("org.mybatis.generator.api.MyBatisGenerator")
- @SelectProvider(type = SqlProviderAdapter.class, method = "select")
+ @SelectProvider(type=SqlProviderAdapter.class, method="select")
long count(SelectStatementProvider selectStatement);
@Generated("org.mybatis.generator.api.MyBatisGenerator")
- @DeleteProvider(type = SqlProviderAdapter.class, method = "delete")
+ @DeleteProvider(type=SqlProviderAdapter.class, method="delete")
int delete(DeleteStatementProvider deleteStatement);
@Generated("org.mybatis.generator.api.MyBatisGenerator")
- @InsertProvider(type = SqlProviderAdapter.class, method = "insert")
+ @InsertProvider(type=SqlProviderAdapter.class, method="insert")
int insert(InsertStatementProvider insertStatement);
@Generated("org.mybatis.generator.api.MyBatisGenerator")
- @InsertProvider(type = SqlProviderAdapter.class, method = "insertMultiple")
+ @InsertProvider(type=SqlProviderAdapter.class, method="insertMultiple")
int insertMultiple(MultiRowInsertStatementProvider multipleInsertStatement);
@Generated("org.mybatis.generator.api.MyBatisGenerator")
- @SelectProvider(type = SqlProviderAdapter.class, method = "select")
+ @SelectProvider(type=SqlProviderAdapter.class, method="select")
@ResultMap("BookIndexResult")
Optional selectOne(SelectStatementProvider selectStatement);
@Generated("org.mybatis.generator.api.MyBatisGenerator")
- @SelectProvider(type = SqlProviderAdapter.class, method = "select")
- @Results(id = "BookIndexResult", value = {
- @Result(column = "id", property = "id", jdbcType = JdbcType.BIGINT, id = true),
- @Result(column = "book_id", property = "bookId", jdbcType = JdbcType.BIGINT),
- @Result(column = "index_num", property = "indexNum", jdbcType = JdbcType.INTEGER),
- @Result(column = "index_name", property = "indexName", jdbcType = JdbcType.VARCHAR),
- @Result(column = "word_count", property = "wordCount", jdbcType = JdbcType.INTEGER),
- @Result(column = "is_vip", property = "isVip", jdbcType = JdbcType.TINYINT),
- @Result(column = "book_price", property = "bookPrice", jdbcType = JdbcType.INTEGER),
- @Result(column = "create_time", property = "createTime", jdbcType = JdbcType.TIMESTAMP),
- @Result(column = "update_time", property = "updateTime", jdbcType = JdbcType.TIMESTAMP)
+ @SelectProvider(type=SqlProviderAdapter.class, method="select")
+ @Results(id="BookIndexResult", value = {
+ @Result(column="id", property="id", jdbcType=JdbcType.BIGINT, id=true),
+ @Result(column="book_id", property="bookId", jdbcType=JdbcType.BIGINT),
+ @Result(column="index_num", property="indexNum", jdbcType=JdbcType.INTEGER),
+ @Result(column="index_name", property="indexName", jdbcType=JdbcType.VARCHAR),
+ @Result(column="word_count", property="wordCount", jdbcType=JdbcType.INTEGER),
+ @Result(column="is_vip", property="isVip", jdbcType=JdbcType.TINYINT),
+ @Result(column="book_price", property="bookPrice", jdbcType=JdbcType.INTEGER),
+ @Result(column="storage_type", property="storageType", jdbcType=JdbcType.VARCHAR),
+ @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
+ @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP)
})
List selectMany(SelectStatementProvider selectStatement);
@Generated("org.mybatis.generator.api.MyBatisGenerator")
- @UpdateProvider(type = SqlProviderAdapter.class, method = "update")
+ @UpdateProvider(type=SqlProviderAdapter.class, method="update")
int update(UpdateStatementProvider updateStatement);
@Generated("org.mybatis.generator.api.MyBatisGenerator")
@@ -92,52 +93,55 @@ public interface BookIndexMapper {
@Generated("org.mybatis.generator.api.MyBatisGenerator")
default int deleteByPrimaryKey(Long id_) {
return delete(c ->
- c.where(id, isEqualTo(id_))
+ c.where(id, isEqualTo(id_))
);
}
@Generated("org.mybatis.generator.api.MyBatisGenerator")
default int insert(BookIndex record) {
return MyBatis3Utils.insert(this::insert, record, bookIndex, c ->
- c.map(id).toProperty("id")
- .map(bookId).toProperty("bookId")
- .map(indexNum).toProperty("indexNum")
- .map(indexName).toProperty("indexName")
- .map(wordCount).toProperty("wordCount")
- .map(isVip).toProperty("isVip")
- .map(bookPrice).toProperty("bookPrice")
- .map(createTime).toProperty("createTime")
- .map(updateTime).toProperty("updateTime")
+ c.map(id).toProperty("id")
+ .map(bookId).toProperty("bookId")
+ .map(indexNum).toProperty("indexNum")
+ .map(indexName).toProperty("indexName")
+ .map(wordCount).toProperty("wordCount")
+ .map(isVip).toProperty("isVip")
+ .map(bookPrice).toProperty("bookPrice")
+ .map(storageType).toProperty("storageType")
+ .map(createTime).toProperty("createTime")
+ .map(updateTime).toProperty("updateTime")
);
}
@Generated("org.mybatis.generator.api.MyBatisGenerator")
default int insertMultiple(Collection records) {
return MyBatis3Utils.insertMultiple(this::insertMultiple, records, bookIndex, c ->
- c.map(id).toProperty("id")
- .map(bookId).toProperty("bookId")
- .map(indexNum).toProperty("indexNum")
- .map(indexName).toProperty("indexName")
- .map(wordCount).toProperty("wordCount")
- .map(isVip).toProperty("isVip")
- .map(bookPrice).toProperty("bookPrice")
- .map(createTime).toProperty("createTime")
- .map(updateTime).toProperty("updateTime")
+ c.map(id).toProperty("id")
+ .map(bookId).toProperty("bookId")
+ .map(indexNum).toProperty("indexNum")
+ .map(indexName).toProperty("indexName")
+ .map(wordCount).toProperty("wordCount")
+ .map(isVip).toProperty("isVip")
+ .map(bookPrice).toProperty("bookPrice")
+ .map(storageType).toProperty("storageType")
+ .map(createTime).toProperty("createTime")
+ .map(updateTime).toProperty("updateTime")
);
}
@Generated("org.mybatis.generator.api.MyBatisGenerator")
default int insertSelective(BookIndex record) {
return MyBatis3Utils.insert(this::insert, record, bookIndex, c ->
- c.map(id).toPropertyWhenPresent("id", record::getId)
- .map(bookId).toPropertyWhenPresent("bookId", record::getBookId)
- .map(indexNum).toPropertyWhenPresent("indexNum", record::getIndexNum)
- .map(indexName).toPropertyWhenPresent("indexName", record::getIndexName)
- .map(wordCount).toPropertyWhenPresent("wordCount", record::getWordCount)
- .map(isVip).toPropertyWhenPresent("isVip", record::getIsVip)
- .map(bookPrice).toPropertyWhenPresent("bookPrice", record::getBookPrice)
- .map(createTime).toPropertyWhenPresent("createTime", record::getCreateTime)
- .map(updateTime).toPropertyWhenPresent("updateTime", record::getUpdateTime)
+ c.map(id).toPropertyWhenPresent("id", record::getId)
+ .map(bookId).toPropertyWhenPresent("bookId", record::getBookId)
+ .map(indexNum).toPropertyWhenPresent("indexNum", record::getIndexNum)
+ .map(indexName).toPropertyWhenPresent("indexName", record::getIndexName)
+ .map(wordCount).toPropertyWhenPresent("wordCount", record::getWordCount)
+ .map(isVip).toPropertyWhenPresent("isVip", record::getIsVip)
+ .map(bookPrice).toPropertyWhenPresent("bookPrice", record::getBookPrice)
+ .map(storageType).toPropertyWhenPresent("storageType", record::getStorageType)
+ .map(createTime).toPropertyWhenPresent("createTime", record::getCreateTime)
+ .map(updateTime).toPropertyWhenPresent("updateTime", record::getUpdateTime)
);
}
@@ -159,7 +163,7 @@ public interface BookIndexMapper {
@Generated("org.mybatis.generator.api.MyBatisGenerator")
default Optional selectByPrimaryKey(Long id_) {
return selectOne(c ->
- c.where(id, isEqualTo(id_))
+ c.where(id, isEqualTo(id_))
);
}
@@ -177,6 +181,7 @@ public interface BookIndexMapper {
.set(wordCount).equalTo(record::getWordCount)
.set(isVip).equalTo(record::getIsVip)
.set(bookPrice).equalTo(record::getBookPrice)
+ .set(storageType).equalTo(record::getStorageType)
.set(createTime).equalTo(record::getCreateTime)
.set(updateTime).equalTo(record::getUpdateTime);
}
@@ -190,6 +195,7 @@ public interface BookIndexMapper {
.set(wordCount).equalToWhenPresent(record::getWordCount)
.set(isVip).equalToWhenPresent(record::getIsVip)
.set(bookPrice).equalToWhenPresent(record::getBookPrice)
+ .set(storageType).equalToWhenPresent(record::getStorageType)
.set(createTime).equalToWhenPresent(record::getCreateTime)
.set(updateTime).equalToWhenPresent(record::getUpdateTime);
}
@@ -197,30 +203,32 @@ public interface BookIndexMapper {
@Generated("org.mybatis.generator.api.MyBatisGenerator")
default int updateByPrimaryKey(BookIndex record) {
return update(c ->
- c.set(bookId).equalTo(record::getBookId)
- .set(indexNum).equalTo(record::getIndexNum)
- .set(indexName).equalTo(record::getIndexName)
- .set(wordCount).equalTo(record::getWordCount)
- .set(isVip).equalTo(record::getIsVip)
- .set(bookPrice).equalTo(record::getBookPrice)
- .set(createTime).equalTo(record::getCreateTime)
- .set(updateTime).equalTo(record::getUpdateTime)
- .where(id, isEqualTo(record::getId))
+ c.set(bookId).equalTo(record::getBookId)
+ .set(indexNum).equalTo(record::getIndexNum)
+ .set(indexName).equalTo(record::getIndexName)
+ .set(wordCount).equalTo(record::getWordCount)
+ .set(isVip).equalTo(record::getIsVip)
+ .set(bookPrice).equalTo(record::getBookPrice)
+ .set(storageType).equalTo(record::getStorageType)
+ .set(createTime).equalTo(record::getCreateTime)
+ .set(updateTime).equalTo(record::getUpdateTime)
+ .where(id, isEqualTo(record::getId))
);
}
@Generated("org.mybatis.generator.api.MyBatisGenerator")
default int updateByPrimaryKeySelective(BookIndex record) {
return update(c ->
- c.set(bookId).equalToWhenPresent(record::getBookId)
- .set(indexNum).equalToWhenPresent(record::getIndexNum)
- .set(indexName).equalToWhenPresent(record::getIndexName)
- .set(wordCount).equalToWhenPresent(record::getWordCount)
- .set(isVip).equalToWhenPresent(record::getIsVip)
- .set(bookPrice).equalToWhenPresent(record::getBookPrice)
- .set(createTime).equalToWhenPresent(record::getCreateTime)
- .set(updateTime).equalToWhenPresent(record::getUpdateTime)
- .where(id, isEqualTo(record::getId))
+ c.set(bookId).equalToWhenPresent(record::getBookId)
+ .set(indexNum).equalToWhenPresent(record::getIndexNum)
+ .set(indexName).equalToWhenPresent(record::getIndexName)
+ .set(wordCount).equalToWhenPresent(record::getWordCount)
+ .set(isVip).equalToWhenPresent(record::getIsVip)
+ .set(bookPrice).equalToWhenPresent(record::getBookPrice)
+ .set(storageType).equalToWhenPresent(record::getStorageType)
+ .set(createTime).equalToWhenPresent(record::getCreateTime)
+ .set(updateTime).equalToWhenPresent(record::getUpdateTime)
+ .where(id, isEqualTo(record::getId))
);
}
}
\ No newline at end of file
diff --git a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java
index 677d0c8..11c60e5 100644
--- a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java
+++ b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java
@@ -9,6 +9,7 @@ import com.java2nb.novel.service.BookService;
import com.java2nb.novel.utils.Constants;
import lombok.RequiredArgsConstructor;
import org.mybatis.dynamic.sql.render.RenderingStrategies;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -38,7 +39,10 @@ public class BookServiceImpl implements BookService {
private final CrawlBookIndexMapper bookIndexMapper;
- private final BookContentService bookContentService;
+ private final Map bookContentServiceMap;
+
+ @Value("${content.save.storage}")
+ private String storageType;
@Override
@@ -85,8 +89,11 @@ public class BookServiceImpl implements BookService {
bookMapper.insertSelective(book);
//批量保存目录和内容
+ bookIndexList.forEach(bookIndex -> {
+ bookIndex.setStorageType(storageType);
+ });
bookIndexMapper.insertMultiple(bookIndexList);
- bookContentService.saveBookContent(bookContentList,book.getId());
+ bookContentServiceMap.get(storageType).saveBookContent(bookContentList, book.getId());
}
}
@@ -106,7 +113,7 @@ public class BookServiceImpl implements BookService {
@Override
public Map queryExistBookIndexMap(Long bookId) {
- List bookIndexs = bookIndexMapper.selectMany(select(BookIndexDynamicSqlSupport.id, BookIndexDynamicSqlSupport.indexNum, BookIndexDynamicSqlSupport.indexName, BookIndexDynamicSqlSupport.wordCount)
+ List bookIndexs = bookIndexMapper.selectMany(select(BookIndexDynamicSqlSupport.id, BookIndexDynamicSqlSupport.indexNum, BookIndexDynamicSqlSupport.indexName, BookIndexDynamicSqlSupport.wordCount, BookIndexDynamicSqlSupport.storageType)
.from(BookIndexDynamicSqlSupport.bookIndex)
.where(BookIndexDynamicSqlSupport.bookId, isEqualTo(bookId))
.build()
@@ -127,12 +134,13 @@ public class BookServiceImpl implements BookService {
if (!existBookIndexMap.containsKey(bookIndex.getIndexNum())) {
//插入
+ bookIndex.setStorageType(storageType);
bookIndexMapper.insertSelective(bookIndex);
- bookContentService.saveBookContent(bookContent,book.getId());
+ bookContentServiceMap.get(storageType).saveBookContent(bookContent, book.getId());
} else {
//更新
bookIndexMapper.updateByPrimaryKeySelective(bookIndex);
- bookContentService.updateBookContent(bookContent,book.getId());
+ bookContentServiceMap.get(existBookIndexMap.get(bookIndex.getIndexNum()).getStorageType()).updateBookContent(bookContent, book.getId());
}
diff --git a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/CrawlServiceImpl.java b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/CrawlServiceImpl.java
index c9492cc..8d45778 100644
--- a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/CrawlServiceImpl.java
+++ b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/CrawlServiceImpl.java
@@ -149,7 +149,7 @@ public class CrawlServiceImpl implements CrawlService {
@Override
public void addCrawlSingleTask(CrawlSingleTask singleTask) {
- if(bookService.queryIsExistByBookNameAndAuthorName(singleTask.getBookName(),singleTask.getAuthorName())){
+ if (bookService.queryIsExistByBookNameAndAuthorName(singleTask.getBookName(), singleTask.getAuthorName())) {
throw new BusinessException(ResponseStatus.BOOK_EXISTS);
}
@@ -181,23 +181,23 @@ public class CrawlServiceImpl implements CrawlService {
@Override
public CrawlSingleTask getCrawlSingleTask() {
- List list = crawlSingleTaskMapper.selectMany(select(CrawlSingleTaskDynamicSqlSupport.crawlSingleTask.allColumns())
+ List list = crawlSingleTaskMapper.selectMany(select(CrawlSingleTaskDynamicSqlSupport.crawlSingleTask.allColumns())
.from(CrawlSingleTaskDynamicSqlSupport.crawlSingleTask)
- .where(CrawlSingleTaskDynamicSqlSupport.taskStatus,isEqualTo((byte)2))
- .orderBy(CrawlSingleTaskDynamicSqlSupport.createTime)
- .limit(1)
+ .where(CrawlSingleTaskDynamicSqlSupport.taskStatus, isEqualTo((byte) 2))
+ .orderBy(CrawlSingleTaskDynamicSqlSupport.createTime)
+ .limit(1)
.build()
.render(RenderingStrategies.MYBATIS3));
- return list.size() > 0 ? list.get(0) : null;
+ return list.size() > 0 ? list.get(0) : null;
}
@Override
public void updateCrawlSingleTask(CrawlSingleTask task, Byte status) {
byte excCount = task.getExcCount();
- excCount+=1;
+ excCount += 1;
task.setExcCount(excCount);
- if(status == 1 || excCount == 5){
+ if (status == 1 || excCount == 5) {
//当采集成功或者采集次数等于5,则更新采集最终状态,并停止采集
task.setTaskStatus(status);
}
@@ -219,7 +219,7 @@ public class CrawlServiceImpl implements CrawlService {
try {
- if(StringUtils.isNotBlank(ruleBean.getCatIdRule().get("catId" + catId))) {
+ if (StringUtils.isNotBlank(ruleBean.getCatIdRule().get("catId" + catId))) {
//拼接分类URL
String catBookListUrl = ruleBean.getBookListUrl()
.replace("{catId}", ruleBean.getCatIdRule().get("catId" + catId))
@@ -235,7 +235,7 @@ public class CrawlServiceImpl implements CrawlService {
//1.阻塞过程(使用了 sleep,同步锁的 wait,socket 中的 receiver,accept 等方法时)
//捕获中断异常InterruptedException来退出线程。
//2.非阻塞过程中通过判断中断标志来退出线程。
- if(Thread.currentThread().isInterrupted()){
+ if (Thread.currentThread().isInterrupted()) {
return;
}
@@ -262,8 +262,8 @@ public class CrawlServiceImpl implements CrawlService {
}
}
- }catch (Exception e){
- log.error(e.getMessage(),e);
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
}
page += 1;
@@ -278,7 +278,7 @@ public class CrawlServiceImpl implements CrawlService {
final AtomicBoolean parseResult = new AtomicBoolean(false);
CrawlParser.parseBook(ruleBean, bookId, book -> {
- if(book.getBookName() == null || book.getAuthorName() == null){
+ if (book.getBookName() == null || book.getAuthorName() == null) {
return;
}
//这里只做新书入库,查询是否存在这本书
@@ -301,7 +301,7 @@ public class CrawlServiceImpl implements CrawlService {
book.setCrawlLastTime(new Date());
book.setId(new IdWorker().nextId());
//解析章节目录
- CrawlParser.parseBookIndexAndContent(bookId, book, ruleBean, new HashMap<>(0),chapter -> {
+ CrawlParser.parseBookIndexAndContent(bookId, book, ruleBean, new HashMap<>(0), chapter -> {
bookService.saveBookAndIndexAndContent(book, chapter.getBookIndexList(), chapter.getBookContentList());
});
diff --git a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java
index 4aa7849..039d548 100644
--- a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java
+++ b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java
@@ -15,9 +15,8 @@ import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
import static org.mybatis.dynamic.sql.SqlBuilder.update;
-@Service
+@Service(value = "db")
@RequiredArgsConstructor
-@ConditionalOnProperty(prefix = "content.save", name = "storage", havingValue = "db")
public class DbBookContentServiceImpl implements BookContentService {
private final BookContentMapper bookContentMapper;
diff --git a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java
index 5d6f256..284f5e6 100644
--- a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java
+++ b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java
@@ -10,9 +10,8 @@ import org.springframework.stereotype.Service;
import java.util.List;
-@Service
+@Service(value = "txt")
@RequiredArgsConstructor
-@ConditionalOnProperty(prefix = "content.save", name = "storage", havingValue = "file")
public class FileBookContentServiceImpl implements BookContentService {
@Value("${content.save.path}")
diff --git a/novel-front/src/main/java/com/java2nb/novel/controller/BookController.java b/novel-front/src/main/java/com/java2nb/novel/controller/BookController.java
index 6bd0287..960df44 100644
--- a/novel-front/src/main/java/com/java2nb/novel/controller/BookController.java
+++ b/novel-front/src/main/java/com/java2nb/novel/controller/BookController.java
@@ -37,10 +37,10 @@ public class BookController extends BaseController {
private final BookService bookService;
- private final BookContentService bookContentService;
-
private final RabbitTemplate rabbitTemplate;
+ private final Map bookContentServiceMap;
+
@Value("${spring.rabbitmq.enable}")
private Integer enableMq;
@@ -130,7 +130,8 @@ public class BookController extends BaseController {
public ResultBean> queryBookIndexAbout(Long bookId, Long lastBookIndexId) {
Map data = new HashMap<>(2);
data.put("bookIndexCount", bookService.queryIndexCount(bookId));
- String lastBookContent = bookContentService.queryBookContent(bookId,lastBookIndexId).getContent();
+ BookIndex bookIndex = bookService.queryBookIndex(lastBookIndexId);
+ String lastBookContent = bookContentServiceMap.get(bookIndex.getStorageType()).queryBookContent(bookId,lastBookIndexId).getContent();
if (lastBookContent.length() > 42) {
lastBookContent = lastBookContent.substring(0, 42);
}
diff --git a/novel-front/src/main/java/com/java2nb/novel/page/PageController.java b/novel-front/src/main/java/com/java2nb/novel/page/PageController.java
index 1859418..3a54449 100644
--- a/novel-front/src/main/java/com/java2nb/novel/page/PageController.java
+++ b/novel-front/src/main/java/com/java2nb/novel/page/PageController.java
@@ -45,10 +45,9 @@ public class PageController extends BaseController {
private final UserService userService;
- private final BookContentService bookContentService;
-
private final ThreadPoolExecutor threadPoolExecutor;
+ private final Map bookContentServiceMap;
@RequestMapping("{url}.html")
public String module(@PathVariable("url") String url) {
@@ -210,10 +209,10 @@ public class PageController extends BaseController {
return nextBookIndexId;
}, threadPoolExecutor);
- //加载小说内容信息线程
- CompletableFuture bookContentCompletableFuture = CompletableFuture.supplyAsync(() -> {
+ //加载小说内容信息线程,该线程在加载小说章节信息线程执行完毕后才执行
+ CompletableFuture bookContentCompletableFuture = bookIndexCompletableFuture.thenApplyAsync((bookIndex) -> {
//查询内容
- BookContent bookContent = bookContentService.queryBookContent(bookId, bookIndexId);
+ BookContent bookContent = bookContentServiceMap.get(bookIndex.getStorageType()).queryBookContent(bookId, bookIndexId);
log.debug("加载小说内容信息线程结束");
return bookContent;
}, threadPoolExecutor);
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 dd1db5d..18a0db7 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
@@ -262,7 +262,7 @@ public class BookServiceImpl implements BookService {
@Override
public BookIndex queryBookIndex(Long bookIndexId) {
- SelectStatementProvider selectStatement = select(BookIndexDynamicSqlSupport.id, BookIndexDynamicSqlSupport.bookId, BookIndexDynamicSqlSupport.indexNum, BookIndexDynamicSqlSupport.indexName, BookIndexDynamicSqlSupport.wordCount,BookIndexDynamicSqlSupport.bookPrice, BookIndexDynamicSqlSupport.updateTime, BookIndexDynamicSqlSupport.isVip)
+ SelectStatementProvider selectStatement = select(BookIndexDynamicSqlSupport.id, BookIndexDynamicSqlSupport.bookId, BookIndexDynamicSqlSupport.indexNum, BookIndexDynamicSqlSupport.indexName, BookIndexDynamicSqlSupport.wordCount,BookIndexDynamicSqlSupport.bookPrice, BookIndexDynamicSqlSupport.updateTime, BookIndexDynamicSqlSupport.isVip,BookIndexDynamicSqlSupport.storageType)
.from(bookIndex)
.where(BookIndexDynamicSqlSupport.id, isEqualTo(bookIndexId))
.build()
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java b/novel-front/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java
index 3e4344f..7d5fce0 100644
--- a/novel-front/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java
+++ b/novel-front/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java
@@ -18,9 +18,8 @@ import static org.mybatis.dynamic.sql.SqlBuilder.update;
import static org.mybatis.dynamic.sql.select.SelectDSL.select;
-@Service
+@Service(value = "db")
@RequiredArgsConstructor
-@ConditionalOnProperty(prefix = "content.save", name = "storage", havingValue = "db")
public class DbBookContentServiceImpl implements BookContentService {
private final BookContentMapper bookContentMapper;
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java b/novel-front/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java
index bcb0425..7e915be 100644
--- a/novel-front/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java
+++ b/novel-front/src/main/java/com/java2nb/novel/service/impl/FileBookContentServiceImpl.java
@@ -1,21 +1,17 @@
package com.java2nb.novel.service.impl;
-import com.java2nb.novel.core.utils.FileUtil;
import com.java2nb.novel.entity.BookContent;
import com.java2nb.novel.service.BookContentService;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service;
import java.io.BufferedReader;
import java.io.FileReader;
-import java.util.List;
-@Service
+@Service(value = "txt")
@RequiredArgsConstructor
-@ConditionalOnProperty(prefix = "content.save", name = "storage", havingValue = "file")
public class FileBookContentServiceImpl implements BookContentService {
@Value("${content.save.path}")
From 396452b46ea7c6f2317224dc77fe25fcffa19407 Mon Sep 17 00:00:00 2001
From: xiongxiaoyang <773861846@qq.com>
Date: Mon, 13 Sep 2021 22:24:08 +0800
Subject: [PATCH 07/19] =?UTF-8?q?3.6.1=E5=8F=91=E5=B8=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
novel-admin/pom.xml | 2 +-
novel-common/pom.xml | 2 +-
novel-crawl/pom.xml | 2 +-
novel-front/pom.xml | 2 +-
pom.xml | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/novel-admin/pom.xml b/novel-admin/pom.xml
index 46d059c..7186f0d 100644
--- a/novel-admin/pom.xml
+++ b/novel-admin/pom.xml
@@ -5,7 +5,7 @@
com.java2nb
novel-admin
- 3.6.0
+ 3.6.1
jar
novel-admin
diff --git a/novel-common/pom.xml b/novel-common/pom.xml
index ba4b58e..f1cb571 100644
--- a/novel-common/pom.xml
+++ b/novel-common/pom.xml
@@ -5,7 +5,7 @@
novel
com.java2nb
- 3.6.0
+ 3.6.1
4.0.0
diff --git a/novel-crawl/pom.xml b/novel-crawl/pom.xml
index 48efbe1..4cdbbb6 100644
--- a/novel-crawl/pom.xml
+++ b/novel-crawl/pom.xml
@@ -5,7 +5,7 @@
novel
com.java2nb
- 3.6.0
+ 3.6.1
4.0.0
diff --git a/novel-front/pom.xml b/novel-front/pom.xml
index da5eeac..ada2b55 100644
--- a/novel-front/pom.xml
+++ b/novel-front/pom.xml
@@ -5,7 +5,7 @@
novel
com.java2nb
- 3.6.0
+ 3.6.1
4.0.0
diff --git a/pom.xml b/pom.xml
index 0546905..488c49b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.java2nb
novel
- 3.6.0
+ 3.6.1
novel-common
novel-front
From ede7aca66d01841603b36c303b14fd1b71946493 Mon Sep 17 00:00:00 2001
From: xiongxiaoyang <773861846@qq.com>
Date: Mon, 27 Sep 2021 22:35:48 +0800
Subject: [PATCH 08/19] =?UTF-8?q?=E4=BD=9C=E5=AE=B6=E4=BD=9C=E5=93=81?=
=?UTF-8?q?=E5=88=97=E8=A1=A8=E5=88=86=E9=A1=B5=E4=BF=AE=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/java2nb/novel/service/impl/BookServiceImpl.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
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 18a0db7..f165675 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
@@ -496,11 +496,12 @@ public class BookServiceImpl implements BookService {
@Override
public PageBean listBookPageByUserId(Long userId, int page, int pageSize) {
+ Author author = authorService.queryAuthor(userId);
PageHelper.startPage(page, pageSize);
SelectStatementProvider selectStatement = select(id, bookName, picUrl, catName, visitCount, yesterdayBuy, lastIndexUpdateTime, updateTime, wordCount, lastIndexName, status)
.from(book)
- .where(authorId, isEqualTo(authorService.queryAuthor(userId).getId()))
+ .where(authorId, isEqualTo(author.getId()))
.orderBy(BookDynamicSqlSupport.createTime.descending())
.build()
.render(RenderingStrategies.MYBATIS3);
From 2bf945fe0e7be2442266408ae18f02945706aaa4 Mon Sep 17 00:00:00 2001
From: xiaoyang
Date: Mon, 8 Nov 2021 19:55:03 +0800
Subject: [PATCH 09/19] =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/resources/templates/mobile/book/book_detail.html | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/novel-front/src/main/resources/templates/mobile/book/book_detail.html b/novel-front/src/main/resources/templates/mobile/book/book_detail.html
index 703e86b..1f6ea6e 100644
--- a/novel-front/src/main/resources/templates/mobile/book/book_detail.html
+++ b/novel-front/src/main/resources/templates/mobile/book/book_detail.html
@@ -147,10 +147,10 @@
-
开始阅读
-
+
开始阅读
+
-
+
From 776083076c2dc3cf0aa08c27996a45e44155b9fd Mon Sep 17 00:00:00 2001
From: xiaoyang
Date: Thu, 11 Nov 2021 14:28:05 +0800
Subject: [PATCH 10/19] update
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index b54fed7..7d4c9bd 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-[]( https://cloud.tencent.com/act/cps/redirect?redirect=1052&cps_key=736e609d66e0ac4e57813316cec6fd0b&from=console )
+[]( https://cloud.tencent.com/act/cps/redirect?redirect=1052&cps_key=736e609d66e0ac4e57813316cec6fd0b&from=console )
# 小说精品屋-plus
From 16e4c98a45f954714811c59f194520e9a1534a64 Mon Sep 17 00:00:00 2001
From: xiaoyang
Date: Sat, 11 Dec 2021 18:30:22 +0800
Subject: [PATCH 11/19] =?UTF-8?q?refactor:=20=E5=BC=95=E5=85=A5xxy-common?=
=?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BE=9D=E8=B5=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
novel-common/pom.xml | 18 ++
.../core/advice/CommonExceptionHandler.java | 46 -----
.../com/java2nb/novel/core/bean/PageBean.java | 53 ------
.../java2nb/novel/core/bean/ResultBean.java | 73 --------
.../novel/core/enums/ResponseStatus.java | 23 +--
.../core/exception/BusinessException.java | 22 ---
.../java2nb/novel/core/utils/BeanUtil.java | 33 ----
.../java2nb/novel/core/utils/FileUtil.java | 1 +
.../java2nb/novel/core/utils/IdWorker.java | 163 ------------------
.../com/java2nb/novel/core/utils/MD5Util.java | 61 -------
.../java2nb/novel/core/utils/SpringUtil.java | 52 ------
.../java2nb/novel/core/utils/ThreadUtil.java | 26 ---
.../java2nb/novel/core/utils/UUIDUtil.java | 96 -----------
.../java2nb/novel/core/valid/AddGroup.java | 11 --
.../java2nb/novel/core/valid/UpdateGroup.java | 11 --
.../java/com/java2nb/novel/entity/User.java | 6 +-
.../novel/controller/CrawlController.java | 29 ++--
.../java2nb/novel/core/crawl/CrawlParser.java | 3 +-
.../core/schedule/CrawlThreadMonitor.java | 2 +-
.../java2nb/novel/service/CrawlService.java | 2 +-
.../novel/service/impl/CrawlServiceImpl.java | 19 +-
.../novel/controller/AuthorController.java | 55 +++---
.../novel/controller/BookController.java | 68 ++++----
.../novel/controller/CacheController.java | 9 +-
.../novel/controller/FileController.java | 14 +-
.../controller/FriendLinkController.java | 8 +-
.../novel/controller/NewsController.java | 16 +-
.../novel/controller/UserController.java | 105 +++++------
.../novel/core/filter/NovelFilter.java | 2 +
.../novel/core/utils/ThreadLocalUtil.java | 1 +
.../java2nb/novel/page/PageController.java | 2 +-
.../java2nb/novel/service/AuthorService.java | 2 +-
.../java2nb/novel/service/BookService.java | 2 +-
.../java2nb/novel/service/NewsService.java | 2 +-
.../java2nb/novel/service/SearchService.java | 5 +-
.../java2nb/novel/service/UserService.java | 2 +-
.../novel/service/impl/AuthorServiceImpl.java | 9 +-
.../novel/service/impl/BookServiceImpl.java | 20 +--
.../impl/DbBookContentServiceImpl.java | 4 -
.../service/impl/FriendLinkServiceImpl.java | 2 +-
.../novel/service/impl/NewsServiceImpl.java | 7 +-
.../novel/service/impl/SearchServiceImpl.java | 11 +-
.../novel/service/impl/UserServiceImpl.java | 19 +-
.../src/main/resources/application.yml | 2 +-
pom.xml | 34 ++--
45 files changed, 252 insertions(+), 899 deletions(-)
delete mode 100644 novel-common/src/main/java/com/java2nb/novel/core/advice/CommonExceptionHandler.java
delete mode 100644 novel-common/src/main/java/com/java2nb/novel/core/bean/PageBean.java
delete mode 100644 novel-common/src/main/java/com/java2nb/novel/core/bean/ResultBean.java
delete mode 100644 novel-common/src/main/java/com/java2nb/novel/core/exception/BusinessException.java
delete mode 100644 novel-common/src/main/java/com/java2nb/novel/core/utils/BeanUtil.java
delete mode 100644 novel-common/src/main/java/com/java2nb/novel/core/utils/IdWorker.java
delete mode 100644 novel-common/src/main/java/com/java2nb/novel/core/utils/MD5Util.java
delete mode 100644 novel-common/src/main/java/com/java2nb/novel/core/utils/SpringUtil.java
delete mode 100644 novel-common/src/main/java/com/java2nb/novel/core/utils/ThreadUtil.java
delete mode 100644 novel-common/src/main/java/com/java2nb/novel/core/utils/UUIDUtil.java
delete mode 100644 novel-common/src/main/java/com/java2nb/novel/core/valid/AddGroup.java
delete mode 100644 novel-common/src/main/java/com/java2nb/novel/core/valid/UpdateGroup.java
diff --git a/novel-common/pom.xml b/novel-common/pom.xml
index f1cb571..43ecae7 100644
--- a/novel-common/pom.xml
+++ b/novel-common/pom.xml
@@ -123,6 +123,24 @@
true
+
+ io.github.xxyopen
+ xxy-model
+ 1.0.0-SNAPSHOT
+
+
+
+ io.github.xxyopen
+ xxy-web
+ 1.0.0-SNAPSHOT
+
+
+
+ io.github.xxyopen
+ xxy-util
+ 1.0.0-SNAPSHOT
+
+
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/advice/CommonExceptionHandler.java b/novel-common/src/main/java/com/java2nb/novel/core/advice/CommonExceptionHandler.java
deleted file mode 100644
index 1296d0d..0000000
--- a/novel-common/src/main/java/com/java2nb/novel/core/advice/CommonExceptionHandler.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.java2nb.novel.core.advice;
-
-import com.java2nb.novel.core.bean.ResultBean;
-import com.java2nb.novel.core.enums.ResponseStatus;
-import com.java2nb.novel.core.exception.BusinessException;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.validation.BindException;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-import org.springframework.web.bind.annotation.RestControllerAdvice;
-
-/**
- * 通用的异常处理器
- *
- * @author 11797*/
-@Slf4j
-@RestControllerAdvice(basePackages = "com.java2nb.novel.controller")
-public class CommonExceptionHandler {
-
- /**
- * 处理后台数据校验异常
- * */
- @ExceptionHandler(BindException.class)
- public ResultBean handlerBindException(BindException e){
- log.error(e.getMessage(),e);
- return ResultBean.fail(ResponseStatus.PARAM_ERROR);
- }
-
- /**
- * 处理业务异常
- * */
- @ExceptionHandler(BusinessException.class)
- public ResultBean handlerBusinessException(BusinessException e){
- log.error(e.getMessage(),e);
- return ResultBean.fail(e.getResStatus());
- }
-
-
- /**
- * 处理系统异常
- * */
- @ExceptionHandler(Exception.class)
- public ResultBean handlerException(Exception e){
- log.error(e.getMessage(),e);
- return ResultBean.error();
- }
-}
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/bean/PageBean.java b/novel-common/src/main/java/com/java2nb/novel/core/bean/PageBean.java
deleted file mode 100644
index f4f837b..0000000
--- a/novel-common/src/main/java/com/java2nb/novel/core/bean/PageBean.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.java2nb.novel.core.bean;
-
-import com.github.pagehelper.PageInfo;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * 封装通用分页数据,接收PageHelper、SpringData等框架的分页数据,转换成通用的PageBean对象
- * @author xiongxiaoyang
- * @version 1.0
- * @since 2021/2/4
- * @param 分页集合类型
- */
-@Data
-public class PageBean {
-
- private Integer pageNum;
- private Integer pageSize;
- private Long total;
- private List extends T> list;
-
-
- /**
- * 该构造函数用于PageHelper工具进行分页查询的场景
- * 接收PageHelper分页后的list
- */
- public PageBean(List list){
- PageInfo pageInfo = new PageInfo<>(list);
- this.pageNum = pageInfo.getPageNum();
- this.pageSize = pageInfo.getPageSize();
- this.total = pageInfo.getTotal();
- this.list = pageInfo.getList();
-
- }
-
- /**
- * 该构造函数用于通用分页查询的场景
- * 接收普通分页数据和普通集合
- */
- public PageBean(Integer pageNum, Integer pageSize, Long total, List list) {
- this.pageNum = pageNum;
- this.pageSize = pageSize;
- this.total = total;
- this.list = list;
- }
-
-
- //TODO 使用其他的分页工具或框架进行分页查询的场景
-
-
-
-}
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/bean/ResultBean.java b/novel-common/src/main/java/com/java2nb/novel/core/bean/ResultBean.java
deleted file mode 100644
index d48a54d..0000000
--- a/novel-common/src/main/java/com/java2nb/novel/core/bean/ResultBean.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.java2nb.novel.core.bean;
-
-
-import com.java2nb.novel.core.enums.ResponseStatus;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 自定义响应结构
- *
- * @param
- * @author 11797
- */
-@Data
-public class ResultBean implements Serializable {
- private static final long serialVersionUID = 1L;
-
- private int code = ResponseStatus.OK.getCode();
-
- /**
- * 响应消息
- */
- private String msg = ResponseStatus.OK.getMsg();
- /**
- * 响应中的数据
- */
- private T data;
-
- private ResultBean() {
-
- }
-
- private ResultBean(ResponseStatus responseStatus) {
- this.code = responseStatus.getCode();
- this.msg = responseStatus.getMsg();
- }
-
- private ResultBean(T data) {
- this.data = data;
- }
-
-
- /**
- * 业务处理成功,无数据返回
- */
- public static ResultBean ok() {
- return new ResultBean<>();
- }
-
- /**
- * 业务处理成功,有数据返回
- */
- public static ResultBean ok(T data) {
- return new ResultBean<>(data);
- }
-
- /**
- * 业务处理失败
- */
- public static ResultBean fail(ResponseStatus responseStatus) {
- return new ResultBean<>(responseStatus);
- }
-
-
- /**
- * 系统错误
- */
- public static ResultBean error() {
- return new ResultBean<>(ResponseStatus.ERROR);
- }
-}
-
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/enums/ResponseStatus.java b/novel-common/src/main/java/com/java2nb/novel/core/enums/ResponseStatus.java
index b73bc5a..1fce47a 100644
--- a/novel-common/src/main/java/com/java2nb/novel/core/enums/ResponseStatus.java
+++ b/novel-common/src/main/java/com/java2nb/novel/core/enums/ResponseStatus.java
@@ -1,5 +1,6 @@
package com.java2nb.novel.core.enums;
+import io.github.xxyopen.model.resp.IResultCode;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@@ -11,27 +12,7 @@ import lombok.NoArgsConstructor;
@Getter
@AllArgsConstructor
@NoArgsConstructor
-public enum ResponseStatus {
-
- /**
- * 请求成功
- * */
- OK(200,"SUCCESS"),
-
- /**
- * 服务器异常
- * */
- ERROR(500,"未知异常,请联系管理员!"),
-
- /**
- * 参数错误
- * */
- PARAM_ERROR(400,"非法参数!"),
-
- /**
- * 拒绝访问
- * */
- FORBIDDEN(403,"拒绝访问!"),
+public enum ResponseStatus implements IResultCode {
/**
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/exception/BusinessException.java b/novel-common/src/main/java/com/java2nb/novel/core/exception/BusinessException.java
deleted file mode 100644
index d2af22f..0000000
--- a/novel-common/src/main/java/com/java2nb/novel/core/exception/BusinessException.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.java2nb.novel.core.exception;
-
-import com.java2nb.novel.core.enums.ResponseStatus;
-import lombok.Data;
-
-/**
- * 自定义业务异常,用于处理用户请求时,业务错误时抛出
- */
-@Data
-public class BusinessException extends RuntimeException {
-
- private ResponseStatus resStatus;
-
- public BusinessException(ResponseStatus resStatus) {
- //不调用父类Throwable的fillInStackTrace()方法生成栈追踪信息,提高应用性能
- //构造器之间的调用必须在第一行
- super(resStatus.getMsg(), null, false, false);
- this.resStatus = resStatus;
- }
-
-
-}
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/utils/BeanUtil.java b/novel-common/src/main/java/com/java2nb/novel/core/utils/BeanUtil.java
deleted file mode 100644
index 2b1de8e..0000000
--- a/novel-common/src/main/java/com/java2nb/novel/core/utils/BeanUtil.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.java2nb.novel.core.utils;
-
-import lombok.SneakyThrows;
-import org.springframework.beans.BeanUtils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Bean操作工具类
- * @author Administrator
- */
-public class BeanUtil {
-
- /**
- * 复制集合对象属性值,生成新类型集合
- * @param source 源集合
- * @param targetClass 目标集合类型
- * @return 新集合
- * */
- @SneakyThrows
- public static List copyList(List super T> source,Class targetClass){
- List target = new ArrayList<>(source.size());
- for( int i = 0 ; i < source.size() ; i++){
- Object sourceItem = source.get(i);
- T targetItem = targetClass.newInstance();
- BeanUtils.copyProperties(sourceItem,targetItem);
- target.add(targetItem);
- }
- return target;
-
- }
-}
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/utils/FileUtil.java b/novel-common/src/main/java/com/java2nb/novel/core/utils/FileUtil.java
index 50ea3dc..f423fe0 100644
--- a/novel-common/src/main/java/com/java2nb/novel/core/utils/FileUtil.java
+++ b/novel-common/src/main/java/com/java2nb/novel/core/utils/FileUtil.java
@@ -1,5 +1,6 @@
package com.java2nb.novel.core.utils;
+import io.github.xxyopen.util.UUIDUtil;
import lombok.SneakyThrows;
import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/utils/IdWorker.java b/novel-common/src/main/java/com/java2nb/novel/core/utils/IdWorker.java
deleted file mode 100644
index aff07f9..0000000
--- a/novel-common/src/main/java/com/java2nb/novel/core/utils/IdWorker.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package com.java2nb.novel.core.utils;
-
-
-import java.lang.management.ManagementFactory;
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-
-/**
- * 名称:IdWorker.java
- * 描述:分布式自增长ID
- *
- * Twitter的 Snowflake JAVA实现方案
- *
- * 核心代码为其IdWorker这个类实现,其原理结构如下,我分别用一个0表示一位,用—分割开部分的作用:
- * 1||0---0000000000 0000000000 0000000000 0000000000 0 --- 00000 ---00000 ---000000000000
- * 在上面的字符串中,第一位为未使用(实际上也可作为long的符号位),接下来的41位为毫秒级时间,
- * 然后5位datacenter标识位,5位机器ID(并不算标识符,实际是为线程标识),
- * 然后12位该毫秒内的当前毫秒内的计数,加起来刚好64位,为一个Long型。
- * 这样的好处是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由datacenter和机器ID作区分),
- * 并且效率较高,经测试,snowflake每秒能够产生26万ID左右,完全满足需要。
- *
- * 64位ID (42(毫秒)+5(机器ID)+5(业务编码)+12(重复累加))
- *
- */
-public class IdWorker {
- // 时间起始标记点,作为基准,一般取系统的最近时间(一旦确定不能变动)
- private final static long twepoch = 1288834974657L;
- // 机器标识位数
- private final static long workerIdBits = 5L;
- // 数据中心标识位数
- private final static long datacenterIdBits = 5L;
- // 机器ID最大值
- private final static long maxWorkerId = -1L ^ (-1L << workerIdBits);
- // 数据中心ID最大值
- private final static long maxDatacenterId = -1L ^ (-1L << datacenterIdBits);
- // 毫秒内自增位
- private final static long sequenceBits = 12L;
- // 机器ID偏左移12位
- private final static long workerIdShift = sequenceBits;
- // 数据中心ID左移17位
- private final static long datacenterIdShift = sequenceBits + workerIdBits;
- // 时间毫秒左移22位
- private final static long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits;
-
- private final static long sequenceMask = -1L ^ (-1L << sequenceBits);
- /* 上次生产id时间戳 */
- private static long lastTimestamp = -1L;
- // 0,并发控制
- private long sequence = 0L;
-
- private final long workerId;
- // 数据标识id部分
- private final long datacenterId;
-
- public IdWorker(){
- this.datacenterId = getDatacenterId(maxDatacenterId);
- this.workerId = getMaxWorkerId(datacenterId, maxWorkerId);
- }
- /**
- * @param workerId
- * 工作机器ID
- * @param datacenterId
- * 序列号
- */
- public IdWorker(long workerId, long datacenterId) {
- if (workerId > maxWorkerId || workerId < 0) {
- throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", maxWorkerId));
- }
- if (datacenterId > maxDatacenterId || datacenterId < 0) {
- throw new IllegalArgumentException(String.format("datacenter Id can't be greater than %d or less than 0", maxDatacenterId));
- }
- this.workerId = workerId;
- this.datacenterId = datacenterId;
- }
- /**
- * 获取下一个ID
- *
- * @return
- */
- public synchronized long nextId() {
- long timestamp = timeGen();
- if (timestamp < lastTimestamp) {
- throw new RuntimeException(String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
- }
-
- if (lastTimestamp == timestamp) {
- // 当前毫秒内,则+1
- sequence = (sequence + 1) & sequenceMask;
- if (sequence == 0) {
- // 当前毫秒内计数满了,则等待下一秒
- timestamp = tilNextMillis(lastTimestamp);
- }
- } else {
- sequence = 0L;
- }
- lastTimestamp = timestamp;
- // ID偏移组合生成最终的ID,并返回ID
- long nextId = ((timestamp - twepoch) << timestampLeftShift)
- | (datacenterId << datacenterIdShift)
- | (workerId << workerIdShift) | sequence;
-
- return nextId;
- }
-
- private long tilNextMillis(final long lastTimestamp) {
- long timestamp = this.timeGen();
- while (timestamp <= lastTimestamp) {
- timestamp = this.timeGen();
- }
- return timestamp;
- }
-
- private long timeGen() {
- return System.currentTimeMillis();
- }
-
- /**
- *
- * 获取 maxWorkerId
- *
- */
- protected static long getMaxWorkerId(long datacenterId, long maxWorkerId) {
- StringBuffer mpid = new StringBuffer();
- mpid.append(datacenterId);
- String name = ManagementFactory.getRuntimeMXBean().getName();
- if (!name.isEmpty()) {
- /*
- * GET jvmPid
- */
- mpid.append(name.split("@")[0]);
- }
- /*
- * MAC + PID 的 hashcode 获取16个低位
- */
- return (mpid.toString().hashCode() & 0xffff) % (maxWorkerId + 1);
- }
-
- /**
- *
- * 数据标识id部分
- *
- */
- protected static long getDatacenterId(long maxDatacenterId) {
- long id = 0L;
- try {
- InetAddress ip = InetAddress.getLocalHost();
- NetworkInterface network = NetworkInterface.getByInetAddress(ip);
- if (network == null) {
- id = 1L;
- } else {
- byte[] mac = network.getHardwareAddress();
- id = ((0x000000FF & (long) mac[mac.length - 1])
- | (0x0000FF00 & (((long) mac[mac.length - 2]) << 8))) >> 6;
- id = id % (maxDatacenterId + 1);
- }
- } catch (Exception e) {
- System.out.println(" getDatacenterId: " + e.getMessage());
- }
- return id;
- }
-
-
-}
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/utils/MD5Util.java b/novel-common/src/main/java/com/java2nb/novel/core/utils/MD5Util.java
deleted file mode 100644
index 4bc27bc..0000000
--- a/novel-common/src/main/java/com/java2nb/novel/core/utils/MD5Util.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.java2nb.novel.core.utils;
-
-
-import lombok.SneakyThrows;
-import sun.misc.BASE64Encoder;
-
-import java.security.MessageDigest;
-
-/**
- * @author 11797
- */
-public class MD5Util {
-
- private static final String DEFAUL_CHARSET = "utf-8" ;
-
- private static String byteArrayToHexString(byte[] b) {
- StringBuffer resultSb = new StringBuffer();
- for (int i = 0; i < b.length; i++) {
- resultSb.append(byteToHexString(b[i]));
- }
-
- return resultSb.toString();
- }
-
- private static String byteToHexString(byte b) {
- int n = b;
- if (n < 0) {
- n += 256;
- }
- int d1 = n / 16;
- int d2 = n % 16;
- return HEX_DIGITS[d1] + HEX_DIGITS[d2];
- }
-
- @SneakyThrows
- public static String MD5Encode(String origin,String charsetname) {
- MessageDigest md = MessageDigest.getInstance("MD5");
- if (charsetname == null || "".equals(charsetname)) {
- return byteArrayToHexString(md.digest(origin
- .getBytes()));
- } else {
- return byteArrayToHexString(md.digest(origin
- .getBytes(charsetname)));
- }
- }
-
- @SneakyThrows
- public static String MD5New(String str) {
- //首先利用MD5算法将密码加密,变成等长字节
- MessageDigest md = MessageDigest.getInstance("MD5");
- byte[] b1 = md.digest(str.getBytes());
- //将等长字节利用Base64算法转换成字符串
- BASE64Encoder encoder = new BASE64Encoder();
- return encoder.encode(b1);
- }
-
- private static final String[] HEX_DIGITS = {"0", "1", "2", "3", "4", "5",
- "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
-
-
-}
\ No newline at end of file
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/utils/SpringUtil.java b/novel-common/src/main/java/com/java2nb/novel/core/utils/SpringUtil.java
deleted file mode 100644
index ad5d5d9..0000000
--- a/novel-common/src/main/java/com/java2nb/novel/core/utils/SpringUtil.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.java2nb.novel.core.utils;
-
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.stereotype.Component;
-
-/**
- * @author Administrator
- */
-@Component
-public class SpringUtil implements ApplicationContextAware {
-
-
-
- private static ApplicationContext applicationContext;
-
- @Override
- public void setApplicationContext(ApplicationContext applicationContext) {
- if (SpringUtil.applicationContext == null) {
- SpringUtil.applicationContext = applicationContext;
- }
- }
-
- /**
- * 获取applicationContext
- * */
- public static ApplicationContext getApplicationContext() {
- return applicationContext;
- }
-
- /**
- * 通过name获取 Bean.
- * */
- public static Object getBean(String name) {
- return getApplicationContext().getBean(name);
- }
-
- /**
- * 通过class获取Bean
- * */
- public static T getBean(Class clazz) {
- return getApplicationContext().getBean(clazz);
- }
-
- /**
- * 通过name,以及Clazz返回指定的Bean
- * */
- public static T getBean(String name, Class clazz) {
- return getApplicationContext().getBean(name, clazz);
- }
-
-}
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/utils/ThreadUtil.java b/novel-common/src/main/java/com/java2nb/novel/core/utils/ThreadUtil.java
deleted file mode 100644
index aa216da..0000000
--- a/novel-common/src/main/java/com/java2nb/novel/core/utils/ThreadUtil.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.java2nb.novel.core.utils;
-
-/**
- * 线程工具类
- * @author Administrator
- */
-public class ThreadUtil {
-
- /**
- * 根据线程ID获取线程
- * */
- public static Thread findThread(long threadId) {
- ThreadGroup group = Thread.currentThread().getThreadGroup();
- while(group != null) {
- Thread[] threads = new Thread[(int)(group.activeCount() * 1.2)];
- int count = group.enumerate(threads, true);
- for(int i = 0; i < count; i++) {
- if(threadId == threads[i].getId()) {
- return threads[i];
- }
- }
- group = group.getParent();
- }
- return null;
- }
-}
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/utils/UUIDUtil.java b/novel-common/src/main/java/com/java2nb/novel/core/utils/UUIDUtil.java
deleted file mode 100644
index 71d3cb6..0000000
--- a/novel-common/src/main/java/com/java2nb/novel/core/utils/UUIDUtil.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.java2nb.novel.core.utils;
-
-import java.util.UUID;
-
-/**
- * @author Administrator
- */
-public class UUIDUtil {
-
- public static final String[] CHARS = new String[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l",
- "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6",
- "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
- "S", "T", "U", "V", "W", "X", "Y", "Z" };
-
- /**
- * 生成指定长度的uuid
- *
- * @param length
- * @return
- */
- private static String getUUID(int length, UUID uuid) {
- int groupLength = 32 / length;
- StringBuilder sb = new StringBuilder();
- String id = uuid.toString().replace("-", "");
- for (int i = 0; i < length; i++) {
- String str = id.substring(i * groupLength, i * groupLength + groupLength);
- int x = Integer.parseInt(str, 16);
- sb.append(CHARS[x % 0x3E]);
- }
- return sb.toString();
- }
-
- /**
- * 8位UUID
- *
- * @return
- */
- public static String getUUID8() {
- return getUUID(8, UUID.randomUUID());
- }
-
- /**
- * 8位UUID
- *
- * @return
- */
- public static String getUUID8(byte[] bytes) {
- return getUUID(8, UUID.nameUUIDFromBytes(bytes));
- }
-
- /**
- * 8位UUID
- *
- * @return
- */
- public static String getUUID8(String fromString) {
- return getUUID(8, UUID.fromString(fromString));
- }
-
- /**
- * 16位UUID
- *
- * @return
- */
- public static String getUUID16() {
- return getUUID(16, UUID.randomUUID());
- }
-
- /**
- * 16位UUID
- *
- * @return
- */
- public static String getUUID16(String fromString) {
- return getUUID(16, UUID.fromString(fromString));
- }
-
- /**
- * 16位UUID
- *
- * @return
- */
- public static String getUUID16(byte[] bytes) {
- return getUUID(16, UUID.nameUUIDFromBytes(bytes));
- }
-
- /**
- * 32位UUID
- *
- * @return
- */
- public static String getUUID32() {
- return UUID.randomUUID().toString().replace("-", "");
- }
-
-}
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/valid/AddGroup.java b/novel-common/src/main/java/com/java2nb/novel/core/valid/AddGroup.java
deleted file mode 100644
index 8bb5974..0000000
--- a/novel-common/src/main/java/com/java2nb/novel/core/valid/AddGroup.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.java2nb.novel.core.valid;
-
-/**
- * 新增数据的校验分组
- * @author xiongxiaoyang
- */
-public interface AddGroup {
-
-
-
-}
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/valid/UpdateGroup.java b/novel-common/src/main/java/com/java2nb/novel/core/valid/UpdateGroup.java
deleted file mode 100644
index 502b2fc..0000000
--- a/novel-common/src/main/java/com/java2nb/novel/core/valid/UpdateGroup.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.java2nb.novel.core.valid;
-
-/**
- * 更新数据的校验分组
- * @author xiongxiaoyang
- */
-public interface UpdateGroup {
-
-
-
-}
diff --git a/novel-common/src/main/java/com/java2nb/novel/entity/User.java b/novel-common/src/main/java/com/java2nb/novel/entity/User.java
index 00be48e..fd3805e 100644
--- a/novel-common/src/main/java/com/java2nb/novel/entity/User.java
+++ b/novel-common/src/main/java/com/java2nb/novel/entity/User.java
@@ -1,11 +1,11 @@
package com.java2nb.novel.entity;
-import com.java2nb.novel.core.valid.AddGroup;
-import com.java2nb.novel.core.valid.UpdateGroup;
+import io.github.xxyopen.web.valid.AddGroup;
+import io.github.xxyopen.web.valid.UpdateGroup;
-import java.util.Date;
import javax.annotation.Generated;
import javax.validation.constraints.*;
+import java.util.Date;
public class User {
diff --git a/novel-crawl/src/main/java/com/java2nb/novel/controller/CrawlController.java b/novel-crawl/src/main/java/com/java2nb/novel/controller/CrawlController.java
index 80c9c16..cefdb30 100644
--- a/novel-crawl/src/main/java/com/java2nb/novel/controller/CrawlController.java
+++ b/novel-crawl/src/main/java/com/java2nb/novel/controller/CrawlController.java
@@ -1,10 +1,11 @@
package com.java2nb.novel.controller;
-import com.java2nb.novel.core.bean.PageBean;
-import com.java2nb.novel.core.bean.ResultBean;
+import io.github.xxyopen.model.page.PageBean;
+
import com.java2nb.novel.entity.CrawlSingleTask;
import com.java2nb.novel.entity.CrawlSource;
import com.java2nb.novel.service.CrawlService;
+import io.github.xxyopen.model.resp.RestResult;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
@@ -23,10 +24,10 @@ public class CrawlController {
* 新增爬虫源
* */
@PostMapping("addCrawlSource")
- public ResultBean addCrawlSource(CrawlSource source){
+ public RestResult addCrawlSource(CrawlSource source){
crawlService.addCrawlSource(source);
- return ResultBean.ok();
+ return RestResult.ok();
}
@@ -34,30 +35,30 @@ public class CrawlController {
* 爬虫源分页列表查询
* */
@GetMapping("listCrawlByPage")
- public ResultBean> listCrawlByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "10") int pageSize){
+ public RestResult> listCrawlByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "10") int pageSize){
- return ResultBean.ok(crawlService.listCrawlByPage(page,pageSize));
+ return RestResult.ok(crawlService.listCrawlByPage(page,pageSize));
}
/**
* 开启或停止爬虫
* */
@PostMapping("openOrCloseCrawl")
- public ResultBean openOrCloseCrawl(Integer sourceId,Byte sourceStatus){
+ public RestResult openOrCloseCrawl(Integer sourceId,Byte sourceStatus){
crawlService.openOrCloseCrawl(sourceId,sourceStatus);
- return ResultBean.ok();
+ return RestResult.ok();
}
/**
* 新增单本采集任务
* */
@PostMapping("addCrawlSingleTask")
- public ResultBean addCrawlSingleTask(CrawlSingleTask singleTask){
+ public RestResult addCrawlSingleTask(CrawlSingleTask singleTask){
crawlService.addCrawlSingleTask(singleTask);
- return ResultBean.ok();
+ return RestResult.ok();
}
@@ -65,20 +66,20 @@ public class CrawlController {
* 单本采集任务分页列表查询
* */
@GetMapping("listCrawlSingleTaskByPage")
- public ResultBean> listCrawlSingleTaskByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "10") int pageSize){
+ public RestResult> listCrawlSingleTaskByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "10") int pageSize){
- return ResultBean.ok(crawlService.listCrawlSingleTaskByPage(page,pageSize));
+ return RestResult.ok(crawlService.listCrawlSingleTaskByPage(page,pageSize));
}
/**
* 删除采集任务
* */
@DeleteMapping("delCrawlSingleTask/{id}")
- public ResultBean delCrawlSingleTask(@PathVariable("id") Long id){
+ public RestResult delCrawlSingleTask(@PathVariable("id") Long id){
crawlService.delCrawlSingleTask(id);
- return ResultBean.ok();
+ return RestResult.ok();
}
diff --git a/novel-crawl/src/main/java/com/java2nb/novel/core/crawl/CrawlParser.java b/novel-crawl/src/main/java/com/java2nb/novel/core/crawl/CrawlParser.java
index 3fd3d91..85955cd 100644
--- a/novel-crawl/src/main/java/com/java2nb/novel/core/crawl/CrawlParser.java
+++ b/novel-crawl/src/main/java/com/java2nb/novel/core/crawl/CrawlParser.java
@@ -5,6 +5,7 @@ import com.java2nb.novel.entity.Book;
import com.java2nb.novel.entity.BookContent;
import com.java2nb.novel.entity.BookIndex;
import com.java2nb.novel.utils.Constants;
+import io.github.xxyopen.util.IdWorker;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -26,7 +27,7 @@ import static java.util.regex.Pattern.compile;
@Slf4j
public class CrawlParser {
- private static final IdWorker idWorker = new IdWorker();
+ private static final IdWorker idWorker = IdWorker.INSTANCE;
private static final RestTemplate restTemplate = RestTemplateUtil.getInstance("utf-8");
diff --git a/novel-crawl/src/main/java/com/java2nb/novel/core/schedule/CrawlThreadMonitor.java b/novel-crawl/src/main/java/com/java2nb/novel/core/schedule/CrawlThreadMonitor.java
index 1009cdf..a04ce49 100644
--- a/novel-crawl/src/main/java/com/java2nb/novel/core/schedule/CrawlThreadMonitor.java
+++ b/novel-crawl/src/main/java/com/java2nb/novel/core/schedule/CrawlThreadMonitor.java
@@ -3,9 +3,9 @@ package com.java2nb.novel.core.schedule;
import com.java2nb.novel.core.cache.CacheKey;
import com.java2nb.novel.core.cache.CacheService;
-import com.java2nb.novel.core.utils.ThreadUtil;
import com.java2nb.novel.entity.CrawlSource;
import com.java2nb.novel.service.CrawlService;
+import io.github.xxyopen.util.ThreadUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
diff --git a/novel-crawl/src/main/java/com/java2nb/novel/service/CrawlService.java b/novel-crawl/src/main/java/com/java2nb/novel/service/CrawlService.java
index d8e9821..38c6f4b 100644
--- a/novel-crawl/src/main/java/com/java2nb/novel/service/CrawlService.java
+++ b/novel-crawl/src/main/java/com/java2nb/novel/service/CrawlService.java
@@ -1,6 +1,6 @@
package com.java2nb.novel.service;
-import com.java2nb.novel.core.bean.PageBean;
+import io.github.xxyopen.model.page.PageBean;
import com.java2nb.novel.core.crawl.RuleBean;
import com.java2nb.novel.entity.CrawlSingleTask;
import com.java2nb.novel.entity.CrawlSource;
diff --git a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/CrawlServiceImpl.java b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/CrawlServiceImpl.java
index 8d45778..2e95141 100644
--- a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/CrawlServiceImpl.java
+++ b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/CrawlServiceImpl.java
@@ -2,17 +2,17 @@ package com.java2nb.novel.service.impl;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageHelper;
-import com.java2nb.novel.core.bean.PageBean;
+import io.github.xxyopen.model.page.PageBean;
import com.java2nb.novel.core.cache.CacheKey;
import com.java2nb.novel.core.cache.CacheService;
import com.java2nb.novel.core.crawl.CrawlParser;
import com.java2nb.novel.core.crawl.RuleBean;
import com.java2nb.novel.core.enums.ResponseStatus;
-import com.java2nb.novel.core.exception.BusinessException;
-import com.java2nb.novel.core.utils.BeanUtil;
-import com.java2nb.novel.core.utils.IdWorker;
-import com.java2nb.novel.core.utils.SpringUtil;
-import com.java2nb.novel.core.utils.ThreadUtil;
+import io.github.xxyopen.model.page.builder.pagehelper.PageBuilder;
+import io.github.xxyopen.util.IdWorker;
+import io.github.xxyopen.util.ThreadUtil;
+import io.github.xxyopen.web.exception.BusinessException;
+import io.github.xxyopen.web.util.BeanUtil;
import com.java2nb.novel.entity.Book;
import com.java2nb.novel.entity.CrawlSingleTask;
import com.java2nb.novel.entity.CrawlSource;
@@ -24,6 +24,7 @@ import com.java2nb.novel.service.BookService;
import com.java2nb.novel.service.CrawlService;
import com.java2nb.novel.vo.CrawlSingleTaskVO;
import com.java2nb.novel.vo.CrawlSourceVO;
+import io.github.xxyopen.web.util.SpringUtil;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -79,7 +80,7 @@ public class CrawlServiceImpl implements CrawlService {
.build()
.render(RenderingStrategies.MYBATIS3);
List crawlSources = crawlSourceMapper.selectMany(render);
- PageBean pageBean = new PageBean<>(crawlSources);
+ PageBean pageBean = PageBuilder.build(crawlSources);
pageBean.setList(BeanUtil.copyList(crawlSources, CrawlSourceVO.class));
return pageBean;
}
@@ -168,7 +169,7 @@ public class CrawlServiceImpl implements CrawlService {
.build()
.render(RenderingStrategies.MYBATIS3);
List crawlSingleTasks = crawlSingleTaskMapper.selectMany(render);
- PageBean pageBean = new PageBean<>(crawlSingleTasks);
+ PageBean pageBean = PageBuilder.build(crawlSingleTasks);
pageBean.setList(BeanUtil.copyList(crawlSingleTasks, CrawlSingleTaskVO.class));
return pageBean;
}
@@ -299,7 +300,7 @@ public class CrawlServiceImpl implements CrawlService {
book.setCrawlBookId(bookId);
book.setCrawlSourceId(sourceId);
book.setCrawlLastTime(new Date());
- book.setId(new IdWorker().nextId());
+ book.setId(IdWorker.INSTANCE.nextId());
//解析章节目录
CrawlParser.parseBookIndexAndContent(bookId, book, ruleBean, new HashMap<>(0), chapter -> {
bookService.saveBookAndIndexAndContent(book, chapter.getBookIndexList(), chapter.getBookContentList());
diff --git a/novel-front/src/main/java/com/java2nb/novel/controller/AuthorController.java b/novel-front/src/main/java/com/java2nb/novel/controller/AuthorController.java
index 9b23947..c89d02f 100644
--- a/novel-front/src/main/java/com/java2nb/novel/controller/AuthorController.java
+++ b/novel-front/src/main/java/com/java2nb/novel/controller/AuthorController.java
@@ -1,10 +1,11 @@
package com.java2nb.novel.controller;
-import com.java2nb.novel.core.bean.PageBean;
-import com.java2nb.novel.core.bean.ResultBean;
+import io.github.xxyopen.model.page.PageBean;
+
import com.java2nb.novel.core.bean.UserDetails;
import com.java2nb.novel.core.enums.ResponseStatus;
-import com.java2nb.novel.core.exception.BusinessException;
+import io.github.xxyopen.model.resp.RestResult;
+import io.github.xxyopen.web.exception.BusinessException;
import com.java2nb.novel.entity.Author;
import com.java2nb.novel.entity.AuthorIncome;
import com.java2nb.novel.entity.AuthorIncomeDetail;
@@ -35,25 +36,25 @@ public class AuthorController extends BaseController{
* 校验笔名是否存在
* */
@GetMapping("checkPenName")
- public ResultBean checkPenName(String penName){
+ public RestResult checkPenName(String penName){
- return ResultBean.ok(authorService.checkPenName(penName));
+ return RestResult.ok(authorService.checkPenName(penName));
}
/**
* 作家发布小说分页列表查询
* */
@GetMapping("listBookByPage")
- public ResultBean> listBookByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "10") int pageSize , HttpServletRequest request){
+ public RestResult> listBookByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "10") int pageSize , HttpServletRequest request){
- return ResultBean.ok(bookService.listBookPageByUserId(getUserDetails(request).getId(),page,pageSize));
+ return RestResult.ok(bookService.listBookPageByUserId(getUserDetails(request).getId(),page,pageSize));
}
/**
* 发布小说
* */
@PostMapping("addBook")
- public ResultBean addBook(@RequestParam("bookDesc") String bookDesc,Book book,HttpServletRequest request){
+ public RestResult addBook(@RequestParam("bookDesc") String bookDesc,Book book,HttpServletRequest request){
Author author = checkAuthor(request);
@@ -64,20 +65,20 @@ public class AuthorController extends BaseController{
//发布小说
bookService.addBook(book,author.getId(),author.getPenName());
- return ResultBean.ok();
+ return RestResult.ok();
}
/**
* 更新小说状态,上架或下架
* */
@PostMapping("updateBookStatus")
- public ResultBean updateBookStatus(Long bookId,Byte status,HttpServletRequest request){
+ public RestResult updateBookStatus(Long bookId,Byte status,HttpServletRequest request){
Author author = checkAuthor(request);
//更新小说状态,上架或下架
bookService.updateBookStatus(bookId,status,author.getId());
- return ResultBean.ok();
+ return RestResult.ok();
}
@@ -86,28 +87,28 @@ public class AuthorController extends BaseController{
* 删除章节
*/
@DeleteMapping("deleteIndex/{indexId}")
- public ResultBean deleteIndex(@PathVariable("indexId") Long indexId, HttpServletRequest request) {
+ public RestResult deleteIndex(@PathVariable("indexId") Long indexId, HttpServletRequest request) {
Author author = checkAuthor(request);
//删除章节
bookService.deleteIndex(indexId, author.getId());
- return ResultBean.ok();
+ return RestResult.ok();
}
/**
* 更新章节名
*/
@PostMapping("updateIndexName")
- public ResultBean updateIndexName(Long indexId, String indexName, HttpServletRequest request) {
+ public RestResult updateIndexName(Long indexId, String indexName, HttpServletRequest request) {
Author author = checkAuthor(request);
//更新章节名
bookService.updateIndexName(indexId, indexName, author.getId());
- return ResultBean.ok();
+ return RestResult.ok();
}
@@ -117,7 +118,7 @@ public class AuthorController extends BaseController{
* 发布章节内容
*/
@PostMapping("addBookContent")
- public ResultBean addBookContent(Long bookId, String indexName, String content,Byte isVip, HttpServletRequest request) {
+ public RestResult addBookContent(Long bookId, String indexName, String content,Byte isVip, HttpServletRequest request) {
Author author = checkAuthor(request);
content = content.replaceAll("\\n", "
")
@@ -125,14 +126,14 @@ public class AuthorController extends BaseController{
//发布章节内容
bookService.addBookContent(bookId, indexName, content,isVip, author.getId());
- return ResultBean.ok();
+ return RestResult.ok();
}
/**
* 查询章节内容
*/
@GetMapping("queryIndexContent/{indexId}")
- public ResultBean queryIndexContent(@PathVariable("indexId") Long indexId, HttpServletRequest request) {
+ public RestResult queryIndexContent(@PathVariable("indexId") Long indexId, HttpServletRequest request) {
Author author = checkAuthor(request);
@@ -141,14 +142,14 @@ public class AuthorController extends BaseController{
content = content.replaceAll("
", "\n")
.replaceAll(" ", " ");
- return ResultBean.ok(content);
+ return RestResult.ok(content);
}
/**
* 更新章节内容
*/
@PostMapping("updateBookContent")
- public ResultBean updateBookContent(Long indexId, String indexName, String content, HttpServletRequest request) {
+ public RestResult updateBookContent(Long indexId, String indexName, String content, HttpServletRequest request) {
Author author = checkAuthor(request);
content = content.replaceAll("\\n", "
")
@@ -156,17 +157,17 @@ public class AuthorController extends BaseController{
//更新章节内容
bookService.updateBookContent(indexId, indexName, content, author.getId());
- return ResultBean.ok();
+ return RestResult.ok();
}
/**
* 修改小说封面
*/
@PostMapping("updateBookPic")
- public ResultBean updateBookPic(@RequestParam("bookId") Long bookId,@RequestParam("bookPic") String bookPic,HttpServletRequest request) {
+ public RestResult updateBookPic(@RequestParam("bookId") Long bookId,@RequestParam("bookPic") String bookPic,HttpServletRequest request) {
Author author = checkAuthor(request);
bookService.updateBookPic(bookId,bookPic, author.getId());
- return ResultBean.ok();
+ return RestResult.ok();
}
@@ -174,14 +175,14 @@ public class AuthorController extends BaseController{
* 作家日收入统计数据分页列表查询
* */
@GetMapping("listIncomeDailyByPage")
- public ResultBean> listIncomeDailyByPage(@RequestParam(value = "curr", defaultValue = "1") int page,
+ public RestResult> listIncomeDailyByPage(@RequestParam(value = "curr", defaultValue = "1") int page,
@RequestParam(value = "limit", defaultValue = "10") int pageSize ,
@RequestParam(value = "bookId", defaultValue = "0") Long bookId,
@RequestParam(value = "startTime",defaultValue = "2020-05-01") Date startTime,
@RequestParam(value = "endTime",defaultValue = "2030-01-01") Date endTime,
HttpServletRequest request){
- return ResultBean.ok(authorService.listIncomeDailyByPage(page,pageSize,getUserDetails(request).getId(),bookId,startTime,endTime));
+ return RestResult.ok(authorService.listIncomeDailyByPage(page,pageSize,getUserDetails(request).getId(),bookId,startTime,endTime));
}
@@ -189,12 +190,12 @@ public class AuthorController extends BaseController{
* 作家月收入统计数据分页列表查询
* */
@GetMapping("listIncomeMonthByPage")
- public ResultBean> listIncomeMonthByPage(@RequestParam(value = "curr", defaultValue = "1") int page,
+ public RestResult> listIncomeMonthByPage(@RequestParam(value = "curr", defaultValue = "1") int page,
@RequestParam(value = "limit", defaultValue = "10") int pageSize ,
@RequestParam(value = "bookId", defaultValue = "0") Long bookId,
HttpServletRequest request){
- return ResultBean.ok(authorService.listIncomeMonthByPage(page,pageSize,getUserDetails(request).getId(),bookId));
+ return RestResult.ok(authorService.listIncomeMonthByPage(page,pageSize,getUserDetails(request).getId(),bookId));
}
private Author checkAuthor(HttpServletRequest request) {
diff --git a/novel-front/src/main/java/com/java2nb/novel/controller/BookController.java b/novel-front/src/main/java/com/java2nb/novel/controller/BookController.java
index 960df44..d95cc2c 100644
--- a/novel-front/src/main/java/com/java2nb/novel/controller/BookController.java
+++ b/novel-front/src/main/java/com/java2nb/novel/controller/BookController.java
@@ -1,8 +1,5 @@
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.core.bean.UserDetails;
import com.java2nb.novel.core.enums.ResponseStatus;
import com.java2nb.novel.entity.Book;
@@ -15,6 +12,9 @@ import com.java2nb.novel.vo.BookSettingVO;
import com.java2nb.novel.vo.BookSpVO;
import com.java2nb.novel.service.BookService;
import com.java2nb.novel.vo.BookVO;
+import io.github.xxyopen.model.page.PageBean;
+import io.github.xxyopen.model.page.builder.pagehelper.PageBuilder;
+import io.github.xxyopen.model.resp.RestResult;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
@@ -49,56 +49,56 @@ public class BookController extends BaseController {
* 查询首页小说设置列表数据
*/
@GetMapping("listBookSetting")
- public ResultBean>> listBookSetting() {
- return ResultBean.ok(bookService.listBookSettingVO());
+ public RestResult>> listBookSetting() {
+ return RestResult.ok(bookService.listBookSettingVO());
}
/**
* 查询首页点击榜单数据
*/
@GetMapping("listClickRank")
- public ResultBean> listClickRank() {
- return ResultBean.ok(bookService.listClickRank());
+ public RestResult> listClickRank() {
+ return RestResult.ok(bookService.listClickRank());
}
/**
* 查询首页新书榜单数据
*/
@GetMapping("listNewRank")
- public ResultBean> listNewRank() {
- return ResultBean.ok(bookService.listNewRank());
+ public RestResult> listNewRank() {
+ return RestResult.ok(bookService.listNewRank());
}
/**
* 查询首页更新榜单数据
*/
@GetMapping("listUpdateRank")
- public ResultBean> listUpdateRank() {
- return ResultBean.ok(bookService.listUpdateRank());
+ public RestResult> listUpdateRank() {
+ return RestResult.ok(bookService.listUpdateRank());
}
/**
* 查询小说分类列表
*/
@GetMapping("listBookCategory")
- public ResultBean> listBookCategory() {
- return ResultBean.ok(bookService.listBookCategory());
+ public RestResult> listBookCategory() {
+ return RestResult.ok(bookService.listBookCategory());
}
/**
* 分页搜索
*/
@GetMapping("searchByPage")
- public ResultBean> searchByPage(BookSpVO bookSP, @RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "20") int pageSize) {
- return ResultBean.ok(bookService.searchByPage(bookSP, page, pageSize));
+ public RestResult> searchByPage(BookSpVO bookSP, @RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "20") int pageSize) {
+ return RestResult.ok(bookService.searchByPage(bookSP, page, pageSize));
}
/**
* 查询小说详情信息
*/
@GetMapping("queryBookDetail/{id}")
- public ResultBean queryBookDetail(@PathVariable("id") Long id) {
- return ResultBean.ok(bookService.queryBookDetail(id));
+ public RestResult queryBookDetail(@PathVariable("id") Long id) {
+ return RestResult.ok(bookService.queryBookDetail(id));
}
@@ -106,28 +106,28 @@ public class BookController extends BaseController {
* 查询小说排行信息
*/
@GetMapping("listRank")
- public ResultBean> listRank(@RequestParam(value = "type", defaultValue = "0") Byte type, @RequestParam(value = "limit", defaultValue = "30") Integer limit) {
- return ResultBean.ok(bookService.listRank(type, limit));
+ public RestResult> listRank(@RequestParam(value = "type", defaultValue = "0") Byte type, @RequestParam(value = "limit", defaultValue = "30") Integer limit) {
+ return RestResult.ok(bookService.listRank(type, limit));
}
/**
* 增加点击次数
*/
@PostMapping("addVisitCount")
- public ResultBean addVisitCount(Long bookId) {
+ public RestResult addVisitCount(Long bookId) {
if (enableMq == 1) {
rabbitTemplate.convertAndSend("ADD-BOOK-VISIT-EXCHANGE", null, bookId);
} else {
bookService.addVisitCount(bookId, 1);
}
- return ResultBean.ok();
+ return RestResult.ok();
}
/**
* 查询章节相关信息
*/
@GetMapping("queryBookIndexAbout")
- public ResultBean> queryBookIndexAbout(Long bookId, Long lastBookIndexId) {
+ public RestResult> queryBookIndexAbout(Long bookId, Long lastBookIndexId) {
Map data = new HashMap<>(2);
data.put("bookIndexCount", bookService.queryIndexCount(bookId));
BookIndex bookIndex = bookService.queryBookIndex(lastBookIndexId);
@@ -136,15 +136,15 @@ public class BookController extends BaseController {
lastBookContent = lastBookContent.substring(0, 42);
}
data.put("lastBookContent", lastBookContent);
- return ResultBean.ok(data);
+ return RestResult.ok(data);
}
/**
* 根据分类id查询同类推荐书籍
*/
@GetMapping("listRecBookByCatId")
- public ResultBean> listRecBookByCatId(Integer catId) {
- return ResultBean.ok(bookService.listRecBookByCatId(catId));
+ public RestResult> listRecBookByCatId(Integer catId) {
+ return RestResult.ok(bookService.listRecBookByCatId(catId));
}
@@ -152,37 +152,37 @@ public class BookController extends BaseController {
* 分页查询书籍评论列表
*/
@GetMapping("listCommentByPage")
- public ResultBean> listCommentByPage(@RequestParam("bookId") Long bookId, @RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "5") int pageSize) {
- return ResultBean.ok(bookService.listCommentByPage(null, bookId, page, pageSize));
+ public RestResult> listCommentByPage(@RequestParam("bookId") Long bookId, @RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "5") int pageSize) {
+ return RestResult.ok(bookService.listCommentByPage(null, bookId, page, pageSize));
}
/**
* 新增评价
*/
@PostMapping("addBookComment")
- public ResultBean> addBookComment(BookComment comment, HttpServletRequest request) {
+ public RestResult> addBookComment(BookComment comment, HttpServletRequest request) {
UserDetails userDetails = getUserDetails(request);
if (userDetails == null) {
- return ResultBean.fail(ResponseStatus.NO_LOGIN);
+ return RestResult.fail(ResponseStatus.NO_LOGIN);
}
bookService.addBookComment(userDetails.getId(), comment);
- return ResultBean.ok();
+ return RestResult.ok();
}
/**
* 根据小说ID查询小说前十条最新更新目录集合
*/
@GetMapping("queryNewIndexList")
- public ResultBean> queryNewIndexList(Long bookId) {
- return ResultBean.ok(bookService.queryIndexList(bookId, "index_num desc", 1, 10));
+ public RestResult> queryNewIndexList(Long bookId) {
+ return RestResult.ok(bookService.queryIndexList(bookId, "index_num desc", 1, 10));
}
/**
* 目录页
*/
@GetMapping("/queryIndexList")
- public ResultBean> indexList(Long bookId, @RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "5") int pageSize, @RequestParam(value = "orderBy", defaultValue = "index_num desc") String orderBy) {
- return ResultBean.ok(new PageBean<>(bookService.queryIndexList(bookId, orderBy, page, pageSize)));
+ public RestResult> indexList(Long bookId, @RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "5") int pageSize, @RequestParam(value = "orderBy", defaultValue = "index_num desc") String orderBy) {
+ return RestResult.ok(PageBuilder.build(bookService.queryIndexList(bookId, orderBy, page, pageSize)));
}
diff --git a/novel-front/src/main/java/com/java2nb/novel/controller/CacheController.java b/novel-front/src/main/java/com/java2nb/novel/controller/CacheController.java
index e22f4b6..e7aced8 100644
--- a/novel-front/src/main/java/com/java2nb/novel/controller/CacheController.java
+++ b/novel-front/src/main/java/com/java2nb/novel/controller/CacheController.java
@@ -1,12 +1,13 @@
package com.java2nb.novel.controller;
-import com.java2nb.novel.core.bean.ResultBean;
+
import com.java2nb.novel.core.cache.CacheKey;
import com.java2nb.novel.core.cache.CacheService;
import com.java2nb.novel.core.enums.ResponseStatus;
import com.java2nb.novel.service.BookService;
import com.java2nb.novel.service.FriendLinkService;
import com.java2nb.novel.service.NewsService;
+import io.github.xxyopen.model.resp.RestResult;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
@@ -40,9 +41,9 @@ public class CacheController {
* @param type 缓存类型,1:首页书籍推荐,2:首页新闻,3:首页友情链接
* */
@GetMapping("refresh/{pass}/{type}")
- public ResultBean refreshCache(@PathVariable("type") Byte type, @PathVariable("pass") String pass){
+ public RestResult refreshCache(@PathVariable("type") Byte type, @PathVariable("pass") String pass){
if(!cacheManagerPass.equals(pass)){
- return ResultBean.fail(ResponseStatus.PASSWORD_ERROR);
+ return RestResult.fail(ResponseStatus.PASSWORD_ERROR);
}
switch (type){
case 1:{
@@ -69,7 +70,7 @@ public class CacheController {
}
- return ResultBean.ok();
+ return RestResult.ok();
}
diff --git a/novel-front/src/main/java/com/java2nb/novel/controller/FileController.java b/novel-front/src/main/java/com/java2nb/novel/controller/FileController.java
index 6cd9eb3..1cf83fa 100644
--- a/novel-front/src/main/java/com/java2nb/novel/controller/FileController.java
+++ b/novel-front/src/main/java/com/java2nb/novel/controller/FileController.java
@@ -1,13 +1,14 @@
package com.java2nb.novel.controller;
-import com.java2nb.novel.core.bean.ResultBean;
+
import com.java2nb.novel.core.cache.CacheService;
import com.java2nb.novel.core.enums.ResponseStatus;
-import com.java2nb.novel.core.exception.BusinessException;
import com.java2nb.novel.core.utils.Constants;
import com.java2nb.novel.core.utils.FileUtil;
import com.java2nb.novel.core.utils.RandomValidateCodeUtil;
-import com.java2nb.novel.core.utils.UUIDUtil;
+import io.github.xxyopen.model.resp.RestResult;
+import io.github.xxyopen.util.UUIDUtil;
+import io.github.xxyopen.web.exception.BusinessException;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -19,9 +20,8 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.io.*;
+import java.io.File;
import java.util.Date;
-import java.util.Objects;
/**
* @author 11797
@@ -64,7 +64,7 @@ public class FileController {
@SneakyThrows
@ResponseBody
@PostMapping("/picUpload")
- ResultBean upload(@RequestParam("file") MultipartFile file) {
+ RestResult upload(@RequestParam("file") MultipartFile file) {
Date currentDate = new Date();
String savePath =
Constants.LOCAL_PIC_PREFIX + DateUtils.formatDate(currentDate, "yyyy") + "/" +
@@ -86,7 +86,7 @@ public class FileController {
saveFile.delete();
throw new BusinessException(ResponseStatus.FILE_NOT_IMAGE);
};
- return ResultBean.ok(savePath + "/" + saveFileName);
+ return RestResult.ok(savePath + "/" + saveFileName);
}
diff --git a/novel-front/src/main/java/com/java2nb/novel/controller/FriendLinkController.java b/novel-front/src/main/java/com/java2nb/novel/controller/FriendLinkController.java
index 0857e2b..b86f50c 100644
--- a/novel-front/src/main/java/com/java2nb/novel/controller/FriendLinkController.java
+++ b/novel-front/src/main/java/com/java2nb/novel/controller/FriendLinkController.java
@@ -1,12 +1,12 @@
package com.java2nb.novel.controller;
-import com.java2nb.novel.core.bean.ResultBean;
+
import com.java2nb.novel.entity.FriendLink;
import com.java2nb.novel.service.FriendLinkService;
+import io.github.xxyopen.model.resp.RestResult;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -27,8 +27,8 @@ public class FriendLinkController {
* 查询首页友情链接
* */
@GetMapping("listIndexLink")
- public ResultBean> listIndexLink(){
- return ResultBean.ok(friendLinkService.listIndexLink());
+ public RestResult> listIndexLink(){
+ return RestResult.ok(friendLinkService.listIndexLink());
}
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 6eec326..2e97b0a 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,10 +1,10 @@
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 io.github.xxyopen.model.page.PageBean;
import com.java2nb.novel.entity.News;
import com.java2nb.novel.service.NewsService;
+import io.github.xxyopen.model.resp.RestResult;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
@@ -26,25 +26,25 @@ public class NewsController {
* 查询首页新闻
* */
@GetMapping("listIndexNews")
- public ResultBean> listIndexNews(){
- return ResultBean.ok(newsService.listIndexNews());
+ public RestResult> listIndexNews(){
+ return RestResult.ok(newsService.listIndexNews());
}
/**
* 分页查询新闻列表
* */
@GetMapping("listByPage")
- public ResultBean> listByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "5") int pageSize){
- return ResultBean.ok(newsService.listByPage(page,pageSize));
+ public RestResult> listByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "5") int pageSize){
+ return RestResult.ok(newsService.listByPage(page,pageSize));
}
/**
* 增加新闻阅读量
* */
@PostMapping("addReadCount")
- public ResultBean addReadCount(@RequestParam(value = "newsId") Integer newsId){
+ public RestResult addReadCount(@RequestParam(value = "newsId") Integer newsId){
newsService.addReadCount(newsId);
- return ResultBean.ok();
+ return RestResult.ok();
}
diff --git a/novel-front/src/main/java/com/java2nb/novel/controller/UserController.java b/novel-front/src/main/java/com/java2nb/novel/controller/UserController.java
index 8ae40d4..0213f32 100644
--- a/novel-front/src/main/java/com/java2nb/novel/controller/UserController.java
+++ b/novel-front/src/main/java/com/java2nb/novel/controller/UserController.java
@@ -1,16 +1,17 @@
package com.java2nb.novel.controller;
-import com.java2nb.novel.core.bean.ResultBean;
+
import com.java2nb.novel.core.bean.UserDetails;
import com.java2nb.novel.core.cache.CacheService;
import com.java2nb.novel.core.enums.ResponseStatus;
import com.java2nb.novel.core.utils.RandomValidateCodeUtil;
-import com.java2nb.novel.core.valid.AddGroup;
-import com.java2nb.novel.core.valid.UpdateGroup;
import com.java2nb.novel.entity.User;
import com.java2nb.novel.entity.UserBuyRecord;
import com.java2nb.novel.service.BookService;
import com.java2nb.novel.service.UserService;
+import io.github.xxyopen.model.resp.RestResult;
+import io.github.xxyopen.web.valid.AddGroup;
+import io.github.xxyopen.web.valid.UpdateGroup;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -41,7 +42,7 @@ public class UserController extends BaseController {
* 登陆
*/
@PostMapping("login")
- public ResultBean> login(User user) {
+ public RestResult> login(User user) {
//登陆
UserDetails userDetails = userService.login(user);
@@ -49,7 +50,7 @@ public class UserController extends BaseController {
Map data = new HashMap<>(1);
data.put("token", jwtTokenUtil.generateToken(userDetails));
- return ResultBean.ok(data);
+ return RestResult.ok(data);
}
@@ -58,12 +59,12 @@ public class UserController extends BaseController {
* 注册
*/
@PostMapping("register")
- public ResultBean> register(@Validated({AddGroup.class}) User user, @RequestParam(value = "velCode", defaultValue = "") String velCode) {
+ public RestResult> register(@Validated({AddGroup.class}) User user, @RequestParam(value = "velCode", defaultValue = "") String velCode) {
//判断验证码是否正确
if (!velCode.equals(cacheService.get(RandomValidateCodeUtil.RANDOM_CODE_KEY))) {
- return ResultBean.fail(ResponseStatus.VEL_CODE_ERROR);
+ return RestResult.fail(ResponseStatus.VEL_CODE_ERROR);
}
//注册
@@ -71,7 +72,7 @@ public class UserController extends BaseController {
Map data = new HashMap<>(1);
data.put("token", jwtTokenUtil.generateToken(userDetails));
- return ResultBean.ok(data);
+ return RestResult.ok(data);
}
@@ -81,7 +82,7 @@ public class UserController extends BaseController {
* 刷新token
*/
@PostMapping("refreshToken")
- public ResultBean> refreshToken(HttpServletRequest request) {
+ public RestResult> refreshToken(HttpServletRequest request) {
String token = getToken(request);
if (jwtTokenUtil.canRefresh(token)) {
token = jwtTokenUtil.refreshToken(token);
@@ -90,10 +91,10 @@ public class UserController extends BaseController {
UserDetails userDetail = jwtTokenUtil.getUserDetailsFromToken(token);
data.put("username", userDetail.getUsername());
data.put("nickName", userDetail.getNickName());
- return ResultBean.ok(data);
+ return RestResult.ok(data);
} else {
- return ResultBean.fail(ResponseStatus.NO_LOGIN);
+ return RestResult.fail(ResponseStatus.NO_LOGIN);
}
}
@@ -102,131 +103,131 @@ public class UserController extends BaseController {
* 查询小说是否已加入书架
*/
@GetMapping("queryIsInShelf")
- public ResultBean> queryIsInShelf(Long bookId, HttpServletRequest request) {
+ public RestResult> queryIsInShelf(Long bookId, HttpServletRequest request) {
UserDetails userDetails = getUserDetails(request);
if (userDetails == null) {
- return ResultBean.fail(ResponseStatus.NO_LOGIN);
+ return RestResult.fail(ResponseStatus.NO_LOGIN);
}
- return ResultBean.ok(userService.queryIsInShelf(userDetails.getId(), bookId));
+ return RestResult.ok(userService.queryIsInShelf(userDetails.getId(), bookId));
}
/**
* 加入书架
* */
@PostMapping("addToBookShelf")
- public ResultBean addToBookShelf(Long bookId,Long preContentId, HttpServletRequest request) {
+ public RestResult addToBookShelf(Long bookId,Long preContentId, HttpServletRequest request) {
UserDetails userDetails = getUserDetails(request);
if (userDetails == null) {
- return ResultBean.fail(ResponseStatus.NO_LOGIN);
+ return RestResult.fail(ResponseStatus.NO_LOGIN);
}
userService.addToBookShelf(userDetails.getId(),bookId,preContentId);
- return ResultBean.ok();
+ return RestResult.ok();
}
/**
* 移出书架
* */
@DeleteMapping("removeFromBookShelf/{bookId}")
- public ResultBean> removeFromBookShelf(@PathVariable("bookId") Long bookId, HttpServletRequest request) {
+ public RestResult> removeFromBookShelf(@PathVariable("bookId") Long bookId, HttpServletRequest request) {
UserDetails userDetails = getUserDetails(request);
if (userDetails == null) {
- return ResultBean.fail(ResponseStatus.NO_LOGIN);
+ return RestResult.fail(ResponseStatus.NO_LOGIN);
}
userService.removeFromBookShelf(userDetails.getId(),bookId);
- return ResultBean.ok();
+ return RestResult.ok();
}
/**
* 分页查询书架
* */
@GetMapping("listBookShelfByPage")
- public ResultBean> listBookShelfByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "10") int pageSize,HttpServletRequest request) {
+ public RestResult> listBookShelfByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "10") int pageSize,HttpServletRequest request) {
UserDetails userDetails = getUserDetails(request);
if (userDetails == null) {
- return ResultBean.fail(ResponseStatus.NO_LOGIN);
+ return RestResult.fail(ResponseStatus.NO_LOGIN);
}
- return ResultBean.ok(userService.listBookShelfByPage(userDetails.getId(),page,pageSize));
+ return RestResult.ok(userService.listBookShelfByPage(userDetails.getId(),page,pageSize));
}
/**
* 分页查询阅读记录
* */
@GetMapping("listReadHistoryByPage")
- public ResultBean> listReadHistoryByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "10") int pageSize,HttpServletRequest request) {
+ public RestResult> listReadHistoryByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "10") int pageSize,HttpServletRequest request) {
UserDetails userDetails = getUserDetails(request);
if (userDetails == null) {
- return ResultBean.fail(ResponseStatus.NO_LOGIN);
+ return RestResult.fail(ResponseStatus.NO_LOGIN);
}
- return ResultBean.ok(userService.listReadHistoryByPage(userDetails.getId(),page,pageSize));
+ return RestResult.ok(userService.listReadHistoryByPage(userDetails.getId(),page,pageSize));
}
/**
* 添加阅读记录
* */
@PostMapping("addReadHistory")
- public ResultBean> addReadHistory(Long bookId,Long preContentId, HttpServletRequest request) {
+ public RestResult> addReadHistory(Long bookId,Long preContentId, HttpServletRequest request) {
UserDetails userDetails = getUserDetails(request);
if (userDetails == null) {
- return ResultBean.fail(ResponseStatus.NO_LOGIN);
+ return RestResult.fail(ResponseStatus.NO_LOGIN);
}
userService.addReadHistory(userDetails.getId(),bookId,preContentId);
- return ResultBean.ok();
+ return RestResult.ok();
}
/**
* 添加反馈
* */
@PostMapping("addFeedBack")
- public ResultBean> addFeedBack(String content, HttpServletRequest request) {
+ public RestResult> addFeedBack(String content, HttpServletRequest request) {
UserDetails userDetails = getUserDetails(request);
if (userDetails == null) {
- return ResultBean.fail(ResponseStatus.NO_LOGIN);
+ return RestResult.fail(ResponseStatus.NO_LOGIN);
}
userService.addFeedBack(userDetails.getId(),content);
- return ResultBean.ok();
+ return RestResult.ok();
}
/**
* 分页查询我的反馈列表
* */
@GetMapping("listUserFeedBackByPage")
- public ResultBean> listUserFeedBackByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "5") int pageSize, HttpServletRequest request){
+ public RestResult> listUserFeedBackByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "5") int pageSize, HttpServletRequest request){
UserDetails userDetails = getUserDetails(request);
if (userDetails == null) {
- return ResultBean.fail(ResponseStatus.NO_LOGIN);
+ return RestResult.fail(ResponseStatus.NO_LOGIN);
}
- return ResultBean.ok(userService.listUserFeedBackByPage(userDetails.getId(),page,pageSize));
+ return RestResult.ok(userService.listUserFeedBackByPage(userDetails.getId(),page,pageSize));
}
/**
* 查询个人信息
* */
@GetMapping("userInfo")
- public ResultBean> userInfo(HttpServletRequest request) {
+ public RestResult> userInfo(HttpServletRequest request) {
UserDetails userDetails = getUserDetails(request);
if (userDetails == null) {
- return ResultBean.fail(ResponseStatus.NO_LOGIN);
+ return RestResult.fail(ResponseStatus.NO_LOGIN);
}
- return ResultBean.ok(userService.userInfo(userDetails.getId()));
+ return RestResult.ok(userService.userInfo(userDetails.getId()));
}
/**
* 更新个人信息
* */
@PostMapping("updateUserInfo")
- public ResultBean> updateUserInfo(@Validated({UpdateGroup.class}) User user, HttpServletRequest request) {
+ public RestResult> updateUserInfo(@Validated({UpdateGroup.class}) User user, HttpServletRequest request) {
UserDetails userDetails = getUserDetails(request);
if (userDetails == null) {
- return ResultBean.fail(ResponseStatus.NO_LOGIN);
+ return RestResult.fail(ResponseStatus.NO_LOGIN);
}
userService.updateUserInfo(userDetails.getId(),user);
if(user.getNickName() != null){
userDetails.setNickName(user.getNickName());
Map data = new HashMap<>(1);
data.put("token", jwtTokenUtil.generateToken(userDetails));
- return ResultBean.ok(data);
+ return RestResult.ok(data);
}
- return ResultBean.ok();
+ return RestResult.ok();
}
@@ -234,28 +235,28 @@ public class UserController extends BaseController {
* 更新密码
* */
@PostMapping("updatePassword")
- public ResultBean> updatePassword(String oldPassword,String newPassword1,String newPassword2,HttpServletRequest request) {
+ public RestResult> updatePassword(String oldPassword,String newPassword1,String newPassword2,HttpServletRequest request) {
UserDetails userDetails = getUserDetails(request);
if (userDetails == null) {
- return ResultBean.fail(ResponseStatus.NO_LOGIN);
+ return RestResult.fail(ResponseStatus.NO_LOGIN);
}
if(!(StringUtils.isNotBlank(newPassword1) && newPassword1.equals(newPassword2))){
- ResultBean.fail(ResponseStatus.TWO_PASSWORD_DIFF);
+ RestResult.fail(ResponseStatus.TWO_PASSWORD_DIFF);
}
userService.updatePassword(userDetails.getId(),oldPassword,newPassword1);
- return ResultBean.ok();
+ return RestResult.ok();
}
/**
* 分页查询用户书评
* */
@GetMapping("listCommentByPage")
- public ResultBean> listCommentByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "5") int pageSize,HttpServletRequest request) {
+ public RestResult> listCommentByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "5") int pageSize,HttpServletRequest request) {
UserDetails userDetails = getUserDetails(request);
if (userDetails == null) {
- return ResultBean.fail(ResponseStatus.NO_LOGIN);
+ return RestResult.fail(ResponseStatus.NO_LOGIN);
}
- return ResultBean.ok(bookService.listCommentByPage(userDetails.getId(),null,page,pageSize));
+ return RestResult.ok(bookService.listCommentByPage(userDetails.getId(),null,page,pageSize));
}
@@ -263,14 +264,14 @@ public class UserController extends BaseController {
* 购买小说章节
* */
@PostMapping("buyBookIndex")
- public ResultBean> buyBookIndex(UserBuyRecord buyRecord, HttpServletRequest request) {
+ public RestResult> buyBookIndex(UserBuyRecord buyRecord, HttpServletRequest request) {
UserDetails userDetails = getUserDetails(request);
if (userDetails == null) {
- return ResultBean.fail(ResponseStatus.NO_LOGIN);
+ return RestResult.fail(ResponseStatus.NO_LOGIN);
}
buyRecord.setBuyAmount(bookService.queryBookIndex(buyRecord.getBookIndexId()).getBookPrice());
userService.buyBookIndex(userDetails.getId(),buyRecord);
- return ResultBean.ok();
+ return RestResult.ok();
}
diff --git a/novel-front/src/main/java/com/java2nb/novel/core/filter/NovelFilter.java b/novel-front/src/main/java/com/java2nb/novel/core/filter/NovelFilter.java
index 0f01f58..88e3e6d 100644
--- a/novel-front/src/main/java/com/java2nb/novel/core/filter/NovelFilter.java
+++ b/novel-front/src/main/java/com/java2nb/novel/core/filter/NovelFilter.java
@@ -3,6 +3,8 @@ package com.java2nb.novel.core.filter;
import com.java2nb.novel.core.cache.CacheKey;
import com.java2nb.novel.core.cache.CacheService;
import com.java2nb.novel.core.utils.*;
+import io.github.xxyopen.util.UUIDUtil;
+import io.github.xxyopen.web.util.SpringUtil;
import javax.servlet.*;
import javax.servlet.http.Cookie;
diff --git a/novel-front/src/main/java/com/java2nb/novel/core/utils/ThreadLocalUtil.java b/novel-front/src/main/java/com/java2nb/novel/core/utils/ThreadLocalUtil.java
index b830c6f..0cc9da8 100644
--- a/novel-front/src/main/java/com/java2nb/novel/core/utils/ThreadLocalUtil.java
+++ b/novel-front/src/main/java/com/java2nb/novel/core/utils/ThreadLocalUtil.java
@@ -2,6 +2,7 @@ package com.java2nb.novel.core.utils;
import com.java2nb.novel.core.cache.CacheKey;
import com.java2nb.novel.core.cache.CacheService;
+import io.github.xxyopen.web.util.SpringUtil;
/**
* 模板操作工具类
diff --git a/novel-front/src/main/java/com/java2nb/novel/page/PageController.java b/novel-front/src/main/java/com/java2nb/novel/page/PageController.java
index 3a54449..873624a 100644
--- a/novel-front/src/main/java/com/java2nb/novel/page/PageController.java
+++ b/novel-front/src/main/java/com/java2nb/novel/page/PageController.java
@@ -1,13 +1,13 @@
package com.java2nb.novel.page;
import com.java2nb.novel.controller.BaseController;
-import com.java2nb.novel.core.bean.PageBean;
import com.java2nb.novel.core.bean.UserDetails;
import com.java2nb.novel.core.utils.ThreadLocalUtil;
import com.java2nb.novel.entity.*;
import com.java2nb.novel.service.*;
import com.java2nb.novel.vo.BookCommentVO;
import com.java2nb.novel.vo.BookSettingVO;
+import io.github.xxyopen.model.page.PageBean;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/AuthorService.java b/novel-front/src/main/java/com/java2nb/novel/service/AuthorService.java
index 3c5437c..3c42acd 100644
--- a/novel-front/src/main/java/com/java2nb/novel/service/AuthorService.java
+++ b/novel-front/src/main/java/com/java2nb/novel/service/AuthorService.java
@@ -1,7 +1,7 @@
package com.java2nb.novel.service;
-import com.java2nb.novel.core.bean.PageBean;
+import io.github.xxyopen.model.page.PageBean;
import com.java2nb.novel.entity.Author;
import com.java2nb.novel.entity.AuthorIncome;
import com.java2nb.novel.entity.AuthorIncomeDetail;
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 36b279e..7759811 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
@@ -1,7 +1,7 @@
package com.java2nb.novel.service;
-import com.java2nb.novel.core.bean.PageBean;
+import io.github.xxyopen.model.page.PageBean;
import com.java2nb.novel.entity.*;
import com.java2nb.novel.vo.BookCommentVO;
import com.java2nb.novel.vo.BookSettingVO;
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 719a0e5..496bfd3 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
@@ -1,7 +1,7 @@
package com.java2nb.novel.service;
-import com.java2nb.novel.core.bean.PageBean;
+import io.github.xxyopen.model.page.PageBean;
import com.java2nb.novel.entity.News;
import com.java2nb.novel.vo.NewsVO;
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/SearchService.java b/novel-front/src/main/java/com/java2nb/novel/service/SearchService.java
index 52f1521..1454ab6 100644
--- a/novel-front/src/main/java/com/java2nb/novel/service/SearchService.java
+++ b/novel-front/src/main/java/com/java2nb/novel/service/SearchService.java
@@ -1,11 +1,8 @@
package com.java2nb.novel.service;
-import com.github.pagehelper.PageInfo;
-import com.java2nb.novel.core.bean.PageBean;
import com.java2nb.novel.entity.Book;
import com.java2nb.novel.vo.BookSpVO;
-import com.java2nb.novel.vo.BookVO;
import com.java2nb.novel.vo.EsBookVO;
/**
@@ -26,5 +23,5 @@ public interface SearchService {
* @param pageSize 每页大小
* @return 分页信息
*/
- PageBean searchBook(BookSpVO params, int page, int pageSize);
+ io.github.xxyopen.model.page.PageBean searchBook(BookSpVO params, int page, int pageSize);
}
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/UserService.java b/novel-front/src/main/java/com/java2nb/novel/service/UserService.java
index 9826e6e..577954b 100644
--- a/novel-front/src/main/java/com/java2nb/novel/service/UserService.java
+++ b/novel-front/src/main/java/com/java2nb/novel/service/UserService.java
@@ -1,7 +1,7 @@
package com.java2nb.novel.service;
-import com.java2nb.novel.core.bean.PageBean;
+import io.github.xxyopen.model.page.PageBean;
import com.java2nb.novel.core.bean.UserDetails;
import com.java2nb.novel.entity.UserBuyRecord;
import com.java2nb.novel.entity.UserFeedback;
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/impl/AuthorServiceImpl.java b/novel-front/src/main/java/com/java2nb/novel/service/impl/AuthorServiceImpl.java
index 5e8b31d..499e257 100644
--- a/novel-front/src/main/java/com/java2nb/novel/service/impl/AuthorServiceImpl.java
+++ b/novel-front/src/main/java/com/java2nb/novel/service/impl/AuthorServiceImpl.java
@@ -1,11 +1,12 @@
package com.java2nb.novel.service.impl;
import com.github.pagehelper.PageHelper;
-import com.java2nb.novel.core.bean.PageBean;
+import io.github.xxyopen.model.page.PageBean;
import com.java2nb.novel.core.cache.CacheKey;
import com.java2nb.novel.core.cache.CacheService;
import com.java2nb.novel.core.enums.ResponseStatus;
-import com.java2nb.novel.core.exception.BusinessException;
+import io.github.xxyopen.model.page.builder.pagehelper.PageBuilder;
+import io.github.xxyopen.web.exception.BusinessException;
import com.java2nb.novel.entity.Author;
import com.java2nb.novel.entity.AuthorIncome;
import com.java2nb.novel.entity.AuthorIncomeDetail;
@@ -173,7 +174,7 @@ public class AuthorServiceImpl implements AuthorService {
@Override
public PageBean listIncomeDailyByPage(int page, int pageSize, Long userId, Long bookId, Date startTime, Date endTime) {
PageHelper.startPage(page, pageSize);
- return new PageBean<>(authorIncomeDetailMapper.selectMany(
+ return PageBuilder.build(authorIncomeDetailMapper.selectMany(
select(AuthorIncomeDetailDynamicSqlSupport.incomeDate, AuthorIncomeDetailDynamicSqlSupport.incomeAccount
, AuthorIncomeDetailDynamicSqlSupport.incomeCount, AuthorIncomeDetailDynamicSqlSupport.incomeNumber)
.from(AuthorIncomeDetailDynamicSqlSupport.authorIncomeDetail)
@@ -190,7 +191,7 @@ public class AuthorServiceImpl implements AuthorService {
@Override
public PageBean listIncomeMonthByPage(int page, int pageSize, Long userId, Long bookId) {
PageHelper.startPage(page, pageSize);
- return new PageBean<>(authorIncomeMapper.selectMany(select(AuthorIncomeDynamicSqlSupport.incomeMonth
+ return PageBuilder.build(authorIncomeMapper.selectMany(select(AuthorIncomeDynamicSqlSupport.incomeMonth
, AuthorIncomeDynamicSqlSupport.preTaxIncome
, AuthorIncomeDynamicSqlSupport.afterTaxIncome
, AuthorIncomeDynamicSqlSupport.payStatus
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 f165675..056bda6 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
@@ -2,15 +2,12 @@ package com.java2nb.novel.service.impl;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageHelper;
-import com.java2nb.novel.core.bean.PageBean;
import com.java2nb.novel.core.cache.CacheKey;
import com.java2nb.novel.core.cache.CacheService;
import com.java2nb.novel.core.config.BookPriceProperties;
import com.java2nb.novel.core.enums.ResponseStatus;
-import com.java2nb.novel.core.exception.BusinessException;
-import com.java2nb.novel.core.utils.BeanUtil;
+import io.github.xxyopen.web.util.BeanUtil;
import com.java2nb.novel.core.utils.Constants;
-import com.java2nb.novel.core.utils.IdWorker;
import com.java2nb.novel.core.utils.StringUtil;
import com.java2nb.novel.entity.Book;
import com.java2nb.novel.entity.*;
@@ -23,6 +20,10 @@ import com.java2nb.novel.vo.BookCommentVO;
import com.java2nb.novel.vo.BookSettingVO;
import com.java2nb.novel.vo.BookSpVO;
import com.java2nb.novel.vo.BookVO;
+import io.github.xxyopen.model.page.PageBean;
+import io.github.xxyopen.model.page.builder.pagehelper.PageBuilder;
+import io.github.xxyopen.util.IdWorker;
+import io.github.xxyopen.web.exception.BusinessException;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -216,8 +217,7 @@ public class BookServiceImpl implements BookService {
if (StringUtils.isNotBlank(params.getSort())) {
OrderByHelper.orderBy(params.getSort() + " desc");
}
- return new PageBean<>(bookMapper.searchByPage(params));
-
+ return PageBuilder.build(bookMapper.searchByPage(params));
}
@@ -388,7 +388,7 @@ public class BookServiceImpl implements BookService {
public PageBean listCommentByPage(Long userId, Long bookId, int page, int pageSize) {
PageHelper.startPage(page, pageSize);
OrderByHelper.orderBy("t1.create_time desc");
- return new PageBean<>(bookCommentMapper.listCommentByPage(userId, bookId));
+ return PageBuilder.build(bookCommentMapper.listCommentByPage(userId, bookId));
}
@Transactional(rollbackFor = Exception.class)
@@ -428,7 +428,7 @@ public class BookServiceImpl implements BookService {
} else {
//作者不存在,先创建作者
Date currentDate = new Date();
- authorId = new IdWorker().nextId();
+ authorId = IdWorker.INSTANCE.nextId();
BookAuthor bookAuthor = new BookAuthor();
bookAuthor.setId(authorId);
bookAuthor.setPenName(authorName);
@@ -505,7 +505,7 @@ public class BookServiceImpl implements BookService {
.orderBy(BookDynamicSqlSupport.createTime.descending())
.build()
.render(RenderingStrategies.MYBATIS3);
- return new PageBean<>(bookMapper.selectMany(selectStatement));
+ return PageBuilder.build(bookMapper.selectMany(selectStatement));
}
@@ -548,7 +548,7 @@ public class BookServiceImpl implements BookService {
//并不是更新自己的小说
return;
}
- Long lastIndexId = new IdWorker().nextId();
+ Long lastIndexId = IdWorker.INSTANCE.nextId();
Date currentDate = new Date();
int wordCount = StringUtil.getStrValidWordCount(content);
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java b/novel-front/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java
index 7d5fce0..8d4ae55 100644
--- a/novel-front/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java
+++ b/novel-front/src/main/java/com/java2nb/novel/service/impl/DbBookContentServiceImpl.java
@@ -7,14 +7,10 @@ import com.java2nb.novel.service.BookContentService;
import lombok.RequiredArgsConstructor;
import org.mybatis.dynamic.sql.render.RenderingStrategies;
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service;
-import java.util.List;
-
import static com.java2nb.novel.mapper.BookContentDynamicSqlSupport.bookContent;
import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
-import static org.mybatis.dynamic.sql.SqlBuilder.update;
import static org.mybatis.dynamic.sql.select.SelectDSL.select;
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/impl/FriendLinkServiceImpl.java b/novel-front/src/main/java/com/java2nb/novel/service/impl/FriendLinkServiceImpl.java
index b065016..cea174d 100644
--- a/novel-front/src/main/java/com/java2nb/novel/service/impl/FriendLinkServiceImpl.java
+++ b/novel-front/src/main/java/com/java2nb/novel/service/impl/FriendLinkServiceImpl.java
@@ -1,6 +1,6 @@
package com.java2nb.novel.service.impl;
-import com.java2nb.novel.core.utils.BeanUtil;
+import io.github.xxyopen.web.util.BeanUtil;
import com.java2nb.novel.service.FriendLinkService;
import com.java2nb.novel.core.cache.CacheKey;
import com.java2nb.novel.core.cache.CacheService;
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 ea75678..ce4ba9c 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
@@ -1,8 +1,8 @@
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 io.github.xxyopen.model.page.PageBean;
+import io.github.xxyopen.web.util.BeanUtil;
import com.java2nb.novel.mapper.FrontNewsMapper;
import com.java2nb.novel.service.NewsService;
import com.java2nb.novel.core.cache.CacheKey;
@@ -10,6 +10,7 @@ import com.java2nb.novel.core.cache.CacheService;
import com.java2nb.novel.entity.News;
import com.java2nb.novel.mapper.NewsMapper;
import com.java2nb.novel.vo.NewsVO;
+import io.github.xxyopen.model.page.builder.pagehelper.PageBuilder;
import lombok.RequiredArgsConstructor;
import org.mybatis.dynamic.sql.render.RenderingStrategies;
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
@@ -69,7 +70,7 @@ public class NewsServiceImpl implements NewsService {
.build()
.render(RenderingStrategies.MYBATIS3);
List news = newsMapper.selectMany(selectStatement);
- PageBean pageBean = new PageBean<>(news);
+ PageBean pageBean = PageBuilder.build(news);
pageBean.setList(BeanUtil.copyList(news,NewsVO.class));
return pageBean;
}
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/impl/SearchServiceImpl.java b/novel-front/src/main/java/com/java2nb/novel/service/impl/SearchServiceImpl.java
index b77e7a6..33611cf 100644
--- a/novel-front/src/main/java/com/java2nb/novel/service/impl/SearchServiceImpl.java
+++ b/novel-front/src/main/java/com/java2nb/novel/service/impl/SearchServiceImpl.java
@@ -2,15 +2,13 @@ package com.java2nb.novel.service.impl;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.github.pagehelper.PageInfo;
-import com.java2nb.novel.core.bean.PageBean;
+import io.github.xxyopen.model.page.PageBean;
import com.java2nb.novel.core.enums.ResponseStatus;
-import com.java2nb.novel.core.exception.BusinessException;
-import com.java2nb.novel.core.utils.StringUtil;
+import io.github.xxyopen.util.StringUtil;
+import io.github.xxyopen.web.exception.BusinessException;
import com.java2nb.novel.entity.Book;
import com.java2nb.novel.vo.BookSpVO;
import com.java2nb.novel.service.SearchService;
-import com.java2nb.novel.vo.BookVO;
import com.java2nb.novel.vo.EsBookVO;
import io.searchbox.client.JestClient;
import io.searchbox.core.Count;
@@ -200,8 +198,7 @@ public class SearchServiceImpl implements SearchService {
}
}
}
-
- return new PageBean<>(page,pageSize,total.longValue(),bookList);
+ return new PageBean<>(page, pageSize, total.longValue(), bookList);
}
throw new BusinessException(ResponseStatus.ES_SEARCH_FAIL);
}
diff --git a/novel-front/src/main/java/com/java2nb/novel/service/impl/UserServiceImpl.java b/novel-front/src/main/java/com/java2nb/novel/service/impl/UserServiceImpl.java
index e3b971a..b4970b6 100644
--- a/novel-front/src/main/java/com/java2nb/novel/service/impl/UserServiceImpl.java
+++ b/novel-front/src/main/java/com/java2nb/novel/service/impl/UserServiceImpl.java
@@ -1,20 +1,21 @@
package com.java2nb.novel.service.impl;
import com.github.pagehelper.PageHelper;
-import com.java2nb.novel.core.bean.PageBean;
+import io.github.xxyopen.model.page.PageBean;
import com.java2nb.novel.core.bean.UserDetails;
-import com.java2nb.novel.core.utils.BeanUtil;
import com.java2nb.novel.entity.*;
import com.java2nb.novel.entity.User;
import com.java2nb.novel.service.UserService;
import com.java2nb.novel.core.enums.ResponseStatus;
-import com.java2nb.novel.core.exception.BusinessException;
+import io.github.xxyopen.model.page.builder.pagehelper.PageBuilder;
+import io.github.xxyopen.util.IdWorker;
+import io.github.xxyopen.util.MD5Util;
+import io.github.xxyopen.web.exception.BusinessException;
import com.java2nb.novel.mapper.*;
import com.java2nb.novel.vo.BookReadHistoryVO;
import com.java2nb.novel.vo.BookShelfVO;
-import com.java2nb.novel.core.utils.IdWorker;
-import com.java2nb.novel.core.utils.MD5Util;
import com.java2nb.novel.vo.UserFeedbackVO;
+import io.github.xxyopen.web.util.BeanUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.Charsets;
@@ -73,7 +74,7 @@ public class UserServiceImpl implements UserService {
User entity = new User();
BeanUtils.copyProperties(user,entity);
//数据库生成注册记录
- Long id = new IdWorker().nextId();
+ Long id = IdWorker.INSTANCE.nextId();
entity.setId(id);
entity.setNickName(entity.getUsername());
Date currentDate = new Date();
@@ -150,7 +151,7 @@ public class UserServiceImpl implements UserService {
@Override
public PageBean listBookShelfByPage(Long userId, int page, int pageSize) {
PageHelper.startPage(page, pageSize);
- return new PageBean<>(userBookshelfMapper.listBookShelf(userId));
+ return PageBuilder.build(userBookshelfMapper.listBookShelf(userId));
}
@Transactional(rollbackFor = Exception.class)
@@ -211,7 +212,7 @@ public class UserServiceImpl implements UserService {
.build()
.render(RenderingStrategies.MYBATIS3);
List userFeedbacks = userFeedbackMapper.selectMany(selectStatement);
- PageBean pageBean = new PageBean<>(userFeedbacks);
+ PageBean pageBean = PageBuilder.build(userFeedbacks);
pageBean.setList(BeanUtil.copyList(userFeedbacks,UserFeedbackVO.class));
return pageBean;
}
@@ -229,7 +230,7 @@ public class UserServiceImpl implements UserService {
@Override
public PageBean listReadHistoryByPage(Long userId, int page, int pageSize) {
PageHelper.startPage(page, pageSize);
- return new PageBean<>(userReadHistoryMapper.listReadHistory(userId));
+ return PageBuilder.build(userReadHistoryMapper.listReadHistory(userId));
}
@Override
diff --git a/novel-front/src/main/resources/application.yml b/novel-front/src/main/resources/application.yml
index d919598..8ef3bd8 100644
--- a/novel-front/src/main/resources/application.yml
+++ b/novel-front/src/main/resources/application.yml
@@ -1,5 +1,5 @@
server:
- port: 8080
+ port: 8083
spring:
profiles:
diff --git a/pom.xml b/pom.xml
index 488c49b..5d0d04f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -78,35 +78,33 @@
- spring-snapshots
- Spring Snapshots
- https://repo.spring.io/snapshot
-
+ ali
+ https://maven.aliyun.com/repository/public
+
true
+
+
+ false
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
+ oss
+ https://s01.oss.sonatype.org/content/groups/public/
+
+ true
+
- false
+ true
- spring-snapshots
- Spring Snapshots
- https://repo.spring.io/snapshot
-
+ ali-plugin
+ https://maven.aliyun.com/repository/public
+
true
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
+
false
From c537f6fb20e60048bb07afb8f42eb7143c2e36b6 Mon Sep 17 00:00:00 2001
From: xiongxiaoyang <773861846@qq.com>
Date: Sat, 11 Dec 2021 20:56:11 +0800
Subject: [PATCH 12/19] =?UTF-8?q?docs:=20maven=E4=BB=93=E5=BA=93=E9=85=8D?=
=?UTF-8?q?=E7=BD=AE=E8=AF=B4=E6=98=8E?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 5d0d04f..5ae7535 100644
--- a/pom.xml
+++ b/pom.xml
@@ -75,7 +75,15 @@
-
+
+
+
+
+
+
+
ali
From b2eb6686e9f4264195d6d1826a599a129ebd4419 Mon Sep 17 00:00:00 2001
From: xiongxiaoyang <773861846@qq.com>
Date: Sun, 12 Dec 2021 20:44:09 +0800
Subject: [PATCH 13/19] =?UTF-8?q?build:=20=E6=9B=B4=E6=96=B0xxyopen?=
=?UTF-8?q?=E4=BE=9D=E8=B5=96=E7=89=88=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
novel-common/pom.xml | 6 +++---
.../java/com/java2nb/novel/FrontNovelApplication.java | 1 -
pom.xml | 11 +----------
3 files changed, 4 insertions(+), 14 deletions(-)
diff --git a/novel-common/pom.xml b/novel-common/pom.xml
index 43ecae7..685736d 100644
--- a/novel-common/pom.xml
+++ b/novel-common/pom.xml
@@ -126,19 +126,19 @@
io.github.xxyopen
xxy-model
- 1.0.0-SNAPSHOT
+ ${xxyopen.version}
io.github.xxyopen
xxy-web
- 1.0.0-SNAPSHOT
+ ${xxyopen.version}
io.github.xxyopen
xxy-util
- 1.0.0-SNAPSHOT
+ ${xxyopen.version}
diff --git a/novel-front/src/main/java/com/java2nb/novel/FrontNovelApplication.java b/novel-front/src/main/java/com/java2nb/novel/FrontNovelApplication.java
index 3ace218..31aae17 100644
--- a/novel-front/src/main/java/com/java2nb/novel/FrontNovelApplication.java
+++ b/novel-front/src/main/java/com/java2nb/novel/FrontNovelApplication.java
@@ -1,7 +1,6 @@
package com.java2nb.novel;
import com.github.tobato.fastdfs.FdfsClientConfig;
-import io.shardingsphere.shardingjdbc.spring.boot.SpringBootConfiguration;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/pom.xml b/pom.xml
index 5ae7535..7b2f35c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,7 @@
1.3.1
1.26.1-RELEASE
4.9.153.ALL
+ 1.0.0
@@ -95,16 +96,6 @@
false
-
- oss
- https://s01.oss.sonatype.org/content/groups/public/
-
- true
-
-
- true
-
-
From 78969f9fd1e5b21f1ccd43fe840e7370de4d7a80 Mon Sep 17 00:00:00 2001
From: xiaoyang
Date: Fri, 17 Dec 2021 10:20:59 +0800
Subject: [PATCH 14/19] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=8D=95?=
=?UTF-8?q?=E6=9C=AC=E5=B0=8F=E8=AF=B4=E9=87=87=E9=9B=86=E5=8D=B3=E4=BD=BF?=
=?UTF-8?q?=E6=B2=A1=E6=9C=89=E9=87=87=E9=9B=86=E5=88=B0=E5=86=85=E5=AE=B9?=
=?UTF-8?q?=E4=BB=8D=E7=84=B6=E6=A0=87=E8=AE=B0=E7=8A=B6=E6=80=81=E4=B8=BA?=
=?UTF-8?q?=E9=87=87=E9=9B=86=E6=88=90=E5=8A=9F=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/java/com/java2nb/novel/core/crawl/CrawlParser.java | 5 +++--
.../com/java2nb/novel/service/impl/CrawlServiceImpl.java | 5 +++--
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/novel-crawl/src/main/java/com/java2nb/novel/core/crawl/CrawlParser.java b/novel-crawl/src/main/java/com/java2nb/novel/core/crawl/CrawlParser.java
index 85955cd..9ec4628 100644
--- a/novel-crawl/src/main/java/com/java2nb/novel/core/crawl/CrawlParser.java
+++ b/novel-crawl/src/main/java/com/java2nb/novel/core/crawl/CrawlParser.java
@@ -139,7 +139,7 @@ public class CrawlParser {
handler.handle(book);
}
- public static void parseBookIndexAndContent(String sourceBookId, Book book, RuleBean ruleBean, Map existBookIndexMap, CrawlBookChapterHandler handler) {
+ public static boolean parseBookIndexAndContent(String sourceBookId, Book book, RuleBean ruleBean, Map existBookIndexMap, CrawlBookChapterHandler handler) {
Date currentDate = new Date();
@@ -275,7 +275,7 @@ public class CrawlParser {
setBookContentList(contentList);
}});
- return;
+ return true;
}
@@ -285,6 +285,7 @@ public class CrawlParser {
setBookIndexList(new ArrayList<>(0));
setBookContentList(new ArrayList<>(0));
}});
+ return false;
}
diff --git a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/CrawlServiceImpl.java b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/CrawlServiceImpl.java
index 2e95141..028f44b 100644
--- a/novel-crawl/src/main/java/com/java2nb/novel/service/impl/CrawlServiceImpl.java
+++ b/novel-crawl/src/main/java/com/java2nb/novel/service/impl/CrawlServiceImpl.java
@@ -302,15 +302,16 @@ public class CrawlServiceImpl implements CrawlService {
book.setCrawlLastTime(new Date());
book.setId(IdWorker.INSTANCE.nextId());
//解析章节目录
- CrawlParser.parseBookIndexAndContent(bookId, book, ruleBean, new HashMap<>(0), chapter -> {
+ boolean parseIndexContentResult = CrawlParser.parseBookIndexAndContent(bookId, book, ruleBean, new HashMap<>(0), chapter -> {
bookService.saveBookAndIndexAndContent(book, chapter.getBookIndexList(), chapter.getBookContentList());
});
+ parseResult.set(parseIndexContentResult);
} else {
//只更新书籍的爬虫相关字段
bookService.updateCrawlProperties(existBook.getId(), sourceId, bookId);
+ parseResult.set(true);
}
- parseResult.set(true);
});
return parseResult.get();
From 7cde6ebf61ffda4008acfabce08de31203f37e3e Mon Sep 17 00:00:00 2001
From: songanwei
Date: Fri, 17 Dec 2021 16:33:45 +0800
Subject: [PATCH 15/19] =?UTF-8?q?feat(=E6=89=93=E5=8C=85=E6=94=B9=E4=B8=BA?=
=?UTF-8?q?=E5=88=86=E5=8C=85):=20=E6=89=93=E5=8C=85=E6=94=B9=E4=B8=BA?=
=?UTF-8?q?=E5=88=86=E5=8C=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
novel-admin/pom.xml | 91 +++++++++++++++++--
novel-admin/src/main/build/scripts/readme.txt | 8 ++
novel-admin/src/main/build/scripts/start.sh | 47 ++++++++++
novel-admin/src/main/build/scripts/stop.sh | 33 +++++++
.../src/main/build/scripts/windows-start.bat | 10 ++
.../src/main/resources/logback-spring.xml | 2 +-
.../java/com/java2nb/novel/entity/News.java | 6 +-
novel-crawl/pom.xml | 73 ++++++++++++++-
novel-crawl/src/main/build/scripts/readme.txt | 8 ++
novel-crawl/src/main/build/scripts/start.sh | 47 ++++++++++
novel-crawl/src/main/build/scripts/stop.sh | 33 +++++++
.../src/main/build/scripts/windows-start.bat | 10 ++
.../src/main/resources/logback-boot.xml | 4 +-
novel-front/pom.xml | 82 ++++++++++++++++-
novel-front/src/main/build/scripts/readme.txt | 8 ++
novel-front/src/main/build/scripts/start.sh | 47 ++++++++++
novel-front/src/main/build/scripts/stop.sh | 33 +++++++
.../src/main/build/scripts/windows-start.bat | 10 ++
.../src/main/resources/logback-boot.xml | 4 +-
19 files changed, 540 insertions(+), 16 deletions(-)
create mode 100644 novel-admin/src/main/build/scripts/readme.txt
create mode 100644 novel-admin/src/main/build/scripts/start.sh
create mode 100644 novel-admin/src/main/build/scripts/stop.sh
create mode 100644 novel-admin/src/main/build/scripts/windows-start.bat
create mode 100644 novel-crawl/src/main/build/scripts/readme.txt
create mode 100644 novel-crawl/src/main/build/scripts/start.sh
create mode 100644 novel-crawl/src/main/build/scripts/stop.sh
create mode 100644 novel-crawl/src/main/build/scripts/windows-start.bat
create mode 100644 novel-front/src/main/build/scripts/readme.txt
create mode 100644 novel-front/src/main/build/scripts/start.sh
create mode 100644 novel-front/src/main/build/scripts/stop.sh
create mode 100644 novel-front/src/main/build/scripts/windows-start.bat
diff --git a/novel-admin/pom.xml b/novel-admin/pom.xml
index 0fed554..29d0b79 100644
--- a/novel-admin/pom.xml
+++ b/novel-admin/pom.xml
@@ -224,17 +224,17 @@
-
+
-
-
+ –>
org.springframework.boot
spring-boot-maven-plugin
+ -->
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ ZIP
+
+
+ non-exists
+ non-exists
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-dependencies
+ package
+
+ copy-dependencies
+
+
+
+ target/lib
+ false
+ false
+ runtime
+
+
+
+
+
+ maven-antrun-plugin
+ 1.8
+
+
+ package
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
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 c555349..437cfba 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,9 +1,11 @@
package com.java2nb.novel.entity;
+import java.io.Serializable;
import java.util.Date;
import javax.annotation.Generated;
-public class News {
+public class News implements Serializable {
+
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private Long id;
@@ -146,4 +148,4 @@ public class News {
public void setContent(String content) {
this.content = content == null ? null : content.trim();
}
-}
\ No newline at end of file
+}
diff --git a/novel-crawl/pom.xml b/novel-crawl/pom.xml
index 10710b9..cb2047d 100644
--- a/novel-crawl/pom.xml
+++ b/novel-crawl/pom.xml
@@ -32,11 +32,82 @@
+
org.springframework.boot
spring-boot-maven-plugin
+
+ ZIP
+
+
+ non-exists
+ non-exists
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-dependencies
+ package
+
+ copy-dependencies
+
+
+
+ target/lib
+ false
+ false
+ runtime
+
+
+
+
+
+ maven-antrun-plugin
+ 1.8
+
+
+ package
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/novel-crawl/src/main/build/scripts/readme.txt b/novel-crawl/src/main/build/scripts/readme.txt
new file mode 100644
index 0000000..a3bab7e
--- /dev/null
+++ b/novel-crawl/src/main/build/scripts/readme.txt
@@ -0,0 +1,8 @@
+1:linux启动环境
+sh start.sh
+
+3:windows启动环境
+windows-start.bat
+
+3:linux停止应用
+sh stop.sh
diff --git a/novel-crawl/src/main/build/scripts/start.sh b/novel-crawl/src/main/build/scripts/start.sh
new file mode 100644
index 0000000..17f0acd
--- /dev/null
+++ b/novel-crawl/src/main/build/scripts/start.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+ENGINE=novel-crawl.jar
+cd ../
+
+#部署目路
+DEPLOY_DIR=`pwd`
+#获取到当前目录的名称
+SERVER_NAME=`basename $DEPLOY_DIR`
+
+#应用进程
+PIDS=`ps -ef | grep java | grep "$ENGINE" |awk '{print $2}'`
+#设置日志文件的输出目录
+LOGS_DIR=$DEPLOY_DIR/logs
+if [ ! -d $LOGS_DIR ]; then
+ mkdir $LOGS_DIR
+fi
+#日志
+STDOUT_FILE=$LOGS_DIR/stdout.log
+#JAVA 环境配置
+JAVA_OPTS=" -Djava.net.preferIPv4Stack=true -Dlog.home=$LOGS_DIR"
+
+JAVA_MEM_OPTS=" -server -Xms1024m -Xmx1024m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:InitiatingHeapOccupancyPercent=50 -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCDateStamps -verbose:gc -XX:+PrintGCDetails -XX:+PrintHeapAtGC -Xloggc:$LOGS_DIR/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dump.hprof "
+#退出标志
+RETVAL="0"
+
+if [ -n "$PIDS" ]; then
+ echo "ERROR: The $SERVER_NAME already started!"
+ echo "PID: $PIDS"
+ exit $RETVAL
+fi
+
+nohup java -jar $JAVA_OPTS $JAVA_MEM_OPTS -Dloader.path=conf,lib $ENGINE > $STDOUT_FILE 2>&1 &
+COUNT=0
+ while [ $COUNT -lt 1 ]; do
+ echo -e ".\c"
+ sleep 1
+ COUNT=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}' | wc -l`
+ if [ $COUNT -gt 0 ]; then
+ break
+ fi
+ done
+
+ echo "OK!"
+ PIDS=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}'`
+ echo "PID: $PIDS"
+ echo "STDOUT: $STDOUT_FILE"
diff --git a/novel-crawl/src/main/build/scripts/stop.sh b/novel-crawl/src/main/build/scripts/stop.sh
new file mode 100644
index 0000000..6cf8aed
--- /dev/null
+++ b/novel-crawl/src/main/build/scripts/stop.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+SERVER_NAME=novel-crawl.jar
+
+#应用进程
+PIDS=`ps -ef | grep java | grep "$SERVER_NAME" |awk '{print $2}'`
+if [ -z "$PIDS" ]; then
+ echo "ERROR: The $SERVER_NAME does not started!"
+ exit 1
+ fi
+
+ echo -e "Stopping the $SERVER_NAME ...\c"
+ for PID in $PIDS ; do
+ kill $PID > /dev/null 2>&1
+ done
+
+ COUNT=0
+ while [ $COUNT -lt 1 ]; do
+ echo -e ".\c"
+ sleep 1
+ COUNT=1
+ for PID in $PIDS ; do
+ PID_EXIST=`ps -f -p $PID | grep java`
+ if [ -n "$PID_EXIST" ]; then
+ COUNT=0
+ break
+ fi
+ done
+ done
+
+ echo "OK!"
+ echo "PID: $PIDS"
+ PIDS=""
+
diff --git a/novel-crawl/src/main/build/scripts/windows-start.bat b/novel-crawl/src/main/build/scripts/windows-start.bat
new file mode 100644
index 0000000..90cfdb9
--- /dev/null
+++ b/novel-crawl/src/main/build/scripts/windows-start.bat
@@ -0,0 +1,10 @@
+@echo off
+setlocal enabledelayedexpansion
+set JAVA=java
+
+set OPTS=-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
+set ENGINE=novel-crawl.jar
+cd ../
+java -jar %OPTS% -Dloader.path=conf,lib %ENGINE%
+pause
+
diff --git a/novel-crawl/src/main/resources/logback-boot.xml b/novel-crawl/src/main/resources/logback-boot.xml
index 6be17f5..05c7c83 100644
--- a/novel-crawl/src/main/resources/logback-boot.xml
+++ b/novel-crawl/src/main/resources/logback-boot.xml
@@ -57,8 +57,8 @@
-
+
-
\ No newline at end of file
+
diff --git a/novel-front/pom.xml b/novel-front/pom.xml
index 66fa459..610c0e1 100644
--- a/novel-front/pom.xml
+++ b/novel-front/pom.xml
@@ -87,14 +87,92 @@
+
+
+
+
+
+
+
+
+
org.springframework.boot
spring-boot-maven-plugin
+
+ ZIP
+
+
+ non-exists
+ non-exists
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-dependencies
+ package
+
+ copy-dependencies
+
+
+
+ target/lib
+ false
+ false
+ runtime
+
+
+
+
+
+ maven-antrun-plugin
+ 1.8
+
+
+ package
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
\ No newline at end of file
+
diff --git a/novel-front/src/main/build/scripts/readme.txt b/novel-front/src/main/build/scripts/readme.txt
new file mode 100644
index 0000000..a3bab7e
--- /dev/null
+++ b/novel-front/src/main/build/scripts/readme.txt
@@ -0,0 +1,8 @@
+1:linux启动环境
+sh start.sh
+
+3:windows启动环境
+windows-start.bat
+
+3:linux停止应用
+sh stop.sh
diff --git a/novel-front/src/main/build/scripts/start.sh b/novel-front/src/main/build/scripts/start.sh
new file mode 100644
index 0000000..58519df
--- /dev/null
+++ b/novel-front/src/main/build/scripts/start.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+ENGINE=novel-front.jar
+cd ../
+
+#部署目路
+DEPLOY_DIR=`pwd`
+#获取到当前目录的名称
+SERVER_NAME=`basename $DEPLOY_DIR`
+
+#应用进程
+PIDS=`ps -ef | grep java | grep "$ENGINE" |awk '{print $2}'`
+#设置日志文件的输出目录
+LOGS_DIR=$DEPLOY_DIR/logs
+if [ ! -d $LOGS_DIR ]; then
+ mkdir $LOGS_DIR
+fi
+#日志
+STDOUT_FILE=$LOGS_DIR/stdout.log
+#JAVA 环境配置
+JAVA_OPTS=" -Djava.net.preferIPv4Stack=true -Dlog.home=$LOGS_DIR"
+
+JAVA_MEM_OPTS=" -server -Xms1024m -Xmx1024m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:InitiatingHeapOccupancyPercent=50 -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCDateStamps -verbose:gc -XX:+PrintGCDetails -XX:+PrintHeapAtGC -Xloggc:$LOGS_DIR/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dump.hprof "
+#退出标志
+RETVAL="0"
+
+if [ -n "$PIDS" ]; then
+ echo "ERROR: The $SERVER_NAME already started!"
+ echo "PID: $PIDS"
+ exit $RETVAL
+fi
+
+nohup java -jar $JAVA_OPTS $JAVA_MEM_OPTS -Dloader.path=conf,lib $ENGINE > $STDOUT_FILE 2>&1 &
+COUNT=0
+ while [ $COUNT -lt 1 ]; do
+ echo -e ".\c"
+ sleep 1
+ COUNT=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}' | wc -l`
+ if [ $COUNT -gt 0 ]; then
+ break
+ fi
+ done
+
+ echo "OK!"
+ PIDS=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}'`
+ echo "PID: $PIDS"
+ echo "STDOUT: $STDOUT_FILE"
diff --git a/novel-front/src/main/build/scripts/stop.sh b/novel-front/src/main/build/scripts/stop.sh
new file mode 100644
index 0000000..06b2e00
--- /dev/null
+++ b/novel-front/src/main/build/scripts/stop.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+SERVER_NAME=novel-front.jar
+
+#应用进程
+PIDS=`ps -ef | grep java | grep "$SERVER_NAME" |awk '{print $2}'`
+if [ -z "$PIDS" ]; then
+ echo "ERROR: The $SERVER_NAME does not started!"
+ exit 1
+ fi
+
+ echo -e "Stopping the $SERVER_NAME ...\c"
+ for PID in $PIDS ; do
+ kill $PID > /dev/null 2>&1
+ done
+
+ COUNT=0
+ while [ $COUNT -lt 1 ]; do
+ echo -e ".\c"
+ sleep 1
+ COUNT=1
+ for PID in $PIDS ; do
+ PID_EXIST=`ps -f -p $PID | grep java`
+ if [ -n "$PID_EXIST" ]; then
+ COUNT=0
+ break
+ fi
+ done
+ done
+
+ echo "OK!"
+ echo "PID: $PIDS"
+ PIDS=""
+
diff --git a/novel-front/src/main/build/scripts/windows-start.bat b/novel-front/src/main/build/scripts/windows-start.bat
new file mode 100644
index 0000000..162cfed
--- /dev/null
+++ b/novel-front/src/main/build/scripts/windows-start.bat
@@ -0,0 +1,10 @@
+@echo off
+setlocal enabledelayedexpansion
+set JAVA=java
+
+set OPTS=-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
+set ENGINE=novel-front.jar
+cd ../
+java -jar %OPTS% -Dloader.path=conf,lib %ENGINE%
+pause
+
diff --git a/novel-front/src/main/resources/logback-boot.xml b/novel-front/src/main/resources/logback-boot.xml
index bc78832..ccc3d13 100644
--- a/novel-front/src/main/resources/logback-boot.xml
+++ b/novel-front/src/main/resources/logback-boot.xml
@@ -57,8 +57,8 @@
-
+
-
\ No newline at end of file
+
From b2c67c4f1500fe2ebc764fb72ce29312cf46b517 Mon Sep 17 00:00:00 2001
From: xiaoyang
Date: Fri, 17 Dec 2021 19:53:21 +0800
Subject: [PATCH 16/19] =?UTF-8?q?build:=20=E4=BF=AE=E6=94=B9=E6=89=93?=
=?UTF-8?q?=E5=8C=85=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
novel-crawl/pom.xml | 24 ++++++++++++++++++++++++
novel-front/pom.xml | 24 ++++++++++++++++++++++++
2 files changed, 48 insertions(+)
diff --git a/novel-crawl/pom.xml b/novel-crawl/pom.xml
index 4bb265d..628e892 100644
--- a/novel-crawl/pom.xml
+++ b/novel-crawl/pom.xml
@@ -31,6 +31,29 @@
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+ false
+
+
+
+ package
+
+ shade
+
+
+
+
+ ${project.groupId}:*:*
+
+
+
+
+
+
org.springframework.boot
@@ -62,6 +85,7 @@
false
false
runtime
+ ${project.groupId}
diff --git a/novel-front/pom.xml b/novel-front/pom.xml
index 547fbae..59a3eab 100644
--- a/novel-front/pom.xml
+++ b/novel-front/pom.xml
@@ -97,6 +97,29 @@
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+ false
+
+
+
+ package
+
+ shade
+
+
+
+
+ ${project.groupId}:*:*
+
+
+
+
+
+
org.springframework.boot
@@ -128,6 +151,7 @@
false
false
runtime
+ ${project.groupId}
From e7f702ece08c7d0d1fe6b20b89ec35b91ada7d2e Mon Sep 17 00:00:00 2001
From: xiaoyang
Date: Thu, 23 Dec 2021 10:27:05 +0800
Subject: [PATCH 17/19] =?UTF-8?q?docs:=20=E5=BE=AE=E4=BF=A1=E7=BE=A4?=
=?UTF-8?q?=E8=AF=B4=E6=98=8E?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/README.md b/README.md
index 7d4c9bd..3dff6b8 100644
--- a/README.md
+++ b/README.md
@@ -291,6 +291,10 @@ docker安装教程:[点击前往](https://my.oschina.net/java2nb/blog/4271989)
[点击前往官网查看](https://xiongxyang.gitee.io/service.htm)
+#### 微信交流群
+
+微信群二维码会过期,所以每周在公众号更新一次,请关注公众号“**IT进阶**”回复关键词“**微信群**”获取。
+
问问题的三要素
1. 说明背景,使用了哪个模块,要做什么?
From fecf03b3f54b52976a60792fecf3d92e0b121113 Mon Sep 17 00:00:00 2001
From: xiaoyang
Date: Fri, 24 Dec 2021 11:35:59 +0800
Subject: [PATCH 18/19] =?UTF-8?q?fix:=20=E5=8D=87=E7=BA=A7mybatis=E7=89=88?=
=?UTF-8?q?=E6=9C=AC=EF=BC=8C=E5=A2=9E=E5=8A=A0Optional=E6=94=AF=E6=8C=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pom.xml b/pom.xml
index 7b2f35c..53ddc34 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@
1.8
true
8.0.11
- 1.3.2
+ 2.1.4
1.4.0
1.1.4
1.2.5
@@ -109,4 +109,4 @@
-
\ No newline at end of file
+
From 3a44d141494c0606614dabc7e8a1c0969015d1e2 Mon Sep 17 00:00:00 2001
From: songanwei
Date: Fri, 24 Dec 2021 13:41:25 +0800
Subject: [PATCH 19/19] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E=E7=BC=96=E8=BE=91?=
=?UTF-8?q?=E8=A7=84=E5=88=99=E6=B5=8B=E8=AF=95=E8=A7=84=E5=88=99):=20?=
=?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BC=96=E8=BE=91=E8=A7=84=E5=88=99=E6=B5=8B?=
=?UTF-8?q?=E8=AF=95=E8=A7=84=E5=88=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java2nb/novel/core/cache/CacheKey.java | 6 +-
.../novel/controller/CrawlController.java | 78 ++-
.../core/config/SecurityConfiguration.java | 2 +-
.../java2nb/novel/service/CrawlService.java | 14 +-
.../novel/service/impl/CrawlServiceImpl.java | 39 +-
.../templates/crawl/crawlSingleTask_add.html | 1 +
.../templates/crawl/crawlSingleTask_list.html | 1 +
.../templates/crawl/crawlSource_add.html | 1 +
.../templates/crawl/crawlSource_list.html | 15 +-
.../templates/crawl/crawlSource_test.html | 171 ++++++
.../templates/crawl/crawlSource_update.html | 522 ++++++++++++++++++
pom.xml | 4 +-
12 files changed, 842 insertions(+), 12 deletions(-)
create mode 100644 novel-crawl/src/main/resources/templates/crawl/crawlSource_test.html
create mode 100644 novel-crawl/src/main/resources/templates/crawl/crawlSource_update.html
diff --git a/novel-common/src/main/java/com/java2nb/novel/core/cache/CacheKey.java b/novel-common/src/main/java/com/java2nb/novel/core/cache/CacheKey.java
index 75a585a..750c53f 100644
--- a/novel-common/src/main/java/com/java2nb/novel/core/cache/CacheKey.java
+++ b/novel-common/src/main/java/com/java2nb/novel/core/cache/CacheKey.java
@@ -65,4 +65,8 @@ public interface CacheKey {
* 累积的小说点击量
* */
String BOOK_ADD_VISIT_COUNT = "bookAddVisitCount";
-}
\ No newline at end of file
+ /**
+ * 测试爬虫规则缓存
+ */
+ String BOOK_TEST_PARSE = "testParse";
+}
diff --git a/novel-crawl/src/main/java/com/java2nb/novel/controller/CrawlController.java b/novel-crawl/src/main/java/com/java2nb/novel/controller/CrawlController.java
index 80c9c16..1c4cf42 100644
--- a/novel-crawl/src/main/java/com/java2nb/novel/controller/CrawlController.java
+++ b/novel-crawl/src/main/java/com/java2nb/novel/controller/CrawlController.java
@@ -1,13 +1,26 @@
package com.java2nb.novel.controller;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.java2nb.novel.core.bean.PageBean;
import com.java2nb.novel.core.bean.ResultBean;
+import com.java2nb.novel.core.cache.CacheKey;
+import com.java2nb.novel.core.cache.CacheService;
+import com.java2nb.novel.core.crawl.CrawlParser;
+import com.java2nb.novel.core.crawl.RuleBean;
+import com.java2nb.novel.core.utils.HttpUtil;
+import com.java2nb.novel.entity.BookIndex;
import com.java2nb.novel.entity.CrawlSingleTask;
import com.java2nb.novel.entity.CrawlSource;
import com.java2nb.novel.service.CrawlService;
+import com.java2nb.novel.utils.Constants;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
/**
* @author Administrator
*/
@@ -18,7 +31,7 @@ public class CrawlController {
private final CrawlService crawlService;
-
+ private final CacheService cacheService;
/**
* 新增爬虫源
* */
@@ -38,7 +51,70 @@ public class CrawlController {
return ResultBean.ok(crawlService.listCrawlByPage(page,pageSize));
}
+ /**
+ * 获取爬虫源
+ * */
+ @GetMapping("getCrawlSource/{id}")
+ public ResultBean getCrawlSource(@PathVariable("id") Integer id){
+ CrawlSource crawlSource= crawlService.getCrawlSource(id);
+ return ResultBean.ok(crawlSource);
+ }
+
+ /**
+ * 测试规则
+ * @param rule
+ * @param url
+ * @param isRefresh
+ * @return
+ */
+ @PostMapping("testParse")
+ public ResultBean