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